ysy %!s(int64=2) %!d(string=hai) anos
pai
achega
2e443baf3f

+ 14 - 0
src/api/bpm/components/purchasingManage/outSourceSendCk.js

@@ -0,0 +1,14 @@
+import request from '@/utils/request';
+
+/**
+ * 获取采购订单列表
+ */
+export async function applyOutsource(id) {
+  const res = await request.get(`/mes/applyoutsource/getById/${id}`);
+  if (res.data.code == 0) {
+
+
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 232 - 0
src/views/bpm/handleTask/components/purchaseOrder/outSourceSendCk/components/details.vue

@@ -0,0 +1,232 @@
+<template>
+    <el-dialog title="详情" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false"
+        :close-on-press-escape="false" append-to-body width="80%">
+       
+        <!-- 数据表格 -->
+        <ele-pro-table ref="table" v-if="detailType == 1" :columns="columns" cache-key="detailsTable"
+            height="calc(100vh - 350px)">
+            <template v-slot:totalCount="{ row }">
+                {{ row.totalCount }}{{ row.measuringUnit }}
+            </template>
+        </ele-pro-table>
+
+
+        <ele-pro-table ref="table2" v-if="detailType == 2" :columns="columns2" cache-key="detailsTable2"
+            height="calc(100vh - 350px)">
+            <template v-slot:totalCount="{ row }">
+                {{ row.totalCount }}{{ row.measuringUnit }}
+            </template>
+        </ele-pro-table>
+
+
+
+    </el-dialog>
+</template>
+  
+<script>
+
+
+export default {
+    components: {
+ 
+    },
+    data() {
+        return {
+            visible: false,
+            detailType: null,
+
+        }
+    },
+
+    computed: {
+        // 表格列配置
+        columns() {
+            return [
+                {
+                    columnKey: 'index',
+                    label: '序号',
+                    type: 'index',
+                    width: 55,
+                    align: 'center',
+                    showOverflowTooltip: true,
+                    fixed: 'left'
+                },
+
+
+                {
+                    prop: 'categoryCode',
+                    label: '编码',
+                    align: 'center'
+                },
+                {
+                    prop: 'categoryName',
+                    label: '名称',
+                    align: 'center'
+                },
+
+                {
+                    prop: 'brandNum',
+                    label: '牌号',
+                    align: 'center'
+                },
+
+
+                {
+                    prop: 'modelType',
+                    label: '型号',
+                    align: 'center'
+                },
+
+
+
+                {
+                    prop: 'specification',
+                    label: '规格',
+                    align: 'center'
+                },
+
+
+                {
+                    slot: 'totalCount',
+                    label: '数量',
+                    align: 'center'
+                },
+
+
+
+
+
+
+
+
+
+            ];
+        },
+
+        columns2() {
+            return [
+                {
+                    columnKey: 'index',
+                    label: '序号',
+                    type: 'index',
+                    width: 55,
+                    align: 'center',
+                    showOverflowTooltip: true,
+                    fixed: 'left'
+                },
+
+
+                {
+                    prop: 'categoryCode',
+                    label: '编码',
+                    align: 'center'
+                },
+                {
+                    prop: 'categoryName',
+                    label: '名称',
+                    align: 'center'
+                },
+
+                {
+                    prop: 'brandNum',
+                    label: '牌号',
+                    align: 'center'
+                },
+
+
+                {
+                    prop: 'modelType',
+                    label: '型号',
+                    align: 'center'
+                },
+
+
+
+                {
+                    prop: 'specification',
+                    label: '规格',
+                    align: 'center'
+                },
+
+
+                {
+                    label: '物料代号',
+                    prop: 'extInfo.materielCode',
+                    align: 'center'
+                },
+                {
+                    label: '客户代号',
+                    prop: 'extInfo.clientCode',
+                    align: 'center'
+                },
+                {
+                    label: '刻码',
+                    prop: 'extInfo.engrave',
+                    align: 'center'
+                },
+                {
+                    label: '重量',
+                    prop: 'extInfo.newWeight',
+                    align: 'center'
+                },
+
+
+                {
+                    slot: 'totalCount',
+                    label: '数量',
+                    align: 'center'
+                },
+
+
+            ];
+        },
+
+        clientEnvironmentId() {
+            return this.$store.state.user.info.clientEnvironmentId;
+        },
+    },
+
+    watch: {
+
+    },
+    methods: {
+
+
+
+        open(row) {
+            this.visible = true
+            if (row.detailType == 1) {
+                this.detailType = 1
+                this.$nextTick(() => {
+                    this.$refs.table.setData([...row.detailList]);
+                })
+            } else if (row.detailType == 2) {
+                this.detailType = 2
+                this.$nextTick(() => {
+                    this.$refs.table2.setData([...row.detailList]);
+                })
+            }
+
+
+
+        },
+
+
+
+
+
+
+
+        handleClose() {
+            this.visible = false
+
+
+
+        },
+
+    }
+}
+</script>
+  
+<style lang="scss" scoped></style>
+  

+ 180 - 300
src/views/bpm/handleTask/components/purchaseOrder/outSourceSendCk/detailDialog.vue

@@ -1,153 +1,76 @@
 <template>
- <div>
-   <el-form ref="form" :model="form" :rules="rules" label-width="130px">
-     <headerTitle title="发货信息"></headerTitle>
-     <el-row :gutter="20">
-       <el-col :span="12">
-         <el-form-item
-           label="委外发货单编码:"
-           prop="code"
-           style="margin-bottom: 22px"
-         >
-           {{ form.code }}
-         </el-form-item>
-       </el-col>
-       <el-col :span="12">
-         <el-form-item
-           label="采购订单编码:"
-           prop="orderNo"
-           style="margin-bottom: 22px"
-         >
-           {{ form.orderNo }}
-         </el-form-item>
-       </el-col>
-     </el-row>
-     <el-row :gutter="20">
-       <el-col :span="12">
-         <el-form-item
-           label="外协单位:"
-           prop="contactName"
-           style="margin-bottom: 22px"
-         >
-           {{ form.supplierName }}
-         </el-form-item>
-       </el-col>
-
-       <el-col :span="12">
-         <el-form-item
-           label="外协单位联系人:"
-           prop="linkName"
-           style="margin-bottom: 22px"
-         >
-           {{ form.linkName }}
-         </el-form-item>
-       </el-col>
-     </el-row>
-     <el-row :gutter="20">
-       <el-col :span="12">
-         <el-form-item
-           label="计价方式:"
-           style="margin-bottom: 22px">
-           {{ form.pricingWay == 1 ? '按数量计费' : '按重量计费' }}
-         </el-form-item>
-       </el-col>
-       <el-col :span="12">
-         <el-form-item
-           label="外协单位电话:"
-           prop="linkPhone"
-           style="margin-bottom: 22px"
-         >
-           {{ form.linkPhone }}
-         </el-form-item>
-       </el-col>
-     </el-row>
-     <el-row :gutter="20">
-       <el-col :span="12">
-         <el-form-item label="车辆号:" prop="carNo" style="margin-bottom: 22px">
-           {{ form.carNo }}
-         </el-form-item>
-       </el-col>
-       <el-col :span="12">
-         <el-form-item
-           label="送货单号:"
-           prop="sendNoteNo"
-           style="margin-bottom: 22px"
-         >
-           {{ form.sendNoteNo }}
-         </el-form-item>
-       </el-col>
-     </el-row>
-     <el-row :gutter="20">
-       <el-col :span="12">
-         <el-form-item
-           label="订单类型:"
-           prop="sourceTypeName"
-           style="margin-bottom: 22px"
-         >
-           {{ form.sourceTypeName }}
-         </el-form-item>
-       </el-col>
-       <el-col :span="12">
-         <el-form-item prop="files" label="附件:">
-           <div v-if="form.files && form.files?.length">
-             <el-link
-               v-for="link in form.files"
-               :key="link.id"
-               type="primary"
-               :underline="false"
-               @click="downloadFile(link)">
-               {{ link.name }}
-             </el-link>
-           </div>
-         </el-form-item>
-       </el-col>
-       <el-col :span="12">
-
-       </el-col>
-     </el-row>
-   </el-form>
-
-   <headerTitle title="产品清单"></headerTitle>
-   <ele-pro-table
-     ref="table"
-     :needPage="false"
-     :columns="competAnalysisListcolumns"
-     :toolkit="[]"
-     :datasource="detailData.productList"
-     row-key="id"
-   >
-     <!-- <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>
- </div>
+  <div>
+
+    <headerTitle title="委外单"></headerTitle>
+    <ele-pro-table ref="table" :needPage="false" :columns="columns" :toolkit="[]" :datasource="list"
+      row-key="id">
+
+
+      <template v-slot:type="{ row }">
+        <div v-if="row.type == 1">采购委外</div>
+        <div v-if="row.type == 2">直接发货委外</div>
+        <div v-if="row.type == 3">无采购委外</div>
+      </template>
+
+
+
+
+      <template v-slot:status="{ row }">
+        <el-tag>{{ row.status == 1 ? '已发布' : '未发布' }}</el-tag>
+      </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>
+
+
+      <template v-slot:files="{ row }">
+        <div v-if="row.files && row.files?.length">
+          <el-link v-for="link in row.files" :key="link.id" type="primary" :underline="false" @click="downloadFile(link)">
+            {{ link.name }}</el-link>
+        </div>
+
+      </template>
+
+
+      <template v-slot:action="{ row }">
+
+
+        <el-link type="primary" :underline="false" @click="handleDetails(row)">
+          详情
+        </el-link>
+
+
+
+
+      </template>
+
+
+
+    </ele-pro-table>
+
+    <detail ref="detailsRef"></detail>
+  </div>
 </template>
 
 <script>
-import {getFile} from '@/api/system/file';
+import { getFile } from '@/api/system/file';
 import {
-  getPurchaseOutSourceSendDetailAPI,
-} from '@/api/bpm/components/purchasingManage/outSourceSend';
-
+  applyOutsource,
+} from '@/api/bpm/components/purchasingManage/outSourceSendCk';
+import Detail from './components/details.vue';
 
 export default {
+  components: {
+    Detail
+  },
   props: {
     businessId: {
       default: ''
@@ -156,216 +79,173 @@ export default {
   data() {
     return {
       detailId: '',
-      form: {},
-      detailData: {},
-      competAnalysisListcolumns: [
+
+      list: [],
+
+    };
+  },
+
+  computed: {
+    // 表格列配置
+    columns() {
+      return [
         {
-          width: 45,
-          type: 'index',
           columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
           align: 'center',
+          showOverflowTooltip: true,
           fixed: 'left'
         },
+
+
         {
-          minWidth: 140,
-          prop: 'productName',
-          label: '名称',
-          slot: 'productName',
-          align: "center"
-        },
-        {
-          minWidth: 120,
-          prop: 'productCode',
-          label: '编码',
-          slot: 'productCode',
-          align: "center"
-        },
-        {
-          minWidth: 100,
-          prop: 'productCategoryName',
-          label: '类型',
-          slot: 'productCategoryName',
-          align: "center"
-        },
-        {
-          width: 160,
-          prop: 'productBrand',
-          label: '牌号',
-          slot: 'productBrand',
-          align: "center"
-        },
-        {
-          width: 120,
-          prop: 'modelType',
-          label: '型号',
-          slot: 'modelType',
-          align: "center"
+          prop: 'code',
+          label: '委外单编码',
+          align: 'center'
         },
         {
-          width: 120,
-          prop: 'specification',
-          label: '规格',
-          slot: 'specification',
-          align: "center"
+          prop: 'name',
+          label: '委外单名称',
+          align: 'center'
         },
+
+
         {
-          width: 200,
-          prop: 'customerMark',
-          label: '客户代号',
-          slot: 'customerMark',
-          align: "center"
+          prop: 'workOrderCode',
+          label: '工单编码',
+          align: 'center'
         },
+
+
+
         {
-          width: 200,
-          prop: 'warehouseName',
-          label: '仓库名称',
-          slot: 'warehouseName',
-          align: "center"
+          prop: 'taskName',
+          label: '工序',
+          align: 'center'
         },
 
+
         {
-          width: 120,
           prop: 'totalCount',
-          label: '发货数量',
-          slot: 'totalCount',
-          align: "center"
-        },
-        {
-          width: 120,
-          prop: 'measuringUnit',
-          label: '计量单位',
-          slot: 'measuringUnit',
-          align: "center"
-        },
-        {
-          width: 120,
-          prop: 'singleWeight',
-          label: '单重',
-          slot: 'singleWeight',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'sendTotalWeight',
-          label: '发货总重',
-          slot: 'sendTotalWeight',
-          align: "center"
+          label: '委外数量',
+          align: 'center'
         },
+
         {
-          width: 100,
-          prop: 'weightUnit',
-          label: '重量单位',
-          slot: 'weightUnit',
-          align: "center"
+          prop: 'totalWeight',
+          label: '委外重量',
+          align: 'center'
         },
+
         {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice',
-          align: "center"
+          slot: 'type',
+          label: '委外类型',
+          align: 'center'
         },
+
+
+
         {
-          width: 100,
-          prop: 'discountSinglePrice',
-          label: '折让单价',
-          slot: 'discountSinglePrice',
-          align: "center"
+          prop: 'remark',
+          label: '备注',
+          align: 'center'
         },
 
         {
-          width: 120,
-          prop: 'totalPrice',
-          label: '合计',
-          slot: 'totalPrice',
-          formatter: (_row, _column, cellValue) => {
-            return _row.totalPrice + '元';
-          },
-          align: "center"
+          slot: 'requireDeliveryTime',
+          label: '预计到货日期',
+          align: 'center',
+          minWidth: 70
         },
+
+
+
+
         {
-          width: 100,
-          prop: 'discountTotalPrice',
-          label: '折让合计',
-          slot: 'discountTotalPrice',
-          align: "center"
+          prop: 'produceRoutingName',
+          label: '工艺路线',
+          align: 'center',
         },
+
         {
-          width: 120,
-          prop: 'deliveryDays',
-          label: '交期(天)',
-          slot: 'deliveryDays',
-          align: "center"
+          prop: 'warehouseName',
+          label: '仓库',
+          align: 'center',
         },
+
+
         {
-          width: 200,
-          prop: 'guaranteePeriod',
-          label: '质保期',
-          slot: 'guaranteePeriod',
-          formatter: (_row, _column, cellValue) => {
-            return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
-          },
-          align: "center"
+          prop: 'createTime',
+          label: '创建时间',
+          align: 'center',
+          minWidth: 70
         },
-        // {
-        //   width: 120,
-        //   prop: 'guaranteePeriodUnitCode',
-        //   label: '',
-        //   slot: 'guaranteePeriodUnitCode'
-        // },
+
         {
-          width: 120,
-          prop: 'technicalAnswerName',
-          label: '技术答疑人',
-          slot: 'technicalAnswerName',
-          align: "center"
+          slot: 'status',
+          label: '状态',
+          align: 'center'
         },
+
+
         {
-          width: 220,
-          prop: 'technicalParams',
-          label: '技术参数',
-          slot: 'technicalParams',
-          align: "center"
+          label: '图片附件',
+          slot: 'technicalDrawings',
+          action: 'technicalDrawings',
+          minWidth: 100,
         },
+
         {
-          width: 240,
-          prop: 'technicalDrawings',
-          label: '技术图纸',
-          slot: 'technicalDrawings',
-          formatter: (_row, _column, cellValue) => {
-            return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
-          },
-          align: "center"
+          label: '附件',
+          slot: 'files',
+          action: 'files',
+          minWidth: 100,
         },
+
+
         {
-          width: 220,
-          prop: 'remark',
-          label: '备注',
-          slot: 'remark',
-          align: "center"
+          columnKey: 'action',
+          label: '操作',
+          width: 140,
+          align: 'center',
+          resizable: false,
+          fixed: 'right',
+          slot: 'action',
+          showOverflowTooltip: true
         }
-      ]
-    };
+
+
+
+      ];
+    },
+
+    clientEnvironmentId() {
+      return this.$store.state.user.info.clientEnvironmentId;
+    },
   },
   created() {
     this.getDetailData(this.businessId);
   },
   methods: {
     downloadFile(file) {
-      getFile({objectName: file.storePath}, file.name);
+      getFile({ objectName: file.storePath }, file.name);
     },
     async getDetailData(id) {
       this.loading = true;
-      const data = await getPurchaseOutSourceSendDetailAPI(id);
+      const data = await applyOutsource(id);
       this.loading = false;
       if (data) {
-        this.form = data;
-        this.detailData = data;
+        this.list = [ data ];
       }
     },
-    getTableValue(){
-      return Promise.resolve(this.form)
-    }
+
+
+    handleDetails(row) {
+      this.$refs.detailsRef.open(row)
+    },
+
   }
 };
 </script>

+ 9 - 119
src/views/bpm/handleTask/components/purchaseOrder/outSourceSendCk/submit.vue

@@ -32,13 +32,13 @@
         type="danger"
         size="mini"
         @click="handleAudit(0)"
-        v-if="!['starter'].includes(taskDefinitionKey)"
         >驳回
       </el-button>
 
       <el-dropdown
         @command="(command) => handleCommand(command)"
         style="margin-left: 30px"
+        v-if="taskDefinitionKey != 'deptLeaderApprove'"
       >
         <span class="el-dropdown-link"
           >更多<i class="el-icon-arrow-down el-icon--right"></i
@@ -48,38 +48,16 @@
         </el-dropdown-menu>
       </el-dropdown>
 
-      <!-- <el-button
-        icon="el-icon-circle-close"
-        type="danger"
-        size="mini"
-        @click="handleBackList"
-        >退回
-      </el-button> -->
-      <!-- <el-button
-        icon="el-icon-circle-close"
-        type="danger"
-        size="mini"
-        @click="handleAudit(0)"
-        v-if="taskDefinitionKey != 'productionSupervisorApprove1'"
-        >不通过
-      </el-button>
-      <el-button
-        icon="el-icon-edit-outline"
-        type="primary"
-        size="mini"
-        v-if="taskDefinitionKey != 'productionSupervisorApprove1'"
-        @click="handleUpdateAssignee"
-        >转办
-      </el-button> -->
+
+ 
     </div>
   </el-col>
 </template>
 
 <script>
-  import outin from '@/api/warehouseManagement/outin';
+
   import { cancel } from '@/api/bpm/components/purchasingManage/outSourceSend';
-  import { approveTaskWithVariables } from '@/api/bpm/task';
-  import { getWarehouseListByIds } from '@/api/bpm/components/saleManage/saleorder';
+
 
   // 流程实例的详情页,可用于审批
   export default {
@@ -107,104 +85,16 @@
         form: {
           reason: ''
         },
-        tabOptions: [
-          { key: 'starter', permissionType: 'update', name: '发起人申请' },
-          {
-            key: 'deptLeaderApprove',
-            permissionType: 'view',
-            name: '部门主管审批'
-          },
-          { key: 'storeman', permissionType: 'view', name: '仓管出库' }
-        ]
+  
       };
     },
     created() {},
     methods: {
-      /** 处理转办审批人 */
-      handleUpdateAssignee() {
-        this.$emit('handleUpdateAssignee');
-      },
-      /** 退回 */
-      handleBackList() {
-        this.$emit('handleBackList');
-      },
 
-      async handleAudit(status) {
-        let storemanIds = '';
-        let permissionType = this.tabOptions.find(
-          (item) => item.key == this.taskDefinitionKey
-        )?.permissionType;
-        if (permissionType === 'update') {
-          await this.getTableValue();
-        }
-        if (this.taskDefinitionKey === 'deptLeaderApprove') {
-          let arr = await this.getTableValue();
-          let ids = arr.productList.map((item) => item.warehouseId);
-          let data = await getWarehouseListByIds(ids || []);
-          storemanIds = [...new Set(data.map((item) => item.ownerId))].join(
-            ','
-          );
-        }
-        if (this.taskDefinitionKey === 'storeman') {
-          let data = await this.getTableValue();
-          let storageData = data.returnStorageData;
-          // 入库来源storageSource 0-正常  1-外部(外部跳过内部审核流程)
-          storageData.storageSource = 1;
-          console.log(storageData);
-          try {
-            this.isLoading = true;
-            const res = await outin.saveNew(storageData);
-            if (res.code == 0) {
-              approveTaskWithVariables({
-                id: this.taskId,
-                reason: this.form.reason,
-                variables: {
-                  pass: !!status
-                }
-              }).then((res) => {
-                if (res.code != '-1') {
-                  this.$emit('handleAudit', {
-                    status: status,
-                    title: !status ? '驳回' : ''
-                  });
-                }
-                this.isLoading = false;
-              });
-            }
-          } catch (error) {
-            this.isLoading = false;
-            console.error('保存失败:', error);
-          }
-        } else {
-          await this._approveTaskWithVariables(status, storemanIds);
-        }
-      },
-      async _approveTaskWithVariables(status, storemanIds) {
-        let variables = {
-          pass: !!status,
-          storemanIds
-        };
-        approveTaskWithVariables({
-          id: this.taskId,
-          reason: this.form.reason,
-          variables
-        }).then((res) => {
-          if (res.data.code != '-1') {
-            this.$emit('handleAudit', {
-              status,
-              title: status === 0 ? '驳回' : ''
-            });
-          }
-        });
-      },
 
-      getTableValue() {
-        return new Promise((resolve, reject) => {
-          this.$emit('getTableValue', async (data) => {
-            resolve(await data);
-          });
-        });
-      },
+      handleAudit() {},
+
+
 
       //更多
       handleCommand(command) {