wxy 4 年之前
父節點
當前提交
e7ac2d0380
共有 5 個文件被更改,包括 180 次插入129 次删除
  1. 2 0
      src/store/index.js
  2. 1 1
      src/views/client/addroute.vue
  3. 88 49
      src/views/client/contract.vue
  4. 4 30
      src/views/personnel/user.vue
  5. 85 49
      src/views/supplier/contract.vue

+ 2 - 0
src/store/index.js

@@ -11,6 +11,7 @@ import dictionary from '@f/store/system/dictionary';
 import user from '@f/store/personnel/user';
 import driver from '@f/store/personnel/driver';
 import client from '@f/store/client/client';
+import treaty from '@f/store/client/treaty';
 import util from '@f/store/util';
 import { menuParams, setMenuParams } from '@f/store/auth/menuParams';
 
@@ -31,5 +32,6 @@ export default new Vuex.Store({
     driver,
     user,
     client,
+    treaty,
   },
 });

+ 1 - 1
src/views/client/addroute.vue

@@ -22,7 +22,7 @@
         </el-col>
       </el-col>
     </el-row>
-    <el-dialog :visible.sync="dialog" title="项目详情" @close="toClose" width="50%">
+    <el-dialog :visible.sync="dialog" title="线路详情" @close="toClose" width="50%">
       <!-- 物流里面的:data要换成v-model -->
       <data-form v-model="form" :fields="fields" @save="turnSave" :rules="rules">
         <template #options="{item}">

+ 88 - 49
src/views/client/contract.vue

@@ -18,12 +18,13 @@
             @editor="editor"
             @delete="toDelete"
             @see="see"
-            @query="search"
+            @query="searchTreaty"
             @handleSelect="toSelect"
+            :toFormat="roleSelect"
           >
             <template #options="{item}">
-              <template v-if="item.model == 'name'">
-                <el-option v-for="(item, index) in nameList" :key="index" :value="item.name" :label="item.name"></el-option>
+              <template v-if="item.model == 'client'">
+                <el-option v-for="(item, index) in nameList" :key="index" :value="item.id" :label="item.name"></el-option>
               </template>
             </template>
             <template #filterEnd>
@@ -38,8 +39,11 @@
       <!-- 物流里面的:data要换成v-model -->
       <data-form v-model="form" :fields="fields" @save="turnSave" :rules="rules">
         <template #options="{item}">
-          <template v-if="item.model == 'name'">
-            <el-option v-for="(item, index) in nameList" :key="index" :value="item.name" :label="item.name"></el-option>
+          <template v-if="item.model == 'client'">
+            <el-option v-for="(item, index) in nameList" :key="index" :value="item.id" :label="item.name"></el-option>
+          </template>
+          <template v-if="item.model == 'status'">
+            <el-option v-for="(item, index) in item.list" :key="index" :value="item.value" :label="item.label"></el-option>
           </template>
         </template>
       </data-form>
@@ -49,6 +53,8 @@
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: treaty } = createNamespacedHelpers('treaty');
+const { mapActions: client } = createNamespacedHelpers('client');
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
@@ -59,36 +65,27 @@ export default {
   data: function() {
     return {
       fields: [
-        { label: '客户', model: 'name', filter: 'select', type: 'select' },
-        { label: '合同编号', model: 'num', filter: 'input' },
-        { label: '甲方', model: 'partA' },
-        { label: '乙方', model: 'partB' },
+        { label: '客户', model: 'client', filter: 'select', type: 'select', format: true },
+        { label: '合同编号', model: 'number', filter: 'input' },
+        { label: '甲方', model: 'jf' },
+        { label: '乙方', model: 'yf' },
         { label: '合同周期', model: 'period' },
-        { label: '结算方式', model: 'way' },
-        { label: '结算周期', model: 'cycle' },
-      ],
-      list: [
+        { label: '结算方式', model: 'settle_up' },
+        { label: '结算周期', model: 'settle_up_period' },
         {
-          id: '1',
-          name: 'xxx有限公司',
-          num: 'AW-YS-ZF-2018-005',
-          partA: '佛山市吉航物流有限公司',
-          partB: '长春市傲维运输有限公司',
-          period: '3年',
-          way: '银行转账',
-          cycle: '月结',
-        },
-        {
-          id: '2',
-          name: '吉林省鸿泽物流有限公司-梅克郎',
-          num: '长春梅克郎长途项目',
-          partA: '吉林省鸿泽物流有限公司',
-          partB: '长春市傲维运输有限公司',
-          period: '3年',
-          way: '银行转账',
-          cycle: '日结',
+          label: '状态',
+          model: 'status',
+          filter: 'select',
+          type: 'select',
+          formact: i => (i === '0' ? '使用' : '禁用'),
+          list: [
+            { label: '使用', value: '0' },
+            { label: '禁用', value: '1' },
+          ],
         },
+        { label: '创始人', model: 'owner', notable: true, noform: true },
       ],
+      list: [],
       total: 0,
       opera: [
         { label: '编辑', method: 'editor' },
@@ -98,54 +95,96 @@ export default {
       dialog: false,
       form: {},
       rules: {
-        name: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
-        num: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
-        partA: [{ required: true, message: '请输入甲方名称', trigger: 'blur' }],
-        partB: [{ required: true, message: '请输入乙方名称', trigger: 'blur' }],
+        client: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
+        number: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
+        jf: [{ required: true, message: '请输入甲方名称', trigger: 'blur' }],
+        yf: [{ required: true, message: '请输入乙方名称', trigger: 'blur' }],
         period: [{ required: true, message: '请输入合同周期', trigger: 'blur' }],
-        way: [{ required: true, message: '请输入结算方式', trigger: 'blur' }],
-        cycle: [{ required: true, message: '请输入结算周期', trigger: 'blur' }],
+        settle_up: [{ required: true, message: '请输入结算方式', trigger: 'blur' }],
+        settle_up_period: [{ required: true, message: '请输入结算周期', trigger: 'blur' }],
+        status: [{ required: true, message: '请选择状态', trigger: 'blur' }],
       },
       //客户列表
-      nameList: [{ name: 'xxx有限公司' }, { name: '公司2' }, { name: '公司3' }, { name: '公司4' }, { name: '公司5' }],
+      nameList: [],
       selected: [],
     };
   },
-  created() {},
+  created() {
+    this.search();
+  },
   methods: {
+    ...treaty(['query', 'create', 'update', 'delete']),
+    ...client({ cQuery: 'query', cCreate: 'create', cUpdate: 'update', cDelete: 'delete' }),
     async search() {
-      console.log('chaxun');
+      //查客户
+      const res = await this.cQuery({ type: '客户' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `nameList`, res.data);
+      }
+    },
+    // 查合同 其他参数是...info,都包括在里面,可以输出看看
+    async searchTreaty({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        const { data, total } = res;
+        this.$set(this, `list`, data);
+        this.$set(this, `total`, total);
+      }
     },
     //关闭
     toClose() {
-      this.dialog = false;
       this.form = {};
+      this.dialog = false;
     },
     //保存
-    turnSave(data) {
-      console.log(data);
+    async turnSave({ data }) {
+      let client = data.client;
+      if (data.id) {
+        const res = await this.update(data);
+        if (this.$checkRes(res, '修改成功', res.errmsg || '修改失败')) {
+          this.searchTreaty({ client });
+          this.toClose();
+        }
+      } else {
+        //谁登陆owner就是谁,把id赋予上面就行
+        data.owner = this.user.id;
+        const res = await this.create(data);
+        if (this.$checkRes(res, '创建成功', res.errmsg || '创建失败')) {
+          this.searchTreaty({ client });
+          this.toClose();
+        }
+      }
     },
+
     //编辑
-    editor(data) {
-      const res = data;
-      this.$set(this, `form`, res.data);
+    editor({ data }) {
+      this.$set(this, `form`, data);
       this.dialog = true;
     },
     //刪除
-    toDelete(data) {
-      console.log(data);
+    async toDelete({ data }) {
+      let client = data.client;
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) {
+        this.searchTreaty({ client });
+      }
     },
     //查看項目
     see() {
       this.$router.push({ path: '/client/project' });
     },
     toSelect(data) {
-      // console.log(data);
       this.selected = data;
     },
     toExport() {
       console.log('导出');
     },
+    roleSelect({ model, value }) {
+      if (model == 'client') {
+        let arr = this.nameList.find(i => i.id === value);
+        if (arr) return arr.name;
+      }
+    },
   },
   computed: {
     ...mapState(['user']),

+ 4 - 30
src/views/personnel/user.vue

@@ -101,6 +101,7 @@ export default {
       roleOptions: [],
       rules: {
         login_id: [{ required: true, message: '请输入登录id', trigger: 'blur' }],
+        // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
       },
     };
   },
@@ -126,31 +127,13 @@ export default {
     async turnSave({ data }) {
       if (data.id) {
         const res = await this.update(data);
-        if (this.$checkRes(res)) {
-          this.$message({
-            message: '修改成功',
-            type: 'success',
-          });
+        if (this.$checkRes(res, '修改成功', res.errmsg || '修改失败')) {
           this.toClose();
-        } else {
-          this.$message({
-            message: res.errmsg,
-            type: 'error',
-          });
         }
       } else {
         const res = await this.create(data);
-        if (this.$checkRes(res)) {
-          this.$message({
-            message: '创建成功',
-            type: 'success',
-          });
+        if (this.$checkRes(res, '创建成功', res.errmsg || '创建失败')) {
           this.toClose();
-        } else {
-          this.$message({
-            message: res.errmsg,
-            type: 'error',
-          });
         }
       }
     },
@@ -167,17 +150,8 @@ export default {
     //删除
     async toDelete({ data }) {
       const res = await this.delete(data.id);
-      if (this.$checkRes(res)) {
-        this.$message({
-          message: '删除成功',
-          type: 'success',
-        });
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) {
         this.toClose();
-      } else {
-        this.$message({
-          message: res.errmsg,
-          type: 'error',
-        });
       }
     },
     //冻结 因为data里面是个对象,里面有data还有index等别的数据,所以在接收参数的时候接收对象形式的data就行

+ 85 - 49
src/views/supplier/contract.vue

@@ -15,14 +15,15 @@
             :step="10"
             @editor="editor"
             @delete="toDelete"
-            @query="search"
             @see="see"
             :select="true"
+            @query="searchTreaty"
             @handleSelect="toSelect"
+            :toFormat="roleSelect"
           >
             <template #options="{item}">
-              <template v-if="item.model == 'name'">
-                <el-option v-for="(item, index) in nameList" :key="index" :value="item.name" :label="item.name"></el-option>
+              <template v-if="item.model == 'client'">
+                <el-option v-for="(item, index) in nameList" :key="index" :value="item.id" :label="item.name"></el-option>
               </template>
             </template>
             <template #filterEnd>
@@ -37,8 +38,8 @@
       <!-- 物流里面的:data要换成v-model -->
       <data-form v-model="form" :fields="fields" @save="turnSave" :rules="rules">
         <template #options="{item}">
-          <template v-if="item.model == 'name'">
-            <el-option v-for="(item, index) in nameList" :key="index" :value="item.name" :label="item.name"></el-option>
+          <template v-if="item.model == 'client'">
+            <el-option v-for="(item, index) in nameList" :key="index" :value="item.id" :label="item.name"></el-option>
           </template>
         </template>
       </data-form>
@@ -48,6 +49,8 @@
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: treaty } = createNamespacedHelpers('treaty');
+const { mapActions: client } = createNamespacedHelpers('client');
 const _ = require('lodash');
 export default {
   metaInfo() {
@@ -59,36 +62,27 @@ export default {
   data: function() {
     return {
       fields: [
-        { label: '供应商', model: 'name', filter: 'select', type: 'select' },
-        { label: '合同编号', model: 'num', filter: 'input' },
-        { label: '甲方', model: 'partA' },
-        { label: '乙方', model: 'partB' },
+        { label: '供应商', model: 'client', filter: 'select', type: 'select', format: true },
+        { label: '合同编号', model: 'number', filter: 'input' },
+        { label: '甲方', model: 'jf' },
+        { label: '乙方', model: 'yf' },
         { label: '合同周期', model: 'period' },
-        { label: '结算方式', model: 'way' },
-        { label: '结算周期', model: 'cycle' },
-      ],
-      list: [
-        {
-          id: '1',
-          name: '长春市美吉物流有限公司',
-          num: '123455',
-          partA: '甲方1',
-          partB: '乙方1',
-          period: '一年',
-          way: '月结',
-          cycle: '月',
-        },
+        { label: '结算方式', model: 'settle_up' },
+        { label: '结算周期', model: 'settle_up_period' },
         {
-          id: '2',
-          name: '2',
-          num: '2',
-          partA: '甲方2',
-          partB: '乙方2',
-          period: '兩年',
-          way: '月结',
-          cycle: '月',
+          label: '状态',
+          model: 'status',
+          filter: 'select',
+          type: 'select',
+          formact: i => (i === '0' ? '使用' : '禁用'),
+          list: [
+            { label: '使用', value: '0' },
+            { label: '禁用', value: '1' },
+          ],
         },
+        { label: '创始人', model: 'owner', notable: true, noform: true },
       ],
+      list: [],
       total: 0,
       opera: [
         { label: '编辑', method: 'editor' },
@@ -98,54 +92,96 @@ export default {
       dialog: false,
       form: {},
       rules: {
-        name: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
-        num: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
-        partA: [{ required: true, message: '请输入甲方名称', trigger: 'blur' }],
-        partB: [{ required: true, message: '请输入乙方名称', trigger: 'blur' }],
+        client: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
+        number: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
+        jf: [{ required: true, message: '请输入甲方名称', trigger: 'blur' }],
+        yf: [{ required: true, message: '请输入乙方名称', trigger: 'blur' }],
         period: [{ required: true, message: '请输入合同周期', trigger: 'blur' }],
-        way: [{ required: true, message: '请输入结算方式', trigger: 'blur' }],
-        cycle: [{ required: true, message: '请输入结算周期', trigger: 'blur' }],
+        settle_up: [{ required: true, message: '请输入结算方式', trigger: 'blur' }],
+        settle_up_period: [{ required: true, message: '请输入结算周期', trigger: 'blur' }],
+        status: [{ required: true, message: '请选择状态', trigger: 'blur' }],
       },
       //供應商列表
-      nameList: [{ name: '供应商1' }, { name: '供应商2' }, { name: '供应商3' }, { name: '供应商4' }, { name: '供应商5' }],
+      nameList: [],
       selected: [],
     };
   },
-  created() {},
+  created() {
+    this.search();
+  },
   methods: {
+    ...treaty(['query', 'create', 'update', 'delete']),
+    ...client({ cQuery: 'query', cCreate: 'create', cUpdate: 'update', cDelete: 'delete' }),
     async search() {
-      console.log('chaxun');
+      //查供应商
+      const res = await this.cQuery({ type: '供应商' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `nameList`, res.data);
+      }
+    },
+    // 查合同 其他参数是...info,都包括在里面,可以输出看看
+    async searchTreaty({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        const { data, total } = res;
+        this.$set(this, `list`, data);
+        this.$set(this, `total`, total);
+      }
     },
-    // 关闭
+    //关闭
     toClose() {
-      this.dialog = false;
       this.form = {};
+      this.dialog = false;
     },
     //保存
-    turnSave(data) {
-      console.log(data);
+    async turnSave({ data }) {
+      let client = data.client;
+      if (data.id) {
+        const res = await this.update(data);
+        if (this.$checkRes(res, '修改成功', res.errmsg || '修改失败')) {
+          this.searchTreaty({ client });
+          this.toClose();
+        }
+      } else {
+        //谁登陆owner就是谁,把id赋予上面就行
+        data.owner = this.user.id;
+        const res = await this.create(data);
+        if (this.$checkRes(res, '创建成功', res.errmsg || '创建失败')) {
+          this.searchTreaty({ client });
+          this.toClose();
+        }
+      }
     },
+
     //编辑
     editor({ data }) {
-      console.log(data);
       this.$set(this, `form`, data);
       this.dialog = true;
     },
     //刪除
-    toDelete(data) {
-      console.log(data);
+    async toDelete({ data }) {
+      let client = data.client;
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) {
+        this.searchTreaty({ client });
+      }
     },
     //查看項目
     see() {
-      this.$router.push({ path: '/supplier/project' });
+      this.$router.push({ path: '/client/project' });
     },
     toSelect(data) {
-      // console.log(data);
       this.selected = data;
     },
     toExport() {
       console.log('导出');
     },
+    roleSelect({ model, value }) {
+      if (model == 'client') {
+        let arr = this.nameList.find(i => i.id === value);
+        if (arr) return arr.name;
+      }
+    },
   },
   computed: {
     ...mapState(['user']),