Sfoglia il codice sorgente

修改产业集群

zs 8 mesi fa
parent
commit
d242b3b8de

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

@@ -120,15 +120,21 @@ export default {
     addDialogTitle: '新增产业',
     upDialogTitle: '修改产业',
     title: '标题',
-    brief: '简介',
+    href: '合作方链接渠道',
     file: '背景图片',
-    href: '路由',
+    carousel: '轮播图',
     partner: '合作伙伴',
-    is_use: '是否启用',
-    remark: '备注',
+    companyPerson: '企业成员',
+    news: '新闻',
+    expertNum: '专家数',
     sort: '排序',
+    brief: '简介',
+    process: '发展进程',
+    situation: '合作情况',
+    activity: '重大活动',
+    is_use: '是否启用',
     titleMessage: '请输入标题',
-    hrefMessage: '请输入路由',
+    hrefMessage: '请输入合作方链接渠道',
     sortfMessage: '请输入排序'
   },
   news: {
@@ -568,7 +574,6 @@ export default {
     essearch_money: '预计研发费用(万元)',
     is_use: '是否使用',
     time: '填写时间',
-    status: '状态',
     status_pla: '请选择状态',
     no_data: '暂无数据',
     statusSelectPlaceholder: '请选择状态',

+ 106 - 0
src/views/platform/parts/other/companyPerson.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="person">
+    <custom-button-bar :fields="buttonFields" @add="toAdd"></custom-button-bar>
+    <el-table :data="list" border style="width: 100%">
+      <el-table-column prop="name" align="center" label="姓名" />
+      <el-table-column prop="department" align="center" label="部门" />
+      <el-table-column prop="position" align="center" label="职位" />
+      <el-table-column fixed="right" align="center" label="操作" min-width="40">
+        <template #default="scope">
+          <el-button link type="primary" @click.prevent="toEdit(scope.row)"> 修改 </el-button>
+          <el-button link type="danger" @click.prevent="toDelete(scope.$index)"> 删除 </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-dialog v-model="dialog.show" :title="dialog.title" :destroy-on-close="false" @close="toClose">
+      <el-row>
+        <el-col :span="24" v-if="dialog.type == '1'">
+          <custom-form v-model="personForm" :fields="personFormFields" :rules="rules" @save="toSave">
+            <template #logo>
+              <custom-upload model="logo" :list="personForm.logo" :limit="1" url="/files/web/cxyy_sector/upload" @change="onUpload" listType="picture-card"></custom-upload>
+            </template>
+            <template #content>
+              <WangEditor v-model="personForm.content" />
+            </template>
+          </custom-form>
+        </el-col>
+      </el-row>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import moment from 'moment'
+import { cloneDeep } from 'lodash-es'
+const buttonFields = [{ label: '添加', method: 'add' }]
+// 加载中
+const loading = ref(false)
+const personFormFields = ref([
+  { label: '头像', model: 'logo', custom: true },
+  { label: '姓名', model: 'name' },
+  { label: '部门', model: 'department' },
+  { label: '职位', model: 'position' },
+  { label: '简介', model: 'content', custom: true }
+])
+
+const rules = reactive({
+  title: [{ required: true, message: '请输入姓名', trigger: 'blur' }]
+})
+const dialog = ref({ type: '1', show: false, title: '维护企业成员信息' })
+const personForm = ref({})
+const props = defineProps({
+  data: { type: Array, default: () => [] }
+})
+const { data } = toRefs(props)
+const list = ref(data)
+const emit = defineEmits(['change'])
+// 请求
+onMounted(async () => {
+  loading.value = true
+  await search()
+  loading.value = false
+})
+
+const search = async () => {}
+// 添加
+const toAdd = () => {
+  personForm.value = { logo: [] }
+  dialog.value = { type: '1', show: true, title: '新增企业成员信息' }
+}
+// 修改
+const toEdit = (data) => {
+  personForm.value = data
+  if (!personForm.value.logo) personForm.value.logo = []
+  dialog.value = { type: '1', show: true, title: '修改信息' }
+}
+
+// 删除
+const toDelete = async (index) => {
+  list.value.splice(index, 1)
+  emit('change', { list: list.value, type: 'news' })
+}
+// 上传图片
+const onUpload = (e) => {
+  const { model, value } = e
+  personForm.value[model] = value
+}
+const toSave = async () => {
+  const result = cloneDeep(personForm.value)
+  if (result.id) {
+    let partner = list.value.filter((i) => i.id != result.id)
+    partner.push(result)
+    list.value = partner
+  } else list.value.push({ ...result, id: moment().valueOf() })
+  emit('change', { list: list.value, type: 'news' })
+  toClose()
+}
+const toClose = () => {
+  personForm.value = {}
+  dialog.value = { show: false }
+}
+</script>
+<style scoped lang="scss">
+.person {
+  width: 100%;
+}
+</style>

+ 104 - 0
src/views/platform/parts/other/news.vue

@@ -0,0 +1,104 @@
+<template>
+  <div class="news">
+    <custom-button-bar :fields="buttonFields" @add="toAdd"></custom-button-bar>
+    <el-table :data="list" border style="width: 100%">
+      <el-table-column prop="title" align="center" label="标题" />
+      <el-table-column prop="time" align="center" label="发布时间" />
+      <el-table-column fixed="right" align="center" label="操作" min-width="40">
+        <template #default="scope">
+          <el-button link type="primary" @click.prevent="toEdit(scope.row)"> 修改 </el-button>
+          <el-button link type="danger" @click.prevent="toDelete(scope.$index)"> 删除 </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-dialog v-model="dialog.show" :title="dialog.title" :destroy-on-close="false" @close="toClose">
+      <el-row>
+        <el-col :span="24" v-if="dialog.type == '1'">
+          <custom-form v-model="form" :fields="formFields" :rules="rules" @save="toSave">
+            <template #logo>
+              <custom-upload model="logo" :list="form.logo" :limit="1" url="/files/web/cxyy_sector/upload" @change="onUpload" listType="picture-card"></custom-upload>
+            </template>
+            <template #content>
+              <WangEditor v-model="form.content" />
+            </template>
+          </custom-form>
+        </el-col>
+      </el-row>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import moment from 'moment'
+import { cloneDeep } from 'lodash-es'
+const buttonFields = [{ label: '添加', method: 'add' }]
+// 加载中
+const loading = ref(false)
+const formFields = ref([
+  { label: '封面', model: 'logo', custom: true },
+  { label: '标题', model: 'title' },
+  { label: '发布时间', model: 'time', type: 'date' },
+  { label: '内容', model: 'content', custom: true }
+])
+const rules = reactive({
+  title: [{ required: true, message: '请输入标题', trigger: 'blur' }]
+})
+const dialog = ref({ type: '1', show: false, title: '维护新闻信息' })
+const form = ref({})
+const props = defineProps({
+  data: { type: Array, default: () => [] }
+})
+const { data } = toRefs(props)
+const list = ref(data)
+const emit = defineEmits(['change'])
+// 请求
+onMounted(async () => {
+  loading.value = true
+  await search()
+  loading.value = false
+})
+
+const search = async () => {}
+// 添加
+const toAdd = () => {
+  form.value = { logo: [] }
+  dialog.value = { type: '1', show: true, title: '新增新闻' }
+}
+// 修改
+const toEdit = (data) => {
+  form.value = data
+  if (!form.value.logo) form.value.logo = []
+  dialog.value = { type: '1', show: true, title: '修改信息' }
+}
+
+// 删除
+const toDelete = async (index) => {
+  list.value.splice(index, 1)
+  emit('change', { list: list.value, type: 'news' })
+}
+// 上传图片
+const onUpload = (e) => {
+  const { model, value } = e
+  form.value[model] = value
+}
+
+const toSave = async () => {
+  const result = cloneDeep(form.value)
+  if (result.id) {
+    let partner = list.value.filter((i) => i.id != result.id)
+    partner.push(result)
+    list.value = partner
+  } else list.value.push({ ...result, id: moment().valueOf() })
+  emit('change', { list: list.value, type: 'news' })
+  toClose()
+}
+const toClose = () => {
+  form.value = {}
+  dialog.value = { show: false }
+}
+</script>
+<style scoped lang="scss">
+.news {
+  width: 100%;
+}
+</style>

+ 35 - 14
src/views/platform/parts/sector.vue

@@ -19,14 +19,7 @@
                   <el-table-column type="index" label="序号" width="60" 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_sector/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_sector/upload" @change="onFriendUpload($event, scope.row)"></custom-upload>
                     </template>
                   </el-table-column>
                   <el-table-column prop="name" label="名称" align="center">
@@ -42,12 +35,30 @@
                 </el-table>
               </el-col>
             </template>
+            <template #companyPerson>
+              <companyPerson :data="form.companyPerson" @change="change"></companyPerson>
+            </template>
+            <template #news>
+              <news :data="form.news" @change="change"></news>
+            </template>
+            <template #carousel>
+              <custom-upload model="carousel" :list="form.carousel" :limit="4" url="/files/web/cxyy_sector/upload" @change="onUpload" listType="picture-card"></custom-upload>
+            </template>
             <template #file>
               <custom-upload model="file" :list="form.file" :limit="1" url="/files/web/cxyy_sector/upload" @change="onUpload" listType="picture-card"></custom-upload>
             </template>
             <template #brief>
               <WangEditor v-model="form.brief" />
             </template>
+            <template #process>
+              <WangEditor v-model="form.process" />
+            </template>
+            <template #situation>
+              <WangEditor v-model="form.situation" />
+            </template>
+            <template #activity>
+              <WangEditor v-model="form.activity" />
+            </template>
             <template #is_use>
               <el-radio v-for="i in isUseList" :key="i.id" :label="i.value">{{ i.label }}</el-radio>
             </template>
@@ -59,6 +70,9 @@
 </template>
 
 <script setup>
+// 组件
+import news from './other/news.vue'
+import companyPerson from './other/companyPerson.vue'
 import moment from 'moment'
 const $checkRes = inject('$checkRes')
 import { cloneDeep, get } from 'lodash-es'
@@ -79,8 +93,7 @@ const fields = [
     model: 'is_use',
     format: (i) => getDict(i, 'is_use'),
     custom: true
-  },
-  { label: t('pages.sector.remark'), model: 'remark' }
+  }
 ]
 const opera = [
   { label: t('common.update'), method: 'edit' },
@@ -96,19 +109,24 @@ const loading = ref(false)
 const formFields = [
   { label: t('pages.sector.title'), model: 'title' },
   { label: t('pages.sector.href'), model: 'href' },
+  { label: t('pages.sector.carousel'), model: 'carousel', custom: true },
   { label: t('pages.sector.file'), model: 'file', custom: true },
-  { label: t('pages.sector.partner'), model: 'partner', custom: true },
+  { label: t('pages.sector.companyPerson'), model: 'companyPerson', custom: true },
+  { label: t('pages.sector.news'), model: 'news', custom: true },
   { label: t('pages.sector.sort'), model: 'sort', type: 'number' },
   { label: t('pages.sector.is_use'), model: 'is_use', type: 'radio' },
-  { label: t('pages.sector.remark'), model: 'remark', type: 'textarea' },
-  { label: t('pages.sector.brief'), model: 'brief', custom: true }
+  { label: t('pages.sector.brief'), model: 'brief', custom: true },
+  { label: t('pages.sector.process'), model: 'process', custom: true },
+  { label: t('pages.sector.situation'), model: 'situation', custom: true },
+  { label: t('pages.sector.activity'), model: 'activity', custom: true },
+  { label: t('pages.sector.partner'), model: 'partner', custom: true }
 ]
 const rules = reactive({
   title: [{ required: true, message: t('pages.sector.titleMessage'), trigger: 'blur' }],
   sort: [{ required: true, message: t('pages.sector.sortfMessage'), trigger: 'blur' }]
 })
 const dialog = ref({ type: '1', show: false, title: t('pages.sector.dialogTitle'), top: '15vh' })
-const form = ref({ partner: [], file: [] })
+const form = ref({ partner: [], file: [], carousel: [], companyPerson: [], news: [] })
 // 请求
 onMounted(async () => {
   loading.value = true
@@ -217,5 +235,8 @@ const toUse = async (data, is_use) => {
     })
     .catch(() => {})
 }
+const change = ({ list, type }) => {
+  form[type] = list || []
+}
 </script>
 <style scoped lang="scss"></style>