Browse Source

修改合作伙伴

zs 8 months ago
parent
commit
2150d22d01

+ 1 - 0
src/lang/package/zh-cn/menus.js

@@ -15,6 +15,7 @@ export default {
   system_dept: '部门管理',
   system_sector: '产业设置',
   system_region: '地区设置',
+  system_friend: '合作伙伴设置',
   user_admin: '管理员用户',
   user_user: '平台用户',
   platform: '信息管理',

+ 11 - 0
src/lang/package/zh-cn/pages.js

@@ -384,6 +384,17 @@ export default {
     status: '使用状态',
     resource: '资源管理'
   },
+  friend: {
+    dialogTitle: '合作伙伴信息',
+    code: '编码',
+    name: '名称',
+    file: 'logo',
+    brief: '简介',
+    parent_code: '上级编码',
+    is_use: '是否启用',
+    codeMessage: '请输入编码',
+    nameMessage: '请输入名称'
+  },
   log_opera: {
     operator_id: '操作人数据id',
     operator_name: '操作人名称',

+ 49 - 0
src/store/api/platform/friend.js

@@ -0,0 +1,49 @@
+import { defineStore } from 'pinia'
+import { AxiosWrapper } from '@/utils/axios-wrapper'
+import { get } from 'lodash-es'
+const url = '/friend'
+const axios = new AxiosWrapper()
+
+export const FriendStore = defineStore('friend', () => {
+  const query = async ({ skip = 0, limit = undefined, ...info } = {}) => {
+    let cond = {}
+    if (skip) cond.skip = skip
+    if (limit) cond.limit = limit
+    cond = { ...cond, ...info }
+    const res = await axios.$get(`${url}`, cond)
+    return res
+  }
+  const list = async ({ skip = 0, limit = undefined, ...info } = {}) => {
+    let cond = {}
+    if (skip) cond.skip = skip
+    if (limit) cond.limit = limit
+    cond = { ...cond, ...info }
+    const res = await axios.$get(`${url}/list`, cond)
+    return res
+  }
+  const fetch = async (payload) => {
+    const res = await axios.$get(`${url}/${payload}`)
+    return res
+  }
+  const create = async (payload) => {
+    const res = await axios.$post(`${url}`, payload)
+    return res
+  }
+  const update = async (payload) => {
+    const id = get(payload, 'id', get(payload, 'id'))
+    const res = await axios.$post(`${url}/${id}`, payload)
+    return res
+  }
+  const del = async (payload) => {
+    const res = await axios.$delete(`${url}/${payload}`)
+    return res
+  }
+  return {
+    query,
+    list,
+    fetch,
+    create,
+    update,
+    del
+  }
+})

+ 1 - 1
src/views/match/info/index.vue

@@ -38,7 +38,7 @@
               <el-option v-for="i in matchList" :key="i.id" :label="i.label" :value="i.value"></el-option>
             </template>
             <template #scale>
-              <el-radio v-for="i in scaleList" :key="i.id" :label="i.label">{{ i.label }}</el-radio>
+              <el-radio v-for="i in scaleList" :key="i.id" :label="i.value">{{ i.label }}</el-radio>
             </template>
             <template #match_type>
               <el-radio v-for="i in matchTypeList" :key="i.id" :label="i.value">{{ i.label }}</el-radio>

+ 27 - 20
src/views/system/design/index.vue

@@ -16,7 +16,7 @@
             <template #carouselUrl>
               <custom-upload model="carouselUrl" :list="form.carouselUrl" :limit="6" listType="picture-card" url="/files/web/cxyy_design/upload" @change="onUpload"></custom-upload>
             </template>
-            <template #friend>
+            <!-- <template #friend>
               <el-col :span="24" class="tables">
                 <el-col :span="24" class="tables_1">
                   <el-button type="primary" @click="addFriend()">添加</el-button>
@@ -26,7 +26,14 @@
                     <el-table-column type="index" label="序号" width="80" align="center"> </el-table-column>
                     <el-table-column prop="url" label="图片" align="center">
                       <template #default="scope">
-                        <custom-upload model="url" :list="scope.row.url" :limit="1" listType="picture-card" url="/files/web/cxyy_design/upload" @change="onFriendUpload($event, scope.row)"></custom-upload>
+                        <custom-upload
+                          model="url"
+                          :list="scope.row.url"
+                          :limit="1"
+                          listType="picture-card"
+                          url="/files/web/cxyy_design/upload"
+                          @change="onFriendUpload($event, scope.row)"
+                        ></custom-upload>
                       </template>
                     </el-table-column>
                     <el-table-column prop="name" label="名称" align="center">
@@ -47,7 +54,7 @@
                   </el-table>
                 </el-col>
               </el-col>
-            </template>
+            </template> -->
             <template #friendship>
               <el-col :span="24" class="tables">
                 <el-col :span="24" class="tables_1">
@@ -115,7 +122,7 @@ const fields = ref([
   { label: '标题', model: 'zhTitle' },
   { label: 'logo', model: 'logoUrl', custom: true },
   { label: '轮播图', model: 'carouselUrl', custom: true },
-  { label: '合作伙伴', model: 'friend', custom: true },
+  // { label: '合作伙伴', model: 'friend', custom: true },
   { label: '友情连接', model: 'friendship', custom: true },
   { label: '网站底部信息', model: 'footInfo', custom: true },
   { label: '使用协议', model: 'agreement', custom: true },
@@ -178,22 +185,22 @@ const onFUpload = (e) => {
   const { model, value } = e
   form.value.footInfo[model] = value
 }
-// 上传图片
-const onFriendUpload = (e, data) => {
-  const { model, value } = e
-  data[model] = value
-}
-// 合作伙伴添加
-const addFriend = () => {
-  let friend = form.value.friend || []
-  friend.push({ id: moment().valueOf(), url: [], name: '', href: '' })
-  form.value.friend = friend
-}
-// 合作伙伴删除
-const delFriend = (e) => {
-  let friend = form.value.friend.filter((i) => i.id != e.id)
-  form.value.friend = friend
-}
+// // 上传图片
+// const onFriendUpload = (e, data) => {
+//   const { model, value } = e
+//   data[model] = value
+// }
+// // 合作伙伴添加
+// const addFriend = () => {
+//   let friend = form.value.friend || []
+//   friend.push({ id: moment().valueOf(), url: [], name: '', href: '' })
+//   form.value.friend = friend
+// }
+// // 合作伙伴删除
+// const delFriend = (e) => {
+//   let friend = form.value.friend.filter((i) => i.id != e.id)
+//   form.value.friend = friend
+// }
 // 友情连接添加
 const addFriendship = () => {
   let friendship = form.value.friendship || []

+ 169 - 0
src/views/system/friend/index.vue

@@ -0,0 +1,169 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
+        <el-col :span="24" style="text-align: right; padding: 10px">
+          <el-button type="primary" size="small" @click="toAdd()">{{ $t('common.create') }}</el-button>
+        </el-col>
+        <el-col :span="24">
+          <el-table :data="data" style="width: 100%" row-key="id" border lazy :load="load" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+            <el-table-column align="center" prop="code" :label="$t('pages.friend.code')" />
+            <el-table-column align="center" prop="name" :label="$t('pages.friend.name')" />
+            <el-table-column align="center" prop="parent_code" :label="$t('pages.friend.parent_code')" />
+            <el-table-column align="center" :label="$t('pages.friend.is_use')" prop="is_use">
+              <template #default="{ row }">
+                <el-tag v-if="row.is_use === '0'" type="success"> {{ getStatus(row) }} </el-tag>
+                <el-tag v-else type="info"> {{ getStatus(row) }} </el-tag>
+              </template>
+            </el-table-column>
+            <el-table-column align="center" :label="$t('common.opera')">
+              <template #default="{ row }">
+                <el-link :underline="false" type="primary" size="mini" @click="toUpdate(row)" style="margin-right: 10px">{{ $t('common.update') }}</el-link>
+                <el-link v-if="row.is_default !== '0'" :underline="false" type="danger" size="mini" @click="toDelete(row)">
+                  {{ $t('common.delete') }}
+                </el-link>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+        <el-col :span="24" style="display: flex; justify-content: flex-end; padding: 10px">
+          <el-pagination background layout="total, prev, pager, next" :page-sizes="[10, 20, 50, 100, 200]" :total="total" :page-size="limit" v-model:current-page="currentPage" @current-change="changePage" @size-change="sizeChange"> </el-pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog v-model="dialog" :title="$t('pages.friend.dialogTitle')" :destroy-on-close="false" @close="toClose">
+      <custom-form v-model="form" :fields="formFields" :rules="rules" @save="toSave">
+        <template #file>
+          <custom-upload model="file" :list="form.file" :limit="1" url="/files/web/cxyy_friend/upload" @change="onUpload" listType="picture-card"></custom-upload>
+        </template>
+        <template #brief>
+          <WangEditor v-model="form.brief" />
+        </template>
+        <template #is_use>
+          <el-radio v-for="i in isUseList" :key="i.id" :label="i.value">{{ i.label }}</el-radio>
+        </template>
+      </custom-form>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+const $checkRes = inject('$checkRes')
+const { t } = useI18n()
+import { get } from 'lodash'
+import { cloneDeep } from 'lodash-es'
+import { FriendStore } from '@/store/api/platform/friend'
+import { DictDataStore } from '@/store/api/system/dictData'
+const store = FriendStore()
+const dictDataStore = DictDataStore()
+const dialog = ref(false)
+const form = ref({})
+const data = ref([])
+let skip = 0
+let limit = inject('limit')
+const total = ref(0)
+const isUseList = ref([])
+// 加载中
+const loading = ref(false)
+const formFields = [
+  { label: t('pages.friend.code'), model: 'code' },
+  { label: t('pages.friend.parent_code'), model: 'parent_code' },
+  { label: t('pages.friend.name'), model: 'name' },
+  { label: t('pages.friend.file'), model: 'file', custom: true },
+  { label: t('pages.friend.brief'), model: 'brief', custom: true },
+  { label: t('pages.friend.is_use'), model: 'is_use', type: 'radio' }
+]
+const rules = reactive({
+  code: [{ required: true, message: t('pages.friend.codeMessage'), trigger: 'blur' }],
+  name: [{ required: true, message: t('pages.friend.nameMessage'), trigger: 'blur' }]
+})
+// 请求
+onMounted(async () => {
+  loading.value = true
+  await searchOther()
+  await search()
+  loading.value = false
+})
+const searchOther = async () => {
+  let result
+  // 是否使用
+  result = await dictDataStore.query({ code: 'isUse', is_use: '0' })
+  if ($checkRes(result)) isUseList.value = result.data
+}
+const search = async (query = { skip, limit }) => {
+  skip = query.skip
+  limit = query.limit
+  const info = { skip: query.skip, limit: query.limit }
+  const res = await store.list(info)
+  if (res.errcode == '0') {
+    data.value = res.data
+    total.value = res.total
+  }
+}
+const toAdd = () => {
+  dialog.value = true
+  form.value = { is_use: '0' }
+}
+const toUpdate = (row) => {
+  form.value = cloneDeep(row)
+  dialog.value = true
+}
+// 上传图片
+const onUpload = (e) => {
+  const { model, value } = e
+  form.value[model] = value
+}
+const toDelete = async (row) => {
+  ElMessageBox.confirm(t('common.delete_confirm'), t('common.warning'), {
+    confirmButtonText: t('common.confirm'),
+    cancelButtonText: t('common.cancel'),
+    type: 'warning'
+  }).then(async () => {
+    const res = await store.del(row.id)
+    if ($checkRes(res, true)) {
+      search()
+    }
+  })
+}
+const toClose = () => {
+  form.value = {}
+  dialog.value = false
+}
+const load = (row, treeNode, resolve) => {
+  setTimeout(async () => {
+    const res = await store.list({ parent_code: get(row, 'code') })
+    if (res.errcode == '0') resolve(res.data)
+  }, 2000)
+}
+const getStatus = (row) => {
+  let word = ''
+  switch (row.is_use) {
+    case '0':
+      word = t('common.is_use_abled')
+      break
+    case '1':
+      word = t('common.is_use_disabled')
+      break
+
+    default:
+      break
+  }
+  return word
+}
+const toSave = async () => {
+  const data = cloneDeep(form.value)
+  let res
+  if (get(data, 'id')) res = await store.update(data)
+  else res = await store.create(data)
+  if ($checkRes(res, true)) {
+    search({ skip, limit })
+    toClose()
+  }
+}
+const currentPage = ref(1)
+// 分页
+const changePage = (page = currentPage.value) => {
+  search({ skip: (page - 1) * limit, limit: limit })
+}
+</script>
+<style scoped lang="scss"></style>