002390 2 gadi atpakaļ
vecāks
revīzija
71db1c14b6

+ 24 - 48
src/components/popover-select/index.vue

@@ -22,6 +22,10 @@ export default {
       type: String,
       default: "id",
     },
+    showKey: {
+      type: String,
+      default: "name",
+    },
     // 默认查询参数
     queryParams: {
       type: Object,
@@ -76,7 +80,9 @@ export default {
   },
   computed: {
     showValue() {
-      return this.data.length === 1 ? this.data[0][this.$props.valueKey] : "";
+      console.log(this.data[0], 'this.data[0]');
+      // return this.data.length === 1 ? this.data[0][this.$props.valueKey] : "";
+      return this.data.length === 1 ? this.data[0][this.$props.showKey] : "";
     },
   },
   watch: {
@@ -110,6 +116,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]);
@@ -135,76 +142,45 @@ 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>
-          <el-tag
-            v-for="(item, index) in data"
-            :size="size"
-            hit
-            closable
-            :style="{
-              display: 'flex',
-              justifyContent: 'space-between',
-              alignItems: 'center',
-              margin: data.length - 1 === index ? '0' : '0 0 5px 0',
-            }"
-            @close="handleDelete(index)"
-          >
+          <el-tag v-for="(item, index) in data" :size="size" hit closable :style="{
+            display: 'flex',
+            justifyContent: 'space-between',
+            alignItems: 'center',
+            margin: data.length - 1 === index ? '0' : '0 0 5px 0',
+          }" @close="handleDelete(index)">
             {{ item[valueKey] }}
           </el-tag>
         </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) {

+ 41 - 156
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,131 +148,50 @@ 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
-            v-if="column.inputType === 'PopoverSelect'"
-            :prop="column.key"
-            :label="column.title"
-          >
-            <dr-popover-select
-              v-model="params[column.key]"
-              :source.sync="params"
-              :title="column.title"
-              :type="column.referName"
-              :multiple="column.multiple"
-              :value-key="column.valueKey"
-              :placeholder="column.placeholder"
-              :data-mapping="column.dataMapping"
-              :query-params="column.queryParams(params)"
-            >
+          <el-form-item v-if="column.inputType === 'PopoverSelect'" :prop="column.key" :label="column.title">
+            <dr-popover-select v-model="params[column.key]" :source.sync="params" :title="column.title"
+              :type="column.referName" :multiple="column.multiple" :value-key="column.valueKey"
+              :placeholder="column.placeholder" :data-mapping="column.dataMapping"
+              :query-params="column.queryParams(params)">
             </dr-popover-select>
           </el-form-item>
-          <el-form-item
-            v-if="column.inputType === 'PopoverTreeSelect'"
-            :prop="column.key"
-            :label="column.title"
-          >
-            <dr-popover-tree-select
-              v-model="params[column.key]"
-              :source.sync="params"
-              :title="column.title"
-              :type="column.referName"
-              :multiple="column.multiple"
-              :value-key="column.valueKey"
-              :placeholder="column.placeholder"
-              :data-mapping="column.dataMapping"
-              :query-params="column.queryParams(params)"
-            >
+          <el-form-item v-if="column.inputType === 'PopoverTreeSelect'" :prop="column.key" :label="column.title">
+            <dr-popover-tree-select v-model="params[column.key]" :source.sync="params" :title="column.title"
+              :type="column.referName" :multiple="column.multiple" :value-key="column.valueKey"
+              :placeholder="column.placeholder" :data-mapping="column.dataMapping"
+              :query-params="column.queryParams(params)">
             </dr-popover-tree-select>
           </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>
@@ -281,19 +200,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"
@@ -302,53 +213,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>