yusheng 1 tahun lalu
induk
melakukan
e72fa9d532

+ 22 - 1
src/BIZComponents/inventoryTable.vue

@@ -318,6 +318,18 @@
           ></el-input>
         </el-form-item>
       </template>
+      <template v-slot:provenance="scope">
+        <el-form-item :prop="'datasource.' + scope.$index + '.provenance'">
+          <DictSelection
+            dictName="产地"
+            clearable
+            :disabled="status == 'Detail'"
+            v-model="scope.row.provenance"
+            multiple
+          >
+          </DictSelection>
+        </el-form-item>
+      </template>
       <template v-slot:technicalDrawings="scope">
         <el-form-item
           style="margin-bottom: 20px"
@@ -735,6 +747,15 @@
             slot: 'availableCountBase',
             align: 'center'
           },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 200,
+            show:this.contractBookType==2
+          },
           {
             width: 120,
             prop: 'measuringUnit',
@@ -1147,7 +1168,7 @@
             item.extField.packingSpecification
           );
           this.$set(parasm, 'customerMark', this.customerMark);
-
+          this.$set(parasm, 'provenance', item.purchaseOrigins || []);
           if (idx == -1) {
             this.form.datasource.push(row);
           }

+ 18 - 0
src/BIZComponents/inventoryTableDetails.vue

@@ -325,6 +325,23 @@
             label: '图号/件号',
             showOverflowTooltip: true
           },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            show:this.contractBookType==2,
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+       
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item ))
+                    .join(',')
+                : '';
+            }
+          },
           {
             width: 120,
             prop: 'produceType',
@@ -455,6 +472,7 @@
 
     created() {
       this.requestDict('生产类型');
+      this.requestDict('产地');
       this.requestDict('保质期单位');
     },
     methods: {

+ 2 - 0
src/enum/dict.js

@@ -85,6 +85,8 @@ export default {
   协同办公分类: 'collaborative_type',
   市场活动类型: 'activity_type',
   客户联系人状态: 'contact_link_status',
+  产地:'purchase_origin'
+
 };
 
 export const numberList = [

+ 35 - 0
src/views/bpm/handleTask/components/inquiryManage/inquiryTable.vue

@@ -320,6 +320,19 @@
           ></el-input>
         </el-form-item>
       </template>
+      <template v-slot:provenance="scope">
+        <el-form-item :prop="'datasource.' + scope.$index + '.provenance'">
+          <DictSelection
+            dictName="产地"
+            clearable
+            :disabled="status == 'Detail'"
+
+            v-model="scope.row.provenance"
+            multiple
+          >
+          </DictSelection>
+        </el-form-item>
+      </template>
       <template v-slot:isRequired="{ column }">
         <span class="is-required">{{ column.label }}</span>
       </template>
@@ -498,6 +511,28 @@
       slot: 'totalPrice',
       align: 'center'
     },
+    {
+      minWidth: 150,
+      prop: 'taskName',
+      label: '工序',
+      slot: 'taskName',
+      align: 'center'
+    },
+    {
+      width: 110,
+      prop: 'batchNo',
+      label: '批次号',
+      slot: 'batchNo',
+      align: 'center'
+    },
+    {
+      prop: 'provenance',
+      label: '产地',
+      slot: 'provenance',
+      align: 'center',
+      showOverflowTooltip: true,
+      minWidth: 200
+    },
     {
       minWidth: 120,
       prop: 'modelType',

+ 32 - 0
src/views/bpm/handleTask/components/inquiryManage/inventoryTable.vue

@@ -407,6 +407,36 @@
             slot: 'totalWeight',
             align: 'center'
           },
+          {
+            minWidth: 220,
+            prop: 'taskName',
+            label: '工序',
+            slot: 'taskName',
+            align: 'center'
+          },
+          {
+            width: 110,
+            prop: 'batchNo',
+            label: '批次号',
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+       
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item ))
+                    .join(',')
+                : '';
+            }
+          },
           {
             minWidth: 80,
             prop: 'measuringUnit',
@@ -508,6 +538,8 @@
       }
     },
     created() {
+      this.requestDict('产地');
+
       this.getDictList('productionType');
     },
     methods: {

+ 74 - 13
src/views/bpm/handleTask/components/purchaseNeedManage/detailDialog.vue

@@ -140,7 +140,7 @@
         form: {},
         detailData: {},
         columns: [
-          {
+        {
             width: 45,
             type: 'index',
             columnKey: 'index',
@@ -151,79 +151,140 @@
             width: 150,
             prop: 'productCategoryName',
             label: '分类',
-            slot: 'productCategoryName'
+            slot: 'productCategoryName',
+            align: 'center'
           },
           {
             width: 140,
             prop: 'productCode',
             label: '编码',
-            slot: 'productCode'
+            slot: 'productCode',
+            align: 'center'
           },
           {
             width: 240,
             prop: 'productName',
             label: '名称',
-            slot: 'productName'
+            slot: 'productName',
+            align: 'center'
           },
           {
             width: 150,
             prop: 'productBrand',
             label: '牌号',
-            slot: 'productBrand'
+            slot: 'productBrand',
+            align: 'center'
           },
           {
             width: 80,
             prop: 'totalCount',
             label: '数量',
-            slot: 'totalCount'
+            slot: 'totalCount',
+            align: 'center'
+          },
+
+          {
+            minWidth: 120,
+            prop: 'taskName',
+            label: '工序',
+            slot: 'taskName',
+            align: 'center'
+          },
+          {
+            width: 110,
+            prop: 'batchNo',
+            label: '批次号',
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+       
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item ))
+                    .join(',')
+                : '';
+            }
           },
           {
             width: 100,
             prop: 'measuringUnit',
             label: '单位',
-            slot: 'measuringUnit'
+            slot: 'measuringUnit',
+            align: 'center'
           },
           {
             width: 130,
             prop: 'modelType',
             label: '型号',
-            slot: 'modelType'
+            slot: 'modelType',
+            align: 'center'
           },
           {
             width: 120,
             prop: 'specification',
             label: '规格',
-            slot: 'specification'
+            slot: 'specification',
+            align: 'center'
           },
           {
             width: 130,
             prop: 'brand',
             label: '品牌',
-            slot: 'brand'
+            slot: 'brand',
+            align: 'center'
+          },
+          {
+            width: 150,
+            prop: 'arrivalWay',
+            label: '	到货方式',
+            formatter: (row, column, cellValue) => {
+              return cellValue == 1 ? '一次性到货' : '分批到货';
+            },
+            align: 'center'
           },
           {
             width: 170,
             prop: 'expectReceiveDate',
             label: '到货日期',
-            slot: 'expectReceiveDate'
+            slot: 'expectReceiveDate',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'technicalDrawings',
+            label: '图纸附件',
+            slot: 'technicalDrawings',
+            align: 'center'
           },
           {
             width: 140,
             prop: 'files',
             label: '附件',
-            slot: 'files'
+            slot: 'files',
+            align: 'center'
           },
           {
             width: 220,
             prop: 'remark',
             label: '备注',
-            slot: 'remark'
+            slot: 'remark',
+            align: 'center'
           }
         ]
       };
     },
     created() {
+      this.requestDict('产地');
       this.getDetailData(this.businessId);
+      
     },
     methods: {
       downloadFile(file) {

+ 25 - 9
src/views/bpm/handleTask/components/purchaseOrder/detailDialog.vue

@@ -11,6 +11,7 @@
           >
             {{ form.orderNo }}
           </el-form-item>
+          
           <el-form-item
             label="项目名称:"
             prop="projectName"
@@ -32,14 +33,7 @@
           >
             {{ form.sourceTypeName }}
           </el-form-item>
-          <!--          <el-form-item-->
-          <!--            label="采购订单类型:"-->
-          <!--            prop="purchaseTypeName"-->
-          <!--            style="margin-bottom: 16px"-->
-          <!--          >-->
-          <!--            {{ form.purchaseTypeName }}-->
-          <!--          </el-form-item>-->
-
+       
           <el-form-item prop="orderFiles" label="附件:">
             <fileMain v-model="form.orderFiles" type="view"></fileMain>
             <!--            <div-->
@@ -517,7 +511,28 @@
             },
             align: 'center'
           },
-
+          {
+            width: 110,
+            prop: 'batchNo',
+            label: '批次号',
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
           {
             width: 120,
             prop: 'deliveryDays',
@@ -803,6 +818,7 @@
       };
     },
     created() {
+      this.requestDict('产地');
       this.getDetailData(this.businessId);
     },
     methods: {

+ 16 - 1
src/views/bpm/handleTask/components/purchaseOrder/invoice/detailDialog.vue

@@ -401,7 +401,21 @@
             slot: 'discountTotalPrice',
             align: 'center'
           },
-
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
           {
             width: 80,
             prop: 'deliveryDays',
@@ -462,6 +476,7 @@
       };
     },
     async created() {
+      this.requestDict('产地');
       await this.getDetailData(this.businessId);
       // getOutInBySourceBizNoOrError(this.form.receiveNo)
       storageApi

+ 16 - 0
src/views/bpm/handleTask/components/purchaseOrder/invoice/inventoryTable.vue

@@ -372,6 +372,21 @@ export default {
           slot: 'discountTotalPrice',
           align: 'center'
         },
+        {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
         {
           width: 80,
           prop: 'deliveryDays',
@@ -445,6 +460,7 @@ export default {
     };
   },
   created() {
+    this.requestDict('产地');
     getWarehouseList().then((res) => {
       this.warehouseList = res;
     });

+ 16 - 0
src/views/bpm/handleTask/components/purchaseOrder/outSourceSend/detailDialog.vue

@@ -314,6 +314,21 @@
             slot: 'discountTotalPrice',
             align: 'center'
           },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
           {
             width: 120,
             prop: 'deliveryDays',
@@ -376,6 +391,7 @@
       };
     },
     created() {
+      this.requestDict('产地');
       this.getDetailData(this.businessId);
     },
     methods: {

+ 17 - 0
src/views/bpm/handleTask/components/purchaseOrder/outSourceSend/inventoryTable.vue

@@ -386,6 +386,21 @@
           //   slot: 'deliveryDeadline',
           //   show: this.isDeliveryDeadline
           // },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
           {
             minWidth: 140,
             prop: 'customerExpectDeliveryDeadline',
@@ -482,6 +497,8 @@
       };
     },
     created() {
+      this.requestDict('产地');
+
       getWarehouseList().then((res) => {
         this.warehouseList = res;
       });

+ 17 - 0
src/views/bpm/handleTask/components/purchaseOrder/outsourceSendReturnGoods/detailDialog.vue

@@ -389,6 +389,21 @@
             slot: 'discountTotalPrice',
             align: 'center'
           },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
           {
             width: 200,
             prop: 'returnReason',
@@ -453,6 +468,8 @@
       }
     },
     created() {
+      this.requestDict('产地');
+
       this.getDetailData(this.businessId);
       if (this.taskDefinitionKey == 'storeman') {
         this.tabOptions.push({ key: 'inoutBound', name: '入库单' });

+ 16 - 0
src/views/bpm/handleTask/components/purchaseOrder/returnGoods/detailDialog.vue

@@ -390,6 +390,21 @@
             slot: 'returnReason',
             align: 'center'
           },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
           // {
           //   width: 140,
           //   prop: 'returnType',
@@ -447,6 +462,7 @@
       }
     },
     created() {
+      this.requestDict('产地');
       this.getDetailData(this.businessId);
       if (this.taskDefinitionKey == 'storemanApprove') {
         this.tabOptions.push({ key: 'outBound', name: '出库单' });

+ 16 - 4
src/views/bpm/handleTask/components/purchaseOrder/returnGoods/inventoryTable.vue

@@ -440,7 +440,21 @@ export default {
           slot: 'discountTotalPrice',
           align: "center"
         },
-
+        {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
         {
           width: 200,
           prop: 'returnReason',
@@ -512,9 +526,7 @@ export default {
     }
   },
   created() {
-    // getWarehouseList().then((res) => {
-    //   this.warehouseList = res;
-    // });
+    this.requestDict('产地');
   },
   methods: {
     changeNumSinglePrice(val,index){

+ 96 - 24
src/views/bpm/handleTask/components/purchasePlanManage/detailDialog.vue

@@ -85,16 +85,12 @@
         <el-col :span="12">
           <el-form-item prop="files" label="附件:">
             <fileMain v-model="form.files" type="view"></fileMain>
-            <!--            <el-link-->
-            <!--              v-if="form.files && form.files !== ''"-->
-            <!--              type="primary"-->
-            <!--              :underline="false"-->
-            <!--              @click="downloadFile(form.files)"-->
-            <!--            >-->
-            <!--              {{ form.files.name }}-->
-            <!--            </el-link-->
-            <!--            >-->
+
           </el-form-item>
+          
+          <template v-slot:technicalDrawings="{ row }">
+              <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
+            </template>
         </el-col>
       </el-row>
       <headerTitle title="计划清单" style="margin-top: 15px"></headerTitle>
@@ -116,9 +112,27 @@
                 v-model="scope.row.totalCount"
               ></el-input-number>
             </template>
+            <template v-slot:expectReceiveDate="scope">
+              <div v-if="scope.row.arrivalWay == 1">
+                {{ scope.row.expectReceiveDate }}
+              </div>
+              <div v-if="scope.row.arrivalWay == 2">
+                <el-link
+                  type="primary"
+                  :underline="false"
+                 
+                >
+                  {{ scope.row.expectReceiveDate }}
+                </el-link>
+              </div>
+            </template>
           </ele-pro-table>
         </el-tab-pane>
-        <el-tab-pane label="带料清单" name="2" v-if="['3', '4', '5', '6','7'].includes(form.sourceType)">
+        <el-tab-pane
+          label="带料清单"
+          name="2"
+          v-if="['3', '4', '5', '6', '7'].includes(form.sourceType)"
+        >
           <ele-pro-table
             ref="table"
             :needPage="false"
@@ -137,7 +151,11 @@
             </template>
           </ele-pro-table>
         </el-tab-pane>
-        <el-tab-pane label="产出品清单" name="3" v-if="['3', '4', '5', '6','7'].includes(form.sourceType)">
+        <el-tab-pane
+          label="产出品清单"
+          name="3"
+          v-if="['3', '4', '5', '6', '7'].includes(form.sourceType)"
+        >
           <ele-pro-table
             ref="table"
             :needPage="false"
@@ -183,7 +201,7 @@
     },
     data() {
       return {
-        activeName:'1',
+        activeName: '1',
         visible: false,
         detailId: '',
         title: '详情',
@@ -220,7 +238,35 @@
             align: 'center',
             slot: 'productName'
           },
-
+          {
+            width: 110,
+            prop: 'batchNo',
+            label: '批次号',
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
+          {
+            width: 150,
+            prop: 'taskName',
+            label: '工序',
+            slot: 'taskName',
+            align: 'center'
+          },
           {
             width: 150,
             prop: 'productBrand',
@@ -271,25 +317,44 @@
             align: 'center',
             slot: 'specification'
           },
-          // {
-          //   width: 130,
-          //   prop: 'modelType',
-          //   label: '品牌',
-          //   slot: 'modelType'
-          // },
+          {
+            width: 150,
+            prop: 'arrivalWay',
+            label: '到货方式',
+            formatter: (row, column, cellValue) => {
+              return cellValue == 1 ? '一次性到货' : '分批到货';
+            },
+            align: 'center'
+          },
           {
             width: 170,
             prop: 'receiveDate',
             label: '到货日期',
-            align: 'center',
-            slot: 'receiveDate'
+            slot: 'expectReceiveDate',
+            align: 'center'
+          },
+
+          {
+            width: 130,
+            prop: 'supplierName',
+            label: '供应商',
+            slot: 'supplierName',
+            headerSlot: 'headerSupplierName',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'technicalDrawings',
+            label: '图纸附件',
+            slot: 'technicalDrawings',
+            align: 'center'
           },
           {
             width: 140,
             prop: 'files',
             label: '附件',
-            align: 'center',
-            slot: 'files'
+            slot: 'files',
+            align: 'center'
           },
           {
             minWidth: 220,
@@ -302,8 +367,11 @@
       };
     },
     created() {
+      this.requestDict('产地');
+
       this.getPlanData(this.businessId);
     },
+ 
     methods: {
       downloadFile(file) {
         getFile({ objectName: file.storePath }, file.name);
@@ -342,7 +410,11 @@
           }
           // 表单验证通过,执行保存操作
           this.loading = true;
-          this.form.detailList=[...this.form.detailList,...this.form.rawDetailList,...this.form.outputDetailList]
+          this.form.detailList = [
+            ...this.form.detailList,
+            ...this.form.rawDetailList,
+            ...this.form.outputDetailList
+          ];
           return Object.assign({}, this.form);
         } catch (error) {
           console.log(error);