Sfoglia il codice sorgente

解决列表字典项转换(存在搜索框字典第一次加载不出来问题)

asd123a20 3 anni fa
parent
commit
b2e86715b8

+ 3 - 14
admin-content/src/views/home.vue

@@ -6,18 +6,7 @@
         <el-button style="float: right; padding: 3px 0" type="text" @click="addcontents">添加文章</el-button>
         <el-button style="float: right; padding: 3px 0" type="text" @click="addcontents">添加文章</el-button>
       </div>
       </div>
       <div class="main">
       <div class="main">
-        <filterList ref="filterList" :tableData="contents" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total">
-          <template v-slot:search="{ item, formInline }">
-            <el-select clearable v-if="item.name == 'bind'" v-model="formInline[item.name]" placeholder="请选择">
-              <el-option
-                v-for="i in columnList"
-                :key="i.value"
-                :label="i.name"
-                :value="i.code">
-              </el-option>
-            </el-select>
-          </template>
-        </filterList>
+        <filterList ref="filterList" :tableData="contents" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
       </div>
       </div>
     </el-card>
     </el-card>
     <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
     <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
@@ -77,7 +66,7 @@ export default {
       visibleSync: false,
       visibleSync: false,
       filed: [
       filed: [
         { name: 'title', label: '标题', filter: true },
         { name: 'title', label: '标题', filter: true },
-        { name: 'bind', label: '绑定栏目', formater: 'slot', filter: true },
+        { name: 'bind', label: '绑定栏目', formater: 'dict:column', filter: true },
         { name: 'visit', label: '访问量' }
         { name: 'visit', label: '访问量' }
       ],
       ],
       formdata: {},
       formdata: {},
@@ -123,7 +112,7 @@ export default {
       return this.contentsList;
       return this.contentsList;
     }
     }
   },
   },
-  async mounted() {
+  async created() {
     await this.filterQuery();
     await this.filterQuery();
     await this.columnQuery();
     await this.columnQuery();
   },
   },

+ 1 - 3
admin-frame/src/components/filterList/search.vue

@@ -48,9 +48,7 @@ export default {
       const fileds = _.cloneDeep(this.filed);
       const fileds = _.cloneDeep(this.filed);
       return fileds.map(e => {
       return fileds.map(e => {
         if (e.formater && e.formater.includes('dict')) {
         if (e.formater && e.formater.includes('dict')) {
-          console.log(e.formater.split(':')[1]);
-          console.log(this.$dict(e.formater.split(':')[1]));
-          e.dict = this.$dict(e.formater.split(':')[1]);
+          e.dict = this.$dict(e.formater.split(':')[1]) || [];
           e.formater = 'dict';
           e.formater = 'dict';
         }
         }
         if (e.formater && e.formater.includes('date')) {
         if (e.formater && e.formater.includes('date')) {

+ 25 - 1
admin-frame/src/components/filterList/table.vue

@@ -2,7 +2,7 @@
   <el-table
   <el-table
     size="mini"
     size="mini"
     border
     border
-    :data="tableData"
+    :data="listFields"
     style="width: 100%"
     style="width: 100%"
     @selection-change="handleSelectionChange"
     @selection-change="handleSelectionChange"
     @row-dblclick="dblclick"
     @row-dblclick="dblclick"
@@ -43,6 +43,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import _ from 'lodash';
 export default {
 export default {
   props: {
   props: {
     // 多选属性
     // 多选属性
@@ -73,6 +74,29 @@ export default {
   data() {
   data() {
     return {};
     return {};
   },
   },
+  computed: {
+    listFields() {
+      let fileds = _.cloneDeep(this.filed);
+      fileds = fileds.map(e => {
+        if (e.formater && e.formater.includes('dict')) {
+          e.dict = this.$dict(e.formater.split(':')[1]);
+          e.formater = 'dict';
+        }
+        return e;
+      });
+      this.tableData.map(i => {
+        fileds.find(e => {
+          if (e.formater == 'dict' && e.dict) {
+            e.dict.find(k => {
+              if (k.code == i[e.name]) i[e.name] = k.name;
+            });
+          }
+        });
+        return i;
+      });
+      return this.tableData;
+    }
+  },
   mounted() {},
   mounted() {},
   methods: {
   methods: {
     // 操作函数
     // 操作函数

+ 2 - 2
admin-goods/src/views/Home.vue

@@ -59,7 +59,7 @@ export default {
       ],
       ],
       formdata: {},
       formdata: {},
       formfiled: [
       formfiled: [
-        { name: 'thumbnail', label: '状态', formater: 'slot' },
+        { name: 'thumbnail', label: '缩略图', formater: 'slot' },
         { name: 'name', label: '标题' },
         { name: 'name', label: '标题' },
         { name: 'describe', label: '描述' },
         { name: 'describe', label: '描述' },
         { name: 'content', label: '内容', formater: 'slot' }
         { name: 'content', label: '内容', formater: 'slot' }
@@ -83,7 +83,7 @@ export default {
   computed: {
   computed: {
     ...mapState(['goodsList', 'Total', 'journalList'])
     ...mapState(['goodsList', 'Total', 'journalList'])
   },
   },
-  async mounted() {
+  async created() {
     await this.filterQuery();
     await this.filterQuery();
   },
   },
   methods: {
   methods: {

+ 5 - 24
admin-journal-catalogue/src/views/home.vue

@@ -6,18 +6,7 @@
         <el-button style="float: right; padding: 3px 0" type="text" @click="addcatalogue">添加期刊</el-button>
         <el-button style="float: right; padding: 3px 0" type="text" @click="addcatalogue">添加期刊</el-button>
       </div>
       </div>
       <div class="main">
       <div class="main">
-        <filterList ref="filterList" :tableData="catalogue" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total">
-          <template v-slot:search="{ item, formInline }">
-            <el-select clearable v-if="item.name == 'bind'" v-model="formInline[item.name]" placeholder="请选择">
-              <el-option
-                v-for="i in journalList"
-                :key="i.value"
-                :label="i.name"
-                :value="i.code">
-              </el-option>
-            </el-select>
-          </template>
-        </filterList>
+        <filterList ref="filterList" :tableData="catalogueList" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
       </div>
       </div>
     </el-card>
     </el-card>
     <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
     <dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
@@ -70,7 +59,7 @@ export default {
       filed: [
       filed: [
         { name: 'name', label: '标题', filter: true },
         { name: 'name', label: '标题', filter: true },
         { name: 'status', label: '状态', filter: true, formater: 'dict:journalStatus' },
         { name: 'status', label: '状态', filter: true, formater: 'dict:journalStatus' },
-        { name: 'bind', label: '期刊栏目', formater: 'slot', filter: true }
+        { name: 'bind', label: '期刊栏目', formater: 'dict:journalQuery', filter: true }
       ],
       ],
       formdata: {},
       formdata: {},
       formfiled: [
       formfiled: [
@@ -114,21 +103,13 @@ export default {
     };
     };
   },
   },
   computed: {
   computed: {
-    ...mapState(['catalogueList', 'Total', 'journalList']),
-    catalogue() {
-      this.catalogueList.map(p => {
-        const findName = this.journalList.find(e => e.code == p.bind);
-        if (findName) p.bind = findName?.name;
-        return p;
-      });
-      return this.catalogueList;
-    }
+    ...mapState(['catalogueList', 'Total', 'journalList'])
   },
   },
-  async mounted() {
-    await this.filterQuery();
+  async created() {
     await this.statusQuery();
     await this.statusQuery();
     await this.columnQuery();
     await this.columnQuery();
     await this.journalQuery();
     await this.journalQuery();
+    await this.filterQuery();
   },
   },
   methods: {
   methods: {
     ...mapActions(['catalogueQuery', 'catalogueCreate', 'catalogueUpdate', 'catalogueDelete', 'catalogueQuery', 'catalogueFetch', 'statusQuery', 'columnQuery', 'journalQuery']),
     ...mapActions(['catalogueQuery', 'catalogueCreate', 'catalogueUpdate', 'catalogueDelete', 'catalogueQuery', 'catalogueFetch', 'statusQuery', 'columnQuery', 'journalQuery']),

+ 4 - 3
admin-journal-intact/src/views/home.vue

@@ -67,7 +67,8 @@ export default {
       filed: [
       filed: [
         { name: 'name', label: '标题', filter: true },
         { name: 'name', label: '标题', filter: true },
         { name: 'status', label: '状态', filter: true, formater: 'dict:journalStatus' },
         { name: 'status', label: '状态', filter: true, formater: 'dict:journalStatus' },
-        { name: 'visit', label: '访问量' }
+        { name: 'column', label: '栏目', formater: 'dict:journalcolumn' },
+        { name: 'type', label: '期刊类型', formater: 'dict:journalType' }
       ],
       ],
       formdata: {},
       formdata: {},
       formfiled: [
       formfiled: [
@@ -111,11 +112,11 @@ export default {
   computed: {
   computed: {
     ...mapState(['intactList', 'Total'])
     ...mapState(['intactList', 'Total'])
   },
   },
-  async mounted() {
-    await this.filterQuery();
+  async created() {
     await this.statusQuery();
     await this.statusQuery();
     await this.columnQuery();
     await this.columnQuery();
     await this.typeQuery();
     await this.typeQuery();
+    await this.filterQuery();
   },
   },
   methods: {
   methods: {
     ...mapActions(['intactQuery', 'intactCreate', 'intactUpdate', 'intactDelete', 'intactQuery', 'intactFetch', 'statusQuery', 'columnQuery', 'typeQuery']),
     ...mapActions(['intactQuery', 'intactCreate', 'intactUpdate', 'intactDelete', 'intactQuery', 'intactFetch', 'statusQuery', 'columnQuery', 'typeQuery']),

+ 5 - 3
admin-market/src/views/Home.vue

@@ -67,8 +67,10 @@ export default {
       visibleSync: false,
       visibleSync: false,
       filed: [
       filed: [
         { name: 'name', label: '名称', filter: true },
         { name: 'name', label: '名称', filter: true },
-        { name: 'type', label: '商品类型', formater: 'dslot', filter: true },
-        { name: 'status', label: '状态', formater: 'dslot', filter: true },
+        // { name: 'type', label: '商品类型', formater: 'slot', filter: true },
+        // { name: 'status', label: '状态', formater: 'slot', filter: true },
+        { name: 'type', label: '商品类型', formater: 'dict:marketType', filter: true },
+        { name: 'status', label: '状态', formater: 'dict:marketStatus', filter: true },
         { name: 'money', label: '价格' }
         { name: 'money', label: '价格' }
       ],
       ],
       formdata: {},
       formdata: {},
@@ -97,7 +99,7 @@ export default {
   computed: {
   computed: {
     ...mapState(['marketList', 'Total', 'typeList', 'goodList', 'dict'])
     ...mapState(['marketList', 'Total', 'typeList', 'goodList', 'dict'])
   },
   },
-  async mounted() {
+  async created() {
     await this.marketStatus();
     await this.marketStatus();
     await this.marketType();
     await this.marketType();
     await this.filterQuery();
     await this.filterQuery();