Browse Source

Merge branch 'master' of http://git.cc-lotus.info/Consumables/admin-cms-two

zs 3 years ago
parent
commit
49d367eb00

+ 20 - 25
src/views/menu/apply/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main animate__animated animate__backInRight">
         <el-col :span="24" class="one">
-          <data-table @query="search" :fields="fields" :opera="opera" :data="list" :total="total" @view="toView" @receive="torEceive" @edit="toEdit">
+          <data-table @query="search" :fields="fields" :opera="opera" :data="list" :total="total" @view="toView" @receive="torEceive">
             <template #selfbtn>
               <el-button type="primary" size="mini" @click="toAdd()">添加信息</el-button>
             </template>
@@ -22,7 +22,6 @@
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
-const moment = require('moment');
 export default {
   name: 'index',
   props: {},
@@ -34,15 +33,15 @@ export default {
     return {
       // 数据项
       fields: [
+        { label: '联系人', prop: 'user_name', filter: true },
         { label: '联系电话', prop: 'user_phone', filter: true },
-        { label: '审核时间', prop: 'examine_date', filter: true },
-        { label: '审核状态', prop: 'status_name', filter: true },
+        { label: '审核时间', prop: 'examine_date' },
+        { label: '审核状态', prop: 'status_name' },
       ],
       //操作项
       opera: [
-        { label: '详细信息', method: 'view' },
-        { label: '领取确定', method: 'receive', type: 'success', confirm: true },
-        { label: '修改信息', method: 'edit' },
+        { label: '详情', method: 'view' },
+        { label: '领取确定', method: 'receive', type: 'success', confirm: true, display: (i) => i.status == '2' },
       ],
       //表格数据
       list: [
@@ -55,6 +54,18 @@ export default {
           status_name: '待审',
           examine_desc: '我想不同意,但我还是同意了',
           order: [{ name: '小洋人', num: '121', desc: '别卖太便宜了,赔钱' }],
+          status: '1',
+        },
+        {
+          id: '123',
+          user_name: '法外狂徒张三',
+          user_phone: '12345678901',
+          examine_name: '李四',
+          examine_date: '2022-5-18',
+          status_name: '待审',
+          examine_desc: '我想不同意,但我还是同意了',
+          order: [{ name: '小洋人', num: '121', desc: '别卖太便宜了,赔钱' }],
+          status: '2',
         },
       ],
       // 列表数据总数
@@ -69,7 +80,7 @@ export default {
   },
   methods: {
     //查询数据
-    async search() {},
+    async search({ skip = 0, limit = 10, ...info } = {}) {},
     //详细信息
     async toView({ data }) {
       this.$set(this, `form`, data);
@@ -77,23 +88,7 @@ export default {
     },
     //领取确定
     async torEceive({ data }) {
-      this.$confirm('您是否确认领取?', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-        .then(() => {
-          this.$message({
-            type: 'success',
-            message: '删除成功!',
-          });
-        })
-        .catch(() => {
-          this.$message({
-            type: 'info',
-            message: '已取消删除',
-          });
-        });
+      console.log(data);
     },
     // 添加
     toAdd() {

+ 5 - 5
src/views/menu/apply/parts/form-1.vue

@@ -9,7 +9,7 @@
                 <el-button type="primary" size="mini" @click="toAddOrder()">添加</el-button>
               </el-col>
               <el-col :span="24" class="table">
-                <el-table :data="form.order" style="width: 100%" border>
+                <el-table :data="form.order" style="width: 100%" border stripe size="mini">
                   <el-table-column prop="name" label="商品名称" align="center" show-overflow-tooltip> </el-table-column>
                   <el-table-column prop="num" label="商品数量" align="center" show-overflow-tooltip> </el-table-column>
                   <el-table-column prop="desc" label="特殊说明" align="center" show-overflow-tooltip> </el-table-column>
@@ -48,9 +48,9 @@ export default {
         { label: '商品列表', model: 'order', custom: true },
       ],
       rules: {
-        user_name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
-        user_phone: [{ required: true, message: '请输入电话', trigger: 'blur' }],
-        order: [{ required: true, message: '请添加商品信息', trigger: 'change' }],
+        user_name: [{ required: true, message: '请输入姓名' }],
+        user_phone: [{ required: true, message: '请输入电话' }],
+        order: [{ required: true, message: '请添加商品信息' }],
       },
       // 弹框
       dialog: { title: '信息管理', show: false, type: '1' },
@@ -77,7 +77,7 @@ export default {
       this.toClose();
     },
     // 删除商品信息
-    orderDelete(index, data) {
+    orderDelete(index) {
       this.$emit('orderDelete', { index: index });
     },
     toClose() {

+ 6 - 7
src/views/menu/apply/parts/info-1.vue

@@ -5,7 +5,7 @@
         <data-form :fields="fields" :data="form" :needSave="false">
           <template #custom="{ item }">
             <template v-if="item.model === 'order'">
-              <data-table :fields="orderField" :opera="opera" :data="form.order" :usePage="false"> </data-table>
+              <data-table :fields="orderField" :opera="[]" :data="form.order" :usePage="false"> </data-table>
             </template>
           </template>
         </data-form>
@@ -24,11 +24,11 @@ export default {
     return {
       //表单配置项
       fields: [
-        { label: '姓名', model: 'user_name' },
-        { label: '电话', model: 'user_phone' },
-        { label: '审核人', model: 'examine_name' },
-        { label: '审核时间', model: 'examine_date' },
-        { label: '审核意见', model: 'examine_desc' },
+        { label: '姓名', model: 'user_name', readonly: true },
+        { label: '电话', model: 'user_phone', readonly: true },
+        { label: '审核人', model: 'examine_name', readonly: true },
+        { label: '审核时间', model: 'examine_date', readonly: true },
+        { label: '审核意见', model: 'examine_desc', type: 'textarea', readonly: true },
         { label: '商品列表', model: 'order', custom: true },
       ],
       // 商品列表
@@ -37,7 +37,6 @@ export default {
         { label: '商品数量', prop: 'num' },
         { label: '特殊说明', prop: 'desc' },
       ],
-      opera: [],
     };
   },
   created() {},

+ 78 - 5
src/views/menu/type/index.vue

@@ -1,8 +1,25 @@
 <template>
   <div id="index">
     <el-row>
-      <el-col :span="24" class="main animate__animated animate__backInRight"> test </el-col>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col class="one">
+          <el-button type="primary" size="mini" @click="toAdd()">添加商品类型</el-button>
+        </el-col>
+        <el-col class="two">
+          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @view="toView" @edit="toEdit">
+            <!-- <template #selfbtn>
+          <el-button type="primary" size="mini" @click="toAdd()">添加商品类型</el-button>
+          </template> -->
+          </data-table>
+        </el-col>
+      </el-col>
     </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <detail-1 v-if="dialog.type == '1'" :form="form" @onSubmit="onSubmit"></detail-1>
+        <info-1 :form="info" v-else></info-1>
+      </template>
+    </e-dialog>
   </div>
 </template>
 
@@ -11,12 +28,62 @@ import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    detail1: () => import('./parts/detail-1.vue'),
+    info1: () => import('./parts/info-1.vue'),
+  },
   data: function () {
-    return {};
+    return {
+      // 数据项
+      fields: [
+        { label: '类型类别', prop: 'code' },
+        { label: '类型名称', prop: 'name' },
+      ],
+      total: 0,
+      opera: [
+        { label: '详细信息', method: 'view' },
+        { label: '信息变更', method: 'edit' },
+      ],
+      // 列表
+      list: [
+        { id: '1115', code: '5', name: '水彩笔5' },
+        { id: '1116', code: '6', name: '水彩笔6' },
+        { id: '1117', code: '7', name: '水彩笔7' },
+      ],
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      // 添加表单
+      form: {},
+      //详情
+      info: {},
+    };
   },
   created() {},
-  methods: {},
+  methods: {
+    search() {},
+    // 添加
+    toAdd() {
+      this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };
+    },
+    // 提交保存
+    onSubmit(data) {
+      this.toClose();
+    },
+    // 详细信息
+    toView({ data }) {
+      this.$set(this, `info`, data);
+      this.dialog = { title: '详细信息', show: true, type: '2', widths: '40%' };
+    },
+    // 信息变更
+    toEdit({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };
+    },
+    // 关闭弹框
+    toClose() {
+      this.dialog = { show: false };
+    },
+  },
   computed: {
     ...mapState(['user']),
   },
@@ -33,4 +100,10 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.main {
+  .one {
+    margin: 10px 0;
+  }
+}
+</style>

+ 53 - 0
src/views/menu/type/parts/detail-1.vue

@@ -0,0 +1,53 @@
+<template>
+  <div id="detail-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="rules" @save="toSave"> </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'detail-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '类型类别', model: 'code' },
+        { label: '类型名称', model: 'name' },
+      ],
+      rules: {
+        code: [{ required: true, message: '请输入类型类别' }],
+        name: [{ required: true, message: '请输入类型名称' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    toSave({ data }) {
+      this.$emit('onSubmit', data);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 46 - 0
src/views/menu/type/parts/info-1.vue

@@ -0,0 +1,46 @@
+<template>
+  <div id="info-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="rules" :needSave="false"> </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '类型类别', model: 'code', readonly: true },
+        { label: '类型名称', model: 'name', readonly: true },
+      ],
+      rules: {},
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 103 - 4
src/views/menu/user/index.vue

@@ -1,22 +1,121 @@
 <template>
   <div id="index">
     <el-row>
-      <el-col :span="24" class="main animate__animated animate__backInRight"> test </el-col>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col class="one">
+          <data-table @query="search" :fields="fields" :opera="opera" :data="list" :total="total" @view="toView" @edit="toEdit" @reset="toReset" @del="toDel">
+            <template #selfbtn>
+              <el-button type="primary" size="mini" @click="toAdd()">添加用户</el-button>
+            </template>
+          </data-table>
+        </el-col>
+      </el-col>
     </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <detail-1 v-if="dialog.type == '1'" :form="form" :typeList="typeList" @toSave="onSubmit"></detail-1>
+        <info-1 v-else-if="dialog.type == '2'" :form="form" :typeList="typeList"></info-1>
+      </template>
+    </e-dialog>
   </div>
 </template>
 
 <script>
+const { type } = require('@common/src/layout/deploy/dict');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    detail1: () => import('./parts/detail-1.vue'),
+    info1: () => import('./parts/info-1.vue'),
+  },
   data: function () {
-    return {};
+    return {
+      // 数据项
+      fields: [
+        {
+          label: '用户类别',
+          prop: 'type',
+          format: (item) => {
+            let data = this.typeList.find((i) => i.value == item);
+            if (data) return data.label;
+          },
+        },
+        { label: '姓名', prop: 'name', filter: true },
+        { label: '电话', prop: 'phone', filter: true },
+        { label: '电子邮箱', prop: 'email' },
+        { label: '联系地址', prop: 'address' },
+        { label: '部门', prop: 'dept' },
+        { label: '职务', prop: 'zw' },
+        { label: '工作单位', prop: 'company' },
+      ],
+      total: 0,
+      opera: [
+        { label: '详情', method: 'view' },
+        { label: '修改', method: 'edit' },
+        { label: '密码重置', method: 'reset', confirm: true },
+        { label: '删除', method: 'del', type: 'danger', confirm: true },
+      ],
+      // 列表
+      list: [
+        {
+          type: '0',
+          id: '1111',
+          name: '法外狂徒张三',
+          phone: '12345678901',
+          email: '123@qq.com',
+          address: '翻斗花园',
+          dept: '采购部门',
+          zw: '采购人员',
+          company: '翻斗花园',
+        },
+      ],
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      // 表单
+      form: {},
+      // 用户类别
+      typeList: type,
+    };
   },
   created() {},
-  methods: {},
+  methods: {
+    search({ skip = 0, limit = 10, ...info } = {}) {},
+    // 详细信息
+    toView({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '详细信息', show: true, type: '2', widths: '40%' };
+    },
+    // 添加
+    toAdd() {
+      this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };
+    },
+    // 修改
+    toEdit({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };
+    },
+    // 提交保存
+    onSubmit({ data }) {
+      console.log(data);
+      // this.toClose();
+    },
+    // 密码重置
+    toReset({ data }) {
+      console.log(data);
+    },
+    // 删除信息
+    toDel({ data }) {
+      console.log(data);
+    },
+    // 关闭弹框
+    toClose() {
+      this.form = {};
+      this.dialog = { show: false };
+      this.search();
+    },
+  },
   computed: {
     ...mapState(['user']),
   },

+ 72 - 0
src/views/menu/user/parts/detail-1.vue

@@ -0,0 +1,72 @@
+<template>
+  <div id="detail-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="rules" @save="toSave">
+          <template #options="{ item }">
+            <template v-if="item.model === 'type'">
+              <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'detail-1',
+  props: {
+    form: { type: Object },
+    typeList: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '用户类别', model: 'type', type: 'select' },
+        { label: '姓名', model: 'name' },
+        { label: '电话', model: 'phone' },
+        { label: '电子邮箱', model: 'email' },
+        { label: '联系地址', model: 'address' },
+        { label: '部门', model: 'dept' },
+        { label: '职务', model: 'zw' },
+        { label: '工作单位', model: 'company' },
+      ],
+      rules: {
+        type: [{ required: true, message: '请选择用户类别' }],
+        name: [{ required: true, message: '请输入姓名' }],
+        phone: [{ required: true, message: '请输入电话' }],
+        email: [{ required: true, message: '请输入电子邮箱' }],
+        address: [{ required: true, message: '请输入联系地址' }],
+        dept: [{ required: true, message: '请输入部门' }],
+        zw: [{ required: true, message: '请输入职务' }],
+        company: [{ required: true, message: '请输入工作单位' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    toSave({ data }) {
+      this.$emit('toSave', { data: data });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 58 - 0
src/views/menu/user/parts/info-1.vue

@@ -0,0 +1,58 @@
+<template>
+  <div id="info-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="{}" :needSave="false">
+          <template #options="{ item }">
+            <template v-if="item.model === 'type'">
+              <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    form: { type: Object },
+    typeList: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '用户类别', model: 'type', type: 'select', readonly: true },
+        { label: '姓名', model: 'name', readonly: true },
+        { label: '电话', model: 'phone', readonly: true },
+        { label: '电子邮箱', model: 'email', readonly: true },
+        { label: '联系地址', model: 'address', readonly: true },
+        { label: '部门', model: 'dept', readonly: true },
+        { label: '职务', model: 'zw', readonly: true },
+        { label: '工作单位', model: 'company', readonly: true },
+      ],
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>