Просмотр исходного кода

非生产性采购收货单审批

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

+ 1 - 26
src/api/bpm/components/purchasingManage/purchaseorderreceive.js

@@ -27,32 +27,7 @@ export async function getReceiveSaleOrderrecordDetail(id) {
  */
 export async function UpdateReceiveInformation(data) {
   const res = await request.put(`/eom/purchaseorderreceive/update`, data);
-  if (res.data.code == 0) {
-    return res.data.data;
-  }
-  return Promise.reject(new Error(res.data.message));
-}
-
-/**
- * 新增信息
- */
-export async function addReceiveInformation(data) {
-  const res = await request.post(`/eom/purchaseorderreceive/save`, data);
-  if (res.data.code == 0) {
-    return res.data.data;
-  }
-  return Promise.reject(new Error(res.data.message));
-}
-
-/**
- * 删除
- */
-export async function deleteReceiveInformation(data) {
-  const res = await request.delete('/eom/purchaseorderreceive/delete', { data });
-  if (res.data.code == 0) {
-    return res.data.data;
-  }
-  return Promise.reject(new Error(res.data.message));
+  return res.data
 }
 
 

+ 2 - 1
src/enum/dict.js

@@ -55,7 +55,8 @@ export default {
   采购类型: 'purchase_type',
   退货类型: 'sale_return_order_type',
   质检状态: 'quality_control_code',
-  质检结果: 'Qc_results_code'
+  质检结果: 'Qc_results_code',
+  采购收货单类型: 'purchase_receive_type',
 };
 
 export const numberList = [

+ 1 - 1
src/views/bpm/done/index.vue

@@ -36,7 +36,7 @@
                 </DictSelection>
               </el-form-item>
             </el-col>
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }" style="width: 300px;">
               <el-form-item label="创建时间:" prop="createTime">
                 <el-date-picker
                   v-model="params.createTime"

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

@@ -578,7 +578,7 @@
             prop: 'customerMark',
             label: '客户代号',
             slot: 'customerMark',
-            show: this.isCustomerMark
+            // show: this.isCustomerMark
           },
           {
             width: 160,

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

@@ -157,7 +157,7 @@
             prop: 'customerMark',
             label: '客户代号',
             slot: 'customerMark',
-            show: this.isCustomerMark
+            // show: this.isCustomerMark
           },
           {
             width: 160,

+ 318 - 0
src/views/bpm/handleTask/components/purchaseOrder/invoice/addInvoiceDialog.vue

@@ -0,0 +1,318 @@
+<template>
+  <div>
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+      <headerTitle title="收货信息"></headerTitle>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item
+            label="选择订单"
+            prop="orderNo"
+            style="margin-bottom: 22px"
+          >
+            <el-input
+              clearable
+              v-model="form.orderNo"
+              @click.native="handleOrderBtn"
+              placeholder="请输入"
+            />
+          </el-form-item>
+          <el-form-item
+            label="供应商名称"
+            prop="supplierName"
+            style="margin-bottom: 22px"
+          >
+            <span>{{ form.supplierName }}</span>
+          </el-form-item>
+          <el-form-item
+            label="供应商联系人"
+            prop="linkName"
+            style="margin-bottom: 22px"
+          >
+            <el-input clearable v-model="form.linkName" placeholder="请输入" />
+          </el-form-item>
+
+          <el-form-item prop="receiveFiles" label="附件">
+            <fileUpload
+              v-model="form.receiveFiles"
+              module="main"
+              :showLib="false"
+              :limit="10"
+            />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item
+            label="收货单类型"
+            prop="receiveType"
+            style="margin-bottom: 22px"
+          >
+            <DictSelection
+              dictName="采购收货单类型"
+              clearable
+              v-model="form.receiveType"
+            >
+            </DictSelection>
+          </el-form-item>
+          <el-form-item
+            label="供应商车辆号"
+            prop="carNo"
+            style="margin-bottom: 22px"
+          >
+            <el-input clearable v-model="form.carNo" placeholder="请输入" />
+          </el-form-item>
+
+          <!-- <el-form-item
+              label="订单编码"
+              prop="orderNo"
+              style="margin-bottom: 22px"
+            >
+            <span>{{form.orderNo}}</span>
+              
+            </el-form-item> -->
+
+          <el-form-item
+            label="供应商电话"
+            prop="linkPhone"
+            style="margin-bottom: 22px"
+          >
+            <el-input clearable v-model="form.linkPhone" placeholder="请输入" />
+          </el-form-item>
+          <el-form-item
+            label="送货单号"
+            prop="sendNoteNo"
+            style="margin-bottom: 22px"
+          >
+            <el-input
+              clearable
+              v-model="form.sendNoteNo"
+              placeholder="请输入"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <headerTitle title="产品清单" style="margin-top: 30px"></headerTitle>
+    <inventoryTable
+      ref="inventoryTableref"
+      :orderId="form.orderId"
+    ></inventoryTable>
+
+    <orderListDialog
+      ref="orderListDialogRef"
+      @changeParent="changeOrder"
+    ></orderListDialog>
+  </div>
+</template>
+
+<script>
+  import fileUpload from '@/components/upload/fileUpload';
+  import dictMixins from '@/mixins/dictMixins';
+  import { getpurchaseorderDetail } from '@/api/bpm/components/purchasingManage/purchaseOrder';
+
+  import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
+  import inventoryTable from './inventoryTable.vue';
+  import orderListDialog from './orderListDialog.vue';
+  import { copyObj } from '@/utils/util';
+
+  export default {
+    mixins: [dictMixins],
+    components: {
+      fileUpload,
+      inventoryTable,
+      orderListDialog
+    },
+    props: {
+      businessId: {
+        default: ''
+      }
+    },
+    data() {
+      let formDef = {
+        id: '',
+        contractId: '',
+        receiveFiles: [],
+        contractName: '',
+        carNo: '',
+        carId: '',
+        linkName: '',
+        linkPhone: '',
+        orderNo: '',
+        orderId: '',
+        sendNoteNo: '',
+        receiveType: ''
+      };
+
+      return {
+        detailData: {},
+        payWayOptions: [],
+        delDetailIds: [],
+        linkNameOptions: [],
+        visible: false,
+        title: '',
+        row: {},
+        activeName: 'base',
+        formDef,
+        form: copyObj(formDef),
+        tableBankData: [],
+        tableLinkData: [],
+        // 组织机构树形结构数据
+        rules: {
+          orderNo: [
+            { required: true, message: '请选择采购订单', trigger: 'change' }
+          ],
+          receiveType: [
+            { required: true, message: '请选择采购单类型', trigger: 'change' }
+          ]
+        },
+
+        // 提交状态
+        loading: false,
+        // 是否是修改
+        isUpdate: false
+      };
+    },
+    computed: {
+      allcountAmount() {
+        return this.$store.state.order.allcountAmount;
+      }
+    },
+
+    created() {
+      this.getReceiveSaleOrderDetail(this.businessId);
+    },
+    methods: {
+      //选择订单回调
+      changeOrder(obj) {
+        this.form = Object.assign({}, this.form, {
+          orderId: obj.id,
+          orderNo: obj.orderNo
+        });
+        this.getPurchaseorder(obj.id);
+      },
+      //获取订单详情
+      async getPurchaseorder(id) {
+        this.loading = true;
+        const data = await getpurchaseorderDetail(id);
+        this.loading = false;
+        if (data) {
+          this.$nextTick(() => {
+            let {
+              partbId,
+              partbName,
+              partbTel,
+              orderNo,
+              id,
+              partbLinkName,
+              productList
+            } = data;
+            if (productList && productList.length > 0) {
+              productList.forEach((v) => {
+                v.orderTotalCount = v.orderTotalCount || v.totalCount;
+              });
+            }
+            this.form = Object.assign({}, this.form, {
+              supplierId: partbId,
+              supplierName: partbName,
+              linkName: partbLinkName,
+              linkPhone: partbTel,
+              orderNo,
+              orderId: id,
+              productList
+            });
+            this.$refs.inventoryTableref &&
+              this.$refs.inventoryTableref.putTableValue(productList);
+          });
+        }
+      },
+
+      //发货单详情
+      async getReceiveSaleOrderDetail(id) {
+        this.loading = true;
+        const data = await getReceiveSaleOrderrecordDetail(id);
+        this.loading = false;
+        if (data) {
+          this.$nextTick(() => {
+            this.form = data;
+            this.$refs.inventoryTableref &&
+              this.$refs.inventoryTableref.putTableValue(data.productList);
+          });
+        }
+      },
+
+      handHead() {
+        let item = {
+          id: this.form.partbLinkId
+        };
+        this.$refs.headRef.open(item);
+      },
+
+      //选择订单弹框
+      handleOrderBtn() {
+        let item = {
+          id: this.form.orderId
+        };
+        this.$refs.orderListDialogRef.open(item);
+      },
+
+      getValidate() {
+        return Promise.all([
+          new Promise((resolve, reject) => {
+            this.$refs.form.validate((valid) => {
+              if (!valid) {
+                reject(false);
+              } else {
+                resolve(true);
+              }
+            });
+          }),
+          new Promise((resolve, reject) => {
+            this.$refs.inventoryTableref.validateForm((valid) => {
+              if (!valid) {
+                reject(false);
+              } else {
+                resolve(true);
+              }
+            });
+          })
+        ]);
+      },
+      async getTableValue() {
+        try {
+          await this.getValidate();
+          this.form.receiveTypeName = this.getDictValue(
+            '采购收货单类型',
+            this.form.receiveType
+          );
+          // 表单验证通过,执行保存操作
+          this.loading = true;
+          let commitData = Object.assign({}, this.form, {
+            productList: this.$refs.inventoryTableref.getTableValue()
+          });
+          return commitData;
+        } catch (error) {
+          console.log(error);
+          // 表单验证未通过,不执行保存操作
+        }
+      }
+    }
+  };
+</script>
+<style scoped lang="scss">
+  .TotalAmount {
+    font-size: 16px;
+    padding-right: 30px;
+  }
+
+  .headbox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      margin-right: 20px;
+    }
+  }
+</style>

+ 330 - 0
src/views/bpm/handleTask/components/purchaseOrder/invoice/detailDialog.vue

@@ -0,0 +1,330 @@
+<template>
+  <div>
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+      <headerTitle title="发货信息"></headerTitle>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item
+            label="供应商名称:"
+            prop="supplierName"
+            style="margin-bottom: 16px"
+          >
+            {{ form.supplierName }}
+          </el-form-item>
+          <el-form-item
+            label="供应商联系人:"
+            prop="linkName"
+            style="margin-bottom: 16px"
+          >
+            {{ form.linkName }}
+          </el-form-item>
+          <el-form-item
+            label="供应商电话:"
+            prop="linkPhone"
+            style="margin-bottom: 16px"
+          >
+            {{ form.linkPhone }}
+          </el-form-item>
+
+          <!-- <el-form-item
+            label="客户地址:"
+            prop="partaAddress"
+            style="margin-bottom: 16px"
+          >
+            {{ form.receiveAddress }}
+          </el-form-item> -->
+          <el-form-item
+            label="审核状态:"
+            prop="reviewStatus"
+            style="margin-bottom: 16px"
+          >
+            {{ reviewStatusEnum[form.reviewStatus]?.label }}
+          </el-form-item>
+          <el-form-item
+            label="附件:"
+            prop="receiveFiles"
+            style="margin-bottom: 16px"
+          >
+            <div v-if="detailData.sendFiles && detailData.sendFiles?.length">
+              <el-link
+                v-for="link in detailData.sendFiles"
+                :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-form-item
+              label="采购单类型:"
+              prop="receiveTypeName"
+              style="margin-bottom: 16px"
+            >
+              {{ form.receiveTypeName }}
+            </el-form-item>
+          <el-form-item
+            label="车牌号:"
+            prop="carNo"
+            style="margin-bottom: 16px"
+          >
+            {{ form.carNo }}
+          </el-form-item>
+ 
+          <el-form-item
+            label="收货单编码:"
+            prop="receiveNo"
+            style="margin-bottom: 16px"
+          >
+            {{ form.receiveNo }}
+          </el-form-item>
+          <el-form-item
+            label="制单人:"
+            prop="makerName"
+            style="margin-bottom: 16px"
+          >
+            {{ form.makerName }}
+          </el-form-item>
+          <el-form-item prop="orderNo" label="订单编码:">
+            {{ form.orderNo }}
+          </el-form-item>
+          <!-- <el-form-item prop="replied" label="是否回执:">
+            {{ form.replied == 1 ? '是' : '否' }}
+          </el-form-item> -->
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <headerTitle title="产品清单"></headerTitle>
+    <ele-pro-table
+      ref="table"
+      :needPage="false"
+      :columns="columns"
+      :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>
+</template>
+
+<script>
+  import { getFile } from '@/api/system/file';
+  import dictMixins from '@/mixins/dictMixins';
+  import { reviewStatusEnum } from '@/enum/dict';
+  import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
+  export default {
+    props:{
+      businessId: {
+        default: ''
+      }
+    },
+    mixins: [dictMixins],
+    data() {
+      return {
+        reviewStatusEnum,
+        visible: false,
+        detailId: '',
+        title: '详情',
+        row: {},
+        activeName: 'base',
+        form: {
+          orderFiles: [{ name: '222' }]
+        },
+        rules: {},
+        detailData: {},
+        columns: [
+          {
+            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: 80,
+            prop: 'totalCount',
+            label: '进货数量',
+            slot: 'totalCount'
+          },
+          {
+            width: 120,
+            prop: 'orderTotalCount',
+            label: '总数量',
+            slot: 'orderTotalCount'
+          },
+          {
+            width: 80,
+            prop: 'measuringUnit',
+            label: '计量单位',
+            slot: 'measuringUnit'
+          },
+          {
+            width: 160,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice'
+          },
+          {
+            width: 120,
+            prop: 'totalPrice',
+            label: '合计',
+            slot: 'totalPrice'
+          },
+          {
+            width: 80,
+            prop: 'deliveryDays',
+            label: '交期(天)',
+            slot: 'deliveryDays'
+          },
+          {
+            width: 160,
+            prop: 'deliveryDeadline',
+            label: '交期截止日期',
+            slot: 'deliveryDeadline'
+          },
+          {
+            width: 200,
+            prop: 'guaranteePeriod',
+            label: '质保期',
+            slot: 'guaranteePeriod'
+          },
+          {
+            width: 160,
+            prop: 'guaranteePeriodDeadline',
+            label: '质保截止日期',
+            slot: 'guaranteePeriodDeadline'
+          },
+          {
+            width: 130,
+            prop: 'technicalAnswerName',
+            label: '技术答疑人',
+            slot: 'technicalAnswerName'
+          },
+          {
+            width: 220,
+            prop: 'technicalParams',
+            label: '技术参数',
+            slot: 'technicalParams'
+          },
+          {
+            width: 240,
+            prop: 'technicalDrawings',
+            label: '技术图纸',
+            slot: 'technicalDrawings'
+          },
+          {
+            width: 220,
+            prop: 'remark',
+            label: '备注',
+            slot: 'remark'
+          }
+        ]
+      };
+    },
+    created() {
+      this.getDetailData(this.businessId);
+    },
+    methods: {
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+      getTableValue() {
+        return this.form
+      },
+      async getDetailData(id) {
+        this.loading = true;
+        const data = await getReceiveSaleOrderrecordDetail(id);
+        this.loading = false;
+        if (data) {
+          this.form = data;
+          this.detailData = data;
+        }
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss">
+  .ele-dialog-form {
+    .el-form-item {
+      margin-bottom: 10px;
+    }
+  }
+
+  .headbox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      margin-right: 20px;
+    }
+  }
+</style>

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

@@ -0,0 +1,474 @@
+<template>
+  <el-form ref="form" :model="form" :rules="rules">
+    <ele-pro-table
+      ref="table"
+      :needPage="false"
+      :columns="columns"
+      :toolkit="[]"
+      :datasource="form.datasource"
+      cache-key="systemRoleTable17"
+      class="time-form"
+    >
+      <!-- 表头工具栏 -->
+      <template v-slot:toolbar>
+        <div class="headbox">
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-plus"
+            class="ele-btn-icon"
+            @click="handlAdd"
+          >
+            新增
+          </el-button>
+        </div>
+      </template>
+      <template v-slot:technicalDrawings="{ row, $index }">
+        <el-form-item
+          style="margin-bottom: 20px"
+          :prop="'datasource.' + $index + '.technicalDrawings'"
+        >
+          <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>
+        </el-form-item>
+      </template>
+      <template v-slot:remark="{ row, $index }">
+        <el-form-item
+          style="margin-bottom: 20px"
+          :prop="'datasource.' + $index + '.remark'"
+        >
+          <el-input
+            clearable
+            v-model="row.remark"
+            type="textarea"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </template>
+      <template v-slot:totalCount="scope">
+        <el-form-item
+          style="margin-bottom: 20px"
+          :prop="'datasource.' + scope.$index + '.totalCount'"
+          :rules="[
+            { required: true, message: '请输入数字', trigger: 'blur' },
+            { validator: validateTotalCount(scope.row), trigger: 'blur' }
+          ]"
+        >
+          <el-input
+            v-model="scope.row.totalCount"
+            @input="(val) => changeNum(val, scope.$index)"
+          ></el-input>
+        </el-form-item>
+      </template>
+      <template v-slot:warehouseId="scope">
+        <el-form-item
+          style="margin-bottom: 20px"
+          :prop="'datasource.' + scope.$index + '.warehouseId'"
+          :rules="[{ required: true, message: '请选择仓库', trigger: 'blur' }]"
+        >
+          <el-select
+            v-model="scope.row.warehouseId"
+            placeholder="请选择"
+            @change="warehouseChange(scope.$index, scope.row)"
+          >
+            <el-option
+              v-for="item in warehouseList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </template>
+      <template v-slot:warehouseNum="scope">
+        <el-form-item style="margin-bottom: 20px">
+          {{ scope.row.warehouseNum }}
+        </el-form-item>
+      </template>
+      <template v-slot:headerWarehouseId="{ column }">
+        <span class="is-required">{{ column.label }}</span>
+      </template>
+      <template v-slot:headerTotalCount="{ column }">
+        <span class="is-required">{{ column.label }}</span>
+      </template>
+
+      <!-- 操作列 -->
+      <template v-slot:action="scope">
+        <el-popconfirm
+          class="ele-action"
+          title="确定要删除吗?"
+          @confirm="remove(scope.$index)"
+        >
+          <template v-slot:reference>
+            <el-link type="danger" :underline="false" icon="el-icon-delete">
+              删除
+            </el-link>
+          </template>
+        </el-popconfirm>
+      </template>
+    </ele-pro-table>
+    <product-list
+      ref="productListRef"
+      :orderId="orderId"
+      type="purchase"
+      @changeParent="changeParent"
+    ></product-list>
+  </el-form>
+</template>
+<script>
+  import { numberReg } from 'ele-admin';
+  import productList from '@/views/bpm/handleTask/components/saleOrder/invoice/product-list.vue';
+  import dictMixins from '@/mixins/dictMixins';
+  import {
+    getWarehouseList,
+  } from '@/api/bpm/components/saleManage/saleorder';
+
+  import { copyObj } from '@/utils/util';
+  export default {
+    mixins: [dictMixins],
+    props: {
+      orderId: String
+    },
+    components: {
+      productList
+    },
+    data() {
+      const defaultForm = {
+        key: null,
+        endTime: '',
+        isFirst: 0,
+        name: '',
+        startTime: '',
+        workHour: '',
+        technicalDrawings: []
+        // warehouseCode:"",
+        // warehouseId:'',
+        // warehouseName:'',
+      };
+      return {
+        discountTotalPrice: 0.0,
+        allPrice: 0.0,
+        numberReg,
+        defaultForm,
+        warehouseList: [],
+        form: {
+          datasource: []
+        },
+        rules: {},
+        columns: [
+          {
+            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: 'warehouseId',
+            label: '仓库名称',
+            slot: 'warehouseId',
+            headerSlot: 'headerWarehouseId'
+          },
+          {
+            width: 120,
+            prop: 'totalCount',
+            label: '进货数量',
+            slot: 'totalCount',
+            headerSlot: 'headerTotalCount'
+          },
+          {
+            width: 120,
+            prop: 'orderTotalCount',
+            label: '总数量',
+            slot: 'orderTotalCount'
+          },
+          {
+            width: 80,
+            prop: 'measuringUnit',
+            label: '计量单位',
+            slot: 'measuringUnit'
+          },
+          {
+            width: 160,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice'
+          },
+          {
+            width: 120,
+            prop: 'totalPrice',
+            label: '合计',
+            slot: 'totalPrice'
+          },
+          {
+            width: 80,
+            prop: 'deliveryDays',
+            label: '交期(天)',
+            slot: 'deliveryDays'
+          },
+          {
+            width: 160,
+            prop: 'deliveryDeadline',
+            label: '交期截止日期',
+            slot: 'deliveryDeadline'
+          },
+          {
+            width: 200,
+            prop: 'guaranteePeriod',
+            label: '质保期',
+            slot: 'guaranteePeriod'
+          },
+          {
+            width: 160,
+            prop: 'guaranteePeriodDeadline',
+            label: '质保截止日期',
+            slot: 'guaranteePeriodDeadline'
+          },
+          {
+            width: 130,
+            prop: 'technicalAnswerName',
+            label: '技术答疑人',
+            slot: 'technicalAnswerName'
+          },
+          {
+            width: 220,
+            prop: 'technicalParams',
+            label: '技术参数',
+            slot: 'technicalParams'
+          },
+          {
+            width: 240,
+            prop: 'technicalDrawings',
+            label: '技术图纸',
+            slot: 'technicalDrawings'
+          },
+          {
+            width: 220,
+            prop: 'remark',
+            label: '备注',
+            slot: 'remark'
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 120,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            fixed: 'right',
+            showOverflowTooltip: true
+          }
+        ]
+      };
+    },
+    created() {
+      getWarehouseList().then((res) => {
+        this.warehouseList = res;
+      });
+    },
+    computed: {},
+    methods: {
+      async warehouseChange(index, row) {
+        let warehouseIds =
+          this.form.datasource
+            .filter(
+              (item, i) => row.productCode == item.productCode && index != i
+            )
+            .map((item) => item.warehouseId) || [];
+        const data = this.warehouseList.find(
+          (item) => item.id == row.warehouseId
+        );
+        if (warehouseIds.length > 0 && warehouseIds.includes(row.warehouseId)) {
+          row.warehouseId = '';
+          return this.$message.error('同一个产品不能选择相同的仓库');
+        }
+        this.$set(this.form.datasource[index], 'warehouseName', data.name);
+        this.$set(this.form.datasource[index], 'warehouseCode', data.code);
+      },
+
+      //修改数量更新合计
+      changeNum(val, index) {
+        this.$set(
+          this.form.datasource[index],
+          'totalPrice',
+          (Number(this.form.datasource[index].singlePrice) * val).toFixed(2)
+        );
+      },
+      //选择产品回调
+      changeParent(obj, idx) {
+        obj.orderTotalCount = obj.orderTotalCount || obj.totalCount;
+        obj.id = '';
+        this.$set(
+          this.form.datasource,
+          this.form.datasource.length,
+          copyObj(obj)
+        );
+      },
+      validateTotalCount(row) {
+        return (rule, value, callback) => {
+          if (isNaN(value) || Number(value) <= 0) {
+            this.$message.error('请输入大于0的数');
+            callback(new Error('请输入大于0的数字'));
+          } else if (this.getTotalCount(row) > row.orderTotalCount) {
+            this.$message.error('进货数量不能大于总数量');
+            callback(new Error('进货数量不能大于总数量'));
+          } else {
+            callback();
+          }
+        };
+      },
+      getTotalCount(row) {
+        let num = 0;
+        this.form.datasource
+          .filter((item) => item.productCode == row.productCode)
+          .forEach((item) => {
+            num += Number(item.totalCount);
+          });
+        console.log(num);
+        return num;
+      },
+      // 返回列表数据
+      getTableValue() {
+        let comitDatasource = this.form.datasource;
+        if (comitDatasource.length === 0) return [];
+        comitDatasource.forEach(async (v) => {
+          v.totalCount = Number(v.totalCount);
+          v.technicalDrawings = Array.isArray(v.technicalDrawings)
+            ? v.technicalDrawings
+            : [];
+        });
+        return comitDatasource;
+      },
+      getPrice() {
+        return [this.allPrice];
+      },
+
+      //修改回显
+      putTableValue(data) {
+        if (data) {
+          this.form.datasource = data;
+          console.log(data);
+        }
+      },
+
+      remove(i) {
+        this.form.datasource.splice(i, 1);
+        this.setSort();
+      },
+      // 清空表格
+      restTable() {
+        this.form.datasource = [];
+      },
+      // 重新排序
+      setSort() {
+        this.form.datasource.forEach((n, index) => {
+          n.key = index + 1;
+        });
+      },
+      // 添加
+      handlAdd() {
+        if (!this.orderId) return this.$message.error('请先选择订单');
+        this.$refs.productListRef.open(this.form.datasource);
+      },
+
+      validateForm(callback) {
+        //开始表单校验
+        this.$refs.form.validate((valid) => {
+          callback(valid);
+        });
+      }
+    }
+  };
+</script>
+<style lang="scss" scoped>
+  .headbox {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      padding-right: 30px;
+    }
+  }
+  .time-form .el-form-item {
+    margin-bottom: 0 !important;
+  }
+
+  ::v-deep .period {
+    display: flex;
+    .borderleftnone {
+      .el-input--medium .el-input__inner {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0;
+      }
+    }
+    .borderrightnone {
+      .el-input--medium .el-input__inner {
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0;
+      }
+    }
+  }
+
+  ::v-deep .time-form tbody > tr:hover > td {
+    background-color: transparent !important;
+  }
+  ::v-deep .time-form .el-table tr {
+    background-color: #ffffff;
+  }
+
+  .pricebox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    font-weight: bold;
+  }
+</style>

+ 245 - 0
src/views/bpm/handleTask/components/purchaseOrder/invoice/orderListDialog.vue

@@ -0,0 +1,245 @@
+<template>
+  <el-dialog
+    title="选择订单"
+    custom-class="ele-dialog-form long-dialog-form"
+    :visible.sync="visible"
+    :before-close="handleClose"
+    :close-on-click-modal="false"
+    top="5vh"
+    :close-on-press-escape="false"
+    append-to-body
+    width="80%"
+  >
+    <el-card shadow="never">
+      <searchTable @search="reload"></searchTable>
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        row-key="id"
+        height="calc(100vh - 500px)"
+        class="dict-table"
+        @cell-click="cellClick"
+      >
+        <!-- 表头工具栏 -->
+        <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" slot="footer">
+      <el-button type="primary" size="small" @click="selected">选择</el-button>
+      <el-button size="small" @click="handleClose">关闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import searchTable from '@/views/bpm/handleTask/components/purchaseOrder/searchTable.vue';
+  import { getTableList } from '@/api/bpm/components/purchasingManage/purchaseOrder';
+  export default {
+    components: {
+      searchTable
+    },
+
+    data() {
+      return {
+        visible: false,
+        currentIndex: null,
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            width: 60,
+            type: 'action',
+            slot: 'action',
+            label: '选择',
+
+            columnKey: 'action',
+            align: 'center'
+          },
+          {
+            prop: 'orderNo',
+            label: '订单编码',
+            align: 'center',
+            slot: 'orderNo',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          {
+            prop: 'contractName',
+            label: '合同名称',
+            align: 'center',
+            slot: 'contractName',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          // {
+          //   prop: 'deliveryDate',
+          //   label: '交货日期',
+          //   align: 'center',
+          //   showOverflowTooltip: true,
+          //   minWidth: 200
+          // },
+          {
+            prop: 'purchaseTypeName',
+            label: '采购类型',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+          {
+            prop: 'partaName',
+            label: '采购方名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 180
+          },
+          {
+            prop: 'partaLinkName',
+            label: '采购方联系人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 130
+          },
+
+          {
+            prop: 'partaTel',
+            label: '采购方联系电话',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 130
+          },
+          {
+            prop: 'partbName',
+            label: '供应商名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 130
+          },
+          {
+            prop: 'partbLinkName',
+            label: '供应商联系人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 130
+          },
+          {
+            prop: 'partbTel',
+            label: '供应商联系电话',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 130
+          },
+          {
+            prop: 'payAmount',
+            label: '应付金额(元)',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 170
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 170
+          }
+        ],
+
+        radio: null
+      };
+    },
+
+    methods: {
+      open(item, currentIndex) {
+        this.currentIndex = currentIndex;
+        if (item && item.id) {
+          this.radio = item.id;
+        }
+
+        this.visible = true;
+      },
+
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return getTableList({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
+
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ pageNum: 1, where: where });
+      },
+
+      handleNodeClick(data, node) {
+        this.reload({ categoryId: data.id });
+      },
+
+      // 单击获取id
+      cellClick(row) {
+        this.current = row;
+        console.log(row);
+        this.radio = row.id;
+      },
+      handleClose() {
+        this.visible = false;
+        this.current = null;
+        this.radio = '';
+      },
+
+      selected() {
+        if (!this.current) {
+          return this.$message.warning('请至少选择一条数据');
+        }
+        this.$emit('changeParent', this.current, this.currentIndex);
+        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>

+ 127 - 0
src/views/bpm/handleTask/components/purchaseOrder/invoice/searchTable.vue

@@ -0,0 +1,127 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    label-width="100px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+  >
+    <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="收货单编码:" prop="receiveNo">
+          <el-input
+            clearable
+            placeholder="请输入"
+            v-model.trim="params.receiveNo"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="订单编码:" prop="orderNo">
+          <el-input
+            clearable
+            placeholder="请输入"
+            v-model.trim="params.orderNo"
+          ></el-input>
+        </el-form-item>
+      </el-col>
+       <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+        <el-form-item label="是否回执:" prop="replied">
+          <el-select v-model="params.replied" placeholder="请选择" class="w100" clearable>
+            <el-option
+              v-for="item in repliedOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="审核状态:" prop="reviewStatus">
+          <el-select v-model="params.reviewStatus" placeholder="请选择" class="w100" clearable>
+            <el-option
+              v-for="item in reviewStatusEnum"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>  
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+       
+        <el-form-item label="供应商名称:" prop="supplierName">
+          <el-input
+          placeholder="请输入"
+          style="max-width:320px"
+           v-model.trim="params.supplierName" controls-position="right" >
+          </el-input>
+         
+        </el-form-item>
+        
+      </el-col> 
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:4 }">
+      
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+<script>
+import {reviewStatusEnum} from '@/enum/dict';
+const repliedOptions=[
+  {value:0,label:'否'},
+  {value:1,label:'是'},
+]
+  export default {
+    data () {
+      // 默认表单数据
+      const defaultParams = {
+        contractName: '',
+        contractId:'',
+        docNo:'',
+        orderId:'',
+        replied:null,
+        reviewStatus:null
+      };
+      return {
+        reviewStatusEnum,
+        defaultParams,
+        repliedOptions,
+        // 表单数据
+        params: { ...defaultParams }
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive () {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      //选择时间
+      changeDate(e){
+       this.createTime=e
+      },
+      /* 搜索 */
+      search () {
+        this.$emit('search', {
+          ...this.params
+        });
+      },
+      /*  重置 */
+      reset () {
+        this.createTime=[]
+        this.params = Object.assign({},{ ...this.defaultParams });
+        this.search();
+      }
+    }
+  };
+</script>

+ 214 - 0
src/views/bpm/handleTask/components/purchaseOrder/invoice/submit.vue

@@ -0,0 +1,214 @@
+<template>
+  <el-col :span="16" :offset="6">
+    <el-form label-width="100px" ref="formRef" :model="form">
+      <el-form-item
+        label="审批建议"
+        prop="reason"
+        style="margin-bottom: 20px"
+        :rules="{
+          required: true,
+          message: '请选择',
+          trigger: 'change'
+        }"
+      >
+        <el-input
+          type="textarea"
+          v-model="form.reason"
+          placeholder="请输入审批建议"
+        />
+      </el-form-item>
+    </el-form>
+    <div style="margin-left: 10%; margin-bottom: 20px; font-size: 14px">
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        @click="handleAudit(1)"
+        v-if="!['storeManagerApprove'].includes(taskDefinitionKey)"
+        >通过
+      </el-button>
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        @click="open()"
+        v-if="['storeManagerApprove'].includes(taskDefinitionKey)"
+        >申请入库
+      </el-button>
+      <el-button
+        icon="el-icon-circle-close"
+        type="danger"
+        size="mini"
+        @click="handleAudit(0)"
+        v-if="!['starter'].includes(taskDefinitionKey)"
+        >驳回
+      </el-button>
+
+      <!-- <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> -->
+      <ele-modal
+        custom-class="ele-dialog-form long-dialog-form"
+        :centered="true"
+        v-if="visible"
+        :visible.sync="visible"
+        :title="title"
+        :close-on-click-modal="false"
+        width="80%"
+        :modal="false"
+        @close="cancel"
+      >
+        <add ref="add" @cancel="cancel" @handleAudit=handleAudit></add>
+      </ele-modal>
+    </div>
+  </el-col>
+</template>
+
+<script>
+  import { UpdateReceiveInformation } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
+  import { approveTaskWithVariables } from '@/api/bpm/task';
+  // import { listAllUserBind } from '@/api/system/organization';
+  import { getWarehouseListByIds } from '@/api/bpm/components/saleManage/saleorder';
+  import add from '@/views/bpm/stockManagement/add.vue';
+  // 流程实例的详情页,可用于审批
+  export default {
+    name: '',
+    components: {
+      //   Parser
+      add
+    },
+    props: {
+      businessId: {
+        default: ''
+      },
+      taskId: {
+        default: ''
+      },
+      id: {
+        default: ''
+      },
+      id: {
+        default: ''
+      },
+      taskDefinitionKey: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        form: {
+          technicianId: '',
+          reason: ''
+        },
+        visible: false,
+        userOptions: []
+      };
+    },
+    created() {},
+    methods: {
+      cancel() {
+        this.visible = false;
+      },
+      async open() {
+        if (!this.form.reason) {
+          this.$message.error('审批意见不能为空');
+          return;
+        }
+        this.visible = true;
+
+        let data = await this.getTableValue();
+
+        // console.log( this.$refs.add.pickerSuccess())
+
+        this.$refs.add.pickerSuccess(data);
+      },
+      /** 处理转办审批人 */
+      handleUpdateAssignee() {
+        this.$emit('handleUpdateAssignee');
+      },
+      /** 退回 */
+      handleBackList() {
+        this.$emit('handleBackList');
+      },
+
+      async handleAudit(status) {
+        let storemanIds = '';
+
+        //发起人补充
+        if (this.taskDefinitionKey === 'starter') {
+          let arr = await this.getTableValue();
+          if (!arr) {
+            return;
+          }
+          let data = await UpdateReceiveInformation(arr);
+          if (data.code != '0') {
+            return;
+          }
+        }
+        if (this.taskDefinitionKey === 'deptLeaderApprove') {
+          let arr = await this.getTableValue();
+          let ids = arr.productList.map((item) => item.warehouseId);
+          let data = await getWarehouseListByIds(ids || []);
+          storemanIds = data.map((item) => item.ownerId);
+        }
+        this._approveTaskWithVariables(
+          status,
+          storemanIds.length > 0
+            ? Array.from(new Set(storemanIds)).toString()
+            : ''
+        );
+      },
+      async _approveTaskWithVariables(status, storemanIds) {
+        let variables = {
+          pass: !!status
+        };
+        if (storemanIds) {
+          variables['storemanIds'] = 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);
+          });
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 148 - 0
src/views/bpm/handleTask/components/purchaseOrder/searchTable.vue

@@ -0,0 +1,148 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    label-width="100px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+  >
+    <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="订单编码:" prop="orderNo">
+          <el-input
+            clearable
+            placeholder="请输入"
+            v-model.trim="params.orderNo"
+          ></el-input>
+     
+        </el-form-item>
+        
+        <el-form-item label="创建时间:" prop="createTimeStart">
+          <el-date-picker
+            v-model="createTime"
+            @change="changeDate"
+            type="datetimerange"
+            style="width:320px"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+            :default-time="['00:00:00', '23:59:59']">
+          </el-date-picker>
+        </el-form-item>
+      </el-col>
+      <!-- <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+        <el-form-item label="发货状态:" prop="deliveryStatus">
+          <el-select v-model="params.deliveryStatus" placeholder="请选择" class="w100" clearable>
+            <el-option
+              v-for="item in deliveryStatusOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="订单状态:" prop="orderStatus">
+          <el-select v-model="params.orderStatus" placeholder="请选择" class="w100" clearable>
+            <el-option
+              v-for="item in orderStatusOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-col>  -->
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+       
+        <el-form-item label="客户名称:" prop="partaName">
+          <el-input
+          placeholder="请输入"
+          style="max-width:320px"
+           v-model.trim="params.partaName" controls-position="right" >
+          </el-input>
+         
+        </el-form-item>
+        
+      </el-col> 
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
+        <el-form-item label="合同名称:" prop="contractName">
+          <el-input
+            clearable
+            placeholder="请输入"
+            v-model.trim="params.contractName"
+          ></el-input>
+        </el-form-item>
+      </el-col> 
+      <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:4 }">
+      
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+          <el-button @click="reset">重置</el-button>
+        </div>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+<script>
+import {deliveryStatusOptions,orderStatusOptions,payStatusOptions} from '@/enum/dict';
+  export default {
+    data () {
+      // 默认表单数据
+      const defaultParams = {
+        contractName: '',
+        contractId:'',
+        createTimeStart:'',
+        createTimeEnd:'',
+        deliveryStatus:'',
+        orderNo:'',
+        orderStatus: '',
+        partaId:'',
+        partaName:'',
+        projectName: '',
+        projectId:''
+      };
+      return {
+        deliveryStatusOptions,
+        orderStatusOptions,
+        payStatusOptions,
+        createTime:[],
+        defaultParams,
+        // 表单数据
+        params: { ...defaultParams }
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive () {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      //选择时间
+      changeDate(e){
+       this.createTime=e
+      },
+      /* 搜索 */
+      search () {
+        const [createTimeStart,createTimeEnd]=this.createTime
+        this.params=Object.assign({},this.params,{createTimeStart,createTimeEnd})
+        this.$emit('search', {
+          ...this.params
+        });
+      },
+      /*  重置 */
+      reset () {
+        this.createTime=[]
+        this.params = Object.assign({},{ ...this.defaultParams });
+        this.search();
+      }
+    }
+  };
+</script>

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

@@ -352,8 +352,8 @@
       downloadFile(file) {
         getFile({ objectName: file.storePath }, file.name);
       },
-    getTableValue() {
-        return this.form
+      getTableValue() {
+        return this.form;
       },
       async getDetailData(id) {
         this.loading = true;

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

@@ -36,7 +36,7 @@
 </template>
 
 <script>
-  // import { getpurchaseorderDetail } from '@/api/purchasingManage/purchaseOrder';
+  import { getpurchaseorderDetail } from '@/api/bpm/components/purchasingManage/purchaseOrder';
   import { getSendSaleOrderrecordDetail,getSaleOrderDetail } from '@/api/bpm/components/saleManage/saleorder';
   // import { getReceiveSaleOrderrecordDetail } from '@/api/purchasingManage/purchaseorderreceive';
 

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

@@ -159,7 +159,6 @@
         if (storemanIds) {
           variables['storemanIds'] = storemanIds;
         }
-
         approveTaskWithVariables({
           id: this.taskId,
           reason: this.form.reason,

+ 1 - 1
src/views/bpm/todo/index.vue

@@ -30,7 +30,7 @@
                 </el-select>
               </el-form-item>
             </el-col> -->
-            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+            <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }" style="width: 300px;">
               <el-form-item label="创建时间:" prop="createTime">
                 <el-date-picker
                   v-model="params.createTime"