yusheng пре 2 година
родитељ
комит
6c054bc918

+ 1 - 1
src/enum/dict.js

@@ -49,7 +49,7 @@ export default {
   态度: 'attittude_code',
   商机来源: 'business_opport_code',
   合同类型: 'contract_type',
-  销售类型: 'sale_type',
+  销售类型: 'order_type',
   退货类型: 'sale_return_type',
   需求来源类型:'requirement_source_type',
   采购类型:'purchase_type',

+ 6 - 1
src/styles/index.scss

@@ -184,4 +184,9 @@ $--ele-font-path: '~ele-admin/es/style/fonts';
     flex-flow: column-reverse nowrap;
     justify-content: center;
     align-items: center;
-  }
+  }
+  table th .is-required::before{
+    content: "*";
+    color: red;
+    margin-right: 4px;
+} 

+ 1 - 0
src/views/bpm/handleTask/components/businessOpportunity/opportunityDetailDialog.vue

@@ -75,6 +75,7 @@
     <headerTitle title="产品清单"></headerTitle>
 
     <inventoryTable
+    pageName="businessOpportunity"
       v-if="['productionSupervisorApprove1','technicianApprove','techLeaderApprove','productionSupervisorApprove2'].includes(taskDefinitionKey)"
       ref="inventoryTable"
       :taskDefinitionKey=taskDefinitionKey

+ 5 - 6
src/views/bpm/handleTask/components/businessOpportunity/submit.vue

@@ -145,11 +145,7 @@
       head() {
         this.$refs.headRef.open();
       },
-      changePersonel(data) {
-        this.form.technicianId = data.id;
-        this.form.technicalAnswerName = data.name;
-        this.handleAudit(1);
-      },
+   
       /** 处理转办审批人 */
       handleUpdateAssignee() {
         this.$emit('handleUpdateAssignee');
@@ -166,6 +162,8 @@
           status === 1
         ) {
           let data = await this.getTableValue();
+          let userIfon=this.userOptions.find(item=>item.id==this.form.technicianId)
+          console.log(userIfon)
           let isProduceDeliveryDeadline = true;
           let arr = data.map((item) => {
             if (!item.produceDeliveryDeadline) {
@@ -175,7 +173,7 @@
               id: item.id,
               produceDeliveryDeadline: item.produceDeliveryDeadline,
               technicalAnswerId: this.form.technicianId,
-              technicalAnswerName: this.form.technicalAnswerName
+              technicalAnswerName: userIfon.name
             };
           });
 
@@ -190,6 +188,7 @@
           if (!arr) {
             return;
           }
+          
           await updateProduct(arr);
         }
         //技术员修改

+ 1 - 5
src/views/bpm/handleTask/components/contractBook/addDialog.vue

@@ -520,11 +520,7 @@
             { pattern: emailReg, message: '邮箱格式不正确', trigger: 'blur' }
           ],
           contractStartDate: [
-            {
-              required: true,
-              validator: this.validateStartDate,
-              trigger: 'blur'
-            }
+            { required: true, message: '请选择签订日期', trigger: 'change' }
           ],
           contractEndDate: [
             { validator: this.validateEndDate, trigger: 'blur' }

+ 23 - 2
src/views/bpm/handleTask/components/contractBook/detailDialog.vue

@@ -80,6 +80,14 @@
           >
             {{ form.partaName }}
           </el-form-item>
+          <el-form-item
+              label="甲方统一社会信用代码:"
+              prop="partaName"
+              style="margin-bottom: 16px"
+              label-width="180px"
+            >
+              {{ form.partaUnifiedSocialCreditCode }}
+            </el-form-item>
           <el-form-item
             label="甲方联系人:"
             prop="partaLinkName"
@@ -136,6 +144,15 @@
           >
             {{ form.partbName }}
           </el-form-item>
+          <el-form-item
+            label="乙方统一社会信用代码:"
+            prop="partaName"
+            label-width="180px"
+
+            style="margin-bottom: 16px"
+          >
+            {{ form.partbUnifiedSocialCreditCode }}
+          </el-form-item>
           <el-form-item
             label="乙方联系人:"
             prop="partbLinkName"
@@ -181,8 +198,12 @@
     </el-form>
 
     <headerTitle title="产品清单"></headerTitle>
-        
-    <inventoryTabledetail ref="inventoryTabledetailRef" :isDiscountTotalPrice="true"> </inventoryTabledetail>
+
+    <inventoryTabledetail
+      ref="inventoryTabledetailRef"
+      :isDiscountTotalPrice="true"
+    >
+    </inventoryTabledetail>
 
     <headerTitle
       :title="form.type == '2' ? '付款方式' : '收款方式'"

+ 9 - 4
src/views/bpm/handleTask/components/contractBook/inventoryTable.vue

@@ -380,9 +380,11 @@
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.singleWeight'"
           :rules="{
-            required: taskDefinitionKey==='technicianApprove'?true:false,
+            required: taskDefinitionKey === 'technicianApprove' ? true : false,
             message: '请输入',
-            trigger: 'change'
+            trigger: 'change',
+            pattern: numberReg,
+
           }"
         >
           <el-input
@@ -396,7 +398,10 @@
       <template v-slot:headerCustomerExpectDeliveryDeadline="{ column }">
         <span class="is-required">{{ column.label }}</span>
       </template>
-      <template v-slot:headerSingleWeight="{ column }" v-if="taskDefinitionKey==='technicianApprove'">
+      <template
+        v-slot:headerSingleWeight="{ column }"
+        v-if="taskDefinitionKey === 'technicianApprove'"
+      >
         <span class="is-required">{{ column.label }}</span>
       </template>
 
@@ -562,7 +567,7 @@
             prop: 'singleWeight',
             label: '单重',
             slot: 'singleWeight',
-            slot:'headerSingleWeight'
+            headerSlot: 'headerSingleWeight'
           },
           {
             width: 120,

+ 2 - 10
src/views/bpm/handleTask/components/inquiryManage/inventoryTable.vue

@@ -44,11 +44,7 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.productCode'"
-          :rules="{
-            required: true,
-            message: '请输入',
-            trigger: 'change'
-          }"
+        
         >
           <el-input v-model="scope.row.productCode" disabled></el-input>
         </el-form-item>
@@ -57,11 +53,7 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.productCategoryName'"
-          :rules="{
-            required: true,
-            message: '请输入',
-            trigger: 'change'
-          }"
+        
         >
           <el-input v-model="scope.row.productCategoryName" disabled></el-input>
         </el-form-item>

+ 2 - 10
src/views/bpm/handleTask/components/purchaseNeedManage/inventoryTable.vue

@@ -51,11 +51,7 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.productCode'"
-          :rules="{
-            required: !!scope.row.productCode ? true : false,
-            message: '请输入',
-            trigger: 'change'
-          }"
+          
         >
           <el-input v-model="scope.row.productCode" disabled></el-input>
         </el-form-item>
@@ -64,11 +60,7 @@
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + scope.$index + '.productCategoryName'"
-          :rules="{
-            required: !!scope.row.productCode ? true : false,
-            message: '请输入',
-            trigger: 'change'
-          }"
+         
         >
           <el-input v-model="scope.row.productCategoryName" disabled></el-input>
         </el-form-item>

+ 1 - 1
src/views/bpm/handleTask/components/quotation/submit.vue

@@ -65,7 +65,7 @@
         size="mini"
         @click="handleAudit(0)"
         v-if="
-          !['starter','productionSupervisorApprove1'].includes(
+          !['starter'].includes(
             taskDefinitionKey
           )
         "

+ 4 - 1
src/views/bpm/handleTask/components/saleOrder/addDialog.vue

@@ -24,6 +24,7 @@
               dictName="销售类型"
               clearable
               v-model="form.saleType"
+              :listFormatte="listFormatte"
             >
             </DictSelection>
           </el-form-item>
@@ -499,7 +500,9 @@
           });
         });
       },
-
+      listFormatte(data){
+        return data.filter(item=>item.dictCode!==0)
+      },
       //选择供应商
       changeSupplier(obj) {
         this.form = Object.assign({}, this.form, {

+ 2 - 0
src/views/bpm/handleTask/components/saleOrder/detailDialog.vue

@@ -492,6 +492,8 @@
         if (data) {
           this.form = data;
           this.detailData = data;
+          this.$refs.inventoryTabledetailRef &&
+            this.$refs.inventoryTabledetailRef.putTableValue(data );
         }
       }
     }

+ 191 - 7
src/views/bpm/handleTask/components/saleOrder/invoice/addInvoiceDialog.vue

@@ -14,6 +14,7 @@
               v-model="form.orderNo"
               @click.native="handleOrderBtn"
               placeholder="请输入"
+              :disabled="taskDefinitionKey == 'salesmanUploadReceipt'"
             />
           </el-form-item>
           <el-form-item
@@ -28,7 +29,12 @@
             prop="linkName"
             style="margin-bottom: 22px"
           >
-            <el-input clearable v-model="form.linkName" placeholder="请输入" />
+            <el-input
+              clearable
+              v-model="form.linkName"
+              placeholder="请输入"
+              :disabled="taskDefinitionKey == 'salesmanUploadReceipt'"
+            />
           </el-form-item>
 
           <el-form-item prop="sendFiles" label="发货附件">
@@ -37,13 +43,19 @@
               module="main"
               :showLib="false"
               :limit="10"
+              :disabled="taskDefinitionKey == 'salesmanUploadReceipt'"
             />
           </el-form-item>
         </el-col>
 
         <el-col :span="12">
           <el-form-item label="车辆号" prop="carNo" style="margin-bottom: 22px">
-            <el-input clearable v-model="form.carNo" placeholder="请输入" />
+            <el-input
+              clearable
+              v-model="form.carNo"
+              placeholder="请输入"
+              :disabled="taskDefinitionKey == 'salesmanUploadReceipt'"
+            />
           </el-form-item>
 
           <!-- <el-form-item
@@ -60,7 +72,12 @@
             prop="linkPhone"
             style="margin-bottom: 22px"
           >
-            <el-input clearable v-model="form.linkPhone" placeholder="请输入" />
+            <el-input
+              clearable
+              v-model="form.linkPhone"
+              placeholder="请输入"
+              :disabled="taskDefinitionKey == 'salesmanUploadReceipt'"
+            />
           </el-form-item>
           <el-form-item
             label="收货地址"
@@ -68,6 +85,7 @@
             style="margin-bottom: 22px"
           >
             <el-input
+              :disabled="taskDefinitionKey == 'salesmanUploadReceipt'"
               clearable
               v-model="form.receiveAddress"
               placeholder="请输入"
@@ -89,8 +107,37 @@
     <inventoryTable
       ref="inventoryTableref"
       :orderId="form.orderId"
+      v-show="taskDefinitionKey != 'salesmanUploadReceipt'"
     ></inventoryTable>
-
+    <ele-pro-table
+      ref="table"
+      :needPage="false"
+      :columns="competAnalysisListcolumns"
+      :toolkit="[]"
+      :datasource="form.productList"
+      row-key="id"
+      v-show="taskDefinitionKey == 'salesmanUploadReceipt'"
+    >
+      <!-- <template v-slot:toolbar>
+        <div class="headbox">
+        <span class="amount">总计:{{detailData.totalAmount}}元</span>
+        <span class="amount">应付金额:{{detailData.payAmount}}元</span>
+      </div>
+      </template> -->
+      <template v-slot:technicalDrawings="{ row }">
+        <div v-if="row.technicalDrawings && row.technicalDrawings?.length">
+          <el-link
+            v-for="link in row.technicalDrawings"
+            :key="link.id"
+            type="primary"
+            :underline="false"
+            @click="downloadFile(link)"
+          >
+            {{ link.name }}</el-link
+          >
+        </div>
+      </template>
+    </ele-pro-table>
     <orderListDialog
       ref="orderListDialogRef"
       @changeParent="changeOrder"
@@ -106,6 +153,7 @@
     getSaleOrderDetail,
     getSendSaleOrderrecordDetail
   } from '@/api/bpm/components/saleManage/saleorder';
+  import { getFile } from '@/api/system/file';
 
   import inventoryTable from './inventoryTable.vue';
   import orderListDialog from './orderListDialog.vue';
@@ -113,6 +161,7 @@
 
   export default {
     mixins: [dictMixins],
+
     components: {
       fileUpload,
       inventoryTable,
@@ -159,13 +208,142 @@
         // 提交状态
         loading: false,
         // 是否是修改
-        isUpdate: false
+        isUpdate: false,
+        competAnalysisListcolumns: [
+          {
+            width: 45,
+            type: 'index',
+            columnKey: 'index',
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            width: 200,
+            prop: 'productName',
+            label: '名称',
+            slot: 'productName'
+          },
+          {
+            width: 120,
+            prop: 'productCode',
+            label: '编码',
+            slot: 'productCode'
+          },
+          {
+            width: 200,
+            prop: 'productCategoryName',
+            label: '类型',
+            slot: 'productCategoryName'
+          },
+          {
+            width: 160,
+            prop: 'productBrand',
+            label: '牌号',
+            slot: 'productBrand'
+          },
+          {
+            width: 120,
+            prop: 'modelType',
+            label: '型号',
+            slot: 'modelType'
+          },
+          {
+            width: 120,
+            prop: 'specification',
+            label: '规格',
+            slot: 'specification'
+          },
+          {
+            width: 200,
+            prop: 'warehouseName',
+            label: '仓库名称',
+            slot: 'warehouseName'
+          },
+
+          {
+            width: 120,
+            prop: 'totalCount',
+            label: '数量',
+            slot: 'totalCount'
+          },
+          {
+            width: 120,
+            prop: 'measuringUnit',
+            label: '计量单位',
+            slot: 'measuringUnit'
+          },
+          {
+            width: 160,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice'
+          },
+          {
+            width: 120,
+            prop: 'totalPrice',
+            label: '销售总金额',
+            slot: 'totalPrice',
+            formatter: (_row, _column, cellValue) => {
+              return _row.totalPrice + '元';
+            }
+          },
+
+          {
+            width: 120,
+            prop: 'deliveryDays',
+            label: '交期(天)',
+            slot: 'deliveryDays'
+          },
+          {
+            width: 200,
+            prop: 'guaranteePeriod',
+            label: '质保期',
+            slot: 'guaranteePeriod',
+            formatter: (_row, _column, cellValue) => {
+              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+            }
+          },
+          // {
+          //   width: 120,
+          //   prop: 'guaranteePeriodUnitCode',
+          //   label: '',
+          //   slot: 'guaranteePeriodUnitCode'
+          // },
+          {
+            width: 120,
+            prop: 'technicalAnswerName',
+            label: '技术答疑人',
+            slot: 'technicalAnswerName'
+          },
+          {
+            width: 220,
+            prop: 'technicalParams',
+            label: '技术参数',
+            slot: 'technicalParams'
+          },
+          {
+            width: 240,
+            prop: 'technicalDrawings',
+            label: '技术图纸',
+            slot: 'technicalDrawings',
+            formatter: (_row, _column, cellValue) => {
+              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+            }
+          },
+          {
+            width: 220,
+            prop: 'remark',
+            label: '备注',
+            slot: 'remark'
+          }
+        ]
       };
     },
     props: {
       businessId: {
         default: ''
-      }
+      },
+      taskDefinitionKey: {}
     },
     created() {
       this.getSendSaleOrderDetail(this.businessId);
@@ -242,7 +420,9 @@
         };
         this.$refs.orderListDialogRef.open(item);
       },
-
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
       // //打开新增编辑弹框
       // async open(type, row, orderId) {
       //   this.title = type === 'add' ? '新增发货单' : '修改';
@@ -287,6 +467,10 @@
             });
           }),
           new Promise((resolve, reject) => {
+            if (this.taskDefinitionKey == 'salesmanUploadReceipt') {
+              resolve(true);
+              return
+            }
             this.$refs.inventoryTableref.validateForm((valid) => {
               if (!valid) {
                 reject(false);

+ 1 - 1
src/views/bpm/handleTask/components/saleOrder/invoice/submit.vue

@@ -66,7 +66,7 @@
 
 <script>
   import {
-    UpdateReturnInformation,
+    UpdateSendInformation,
     getWarehouseListByIds
   } from '@/api/bpm/components/saleManage/saleorder';
   import { approveTaskWithVariables } from '@/api/bpm/task';

+ 38 - 40
src/views/bpm/handleTask/components/saleOrder/returnGoods/addReturnGoodsDialog.vue

@@ -63,7 +63,10 @@
       <inventoryTable
         ref="inventoryTableref"
         :sendId="form.sendId"
+       
       ></inventoryTable>
+ 
+
       <el-row style="margin-top: 20px">
         <el-col :span="12">
           <el-form-item
@@ -115,7 +118,7 @@
     props: {
       businessId: {
         default: ''
-      }
+      },
     },
 
     data() {
@@ -205,53 +208,58 @@
           },
 
           {
-            width: 160,
-            prop: 'singlePrice',
-            label: '单价',
-            slot: 'singlePrice'
+            width: 120,
+            prop: 'sendTotalCount',
+            label: '发货数量',
+            slot: 'sendTotalCount'
           },
+
           {
             width: 120,
             prop: 'totalCount',
-            label: '数量',
+            label: '退货数量',
             slot: 'totalCount'
           },
           {
-            width: 120,
-            prop: 'totalPrice',
-            label: '销售总金额',
-            slot: 'totalPrice',
-            formatter: (_row, _column, cellValue) => {
-              return _row.totalPrice + '元';
-            }
-          },
-          {
-            width: 120,
+            width: 80,
             prop: 'measuringUnit',
             label: '计量单位',
             slot: 'measuringUnit'
           },
+          {
+            width: 160,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice'
+          },
           {
             width: 120,
-            prop: 'deliveryDays',
-            label: '交期(天)',
-            slot: 'deliveryDays'
+            prop: 'totalPrice',
+            label: '合计',
+            slot: 'totalPrice'
           },
+
           {
             width: 200,
-            prop: 'guaranteePeriod',
-            label: '质保期',
-            slot: 'guaranteePeriod',
-            formatter: (_row, _column, cellValue) => {
-              return _row.guaranteePeriod + _row.guaranteePeriodUnitName;
+            prop: 'returnReason',
+            label: '退货原因',
+            slot: 'returnReason'
+          },
+          {
+            width: 140,
+            prop: 'returnType',
+            label: '退货类型',
+            slot: 'returnType',
+            formatter: (_row, _column) => {
+              this.getDictValue('退货类型', _row.returnType + '');
             }
           },
-          // {
-          //   width: 120,
-          //   prop: 'guaranteePeriodUnitCode',
-          //   label: '',
-          //   slot: 'guaranteePeriodUnitCode'
-          // },
+          {
+            width: 120,
+            prop: 'deliveryDays',
+            label: '交期(天)',
+            slot: 'deliveryDays'
+          },
           {
             width: 120,
             prop: 'technicalAnswerName',
@@ -278,16 +286,6 @@
             prop: 'remark',
             label: '备注',
             slot: 'remark'
-          },
-          {
-            columnKey: 'action',
-            label: '操作',
-            width: 120,
-            align: 'center',
-            resizable: false,
-            slot: 'action',
-            fixed: 'right',
-            showOverflowTooltip: true
           }
         ],
         // 提交状态

+ 3 - 5
src/views/bpm/handleTask/components/saleOrder/returnGoods/inventoryTable.vue

@@ -119,7 +119,8 @@
   export default {
     mixins: [dictMixins],
     props: {
-      sendId: String
+      sendId: String,
+     
     },
     components: {
       productList
@@ -344,10 +345,7 @@
           } else if (Number(value) > row.sendTotalCount) {
             this.$message.error('输入的数字不能大于最大发货值');
             callback(new Error('输入的数字不能大于最大发货值'));
-          } else if (this.getTotalCount(row)> row.warehouseNum) {
-            this.$message.error('退货数量不能大于库存');
-            callback(new Error('退货数量不能大于库存'));
-          }else {
+          } else {
             callback();
           }
         };