Browse Source

Merge branch 'purchaseDev' into 'dev'

Purchase dev

See merge request new-business/drp-web!55
黄梓星 2 years ago
parent
commit
3d9b4efcb7

+ 15 - 34
src/components/popover-select/index.vue

@@ -26,6 +26,10 @@ export default {
     showKey: {
       type: String,
     },
+    showKey: {
+      type: String,
+      default: "name",
+    },
     // 默认查询参数
     queryParams: {
       type: Object,
@@ -115,6 +119,7 @@ export default {
     // 更新操作
     handleUpdate(prop) {
       const { source, multiple, valueKey, dataMapping } = this.$props;
+      console.log(this.$props, 'this.$props');
       // 多选
       if (multiple) {
         const updateData = prop.map((item) => item[valueKey]);
@@ -143,46 +148,29 @@ export default {
       this.width = clientWidth;
     });
   },
-  mounted() {},
-  destroyed() {},
+  mounted() { },
+  destroyed() { },
 };
 </script>
 <template>
   <div ref="PopoverSelect" style="position: relative">
-    <el-input
-      v-model="showValue"
-      :size="size"
-      :disabled="disabled"
-      :clearable="clearable"
-      :placeholder="placeholder"
-      readonly
-      style="width: 100%; cursor: pointer"
-      @click.native.stop="handleAsyncOpenDialog"
-    >
+    <el-input v-model="showValue" :size="size" :disabled="disabled" :clearable="clearable" :placeholder="placeholder"
+      readonly style="width: 100%; cursor: pointer" @click.native.stop="handleAsyncOpenDialog">
       <template #suffix>
         <el-icon class="el-icon-more"></el-icon>
       </template>
     </el-input>
-    <div
-      style="
+    <div style="
         position: absolute;
         left: 10px;
         top: 50%;
         transform: translateY(-50%);
         padding-right: 30px;
         overflow: hidden;
-      "
-    >
+      ">
       <div v-if="multiple && data.length > 1">
-        <el-popover
-          :offset="-10"
-          :width="width"
-          :visible-arrow="false"
-          title=""
-          content=""
-          trigger="click"
-          placement="bottom-start"
-        >
+        <el-popover :offset="-10" :width="width" :visible-arrow="false" title="" content="" trigger="click"
+          placement="bottom-start">
           <el-tag slot="reference" :size="size" style="margin-right: 10px">
             + {{ data.length }}
           </el-tag>
@@ -204,15 +192,8 @@ export default {
         </el-popover>
       </div>
     </div>
-    <table-dialog
-      v-model="data"
-      ref="TableDialog"
-      :type="type"
-      :title="title"
-      :multiple="multiple"
-      :queryParams="queryParams"
-      @confirm="handleAdd"
-    ></table-dialog>
+    <table-dialog v-model="data" ref="TableDialog" :type="type" :title="title" :multiple="multiple"
+      :queryParams="queryParams" @confirm="handleAdd"></table-dialog>
   </div>
 </template>
 <style scoped></style>

+ 1 - 14
src/views/purchase/purchase-order/add/column.js

@@ -4,19 +4,13 @@ export const Columns = [
     title: "采购组织",
     inputType: "PopoverSelect",
     valueKey: "id",
+    showKey:'name',
     referName: "ORG_PARAM",
     dataMapping: {
       // puOrg: "id",
       puOrgName: "name",
     },
     queryParams: () => ({}),
-    // config: {
-    //   componentName: "ORG_PARAM",
-    //   dataMapping: {
-    //     puOrg: "code",
-    //     puOrgName: "name",
-    //   },
-    // },
     require: true,
   },
   {
@@ -47,13 +41,6 @@ export const Columns = [
       supplierName: "name",
     },
     queryParams: () => ({}),
-    // config: {
-    //   componentName: "SUPPLIER_PARAM",
-    //   // dataMapping: {
-    //   //   supplier: "code",
-    //   //   supplierName: "name",
-    //   // },
-    // },
     require: true,
   },
   {

+ 5 - 4
src/views/purchase/purchase-order/add/index.vue

@@ -259,9 +259,9 @@ export default {
                 :clearable="column.clearable" :disabled="column.disabled" style="width: 100%">
               </el-input>
               <dr-popover-select v-if="column.inputType === 'PopoverSelect'" v-model="params[column.key]"
-                :source.sync="params" :title="column.title" :type="column.referName" :multiple="column.multiple"
-                :placeholder="column.placeholder" :data-mapping="column.dataMapping"
-                :query-params="column.queryParams(params)">
+                :value-key="column.valueKey" :show-key="column.showKey" :source.sync="params" :title="column.title"
+                :type="column.referName" :multiple="column.multiple" :placeholder="column.placeholder"
+                :data-mapping="column.dataMapping" :query-params="column.queryParams(params)">
               </dr-popover-select>
 
               <el-input v-if="column.type === 'Textarea'" v-model="params[column.key]" type="textarea"
@@ -330,7 +330,8 @@ export default {
 
                   <!--  -->
                   <dr-popover-select v-if="cColumn.inputType === 'PopoverSelect'" v-model="scope.row[cColumn.key]"
-                    :source.sync="scope.row" :title="cColumn.title" :type="cColumn.referName" :multiple="cColumn.multiple"
+                    :source.sync="scope.row" :title="cColumn.title" :value-key="cColumn.valueKey"
+                    :show-key="cColumn.showKey" :type="cColumn.referName" :multiple="cColumn.multiple"
                     :placeholder="cColumn.placeholder" :data-mapping="cColumn.dataMapping"
                     :query-params="cColumn.queryParams(scope.row)" @change="handleReferChange">
                   </dr-popover-select>

+ 7 - 5
src/views/purchase/purchase-order/edit/index.vue

@@ -166,6 +166,7 @@ export default {
     },
     beforeOpen() {
     },
+    handleReferChange(val, source) { },
     // 判断修订还是编辑
     handleIsRevise(status) {
       return status == '2';
@@ -207,9 +208,9 @@ export default {
                 :clearable="column.clearable" :disabled="column.disabled" style="width: 100%">
               </el-input>
               <dr-popover-select v-if="column.inputType === 'PopoverSelect'" v-model="params[column.key]"
-                :source.sync="params" :title="column.title" :type="column.referName" :multiple="column.multiple"
-                :placeholder="column.placeholder" :data-mapping="column.dataMapping"
-                :query-params="column.queryParams(params)">
+                :value-key="column.valueKey" :show-key="column.showKey" :source.sync="params" :title="column.title"
+                :type="column.referName" :multiple="column.multiple" :placeholder="column.placeholder"
+                :data-mapping="column.dataMapping" :query-params="column.queryParams(params)">
               </dr-popover-select>
               <el-input v-if="column.type === 'Textarea'" v-model="params[column.key]" type="textarea"
                 :placeholder="column.placeholder" :clearable="column.clearable" :disabled="column.disabled"
@@ -279,9 +280,10 @@ export default {
                     :size="size" style="width: 100%">
                   </el-input>
                   <dr-popover-select v-if="cColumn.inputType === 'PopoverSelect'" v-model="scope.row[cColumn.key]"
-                    :source.sync="scope.row" :title="cColumn.title" :type="cColumn.referName" :multiple="cColumn.multiple"
+                    :source.sync="scope.row" :title="cColumn.title" :value-key="cColumn.valueKey"
+                    :show-key="cColumn.showKey" :type="cColumn.referName" :multiple="cColumn.multiple"
                     :placeholder="cColumn.placeholder" :data-mapping="cColumn.dataMapping"
-                    :query-params="cColumn.queryParams(scope.row)">
+                    :query-params="cColumn.queryParams(scope.row)" @change="handleReferChange">
                   </dr-popover-select>
 
                   <el-select v-if="cColumn.inputType === 'Select'" v-model="scope.row[cColumn.key]"

+ 1 - 1
src/views/purchase/task/documents-return/index.vue

@@ -18,7 +18,7 @@ export default {
       this.visible = prop;
     },
     beforeOpenDoSome(prop) {
-      const documentIds = prop.map((item) => item.demandItemId);
+      const documentIds = prop.map((item) => item.id);
       this.params.documentIds = documentIds;
     },
     async handleComfire(prop) {

+ 31 - 124
src/views/purchase/task/index.vue

@@ -108,7 +108,7 @@ export default {
         this.loading = false;
       }
     },
-    // 退回请购
+    // 退回需求
     async handleDocumentsReturn(prop) {
       const { setVisible, beforeOpenDoSome } = this.$refs.DocReturnDialog;
       await setVisible(true);
@@ -148,79 +148,30 @@ export default {
 </script>
 
 <template>
-  <el-card
-    v-loading="loading"
-    style="width: calc(100% - 24px); height: 100%; margin: 10px"
-    :body-style="{ padding: 0 }"
-  >
+  <el-card v-loading="loading" style="width: calc(100% - 24px); height: 100%; margin: 10px" :body-style="{ padding: 0 }">
     <see-dialog ref="SeeDialog"></see-dialog>
     <first-direct-dialog ref="FirstDirectDialog"></first-direct-dialog>
     <doc-return-dialog ref="DocReturnDialog"></doc-return-dialog>
     <modify-buyer-dialog ref="ModifyBuyerDialog"></modify-buyer-dialog>
-    <el-form
-      :size="size"
-      :model="params"
-      label-width="75px"
-      label-position="right"
-    >
+    <el-form :size="size" :model="params" label-width="75px" label-position="right">
       <el-row :gutter="24" style="padding: 20px 20px">
-        <el-col
-          v-for="column in searchColumns"
-          :key="column.title"
-          :xl="4"
-          :lg="6"
-          :md="8"
-          :sm="12"
-          :xs="24"
-        >
-          <el-form-item
-            v-if="column.inputType === 'Input'"
-            :prop="column.key"
-            :label="column.title"
-          >
-            <el-input
-              v-model="params[column.key]"
-              :placeholder="column.placeholder"
-            ></el-input>
+        <el-col v-for="column in searchColumns" :key="column.title" :xl="4" :lg="6" :md="8" :sm="12" :xs="24">
+          <el-form-item v-if="column.inputType === 'Input'" :prop="column.key" :label="column.title">
+            <el-input v-model="params[column.key]" :placeholder="column.placeholder"></el-input>
           </el-form-item>
-          <el-form-item
-            v-if="column.inputType === 'Select'"
-            :prop="column.key"
-            :label="column.title"
-          >
-            <el-select
-              v-model="params[column.key]"
-              :disabled="column.disabled"
-              :clearable="column.clearable"
-              :placeholder="column.placeholder"
-              style="width: 100%"
-            >
-              <el-option
-                v-for="item in dict.type[column.referName]"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
+          <el-form-item v-if="column.inputType === 'Select'" :prop="column.key" :label="column.title">
+            <el-select v-model="params[column.key]" :disabled="column.disabled" :clearable="column.clearable"
+              :placeholder="column.placeholder" style="width: 100%">
+              <el-option v-for="item in dict.type[column.referName]" :key="item.value" :label="item.label"
+                :value="item.value">
               </el-option>
             </el-select>
           </el-form-item>
-          <el-form-item
-            v-if="column.inputType === 'DatePicker'"
-            :prop="column.key"
-            :label="column.title"
-          >
-            <el-date-picker
-              v-model="params[column.key]"
-              :type="column.type"
-              :placeholder="column.placeholder"
-              :value-format="column.valueFormat"
-              :unlink-panels="column.unlinkPanels"
-              :picker-options="column.pickerOptions"
-              :range-separator="column.rangeSeparator"
-              :end-placeholder="column.endPlaceholder"
-              :start-placeholder="column.startPlaceholder"
-              style="width: 100%"
-            >
+          <el-form-item v-if="column.inputType === 'DatePicker'" :prop="column.key" :label="column.title">
+            <el-date-picker v-model="params[column.key]" :type="column.type" :placeholder="column.placeholder"
+              :value-format="column.valueFormat" :unlink-panels="column.unlinkPanels"
+              :picker-options="column.pickerOptions" :range-separator="column.rangeSeparator"
+              :end-placeholder="column.endPlaceholder" :start-placeholder="column.startPlaceholder" style="width: 100%">
             </el-date-picker>
           </el-form-item>
           <el-form-item
@@ -263,18 +214,8 @@ export default {
           </el-form-item>
         </el-col>
         <el-col :xl="4" :lg="6" :md="8" :sm="12" :xs="24">
-          <el-button
-            circle
-            :size="size"
-            icon="el-icon-search"
-            @click="handleQueryList(params, page)"
-          ></el-button>
-          <el-button
-            circle
-            :size="size"
-            icon="el-icon-refresh"
-            @click="handleResetList(params, page)"
-          ></el-button>
+          <el-button circle :size="size" icon="el-icon-search" @click="handleQueryList(params, page)"></el-button>
+          <el-button circle :size="size" icon="el-icon-refresh" @click="handleResetList(params, page)"></el-button>
         </el-col>
       </el-row>
     </el-form>
@@ -283,19 +224,11 @@ export default {
         <el-button :size="size" @click="handleExport(params, page)">
           导 出
         </el-button>
-        <el-button
-          :size="size"
-          :disabled="selectData.length !== 1"
-          @click="handleModifyBuyer(selectData[0])"
-        >
+        <el-button :size="size" :disabled="selectData.length !== 1" @click="handleModifyBuyer(selectData[0])">
           转 派
         </el-button>
-        <el-button
-          :size="size"
-          :disabled="!selectData.length"
-          @click="handleDocumentsReturn(selectData)"
-        >
-          退回请购
+        <el-button :size="size" :disabled="!selectData.length" @click="handleDocumentsReturn(selectData)">
+          退回需求
         </el-button>
         <!-- <el-button
           :size="size"
@@ -304,53 +237,27 @@ export default {
         >
           行关闭
         </el-button> -->
-        <el-button
-          :size="size"
-          :disabled="!selectData.length"
-          @click="handleOpenFristDirectDrawer(selectData)"
-        >
+        <el-button :size="size" :disabled="!selectData.length" @click="handleOpenFristDirectDrawer(selectData)">
           协议直采
         </el-button>
       </el-col>
     </el-row>
-    <el-table
-      :data="tableData"
-      size="mini"
-      style="width: 100%; margin: 20px 0 0 0"
-      @row-dblclick="handleOpenSeeDrawer"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table :data="tableData" size="mini" style="width: 100%; margin: 20px 0 0 0" @row-dblclick="handleOpenSeeDrawer"
+      @selection-change="handleSelectionChange">
       <el-table-column fixed width="55" align="center" type="selection">
       </el-table-column>
-      <el-table-column
-        v-for="(column, index) in tableColumns"
-        :key="index"
-        :prop="column.key"
-        :label="column.title"
-        :width="column.width || 180"
-        :show-overflow-tooltip="column.showOverflowTooltip || true"
-      >
+      <el-table-column v-for="(column, index) in tableColumns" :key="index" :prop="column.key" :label="column.title"
+        :width="column.width || 180" :show-overflow-tooltip="column.showOverflowTooltip || true">
         <template slot-scope="scope">
-          <dict-tag
-            v-if="column.referName"
-            :size="size"
-            :value="scope.row[column.key]"
-            :options="dict.type[column.referName]"
-          />
+          <dict-tag v-if="column.referName" :size="size" :value="scope.row[column.key]"
+            :options="dict.type[column.referName]" />
           <span v-else>{{ scope.row[column.key] }}</span>
         </template>
       </el-table-column>
     </el-table>
-    <el-pagination
-      @size-change="handleSizeChange"
-      @current-change="handleCurrentChange"
-      :total="page.total"
-      :page-sizes="pageSizes"
-      :page-size="page.pageSize"
-      :current-page="page.pageNum"
-      hide-on-single-page
-      layout="total, prev, pager, next, sizes, jumper"
-    >
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :total="page.total"
+      :page-sizes="pageSizes" :page-size="page.pageSize" :current-page="page.pageNum" hide-on-single-page
+      layout="total, prev, pager, next, sizes, jumper">
     </el-pagination>
   </el-card>
 </template>

+ 61 - 30
src/views/purchase/transferOrder/index.vue

@@ -5,12 +5,9 @@
         <el-row :gutter="10">
           <el-col :span="1.5">
             <el-form-item label="调出库存组织">
-              <el-input
-              v-model="queryParams.dckczz"
-              size="small"
-              clearable
-              style="width: 200px"
-              />
+              <el-select clearable size="small" v-model="queryParams.deliveryInventoryOrg" @focus="chooseRefer('ORG_PARAM', true, '调出库存组织')" style="width: 200px">
+                <el-option v-for="item in chuOrgOptions" :key="item.id" :label="item.name" :value="item.id" />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="1.5">
@@ -18,37 +15,32 @@
               <el-date-picker
                style="width: 240px"
                size="small"
+               clearable
+               value-format="yyyy-MM-dd"
                 v-model="queryParams.billDate"
                 type="date">
               </el-date-picker>
             </el-form-item>
           </el-col>
           <el-col :span="1.5">
-            <el-form-item label="交易类型">
-              <el-input
-              v-model="queryParams.jylx"
-              size="small"
-              placeholder=""
-              clearable
-              style="width: 200px"
-              />
+            <el-form-item label="订单类型">
+              <el-select v-model="queryParams.billType" size="small" style="width: 200px" clearable>
+                <el-option v-for="dict in dict.type.sys_allot_billtype" :key="dict.value" :label="dict.label" :value="dict.value">
+                </el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="1.5">
             <el-form-item label="调入库存组织">
-              <el-input
-              v-model="queryParams.chkczz"
-              size="small"
-              placeholder=""
-              clearable
-              style="width: 200px"
-              />
+              <el-select clearable size="small" v-model="queryParams.storageInventoryOrg" @focus="chooseRefer('ORG_PARAM', true, '调入库存组织')" style="width: 200px">
+                <el-option v-for="item in ruOrgOptions" :key="item.id" :label="item.name" :value="item.id" />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="1.5">
             <el-form-item label="" label-width="20px">
-              <el-button type="primary" size="small" icon="el-icon-search" plain>搜索</el-button>
-              <el-button size="small" icon="el-icon-refresh" plain>重置</el-button>
+              <el-button type="primary" size="small" icon="el-icon-search" plain @click="searchList">搜索</el-button>
+              <el-button size="small" icon="el-icon-refresh" plain @click="resetList">重置</el-button>
             </el-form-item>
           </el-col>
         </el-row>
@@ -304,18 +296,22 @@
     </div>
 
     <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="getList"/>
+    <Refers ref="refer" @doSubmit="selectionsToInput" :single="true"/>
   </div>
 </template>
 
 <script>
 import Add from './add.vue'
 import CollapseTransition from '@/components/MyCollapse/collapse.vue'
+import Refers from '@/components/Refers/refers.vue'
 import {getOrderList, delOrder} from '@/api/purchase/transferOrder.js'
 export default {
   name: 'transferOrder',
+  dicts: ['sys_allot_billtype'],
   components: {
     Add,
-    CollapseTransition
+    CollapseTransition,
+    Refers
   },
   data() {
     return {
@@ -325,20 +321,25 @@ export default {
       // 页面状态
       page: '',
       queryParams: {
-        dckczz: '',
+        deliveryInventoryOrg: '',
         billDate: '',
-        jylx: '',
-        chkczz: '',
-        code: '',
+        billType: '',
         storageInventoryOrg: '',
         pageNum: 1,
-        pageSize: 10
+        pageSize: 5
+      },
+      referCondition: {
+        type: '',
+        isPage: true,
+        title: '',
       },
       options: [{
         value: '1', label: '是',
       }, {
         value: '0', label: '否'
       }],
+      chuOrgOptions: [],
+      ruOrgOptions: [],
       tableList: [],
       total: 0,
       materialInfo: [],
@@ -354,6 +355,20 @@ export default {
     this.getList(this.queryParams)
   },
   methods: {
+    searchList() {
+      this.getList(this.queryParams)
+    },
+    resetList() {
+      this.queryParams = {
+        deliveryInventoryOrg: '',
+        billDate: '',
+        billType: '',
+        storageInventoryOrg: '',
+        pageNum: 1,
+        pageSize: 5
+      }
+      this.getList(this.queryParams)
+    },
     getList(params){
       getOrderList(params).then(res => {
         if (res.code === 200) {
@@ -409,7 +424,23 @@ export default {
     },
     drop() {
       this.expanded = !this.expanded
-    }
+    },
+    chooseRefer(type, isPage, title) {
+      this.referCondition.type = type
+      this.referCondition.isPage = isPage
+      this.referCondition.title = title
+      this.$refs.refer.init(this.referCondition)
+    },
+    selectionsToInput(selection) {
+      if (this.referCondition.title == '调出库存组织') {
+        this.chuOrgOptions = selection
+        this.queryParams.deliveryInventoryOrg = selection[0].id
+      }
+      if (this.referCondition.title == '调入库存组织') {
+        this.ruOrgOptions = selection
+        this.queryParams.storageInventoryOrg = selection[0].id
+      }
+    },
   }
 
 }