yusheng 2 лет назад
Родитель
Сommit
f0422cfc57

+ 21 - 1
src/api/bpm/components/saleManage/saleorder.js

@@ -167,6 +167,26 @@ export async function getsearchDetailListByType(params) {
  * 退货审批
  */
 export async function approve(params) {
-  const res = await request.post(`/bpm/salesOrderReturnApprove/approve`, params);
+  const res = await request.post(
+    `/bpm/salesOrderReturnApprove/approve`,
+    params
+  );
   return res.data;
 }
+
+// 选择工艺路线
+export async function routeList(params) {
+  // const res = await request.get('/main/producerouting/page', { params });
+  // if (res.data.code == 0) {
+  //   return res.data.data;
+  // }
+}
+// // // 生产版本列表
+// export async function versionPage(params) {
+//   let par = new URLSearchParams(params);
+//   const res = await request.get(`/main/produceversion/page?` + par);
+//   if (res.data.code == 0) {
+//     return res.data.data;
+//   }
+//   return Promise.reject(new Error(res.data.message));
+// }

+ 186 - 0
src/components/ProductionVersion2/index.vue

@@ -0,0 +1,186 @@
+<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%"
+  >
+    <el-card shadow="never">
+      <productionSearch @search="reload"></productionSearch>
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        height="calc(100vh - 350px)"
+        class="dict-table"
+        @cell-click="cellClick"
+      >
+        <!-- 表头工具栏 -->
+
+        <template v-slot:status="{ row }">
+          {{ checkStatus(row) }}
+        </template>
+
+        <template v-slot:action="{ row }">
+          <el-radio class="radio" v-model="radio" :label="row.id"
+            ><i></i
+          ></el-radio>
+        </template>
+      </ele-pro-table>
+    </el-card>
+    <div class="btns">
+      <el-button type="primary" size="small" @click="selected">选择</el-button>
+      <el-button size="small" @click="handleClose">关闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import { routeList } from '@/api/bpm/components/saleManage/saleorder';
+  import productionSearch from './production-search.vue';
+  export default {
+    components: {
+      productionSearch
+    },
+    data() {
+      return {
+        visible: false,
+        currentNum: '',
+        // 表格列配置
+        columns: [
+          {
+            prop: 'code',
+            label: '工艺路线组编码',
+            // sortable: 'custom',
+            showOverflowTooltip: true,
+            align: 'center',
+
+            minWidth: 110
+          },
+          {
+            prop: 'name',
+            label: '工艺路线名称',
+            showOverflowTooltip: true,
+            align: 'center',
+            minWidth: 110
+          },
+
+          {
+            prop: 'version',
+            label: '工艺路线版本',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+
+          {
+            prop: 'produceVersionName',
+            label: '生产版本',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+
+          {
+            prop: 'status',
+            label: '状态',
+            align: 'center',
+            slot: 'status',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+
+          {
+            action: 'action',
+            slot: 'action',
+            align: 'center',
+            label: '选择'
+          }
+        ],
+        statusList: [
+          { label: '草稿', value: -1 },
+          { label: '失效', value: 0 },
+          { label: '生效', value: 1 }
+        ],
+        categoryLevelId: '9',
+        radio: null,
+        current:{}
+      };
+    },
+
+    watch: {},
+    methods: {
+      checkStatus(row) {
+        let obj = this.statusList.find((it) => it.value == row.status);
+        return obj.label;
+      },
+      /* 表格数据源 */
+      datasource({ page, where, limit }) {
+        return routeList({
+          ...where,
+          pageNum: page,
+          size: limit
+        });
+      },
+
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ page: 1, where: where });
+      },
+      open(index) {
+        this.currentNum = index;
+        this.visible = true;
+      },
+      // 单击获取id
+      cellClick(row) {
+        this.current = row;
+        this.radio = row.id;
+      },
+
+      handleClose() {
+        this.visible = false;
+      },
+      selected() {
+        if (!this.current) {
+          return this.$message.warning('请选择工艺路线');
+        }
+        this.$emit('changeProduct', this.current,this.currentNum);
+        this.handleClose();
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .tree_col {
+    border: 1px solid #eee;
+    padding: 10px 0;
+    box-sizing: border-box;
+    height: 500px;
+    overflow: auto;
+  }
+
+  .table_col {
+    padding-left: 10px;
+
+    ::v-deep .el-table th.el-table__cell {
+      background: #f2f2f2;
+    }
+  }
+
+  .pagination {
+    text-align: right;
+    padding: 10px 0;
+  }
+
+  .btns {
+    text-align: center;
+    padding: 10px 0;
+  }
+
+  .topsearch {
+    margin-bottom: 15px;
+  }
+</style>

+ 108 - 0
src/components/ProductionVersion2/production-search.vue

@@ -0,0 +1,108 @@
+<template>
+  <el-form
+    label-width="120px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+  >
+    <el-row>
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 4 }">
+        <el-form-item label="工艺路线组编码:">
+          <el-input clearable v-model="where.code" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 4 }">
+        <el-form-item label="工艺路线名称:">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 4 }">
+        <el-form-item label="生产版本:">
+          <el-select
+            v-model="where.produceVersionId"
+            filterable
+            placeholder="请选择"
+            :style="{ width: '100%' }"
+          >
+            <el-option
+              v-for="item in versionList"
+              :key="item.code"
+              :label="item.code + '-' + item.name"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>
+
+      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+        <el-form-item label-width="20px">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+  import { versionPage } from '@/api/bpm/components/saleManage/saleorder';
+
+  export default {
+    data() {
+      // 默认表单数据
+      const defaultWhere = {
+        code: '',
+        name: '',
+        produceVersionId: ''
+      };
+      return {
+        // 表单数据
+        where: { ...defaultWhere },
+        statusList: [
+          { label: '草稿', value: -1 },
+          { label: '失效', value: 0 },
+          { label: '生效', value: 1 }
+        ],
+
+        versionList: []
+      };
+    },
+
+    created() {
+      this.getVersionList();
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      /* 搜索 */
+      search() {
+        this.$emit('search', this.where);
+      },
+      /*  重置 */
+      reset() {
+        this.where = { ...this.defaultWhere };
+        this.search();
+      },
+
+      async getVersionList() {
+        const res = await versionPage({
+          pageNum: 1,
+          size: -1
+        });
+        this.versionList = res.list;
+      }
+    }
+  };
+</script>

+ 12 - 4
src/components/upload/fileUpload.vue

@@ -6,6 +6,7 @@
       :http-request="handlRequest"
       :before-remove="beforeRemove"
       :on-remove="handleRemove"
+      :on-preview="handleItem"
       multiple
       :before-upload="beforeUpload"
       :file-list="fileList"
@@ -72,13 +73,14 @@
   import {
     uploadFile,
     removeFile,
-    getFileList
+    getFileList,
+    getFile
   } from '@/api/system/file/index.js';
   import { getImageUrl, getImagePath } from '@/utils/file';
   export default {
     props: {
       value: {
-        type: Array,
+        type: [Array,String],
         default: () => []
       },
       // 所属模块
@@ -102,8 +104,8 @@
         default: 10
       },
       disabled:{
-        type: Boolean,
-        default:false
+        default:false,
+        type:Boolean
       }
     },
     data () {
@@ -164,6 +166,7 @@
         },
         get () {
           // console.log(this.value, 2);
+          if(!Array.isArray(this.value)) return []
           const arr =
             (this.value &&
               this.value.map((item) => ({
@@ -177,6 +180,11 @@
     },
 
     methods: {
+      //点击查看图片
+      handleItem(file){
+        console.log(file,'5555')
+       getFile({ objectName: file.storePath }, file.name);
+      },
       delFileList () {
         this.$emit('input', []);
       },

+ 44 - 6
src/views/bpm/handleTask/components/contractBook/addDialog.vue

@@ -9,14 +9,28 @@
             prop="type"
             style="margin-bottom: 22px"
           >
-            <DictSelection
+            <!-- <DictSelection
               dictName="合同类型"
               clearable
               v-model="form.type"
               @itemChange="dictChange"
               :disabled="create"
             >
-            </DictSelection>
+            </DictSelection> -->
+            <el-select
+              v-model="form.type"
+              placeholder="请选择"
+              style="width: 100%"
+              @change="dictChange"
+            >
+              <el-option
+                v-for="item in contractBookTypeList"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              >
+              </el-option>
+            </el-select>
           </el-form-item>
           <el-form-item
             label="合同名称"
@@ -55,7 +69,7 @@
             prop="categoryId"
             style="margin-bottom: 22px; width: 340px"
           >
-            <ele-tree-select
+            <!-- <ele-tree-select
               :data="treeList"
               v-model="form.categoryId"
               valueKey="id"
@@ -63,7 +77,20 @@
               @change="treeChange"
               placeholder="请选择"
               default-expand-all
-            />
+            /> -->
+            <el-select
+              v-model="form.categoryId"
+              placeholder="请选择"
+              style="width: 100%"
+            >
+              <el-option
+                v-for="item in categoryList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
           </el-form-item>
           <el-form-item
             label="签订日期"
@@ -453,6 +480,8 @@
           { id: 1, name: '固定' },
           { id: 2, name: '分期' }
         ],
+        contractBookTypeList: [],
+        categoryList: [],
         linkNameOptions: [],
         visible: false,
         title: '',
@@ -555,6 +584,8 @@
         this.enterprisePage.push(...res.list);
         this.getEnterprise();
       });
+      this.contractBookTypeList = copyObj(this.treeList[0].children);
+
       this.getDetailData(this.businessId);
     },
 
@@ -602,6 +633,7 @@
         if (data) {
           this.$nextTick(() => {
             let { contractVO } = data;
+            this.dictChange(contractVO.type, 'init');
             this.form = contractVO;
             this.$refs.inventoryTable &&
               this.$refs.inventoryTable.putTableValue(data);
@@ -610,7 +642,7 @@
                 data.receiptPaymentList
               );
             this.getLinkInfo(
-              data.type == '2' ? contractVO.partbId : contractVO.partaId
+              contractVO.type == '2' ? contractVO.partbId : contractVO.partaId
             );
           });
         }
@@ -633,7 +665,13 @@
         }
       },
       //选择合同类型
-      dictChange(val) {
+      dictChange(val,type) {
+        this.categoryList = copyObj(
+          this.contractBookTypeList.find((item) => item.code == val).children
+        );
+        if (type == 'init') {
+          return;
+        }
         this.form = Object.assign({}, this.form, {
           typeName: val.dictValue,
           partaAddress: '',

+ 1 - 0
src/views/bpm/handleTask/components/contractBook/detailDialog.vue

@@ -202,6 +202,7 @@
     <inventoryTabledetail
       ref="inventoryTabledetailRef"
       :isDiscountTotalPrice="true"
+      :contractBookType="form.type"
     >
     </inventoryTabledetail>
 

+ 44 - 2
src/views/bpm/handleTask/components/contractBook/inventoryTable.vue

@@ -402,6 +402,22 @@
           ></el-input>
         </el-form-item>
       </template>
+      <template v-slot:technologyRouteName="scope">
+        <el-form-item
+          :prop="'datasource.' + scope.$index + '.technologyRouteName'"
+          :rules="{
+            required: false,
+            message: '请选择',
+            trigger: 'change'
+          }"
+        >
+          <el-input
+            v-model="scope.row.technologyRouteName"
+            placeholder="请选择"
+            @click.native="openVersion(scope.$index)"
+          ></el-input>
+        </el-form-item>
+      </template>
       <template v-slot:headerCustomerExpectDeliveryDeadline="{ column }">
         <span class="is-required">{{ column.label }}</span>
       </template>
@@ -441,6 +457,10 @@
       @changeParent="changeParent"
     ></product-list>
     <head-list ref="headRef" @changeParent="changeAnswer"></head-list>
+    <ProductionVersion
+      ref="versionRefs"
+      @changeProduct="changeProduct"
+    ></ProductionVersion>
   </el-form>
 </template>
 <script>
@@ -449,6 +469,8 @@
   import dictMixins from '@/mixins/dictMixins';
   import fileUpload from '@/components/upload/fileUpload';
   import headList from '@/components/headList';
+  import ProductionVersion from '@/components/ProductionVersion2/index.vue';
+
   const dayjs = require('dayjs');
 
   export default {
@@ -456,7 +478,8 @@
     components: {
       productList,
       fileUpload,
-      headList
+      headList,
+      ProductionVersion
     },
     props: {
       contractStartDate: {},
@@ -676,6 +699,13 @@
             label: '技术图纸',
             slot: 'technicalDrawings'
           },
+          {
+            width: 240,
+            prop: 'technologyRouteName',
+            label: '工艺路线',
+            slot: 'technologyRouteName',
+            show: this.contractBookType == 1 ? true : false
+          },
           {
             width: 240,
             prop: 'industryArtFiles',
@@ -749,7 +779,7 @@
     watch: {
       contractBookType(n) {
         this.columns.forEach((item) => {
-          if (item.label == '生产交付交期') {
+          if (item.label == '生产交付交期'||item.label == '工艺路线') {
             item.show = n == 1 ? true : false;
           }
           if (item.prop == 'customerExpectDeliveryDeadline') {
@@ -760,6 +790,18 @@
       }
     },
     methods: {
+      openVersion(index) {
+        this.$refs.versionRefs.open(index);
+      },
+      //工艺路线
+      changeProduct(data, index) {
+        this.$set(
+          this.form.datasource[index],
+          'technologyRouteName',
+          data.name
+        );
+        this.$set(this.form.datasource[index], 'technologyRouteId', data.id);
+      },
       setDeliveryDays(row, index, type, isAll) {
         if (isAll) {
           this.form.datasource.forEach((item, i) => {

+ 16 - 2
src/views/bpm/handleTask/components/contractBook/inventoryTabledetail.vue

@@ -101,6 +101,9 @@
       isSinglePrice: {
         default: true,
         type: Boolean
+      },
+      contractBookType: {
+        default: 1
       }
     },
     data() {
@@ -221,13 +224,16 @@
             width: 160,
             prop: 'customerExpectDeliveryDeadline',
             label: '客户期望交期',
-            slot: 'customerExpectDeliveryDeadline'
+            slot: 'customerExpectDeliveryDeadline',
+            label: this.contractBookType == 1 ? '客户期望交期' : '交付日期',
           },
           {
             width: 160,
             prop: 'produceDeliveryDeadline',
             label: '生产交付交期',
-            slot: 'produceDeliveryDeadline'
+            slot: 'produceDeliveryDeadline',
+            show: this.contractBookType == 1 ? true : false
+
           },
           {
             width: 200,
@@ -275,6 +281,14 @@
             label: '技术图纸',
             slot: 'technicalDrawings'
           },
+          {
+            width: 240,
+            prop: 'technologyRouteName',
+            label: '工艺路线',
+            slot: 'technologyRouteName',
+            show: this.contractBookType == 1 ? true : false
+
+          },
           {
             width: 240,
             prop: 'industryArtFiles',

+ 18 - 8
src/views/bpm/handleTask/components/inquiryManage/addDialog.vue

@@ -103,7 +103,8 @@
 
   import { getplanDetail } from '@/api/bpm/components/purchasingManage/purchasePlanManage';
   import {
-    getpurchaseinquiry,chooseWinner
+    getpurchaseinquiry,
+    chooseWinner
   } from '@/api/bpm/components/purchasingManage/inquiryManage';
 
   import { copyObj } from '@/utils/util';
@@ -175,7 +176,7 @@
       };
     },
     created() {
-      this.getDetailData(this.businessId);
+      this.getDetailData(this.businessId, 'init');
     },
 
     methods: {
@@ -192,15 +193,22 @@
         chooseWinner(this.form);
       },
       //获取询价详情
-      async getDetailData(id) {
+      async getDetailData(id, type) {
         this.loading = true;
         let data = await getpurchaseinquiry(id);
         this.loading = false;
         if (data) {
           this.form = data;
+          this.list = data.detailList;
           this.supplierList = data.supplierList;
-          this.getplanData(data.planId);
-          console.log(this.form, 'this.form');
+          this.$nextTick(() => {
+            this.$refs.inventoryTable &&
+              this.$refs.inventoryTable.putTableValue(data.detailList);
+          });
+          if (type == 'init') {
+            this.getplanData(data.planId, type);
+          }
+          // console.log(this.form, 'this.form');
           // this.$nextTick(() => {
 
           // });
@@ -213,7 +221,6 @@
         let data = await getplanDetail(id);
         this.loading = false;
         if (data) {
-          this.list = data.detailList;
           this.$set(this.form, 'acceptUnpack', data.acceptUnpack);
           this.form.planId = data.id;
           this.form.planCode = data.planCode;
@@ -225,6 +232,10 @@
               );
             });
           }
+          if (type == 'init') {
+            return;
+          }
+          this.list = data.detailList;
           this.$nextTick(() => {
             this.$refs.inventoryTable &&
               this.$refs.inventoryTable.putTableValue(data.detailList);
@@ -340,8 +351,7 @@
       },
       downloadFile(file) {
         getFile({ objectName: file.storePath }, file.name);
-      },
-  
+      }
     }
   };
 </script>

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

@@ -178,9 +178,9 @@
           // },
           {
             width: 170,
-            prop: 'receiveDate',
+            prop: 'expectReceiveDate',
             label: '到货日期',
-            slot: 'receiveDate'
+            slot: 'expectReceiveDate'
           },
           {
             width: 140,

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

@@ -423,7 +423,9 @@
         const data = await getTableList({
           pageNum: 1,
           size: 30,
-          contactName: name
+          contactName: name,
+          approvalStatus:2
+
         });
         this.businessList = data.list;
       },

+ 16 - 5
src/views/bpm/handleTask/components/saleOrder/addDialog.vue

@@ -69,6 +69,16 @@
             />
           </el-form-item>
           <el-form-item
+            label="合同编号"
+            prop="contractNumber"
+            style="margin-bottom: 22px"
+          >
+            <el-input
+              disabled
+              v-model="form.contractNumber"
+            />
+          </el-form-item>
+          <!-- <el-form-item
             label="交货日期"
             prop="deliveryDate"
             style="margin-bottom: 22px"
@@ -79,7 +89,7 @@
               placeholder="选择日期"
             >
             </el-date-picker>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="结算方式" prop="settlementMode">
             <DictSelection
               dictName="结算方式"
@@ -420,9 +430,9 @@
         groupTreeData: [],
         groupData: [],
         rules: {
-          deliveryDate: [
-            { required: true, message: '请选择交货日期', trigger: 'change' }
-          ],
+          // deliveryDate: [
+          //   { required: true, message: '请选择交货日期', trigger: 'change' }
+          // ],
           settlementMode: [
             { required: true, message: '请选择结算方式', trigger: 'change' }
           ],
@@ -593,6 +603,7 @@
         this.loading = false;
         if (data) {
           this.$nextTick(() => {
+            data.saleType=+data.saleType
             this.form = data;
             this.$refs.inventoryTable &&
               this.$refs.inventoryTable.putTableValue(data);
@@ -692,7 +703,7 @@
         this.form = Object.assign({}, copyObj(this.formDef), {
           id,
           projectName,
-          saleType,
+          saleType:+saleType,
           saleTypeName,
           deliveryDate,
           orderFiles,

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

@@ -33,6 +33,13 @@
             >
               {{ form.contractName }}
             </el-form-item>
+            <el-form-item
+              label="合同编号:"
+              prop="contractNumber"
+              style="margin-bottom: 16px"
+            >
+              {{ form.contractNumber }}
+            </el-form-item>
             <el-form-item
               label="结算方式:"
               prop="settlementModeName"
@@ -72,13 +79,13 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item
+            <!-- <el-form-item
               label="交货日期:"
               prop="deliveryDate"
               style="margin-bottom: 16px"
             >
               {{ form.deliveryDate }}
-            </el-form-item>
+            </el-form-item> -->
 
             <el-form-item
               label="项目名称:"