Przeglądaj źródła

feat: #追加数据字典

loki 3 lat temu
rodzic
commit
4e52e0fffa

+ 4 - 0
src/api/dict/index.js

@@ -0,0 +1,4 @@
+import api from '@/utils/request';
+
+export const getList = params =>
+	api.post(`/yxl-back-end/framework/dict/entry/list`, params);

+ 63 - 0
src/components/DataSelect.vue

@@ -0,0 +1,63 @@
+<template>
+  <el-select v-model="newValue" placeholder="请选择">
+    <el-option
+      v-for="item in options"
+      :key="item.value"
+      :label="item.label"
+      :value="item.value"
+    >
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { getList } from '@/api/dict';
+
+export default {
+  name: 'DataSelect',
+  props: {
+    value: {
+      type: String,
+      default: ''
+    },
+    params: {
+      type: String,
+      default: ''
+    }
+  },
+
+  data() {
+    return {
+      newValue: this.value,
+      options: []
+    };
+  },
+
+  watch: {
+    newValue: {
+      handler(val) {
+        this.$emit('input', val);
+      },
+      immediate: true
+    }
+  },
+
+  created() {
+    this.loadData();
+  },
+
+  methods: {
+    async loadData() {
+      const { data } = await getList({
+        dictCode: this.params
+      });
+      this.options = data.map(x => ({
+        value: x.value,
+        label: x.name
+      }));
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 2 - 0
src/components/index.js

@@ -4,6 +4,7 @@ import BaseBtn from './BaseBtn.vue';
 import BaseTable from './BaseTable.vue';
 import BaseTable from './BaseTable.vue';
 import BaseTooltip from './BaseTooltip.vue';
 import BaseTooltip from './BaseTooltip.vue';
 import Breadcrumb from './Breadcrumb.vue';
 import Breadcrumb from './Breadcrumb.vue';
+import DataSelect from './DataSelect.vue';
 import Hamburger from './Hamburger.vue';
 import Hamburger from './Hamburger.vue';
 import RichText from './RichText.vue';
 import RichText from './RichText.vue';
 import SvgIcon from './SvgIcon.vue';
 import SvgIcon from './SvgIcon.vue';
@@ -14,6 +15,7 @@ Vue.component('BaseBtn', BaseBtn);
 Vue.component('BaseTable', BaseTable);
 Vue.component('BaseTable', BaseTable);
 Vue.component('BaseTooltip', BaseTooltip);
 Vue.component('BaseTooltip', BaseTooltip);
 Vue.component('Breadcrumb', Breadcrumb);
 Vue.component('Breadcrumb', Breadcrumb);
+Vue.component('DataSelect', DataSelect);
 Vue.component('Hamburger', Hamburger);
 Vue.component('Hamburger', Hamburger);
 Vue.component('RichText', RichText);
 Vue.component('RichText', RichText);
 Vue.component('SvgIcon', SvgIcon);
 Vue.component('SvgIcon', SvgIcon);

+ 6 - 0
src/containers/ToolbarContainer.vue

@@ -78,6 +78,12 @@
               v-model="form[field.name]"
               v-model="form[field.name]"
               :props="{ checkStrictly: true }"
               :props="{ checkStrictly: true }"
             ></IssueTypeSelect>
             ></IssueTypeSelect>
+            <DataSelect
+              v-if="field.type === 'DataSelect'"
+              v-model="form[field.name]"
+              :params="field.params"
+              :props="field.props"
+            ></DataSelect>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
       </el-row>
       </el-row>

+ 1 - 13
src/views/baseManagement/bannerManagement/modal/ItemModal.vue

@@ -15,19 +15,7 @@
         <upload v-model="form.imgUrl" params="prefix=/banner" />
         <upload v-model="form.imgUrl" params="prefix=/banner" />
       </el-form-item>
       </el-form-item>
       <el-form-item label="位置" prop="type">
       <el-form-item label="位置" prop="type">
-        <el-select
-          v-model="form.type"
-          :clearable="true"
-          placeholder="请选择所属位置"
-        >
-          <el-option
-            v-for="item in typeOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
-          </el-option>
-        </el-select>
+        <DataSelect v-model="form.type"></DataSelect>
       </el-form-item>
       </el-form-item>
       <el-form-item label="标题" prop="name">
       <el-form-item label="标题" prop="name">
         <el-input v-model="form.name"></el-input>
         <el-input v-model="form.name"></el-input>

+ 9 - 7
src/views/baseManagement/bannerManagement/toolbar.vue

@@ -1,10 +1,5 @@
 <template>
 <template>
-  <toolbar-container
-    :fields="fields"
-    :showSearch="false"
-    :showReset="false"
-    v-on="$listeners"
-  />
+  <toolbar-container :fields="fields" v-on="$listeners" />
 </template>
 </template>
 
 
 <script>
 <script>
@@ -13,7 +8,14 @@ export default {
 
 
   data() {
   data() {
     return {
     return {
-      fields: []
+      fields: [
+        {
+          type: 'DataSelect',
+          name: 'type',
+          label: '位置',
+          params: 'BANNER_TYPE'
+        }
+      ]
     };
     };
   }
   }
 };
 };