Răsfoiți Sursa

feat(销售/采购管理): 合同台账,添加采购部门,采购员,业务员和采购员相关字段及逻辑

liujt 7 luni în urmă
părinte
comite
4fe5961de0

+ 76 - 4
src/views/contractManage/contractBook/components/addDialog.vue

@@ -182,6 +182,22 @@
               default-expand-all
             />
           </el-form-item>
+          <!-- 采购部门/销售部门 -->
+          <el-form-item
+            :label="form.type == 2 ? '采购部门' : '销售部门'"
+            prop="businessDeptId"
+          >
+            <ele-tree-select
+              clearable
+              :data="groupTreeData"
+              v-model="form.businessDeptId"
+              valueKey="id"
+              labelKey="name"
+              placeholder="请选择"
+              @change="changeBusinessDep"
+              default-expand-all
+            />
+          </el-form-item>
 
           <el-form-item label="合同名称" prop="contractName">
             <el-input
@@ -269,7 +285,20 @@
               @selfChange="salesmanChange"
               :init="false"
             />
+          </el-form-item> 
+
+          <el-form-item
+            :label="form.type == 2 ? '采购员' : '业务员'"
+            prop="businessUserId"
+          >
+            <personSelect
+              ref="businessDirectorRef"
+              v-model="form.businessUserId"
+              @selfChange="businessUserChange"
+              :init="false"
+            />
           </el-form-item>
+
           <el-form-item label="结束日期" prop="contractEndDate">
             <el-date-picker
               v-model="form.contractEndDate"
@@ -787,6 +816,10 @@
         totalPrice: null,
         isFirstProcess: 0,
         requireDeptId: '',
+        businessDeptId: '',
+        businessDeptName: '',
+        businessUserId: '',
+        businessUserName: '',
         requireUserId: '',
         requireUserName: '',
         requireDeptName: '',
@@ -894,7 +927,8 @@
         businessId: '',
         groupTreeData: [],
         // 组织机构平铺数据
-        groupData: []
+        groupData: [],
+        companyInfo: {}
       };
     },
     computed: {
@@ -974,7 +1008,13 @@
           ],
           contractEndDate: [
             { validator: this.validateEndDate, trigger: 'blur' }
-          ]
+          ],
+          businessDeptId: [
+            { required: this.form.type == 1 ? true : false, message: '请选择', trigger: 'change' }
+          ],
+          businessUserId: [
+            { required: this.form.type == 1 ? true : false, message: '请选择', trigger: 'change' }
+          ],
         };
       }
     },
@@ -984,6 +1024,9 @@
         pageNum: 1,
         size: 200
       }).then((res) => {
+        console.log('企业列表', res);
+        console.log('企业列表第一个', this.$store.state.user.info);
+        this.companyInfo = res.list[0] || {};
         this.enterprisePage = [];
         this.enterprisePage.push(...res.list);
         this.getEnterprise();
@@ -1020,6 +1063,22 @@
         this.getrequireUser(id);
       },
 
+      // 选择业务部门
+      changeBusinessDep(id) {
+        const info = this.groupData.find((e) => e.id == id);
+        this.form.businessDeptName = info?.name || '';
+        this.form.businessUserId = '';
+        this.form.businessUserName = '';
+        // 根据部门获取人员
+        this.$nextTick(() => {});
+        this.getBusinessUser(id);
+      },
+      getBusinessUser(groupId) {
+        if (groupId) {
+          this.$refs.businessDirectorRef.getList({ groupId });
+        }
+      },
+
       getrequireUser(groupId) {
         if (groupId) {
           this.$refs.directorRef.getList({ groupId });
@@ -1109,6 +1168,7 @@
           this.$nextTick(() => {
             this.dictChange(contractVO.type, 'init');
             this.getrequireUser(contractVO.requireDeptId);
+            this.getBusinessUser(contractVO.businessDeptId);
 
             // if (this.form.fileId) {
             //   this.form.fileId = JSON.parse(this.form.fileId);
@@ -1200,8 +1260,14 @@
           partaUnifiedSocialCreditCode: '',
           partbUnifiedSocialCreditCode: '',
           categoryName: '',
-          categoryId: ''
+          categoryId: '',
+          businessDeptId: this.form.type == 2 ? this.companyInfo.groupId : '',
+          businessDeptName: this.form.type == 2 ? this.companyInfo.name : '',
+          businessUserId: this.form.type == 2 ? this.$store.state.user.info?.id : '',
+          businessUserName: this.form.type == 2 ? this.$store.state.user.info?.name : '',
         });
+        this.getBusinessUser(this.form.businessDeptId)
+        console.log('form~~~', this.form);
         this.getEnterprise();
         this.changePersonel();
       },
@@ -1538,6 +1604,7 @@
         }
         this.$nextTick(() => {
           this.getrequireUser(contractVO.requireDeptId);
+          this.getBusinessUser(contractVO.businessDeptId);
           let firstLink =
             this.linkNameOptions.find((item) => item.ifChief == 1) || {};
           let LinkId = [1, 4, 5].includes(this.form.sourceType)
@@ -1573,8 +1640,13 @@
         });
       },
 
+      businessUserChange(val, info) {
+        this.form.businessUserName = info.name;
+      },
+
       salesmanChange(val, info) {
-        this.otherForm.salesmanName = info.name;
+        this.form.salesmanName = info.name;
+        this.form.requireUserName = info.name;
       },
 
       ifChiefChange(value, idx) {

+ 6 - 0
src/views/contractManage/contractBook/components/detailDialog.vue

@@ -109,6 +109,9 @@
             >
               <el-input v-model="form.requireDeptName" disabled></el-input>
             </el-form-item>
+            <el-form-item :label="form.type == 2 ? '采购部门' : '销售部门'" prop="businessDeptName">
+              <el-input v-model="form.businessDeptName" disabled></el-input>
+            </el-form-item>
             <el-form-item label="编码:" prop="contractNo">
               <el-input v-model="form.contractNo" disabled></el-input>
             </el-form-item>
@@ -135,6 +138,9 @@
             >
               <el-input v-model="form.requireUserName" disabled></el-input>
             </el-form-item>
+            <el-form-item :label="form.type == 2 ? '采购员' : '业务员'" prop="businessUserName">
+              <el-input v-model="form.businessUserName" disabled></el-input>
+            </el-form-item>
             <el-form-item prop="contractFile" label="合同附件:">
               <fileMain v-model="form.fileId" type="view"></fileMain>
             </el-form-item>

+ 72 - 6
src/views/purchasingManage/purchaseOrder/components/addDialog.vue

@@ -186,6 +186,19 @@
             />
           </el-form-item>
 
+          <el-form-item label="采购部门" prop="purchaseDeptId">
+            <ele-tree-select
+              clearable
+              :data="groupTreeData"
+              v-model="form.purchaseDeptId"
+              valueKey="id"
+              labelKey="name"
+              placeholder="请选择"
+              @change="changePurchaseDep"
+              default-expand-all
+            />
+          </el-form-item>
+
           <el-form-item prop="orderFiles" label="附件">
             <fileMain v-model="form.orderFiles"></fileMain>
           </el-form-item>
@@ -231,6 +244,14 @@
               :init="false"
             />
           </el-form-item>
+          <el-form-item label="采购员" prop="purchaseUserId">
+            <personSelect
+              ref="purchaseDirectorRef"
+              v-model="form.purchaseUserId"
+              @selfChange="purchaseUserChange"
+              :init="false"
+            />
+          </el-form-item>
         </el-col>
       </el-row>
       <headerTitle title="基本信息"></headerTitle>
@@ -697,7 +718,11 @@
         purchasePlanId: '',
         purchasePlanNo: '',
         purchasePlanName: '',
-        isFirstProcess: 0
+        isFirstProcess: 0,
+        purchaseDeptId: '',
+        purchaseDeptName: '',
+        purchaseUserId: '',
+        purchaseUserName: ''
       };
 
       return {
@@ -878,7 +903,7 @@
 
       //退货单
       async changeReturn(row) {
-        console.log('data~~~', row);
+        // console.log('data~~~', row);
         // this.form = Object.assign({}, this.form, {
         //   relationCode: row.returnNo,
         //   relationId: row.id
@@ -1105,6 +1130,21 @@
 
         this.getrequireUser(id);
       },
+      // 选择采购部门
+      changePurchaseDep(id) {
+        const info = this.groupData.find((e) => e.id == id);
+        this.form.purchaseDeptName = info.name;
+        this.$set(this.form, 'purchaseUserId', '');
+        this.$set(this.form, 'purchaseUserName', '');
+        this.getPurchaseUser(id);
+      },
+
+      getPurchaseUser(groupId) {
+        console.log('groupId~~~~', groupId);
+        if (groupId) {
+          this.$refs.purchaseDirectorRef.getList({ groupId });
+        }
+      },
 
       //选择采购需求
       handPurchaseNeed() {
@@ -1331,6 +1371,11 @@
         this.$set(this.form, 'requireUserName', info.name);
         // this.form.requireUserName = info.name;
       },
+
+      purchaseUserChange(val, info) {
+        this.$set(this.form, 'purchaseUserId', val);
+        this.$set(this.form, 'purchaseUserName', info.name);
+      },
       // 获取公司数据
       getGroupAll() {
         listOrganizations().then((list) => {
@@ -1379,12 +1424,18 @@
             data.contractVO?.requireDeptName
           );
           this.$set(this.form, 'requireUserId', data.contractVO?.requireUserId);
+          // this.$set(this.form, 'businessDeptId', data.contractVO?.businessDeptId);
+          // this.$set(this.form, 'businessDeptName', data.contractVO?.businessDeptName);
+          // this.$set(this.form, 'businessUserId', data.contractVO?.businessUserId);
+          // this.$set(this.form, 'businessUserName', data.contractVO?.businessUserName);
           this.$set(
             this.form,
             'requireUserName',
             data.contractVO?.requireUserName
           );
+          console.log('data.contractVO~~~~', data.contractVO);
           this.getrequireUser(data.contractVO?.requireDeptId);
+          this.getPurchaseUser(data.contractVO?.businessDeptId);
           this.$nextTick(() => {
             let { contractVO } = data;
             // this.form=contractVOform.receiveAddress
@@ -1414,7 +1465,11 @@
               pricingWay,
               isFirstProcess,
               requireSourceType,
-              requireSourceTypeName
+              requireSourceTypeName,
+              businessDeptId,
+              businessDeptName,
+              businessUserId,
+              businessUserName,
             } = contractVO;
             this.form = Object.assign({}, this.form, {
               partaAddress,
@@ -1445,7 +1500,11 @@
               receiveAddress: partaAddress,
               isFirstProcess,
               sourceType: requireSourceType || '1',
-              sourceTypeName: requireSourceTypeName
+              sourceTypeName: requireSourceTypeName,
+              purchaseDeptId: businessDeptId,
+              purchaseDeptName: businessDeptName,
+              purchaseUserId: businessUserId,
+              purchaseUserName: businessUserName
             });
             this.getLinkInfo(partaId);
             // info.productList = info.productList.map((item) => {
@@ -1491,8 +1550,8 @@
         this.loading = true;
         const data = await getpurchaseorderDetail(id);
         this.loading = false;
-            this.form = data;
-
+        this.form = data;
+        console.log('data~~~~~~~', data);
         if (data) {
           this.$nextTick(() => {
             this.$store.commit('order/setAllcountAmount', data.totalAmount);
@@ -1504,6 +1563,9 @@
               this.$refs.outputDetailListRef.putTableValue(data.outputList); //产成品
             this.getLinkInfo(data.partaId);
             this.getrequireUser(this.form.requireDeptId);
+            if(data.purchaseDeptId) {
+              this.getPurchaseUser(data.purchaseDeptId);
+            }
             this.$store.commit('order/setContractId', data.contractId);
           });
         }
@@ -1746,6 +1808,10 @@
               this.enterprisePage[0]?.unifiedSocialCreditCode;
             this.form.partaFax = this.enterprisePage[0]?.fax;
             this.form.partaAddress = this.enterprisePage[0]?.address;
+            this.form.purchaseDeptId = this.enterprisePage[0]?.groupId || '';
+            this.form.purchaseDeptName = this.enterprisePage[0]?.name || '';
+            this.form.purchaseUserId = this.$store.state.user.info?.id || '';
+            this.form.purchaseUserName = this.$store.state.user.info?.name || '';
           }
         } else {
           this.isUpdate = true;

+ 6 - 0
src/views/purchasingManage/purchaseOrder/components/detailDialog.vue

@@ -108,6 +108,9 @@
             <el-form-item label="需求部门:" prop="requireDeptName">
               <el-input v-model="form.requireDeptName" disabled></el-input>
             </el-form-item>
+            <el-form-item label="采购部门:" prop="purchaseDeptName">
+              <el-input v-model="form.purchaseDeptName" disabled></el-input>
+            </el-form-item>
             <el-form-item label="订单类型:" prop="sourceTypeName">
               <el-input v-model="form.sourceTypeName" disabled></el-input>
             </el-form-item>
@@ -160,6 +163,9 @@
             <el-form-item label="需求人:" prop="requireUserName">
               <el-input v-model="form.requireUserName" disabled></el-input>
             </el-form-item>
+            <el-form-item label="采购员:" prop="purchaseUserName">
+              <el-input v-model="form.purchaseUserName" disabled></el-input>
+            </el-form-item>
             <el-form-item label="优惠后总金额:" prop="payAmount">
               <el-input v-model="form.payAmount" disabled>
                 <template slot="append">元</template>

+ 55 - 6
src/views/saleManage/saleOrder/components/addDialog.vue

@@ -209,6 +209,18 @@
             />
           </el-form-item>
 
+          <el-form-item
+            label="业务员"
+            prop="salesmanId"
+          >
+            <personSelect
+              ref="salseManDirectorRef"
+              v-model="form.salesmanId"
+              @selfChange="salesmanChange"
+              :init="false"
+            />
+          </el-form-item>
+
           <el-form-item label="结算方式" prop="settlementMode">
             <DictSelection
               dictName="结算方式"
@@ -619,6 +631,7 @@
   import returnOrderDialog from '@/views/saleManage/saleOrder/customerReturnOrder/returnOrderDialog.vue';
   import opportunityDialog from '@/views/financialManage/components/opportunityDialog.vue';
   import { mapGetters } from 'vuex';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
   import { resetPassword } from '@/api/system/user';
   export default {
     mixins: [dictMixins],
@@ -637,7 +650,8 @@
       bomDialog,
       quotationList,
       saleOrderListDialog,
-      opportunityDialog
+      opportunityDialog,
+      personSelect,
     },
     props: {
       contactData: {
@@ -699,7 +713,8 @@
         relationName: '',
         relationCode: '',
         relationId: '',
-        createDeptName: ''
+        createDeptName: '',
+        salesmanId: ''
       };
 
       return {
@@ -845,7 +860,9 @@
           partaEmail: [
             { pattern: emailReg, message: '邮箱格式不正确', trigger: 'blur' }
           ],
-          payAmount: [{ required: true, message: '请输入', trigger: 'blur' }]
+          payAmount: [{ required: true, message: '请输入', trigger: 'blur' }],
+          salesmanId: [{ required: true, message: '请选择业务员', trigger: 'change' }],
+          salesDeptId: [{ required: true, message: '请选择销售部门', trigger: 'change' }],
         };
       }
     },
@@ -890,7 +907,23 @@
       // 选择负责人部门
       change_principalDep(id) {
         const info = this.groupData.find((e) => e.id == id);
-        this.form.salesDeptName = info.name;
+        this.form.salesDeptName = info?.name;
+        this.form.salesmanId = '';
+        this.form.salesmanName = '';
+        // 根据部门获取人员
+        this.$nextTick(() => {});
+        this.getSalesmanUser(id);
+
+      },
+      getSalesmanUser(groupId) {
+        if (groupId) {
+          this.$refs.salseManDirectorRef.getList({ groupId });
+        }
+      },
+
+      salesmanChange() {
+        this.$set(this.form, 'salesmanId', val);
+        this.$set(this.form, 'salesmanName', info.name);
       },
       // 获取公司数据
       getGroupAll() {
@@ -1098,6 +1131,7 @@
         if (data) {
           await this.changeParent({ id: data.contractVO?.partaId }, true);
           let { contractVO } = data;
+          
           this.$nextTick(() => {
             let {
               partaAddress,
@@ -1125,8 +1159,15 @@
               pricingWay,
               contractNo,
               contractNumber,
-              contractName
+              contractName,
+              businessDeptId,
+              businessDeptName,
+              businessUserId,
+              businessUserName,
             } = contractVO;
+            if(businessDeptId){
+              this.getSalesmanUser(businessDeptId);
+            }
             this.form = Object.assign(
               {},
               this.form,
@@ -1158,7 +1199,12 @@
                 settlementMode,
                 settlementModeName,
                 contractNo,
-                contractNumber
+                contractNumber,
+
+                salesDeptId: businessDeptId,
+                salesDeptName: businessDeptName,
+                salesmanId: businessUserId,
+                salesmanName: businessUserName,
               },
               !row
                 ? {
@@ -1196,6 +1242,9 @@
         if (data) {
           data.saleType = +data.saleType;
           this.$nextTick(() => {
+            if(data.salesDeptId) {
+              this.getSalesmanUser(data.salesDeptId);
+            }
             this.$refs.inventoryTable &&
               this.$refs.inventoryTable.putTableValue(data);
             this.$refs.typeListRef &&

+ 6 - 0
src/views/saleManage/saleOrder/components/darwerComponents/saleOrderInfo.vue

@@ -96,6 +96,12 @@
           >
             <el-input v-model="form.relationCode" disabled></el-input>
           </el-form-item>
+          <el-form-item
+            label="业务员:"
+            prop="salesmanName"
+          >
+            <el-input v-model="form.salesmanName" disabled></el-input>
+          </el-form-item>
           <el-form-item label="总金额:" prop="totalAmount">
             <el-input v-model="form.totalAmount" disabled>
               <template slot="append"> 元 </template>