Browse Source

新增客户选择组件,完善成采购

caojunjie 3 years ago
parent
commit
d3a4407c08

+ 18 - 18
src/api/basicData/purchaseOrder.js

@@ -1,32 +1,32 @@
 import request from '@/router/axios';
 
-//客户资料列表查询
+//采购资料列表查询
 export function customerList(data) {
     return request({
-        url: '/api/trade-purchase/purchase-order/page',
+        url: '/api/trade-purchase/domestic-order/page',
         method: 'get',
         params: data
     })
 }
-//客户资料列表修改和新增
-export function typeSave(data) {
+//采购资料列表查看明细
+export function detail(data) {
     return request({
-        url: '/api/blade-purchase-sales/order/submit',
-        method: 'post',
-        data: data
+        url: '/api/trade-purchase/domestic-order/'+data,
+        method: 'get'
     })
 }
-//客户资料列表查看明细
-export function detail(data) {
+//采购资料列表修改和新增
+export function typeSave(data) {
     return request({
-        url: '/api/blade-purchase-sales/order/detail?id='+data,
-        method: 'get'
+        url: '/api/trade-purchase/domestic-order/submit',
+        method: 'post',
+        data: data
     })
 }
-//客户资料列表删除
+//采购资料列表删除
 export function deleteDetails(data) {
     return request({
-        url: '/api/blade-client/corpsdesc/update',
+        url: '/api/trade-purchase/domestic-order/update',
         method: 'post',
         data: {
             id:data
@@ -43,7 +43,7 @@ export function corpsattn(data) {
         }
     })
 }
-//客户银行列表删除
+//采购银行列表删除
 export function corpsbank(data) {
     return request({
         url: '/api/blade-client/corpsbank/update',
@@ -53,7 +53,7 @@ export function corpsbank(data) {
         }
     })
 }
-//客户文件列表删除
+//采购文件列表删除
 export function corpsfiles(data) {
     return request({
         url: '/api/blade-client/corpsfiles/update',
@@ -63,7 +63,7 @@ export function corpsfiles(data) {
         }
     })
 }
-//客户优势项目列表删除
+//采购优势项目列表删除
 export function corpsitem(data) {
     return request({
         url: '/api/blade-purchase-sales/orderfees/update',
@@ -73,7 +73,7 @@ export function corpsitem(data) {
         }
     })
 }
-//查询客户类型主页下拉
+//查询采购类型主页下拉
 export function getDeptLazyTree(parentId){
     return request({
         url: '/api/blade-client/corpstype/lazy-tree',
@@ -113,7 +113,7 @@ export const getList = (current, size, params, goodsTypeId) => {
     })
 }
 
-//查询客户类型下拉
+//查询采购类型下拉
 export function corpstypeTree() {
     return request({
         url: '/api/blade-client/corpstype/tree',

+ 116 - 0
src/components/selectComponent/configuration/mainList.json

@@ -0,0 +1,116 @@
+{
+    "lazy": true,
+    "tip": false,
+    "simplePage": true,
+    "searchMenuSpan": 6,
+    "dialogWidth": "60%",
+
+    "searchShowBtn": false,
+    "searchShow": false,
+    "menu": false,
+
+    "addBtn": false,
+    "tree": true,
+    "border": true,
+    "index": true,
+    "selection": true,
+    "viewBtn": false,
+    "editBtn": false,
+    "delBtn": false,
+    "menuWidth": 300,
+    "dialogClickModal": false,
+    "column":[
+        {
+            "label": "客户编码",
+            "prop": "code",
+            "search": true,
+            "index": 1,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        },{
+            "label": "客户全称",
+            "prop": "cname",
+            "search": true,
+            "index": 2,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        },{
+            "label": "区域",
+            "prop": "belongtoarea",
+            "search": true,
+            "index": 4,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        },{
+            "label": "所属公司",
+            "prop": "belongtocompany",
+            "search": true,
+            "index": 5,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        },{
+            "label": "联系人",
+            "prop": "attn",
+            "search": true,
+            "index": 6,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        },{
+            "label": "代理品牌",
+            "prop": "goodtypes",
+            "search": true,
+            "index": 7,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        },{
+            "label": "客户等级 ",
+            "prop": "creditLevel",
+            "search": true,
+            "index": 8,
+            "width":100,
+            "rules": [
+                {
+                    "required": true,
+                    "message": "请输入菜单名称",
+                    "trigger": "blur"
+                }
+            ]
+        }
+    ]
+}

+ 273 - 0
src/components/selectComponent/customerSelect.vue

@@ -0,0 +1,273 @@
+<template>
+  <el-dialog
+      title="导入客户"
+      :visible.sync="dialogVisible"
+      class="el-dialogDeep"
+      append-to-body
+      width="80%">
+
+    <el-row style="margin-top: -5px;height: 0">
+      <el-col :span="5">
+        <div class="box">
+          <el-scrollbar>
+            <basic-container>
+              <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick"/>
+            </basic-container>
+          </el-scrollbar>
+        </div>
+      </el-col>
+      <el-col :span="19">
+        <basic-container>
+          <avue-crud :option="option"
+                     :data="dataList"
+                     ref="crud"
+                     v-model="form"
+                     :page.sync="page"
+                     @row-del="rowDel"
+                     @row-update="rowUpdate"
+                     :before-open="beforeOpen"
+                     :before-close="beforeClose"
+                     @row-save="rowSave"
+                     @search-change="searchChange"
+                     @search-reset="searchReset"
+                     @refresh-change="refreshChange"
+                     @selection-change="selectionChange"
+                     @on-load="onLoad"
+                     @tree-load="treeLoad">
+            <template slot-scope="scope" slot="menu">
+              <el-button
+                  type="text"
+                  icon="el-icon-view"
+                  size="small"
+                  @click.stop="beforeOpenPage(scope.row,scope.index)"
+              >查看
+              </el-button>
+              <el-button
+                  type="text"
+                  icon="el-icon-edit"
+                  size="small"
+                  @click.stop="editOpen(scope.row,scope.index)"
+              >编辑
+              </el-button>
+              <el-button
+                  type="text"
+                  icon="el-icon-delete"
+                  size="small"
+                  @click.stop="rowDel(scope.row,scope.index)"
+              >删除
+              </el-button>
+            </template>
+          </avue-crud>
+        </basic-container>
+      </el-col>
+    </el-row>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button type="primary" @click="confirmSelection" :disabled="configuration.multipleChoices === true?false:selection.length === 1?false:true">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import option from "./configuration/mainList.json";
+import {customerList, typeSave, deleteDetails, getDeptLazyTree} from "@/api/basicData/customerInformation"
+
+export default {
+  name: "customerInformation",
+  props:['configuration'],
+  data() {
+    return {
+      form: {},
+      dialogVisible: false,
+      option: option,
+      parentId: 0,
+      dataList: [],
+      selection:[],
+      treeOption: {
+        nodeKey: 'id',
+        lazy: true,
+        treeLoad: function (node, resolve) {
+          const parentId = (node.level === 0) ? 0 : node.data.id;
+          getDeptLazyTree(parentId).then(res => {
+            resolve(res.data.data.map(item => {
+              return {
+                ...item,
+                leaf: !item.hasChildren
+              }
+            }))
+          });
+        },
+        addBtn: false,
+        menu: false,
+        size: 'small',
+        props: {
+          labelText: '标题',
+          label: 'title',
+          value: 'value',
+          children: 'children'
+        }
+      },
+      page: {
+        pageSize: 10,
+        pagerCount: 5,
+        total: 0,
+      }
+    }
+  },
+  created() {
+    this.option.searchShow = this.configuration.searchShow?this.configuration.searchShow:false
+  },
+  methods: {
+    //刷新触发
+    refreshChange(){
+      this.page = {
+        pageSize: 10,
+        pagerCount: 5,
+        total: 0,
+      }
+    },
+    //确认导出触发
+    confirmSelection(){
+      this.$emit('selectionChange',this.selection)
+      this.dialogVisible = false
+    },
+    //选中触发
+    selectionChange(selection){
+      this.selection = selection
+    },
+    nodeClick(data) {
+      this.treeDeptId = data.id;
+      this.page.currentPage = 1;
+      this.onLoad(this.page);
+    },
+    //删除列表后面的删除按钮触发触发(row, index, done)
+    rowDel(row, index, done) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        return deleteDetails(row.id);
+      }).then(() => {
+        this.$message({
+          type: "success",
+          message: "操作成功!"
+        });
+        this.page.currentPage = 1;
+        this.onLoad(this.page, {parentId: 0});
+      });
+    },
+    //修改时的修改按钮点击触发
+    rowUpdate(row, index, done, loading) {
+      typeSave(row).then(() => {
+        this.$message({
+          type: "success",
+          message: "操作成功!"
+        });
+        // 数据回调进行刷新
+        done(row);
+      }, error => {
+        window.console.log(error);
+        loading();
+      });
+    },
+    //新增修改时保存触发
+    rowSave(row, done, loading) {
+      typeSave(row).then(res => {
+        console.log(res)
+        done()
+      })
+    },
+    //查询全部
+    initData() {
+      customerList().then(res => {
+        console.log(this.form);
+        const column = this.findObject(this.option.column, "parentId");
+        column.dicData = res.data.data.records;
+      });
+    },
+    //新增子项触发
+    handleAdd(row) {
+      this.parentId = row.id;
+      const column = this.findObject(this.option.column, "parentId");
+      column.value = row.id;
+      column.addDisabled = true;
+      this.$refs.crud.rowAdd();
+    },
+    //查看跳转页面
+    beforeOpenPage(row, index) {
+      this.$router.push({
+        path: "/detailsPageEdit",
+        query: {id: JSON.stringify(row.id)},
+      });
+    },
+    //新增跳转页面
+    beforeOpen(row, index) {
+      this.$router.push({
+        path: "/detailsPageEdit",
+        query: {id: JSON.stringify(row.id)},
+      });
+    },
+    editOpen(row, index) {
+      this.$router.push({
+        path: "/detailsPageEdit",
+        query: {id: JSON.stringify(row.id)},
+      });
+    },
+    //点击新增时触发
+    beforeClose(done) {
+      this.parentId = "";
+      const column = this.findObject(this.option.column, "parentId");
+      column.value = "";
+      column.addDisabled = false;
+      done();
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      console.log(params)
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done()
+    },
+    //搜索重置按钮触发
+    searchReset() {
+      this.treeDeptId = '';
+      this.onLoad(this.page);
+    },
+    onLoad(page, params = {parentId: 0}) {
+      let queryParams = Object.assign({}, params, {
+        size: page.pageSize,
+        current: page.currentPage,
+        corpsTypeId: this.treeDeptId
+      })
+      customerList(queryParams).then(res => {
+        this.dataList = res.data.data.records
+        console.log(res.data.data.total)
+        this.page.total = res.data.data.total
+        console.log(this.page)
+      })
+    },
+    //树桩列点击展开触发
+    treeLoad(tree, treeNode, resolve) {
+      const parentId = tree.id;
+      customerList({parentId: parentId}).then(res => {
+        resolve(res.data.data.records);
+      });
+    }
+  }
+};
+</script>
+
+<style scoped lang="scss">
+.el-dialogDeep {
+  ::v-deep .el-dialog {
+    margin: 1vh auto 0 !important;
+    padding-bottom: 10px !important;
+
+    .el-dialog__body, .el-dialog__footer {
+      padding-bottom: 0 !important;
+      padding-top: 0 !important;
+    }
+  }
+}
+</style>

+ 4 - 0
src/main.js

@@ -24,6 +24,10 @@ import website from '@/config/website';
 import crudCommon from '@/mixins/crud';
 import format from 'vue-text-format';//v-format
 
+//客户选择组件
+import selectComponent from '@/components/selectComponent/customerSelect';
+Vue.component('selectComponent', selectComponent);
+
 // 注册全局crud驱动
 window.$crudCommon = crudCommon;
 // 加载Vue拓展

+ 5 - 5
src/views/businessManagement/deliveryNotice/configuration/customerContact.json

@@ -45,8 +45,8 @@
         }
       ]
     },{
-      "label": "编码",
-      "prop": "code",
+      "label": "商品名称",
+      "prop": "cname",
       "index": 2,
       "width":100,
       "cell": false,
@@ -58,15 +58,15 @@
         }
       ]
     },{
-      "label": "大字",
-      "prop": "bigCharacter",
+      "label": "编码",
+      "prop": "code",
       "index": 2,
       "width":100,
       "cell": false,
       "rules": [
         {
           "required": false,
-          "message": "请输入大字",
+          "message": "请输入编码",
           "trigger": "blur"
         }
       ]

+ 2 - 0
src/views/businessManagement/deliveryNotice/detailsPageEdit.vue

@@ -550,6 +550,8 @@ export default {
         for (let item in this.tableData) {
           console.log(this.tableData[item])
           this.tableData[item].itemId = this.tableData[item].id
+          this.tableData[item].priceCategory = this.tableData[item].goodsTypeName
+          delete this.tableData[item].goodsTypeName
           delete this.tableData[item].id
           delete this.tableData[item].status
           delete this.tableData[item].isDeleted

+ 6 - 6
src/views/businessManagement/purchaseOrder/configuration/mainList.json

@@ -25,13 +25,13 @@
         },
         {
             "label": "来源单号",
-            "prop": "orderNo",
+            "prop": "srcOrderNo",
             "search": true,
             "index": 1,
             "width":100
         },{
             "label": "银行账号",
-            "prop": "morderNo",
+            "prop": "banks",
             "search": true,
             "index": 2,
             "width":100
@@ -43,13 +43,13 @@
             "width":100
         },{
             "label": "付款方式",
-            "prop": "arrivalAddress",
+            "prop": "paymentType",
             "search": true,
             "index": 5,
             "width":100
         },{
             "label": "公司户头",
-            "prop": "paymentType",
+            "prop": "banksAccountname",
             "search": true,
             "index": 6,
             "width":100
@@ -61,13 +61,13 @@
             "width":100
         },{
             "label": "运费",
-            "prop": "creditLevel",
+            "prop": "oceanFreight",
             "search": true,
             "index": 8,
             "width":100
         },{
             "label": "要求到货日期",
-            "prop": "banks",
+            "prop": "RequiredArrivalDate",
             "search": true,
             "index": 8,
             "width":100

+ 11 - 12
src/views/businessManagement/purchaseOrder/detailsPageEdit.vue

@@ -327,15 +327,14 @@
 
 <script>
 import {
-  typeSave, detail, deleteDetails,
-  corpstypeTree,
+  typeSave,
+  detail,
   corpsattn,
   corpsbank,
-  corpsfiles,
   corpsitem,
   getList,
   getDeptLazyTreeS
-} from "@/api/basicData/configuration"
+} from "@/api/basicData/purchaseOrder"
 import customerContact from "./configuration/customerContact.json"
 import advantageProject from "./configuration/advantageProject.json"
 import bankOfDeposit from "./configuration/bankOfDeposit.json"
@@ -437,7 +436,7 @@ export default {
         column: [
           {
             label: '系统编号',
-            prop: 'orderNo',
+            prop: 'sysNo',
             rules: [
               {
                 required: true,
@@ -447,7 +446,7 @@ export default {
             ]
           }, {
             label: '来源单号',
-            prop: 'morderNo',
+            prop: 'srcOrderNo',
             rules: [
               {
                 required: true,
@@ -457,7 +456,7 @@ export default {
             ]
           }, {
             label: ' 银行账号',
-            prop: 'shippingAddress',
+            prop: 'banks',
             rules: [
               {
                 required: true,
@@ -467,7 +466,7 @@ export default {
             ]
           }, {
             label: '供应商',
-            prop: 'arrivalAddress',
+            prop: 'corpId',
             rules: [
               {
                 required: true,
@@ -487,7 +486,7 @@ export default {
             ]
           }, {
             label: '公司户头',
-            prop: 'packageRemarks',
+            prop: 'banksAccountname',
             rules: [
               {
                 required: true,
@@ -507,7 +506,7 @@ export default {
             ]
           }, {
             label: '运费',
-            prop: 'banks',
+            prop: 'oceanFreight',
             rules: [
               {
                 required: true,
@@ -517,7 +516,7 @@ export default {
             ]
           }, {
             label: '要求到货日期',
-            prop: 'requiredDeliveryDate',
+            prop: 'RequiredArrivalDate',
             type: 'datetime',
             rules: [
               {
@@ -529,7 +528,7 @@ export default {
           },{
             label: "备注",
             span: 24,
-            prop: "orderRemark",
+            prop: "remarks",
             mock: {
               type: 'county'
             }

+ 1 - 24
src/views/businessManagement/purchaseOrder/index.vue

@@ -6,10 +6,8 @@
                v-model="form"
                :page.sync="page"
                @row-del="rowDel"
-               @row-update="rowUpdate"
                :before-open="beforeOpen"
                :before-close="beforeClose"
-               @row-save="rowSave"
                @search-change="searchChange"
                @search-reset="searchReset"
                @selection-change="selectionChange"
@@ -47,7 +45,7 @@
 
 <script>
 import option from "./configuration/mainList.json";
-import {customerList, typeSave, deleteDetails} from "@/api/basicData/purchaseOrder"
+import {customerList, deleteDetails} from "@/api/basicData/purchaseOrder"
 
 export default {
   name: "customerInformation",
@@ -86,27 +84,6 @@ export default {
         this.onLoad(this.page, {parentId: 0});
       });
     },
-    //修改时的修改按钮点击触发
-    rowUpdate(row, index, done, loading) {
-      typeSave(row).then(() => {
-        this.$message({
-          type: "success",
-          message: "操作成功!"
-        });
-        // 数据回调进行刷新
-        done(row);
-      }, error => {
-        window.console.log(error);
-        loading();
-      });
-    },
-    //新增修改时保存触发
-    rowSave(row, done, loading) {
-      typeSave(row).then(res => {
-        console.log(res)
-        done()
-      })
-    },
     //查询全部
     initData() {
       customerList().then(res => {

+ 12 - 0
src/views/businessManagement/salesOrder/detailsPageEdit.vue

@@ -26,6 +26,7 @@
                 <!--                ></avue-input-tree>-->
                 <el-date-picker v-if="item.type === 'datetime'" style="width: 100%;" v-model="form[item.prop]"
                                 size="small" type="datetime" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>
+                <span v-else-if="item.prop === 'corpId'">{{form.corpName}}<el-button type="text" icon="el-icon-edit" @click="$refs.selectComponent.dialogVisible = true"></el-button></span>
                 <el-input type="age" v-else v-model="form[item.prop]" size="small" autocomplete="off"></el-input>
               </el-form-item>
             </el-col>
@@ -386,6 +387,7 @@
         </div>
       </div>
     </el-dialog>
+    <selectComponent :configuration="configuration" ref="selectComponent" @selectionChange="selectCustomer"></selectComponent>
   </div>
 </template>
 
@@ -414,6 +416,9 @@ export default {
   data() {
     return {
       form: {},
+      configuration:{
+        multipleChoices:false
+      },
       data: [],
       dataPolicy: [],
       contactsDataBuyFree: [],
@@ -944,6 +949,13 @@ export default {
     }
   },
   methods: {
+    //选择客户触发
+    selectCustomer(selection){
+      console.log(selection)
+      this.$set(this.form,"corpId",selection[0].id)
+      this.$set(this.form,"corpName",selection[0].cname)
+      console.log(this.form)
+    },
     //点击行可编辑
     handleRowClick(row, event, column) {
       console.log(row.$index)