Procházet zdrojové kódy

Merge branch 'purchaseDev' into 'dev'

Purchase dev

See merge request new-business/drp-web!347
黄梓星 před 1 rokem
rodič
revize
b771396959

+ 7 - 0
src/api/business/purchase/contract.js

@@ -93,6 +93,13 @@ export function SUBMIT(data) {
   });
 }
 
+export function LINKAGREEMENT(data) {
+  return request({
+    url: `/pu/contract/agreement/getCode/${data}`,
+    method: "GET",
+  });
+}
+
 const switchUrl = (prop) => {
   if (prop === "contractItemList") return "/pu/contract/item";
   if (prop === "contractClauseList") return "/pu/contract/clause";

+ 55 - 70
src/components/popover-select-v2/multiple.vue

@@ -7,7 +7,7 @@ export default {
   props: {
     // v-model
     value: {
-      type: [Array, String],
+      type: [Array, String, Number],
       require: true,
     },
     // 参照类型 ,对应后端
@@ -35,7 +35,9 @@ export default {
       default: () => ({}),
     },
   },
-  components: {},
+  components: {
+    ElSuperTable: () => import("@/components/super-table/index.vue"),
+  },
   data() {
     return {
       size: "mini",
@@ -62,13 +64,10 @@ export default {
         this.$emit("input", value);
       },
     },
-    tableColumns: {
+    TableColumns: {
       get() {
         const { referName } = this.$props;
-        const {
-          default: d,
-        } = require(`../popover-select/components/${referName}`);
-        return d.filter(({ key }) => key);
+        return require(`../popover-select/components/${referName}`).default;
       },
     },
   },
@@ -174,79 +173,65 @@ export default {
     <el-dialog
       :width="width"
       :visible.sync="visible"
+      :show-close="false"
       :close-on-click-modal="false"
       :close-on-press-escape="false"
       append-to-body
     >
-      <div slot="footer">
-        <el-button
-          type="primary"
-          :size="$attrs.size"
-          :loading="loading"
-          @click="useConfirm(selectData)"
-          >确 认</el-button
-        >
-        <el-button :size="$attrs.size" :loading="loading" @click="hide"
-          >取 消</el-button
+      <div slot="title" style="display: flex; justify-content: space-between">
+        <el-form
+          :size="size"
+          :inline="true"
+          :model="model"
+          @submit.native.prevent
+          style="display: flex; flex-direction: column"
         >
-        
+          <div>
+            <el-form-item prop="search">
+              <el-input
+                v-model="model.search"
+                @change="useQuery"
+                @keydown.enter="useQuery"
+              >
+              </el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button icon="el-icon-refresh" @click="useReset"></el-button>
+            </el-form-item>
+          </div>
+        </el-form>
+        <div>
+          <el-button
+            type="primary"
+            :size="$attrs.size"
+            :loading="loading"
+            @click="useConfirm(selectData)"
+          >
+            确认
+          </el-button>
+          <el-button :size="$attrs.size" :loading="loading" @click="hide">
+            取消
+          </el-button>
+        </div>
       </div>
-      <el-form
+      <div
         v-loading="loading"
-        :inline="true"
-        :model="model"
-        :size="size"
-        @submit.native.prevent
+        style="height: 40vh; display: flex; margin-top: -30px"
       >
-        <el-form-item prop="search">
-          <el-input
-            v-model="model.search"
-            @change="useQuery"
-            @keydown.enter="useQuery"
-          >
-          </el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button icon="el-icon-refresh" @click="useReset"></el-button>
-        </el-form-item>
-        <el-table
-          ref="multipleTable"
-          :data="data"
+        <el-super-table
+          v-model="data"
           :size="size"
-          height="45vh"
-          @selection-change="useSelect"
-        >
-          <el-table-column width="55" type="selection" align="center">
-          </el-table-column>
-          <el-table-column
-            v-for="(column, index) in tableColumns"
-            :key="index"
-            :prop="column.key"
-            :label="column.title"
-            :width="column.width || 'auto'"
-            show-overflow-tooltip
-          >
-            <template slot-scope="scope">
-              <dr-computed-input
-                v-if="column.type === 'ComputedInput'"
-                v-model="scope.row[column.key]"
-                :source="scope.row"
-                :computed="column.computed"
-                :placeholder="column.placeholder"
-                style="width: 100%"
-              ></dr-computed-input>
-              <span v-else> {{ scope.row[column.key] }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-        <pagination
-          v-show="!loading"
-          :total="page.total"
-          :page.sync="page.pageNum"
-          :limit.sync="page.pageSize"
+          :page="page"
+          :columns="TableColumns"
+          checkbox
+          pagination
+          highlight-current-row
           @pagination="useQuery"
-        />
-      </el-form>
+          @row-select="useSelect"
+          @row-dblclick="useConfirm([$event])"
+        >
+        </el-super-table>
+      </div>
     </el-dialog>
     <el-scrollbar
       v-if="lastSelectData.length"

+ 10 - 10
src/components/popover-select/index.vue

@@ -109,7 +109,7 @@ export default {
     TableColumnTemp() {
       const { type } = this.$props;
       const documents = require(`./components/${type}`).default;
-      return documents.filter((document) => document.key);
+      return documents.filter((document) => document.item.key);
     },
   },
   watch: {
@@ -303,23 +303,23 @@ export default {
           >
           </el-table-column>
           <el-table-column
-            v-for="(column, index) in TableColumnTemp"
+            v-for="({item,attr}, index) in TableColumnTemp"
             :key="index"
-            :prop="column.key"
-            :label="column.title"
-            :width="column.width"
+            :prop="item.key"
+            :label="item.title"
+            :width="item.width"
             show-overflow-tooltip
           >
             <template slot-scope="scope">
               <dr-computed-input
-                v-if="column.type === 'ComputedInput'"
-                v-model="scope.row[column.key]"
+                v-if="attr.type === 'ComputedInput'"
+                v-model="scope.row[item.key]"
                 :source="scope.row"
-                :computed="column.computed"
-                :placeholder="column.placeholder"
+                :computed="attr.computed"
+                :placeholder="attr.placeholder"
                 style="width: 100%"
               ></dr-computed-input>
-              <span v-else> {{ scope.row[column.key] }}</span>
+              <span v-else> {{ scope.row[item.key] }}</span>
             </template>
           </el-table-column>
         </el-table>

+ 49 - 38
src/views/material/basicFile/columns.js

@@ -1,5 +1,19 @@
 export const SearchColumns = [
-
+  {
+    item: {
+      key: "classifyIdName",
+      title: "物料分类",
+    },
+    attr: {
+      is: "el-popover-tree-select",
+      referName: "MATERIALCLASSIFY_PARAM",
+      valueKey: "name",
+      clearable:true,
+      dataMapping: {
+        classifyId: "id",
+      },
+    },
+  },
   {
     item:{
       key: "code",
@@ -7,38 +21,56 @@ export const SearchColumns = [
     },
     attr:{
       clearable:true,
-      is: "el-popover-select-v2",
+      is: "el-popover-multiple-select-v2",
       valueKey: "code",
       referName: "MATERIAL_PARAM",
     },
   },
   {
     item:{
-      key: "name",
-      title: "物料名称",  
+      key: "manufacturerIdName",
+      title: "生产厂家/代理人",  
     },
     attr:{
       clearable:true,
       is: "el-popover-select-v2",
       valueKey: "name",
-      referName: "MATERIAL_PARAM",
+      referName: "MANUFACTURER_PARAM",
+      dataMapping: {
+        manufacturerId: "id",
+      },
     },
   },
   {
-    item: {
-      key: "classifyIdName",
-      title: "物料分类",
+    item:{
+      key: "isMedicine",
+      title: "医药物料",  
     },
-    attr: {
-      is: "el-popover-tree-select",
-      referName: "MATERIALCLASSIFY_PARAM",
-      valueKey: "name",
+    attr:{
       clearable:true,
-      dataMapping: {
-        classifyId: "id",
-      },
+      is: "el-select",
+      dictName: "sys_number_yes_no",
     },
   },
+
+
+
+
+
+
+  {
+    item:{
+      key: "name",
+      title: "物料名称",  
+    },
+    attr:{
+      clearable:true,
+      is: "el-popover-select-v2",
+      valueKey: "name",
+      referName: "MATERIAL_PARAM",
+    },
+  },
+  
   {
     item:{
       key: "isEnable",
@@ -86,18 +118,7 @@ export const SearchColumns = [
       dictName: "sys_number_yes_no",
     },
   },
-  {
-    item:{
-      key: "registrant",
-      title: "生产厂家/代理人",  
-    },
-    attr:{
-      clearable:true,
-      is: "el-popover-select-v2",
-      valueKey: "name",
-      referName: "MANUFACTURER_PARAM",
-    },
-  },
+ 
   {
     item:{
       key: "storageCondition",
@@ -120,17 +141,7 @@ export const SearchColumns = [
       dictName: "sys_conditions_carriage",
     },
   },
-  {
-    item:{
-      key: "isMedicine",
-      title: "是否医药物料",  
-    },
-    attr:{
-      clearable:true,
-      is: "el-select",
-      dictName: "sys_number_yes_no",
-    },
-  },
+  
   {
     item:{
       key:'classifyAbc',

+ 930 - 0
src/views/material/requisition/add/columns.js

@@ -0,0 +1,930 @@
+export default function useColumns(){
+
+  const TableColumns = [
+    {
+      item:{
+        key:'billCode',
+        title:'单据编码',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+    },
+    {
+      item:{
+        key:'orgName',
+        title:'所属组织',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "ORG_PARAM",
+        dataMapping: {
+          orgId:'id'
+        },
+        disabled:true,
+      },
+    },
+    {
+      item:{
+        key:'classifyId',
+        title:'四级分类',
+      },
+      attr:{
+        is: "el-popover-tree-select",
+        referName: "MATERIALCLASSIFY_PARAM",
+        valueKey: "id",
+        dataMapping: {
+          // dosageFrom:'id'
+        }
+      },
+    },
+    {
+      item:{
+        key:'isMedicine',
+        title:'医药物料',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no", // 字典名
+      },
+      
+    },
+    {
+      item:{
+        key:'diCode',
+        title:'DI',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'name',
+        title:'物料名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'enName',
+        title:'英文名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'commonName',
+        title:'简称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'specification',
+        title:'规格',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'model',
+        title:'型号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'unitId',
+        title:'计量单位',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "UNIT_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'manufacturerId',
+        title:'生产厂家/代理人',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "MANUFACTURER_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'registrant',
+        title:'注册人/上市许可持有人',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'originPlace',
+        title:'产地',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "ORIGINPLACE_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'manufacturersMaterialName',
+        title:'厂家物料名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'manufacturersMaterialCode',
+        title:'厂家物料编码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'classifyAbc',
+        title:'ABC分类',
+      },
+      attr:{
+        is: "el-select",
+      dictName: "abc_type",
+      },
+  
+    },
+    {
+      item:{
+        key:'safeStock',
+        title:'安全库存',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'isB2c',
+        title:'B2C物料',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'assembly',
+        title:'成套件',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'isInventoryStatus',
+        title:'批号及库存状态管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'serialNoManager',
+        title:'序列号管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'transportationCondition',
+        title:'运输条件',
+      },
+      attr:{
+        is: "el-select",
+      dictName: "sys_conditions_carriage",
+      },
+  
+    },
+    {
+      item:{
+        key:'mediumPackageUnitId',
+        title:'中包装单位',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "UNIT_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'expiryDateManagerment',
+        title:'效期管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'nearOnsetManagerment',
+        title:'近效期管理',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_number_yes_no",
+      },
+  
+    },
+    {
+      item:{
+        key:'usefulLife',
+        title:'有效期',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'expiryUnitId',
+        title:'效期单位',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "period_unit",
+      },
+  
+    },
+    {
+      item:{
+        key:'usefulLifeUnitId',
+        title:'有效期至单位',
+      },
+      attr:{
+        is: "el-select",
+      dictName: "expiry_date",
+      },
+  
+    },
+    {
+      item:{
+        key:'recentWarningPeriod',
+        title:'近效期预警天数',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'storageCondition',
+        title:'存储条件',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_storage_condition",
+      },
+  
+    },
+    {
+      item:{
+        key:'materialRate',
+        title:'物料税类',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "MATERIALTAX_PARAM",
+        dataMapping: {
+          rateCode: "code",
+        },
+      },
+  
+    },
+    {
+      item:{
+        key:'rateCode',
+        title:'税类编码',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'deliveryPeriod',
+        title:'交货周期',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'minOrderQty',
+        title:'最小起定量',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'minPackQty',
+        title:'最小包装量',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'puPersonnelId',
+        title:'采购员',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        referName: "CONTACTS_PARAM",
+        valueKey: "name",
+        // dataMapping: {
+        //   puPersonnelId: "code",
+        // },
+      },
+  
+    },
+    {
+      item:{
+        key:'minBatchQty',
+        title:'最小批量',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'length',
+        title:'长度(MM)',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'height',
+        title:'高度(MM)',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'width',
+        title:'宽度(MM)',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'boxPackaingQty',
+        title:'箱包装数',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'mediumPackageQty',
+        title:'中包装数',
+      },
+      attr:{
+        is: "el-input-number",
+      },
+  
+    },
+    {
+      item:{
+        key:'packExplain',
+        title:'包装说明',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    // {
+    //   item:{
+    //     key:'businessLine',
+    //     title:'业务线',
+    //   },
+    //   attr:{
+    //     is: "el-input",
+    //   },
+    // },
+    {
+      item:{
+        key:'proposerId',
+        title:'物料申请人',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'barCode',
+        title:'条形码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'serviceLife',
+        title:'使用期限/次数',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'healthCode',
+        title:'医保代码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'oriMaterialCode',
+        title:'原系统物料编码',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'productionPermit',
+        title:'生产许可证',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'oneClass',
+        title:'一级分类',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'twoClass',
+        title:'二级分类',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'threeClass',
+        title:'三级分类',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'purchasingOrganization',
+        title:'默认采购组织',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "name",
+        referName: "ORG_PARAM",
+        // dataMapping: {
+        //   orgId:'id'
+        // },
+      },
+  
+    },
+    // {
+    //   item:{
+    //     key:'businessDepartment',
+    //     title:'业务部门',
+    //   },
+    //   attr:{
+    //     is: "el-input",
+    //     disabled:true,
+    //   },
+  
+    // },
+    {
+      item:{
+        key:'isEnable',
+        title:'启用状态',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "material_enable",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'importsManufacturer',
+        title:'进口产品生产厂家',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'serviceClass',
+        title:'服务类',
+      },
+      attr:{
+        is: "el-input-number",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'innerPackingUnit',
+        title:'内包装单位',
+      },
+      attr:{
+        is: "el-popover-select-v2",
+        valueKey: "id",
+        referName: "UNIT_PARAM",
+      },
+  
+    },
+    {
+      item:{
+        key:'innerPackingQty',
+        title:'内包装数',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'remark',
+        title:'备注',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'isDrug',
+        title:'药品',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "sys_medicine", // 字典名
+      },
+  
+    },
+    {
+      item:{
+        key:'registrationNo',
+        title:'注册证号/备案凭证编号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'medicalInstruments',
+        title:'医疗器械',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "medical_instruments", // 字典名
+      },
+  
+    },
+    {
+      item:{
+        key:'commonName',
+        title:'通用名称',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'ratifyBatchNo',
+        title:'批准文号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'dosageFrom',
+        title:'剂型',
+      },
+      attr:{
+        is: "el-popover-tree-select",
+        referName: "DOSAGEFORM_PARAM",
+        valueKey: "name",
+        // dataMapping: {
+        //   dosageFrom:'id'
+        // }
+      },
+  
+    },
+    {
+      item:{
+        key:'oriRegistrationNo',
+        title:'旧注册证号',
+      },
+      attr:{
+        is: "el-input",
+      },
+  
+    },
+    {
+      item:{
+        key:'curingType',
+        title:'养护类型',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "curing_type", // 字典名
+      },
+  
+    },
+    {
+      item:{
+        key:'createName',
+        title:'申请人',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'createTime',
+        title:'申请时间',
+      },
+      attr:{
+        is: "el-date-picker",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'createName',
+        title:'创建人',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'createTime',
+        title:'创建时间',
+      },
+      attr:{
+        is: "el-date-picker",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'updateName',
+        title:'最后修改人',
+      },
+      attr:{
+        is: "el-input",
+        disabled:true,
+      },
+  
+    },
+    {
+      item:{
+        key:'updateTime',
+        title:'最后修改时间',
+      },
+      attr:{
+        is: "el-date-picker",
+        valueFormat: "yyyy-MM-dd HH:mm:ss",
+        disabled:true,
+      },
+  
+    },
+    // {
+    //   item:{
+    //     key:'reviewedByName',
+    //     title:'最后审核人',
+    //   },
+    //   attr:{
+    //     is: "el-input",
+    //     disabled:true,
+    //   },
+  
+    // },
+    // {
+    //   item:{
+    //     key:'approvalTime',
+    //     title:'最后审核时间',
+    //   },
+    //   attr:{
+    //     is: "el-date-picker",
+    //     valueFormat: "yyyy-MM-dd HH:mm:ss",
+    //     disabled:true,
+    //   },
+  
+    // },
+    {
+      item:{
+        key:'status',
+        title:'单据状态',
+      },
+      attr:{
+        is: "el-select",
+        dictName: "documents_status", // 字典名
+        disabled:true,
+      },
+  
+    },
+    
+    
+  ].map(({ item, attr }) => ({
+    attr,
+    item: { ...item, hidden: true, span: item.span || 6 },
+  }));
+  
+  const TabColumns = [
+    {
+      item:{
+        key:'maintainMaterialType',
+        title:'维护物料类别',
+      },
+      attr:{
+        value:[]
+      },
+      TableColumns:[
+        {
+          item:{
+            key:'drugId',
+            title:'ID',
+          },
+          attr:{
+            is: "el-select",
+            dictName: "sys_number_yes_no", // 字典名
+          },
+         
+        },
+        {
+          item:{
+            key:'drugCode',
+            title:'药品类别编码',
+            require: true,
+          },
+          attr:{
+            is: "el-popover-select-v2",
+            valueKey: "code",
+          },
+         
+        },
+        {
+          item:{
+            key:'drugName',
+            title:'药品类别名称',
+            require: true,
+          },
+          attr:{
+            is: "el-input",
+            // disabled:true,
+          },
+         
+        },
+        
+      
+  
+      ]
+    }, 
+  ]
+
+  return {TableColumns,TabColumns}
+}
+

+ 336 - 0
src/views/material/requisition/add/index.vue

@@ -0,0 +1,336 @@
+<script>
+export default {
+  name:'AddRequsition',
+  props: {
+    dict: {
+      type: Object,
+    },
+    addType: {
+      type: String,
+      default: "add",
+    },
+  },
+  components:{
+    ElSuperForm: () => import("@/components/super-form/index.vue"),
+    ElSuperTable: () => import("@/components/super-table/index.vue"),
+    ElPopoverSelectV2: () => import("@/components/popover-select-v2/index.vue"),
+    ElPopoverTreeSelect: () =>
+      import("@/components/popover-tree-select/index.vue"),
+  
+  },
+  data(){
+    const {
+      TabColumns,
+      TableColumns,
+      TabColumns: [
+        {
+          item: { key: tabName },
+        },
+      ],
+    } = useColumns();
+
+    const rules = this.$init.rules([...TabColumns, ...TableColumns]);
+    const params = this.$init.params([...TabColumns, ...TableColumns]);
+    return{
+      width: "100%",
+      visible: false,
+      loading:false,
+      rules,
+      params,
+      tabName: tabName,
+      TabColumns: TabColumns,
+      TableColumns: TableColumns,
+    } 
+  },
+  computed: {
+    title: {
+      get() {
+        const { addType } = this;
+        if (addType === "add") {
+          return "新 增";
+        }
+        if (addType === "edit") {
+          return "编 辑";
+        }
+      },
+      set() {},
+    },
+    materialInfo:{
+      get(){
+        const { materialBasic } = this.params;
+        this.params.materialBasic = materialBasic.map((item, index) => ({
+          ...item,
+          $index: index,
+        }));
+
+        return {
+          materialBasic: this.params.materialBasic.filter(
+            ({ delFlag }) => delFlag !== "2"
+          ),
+        }
+      },
+      set(){},
+    }
+  },
+  methods: {
+    setVisible(prop){
+      this.visible = prop;
+    },
+    beforeOpen(){
+      if(this.addType === 'add'){
+        let {name,nickName} = this.$store.state.user;
+        this.params.createBy = name;
+        this.params.createByName = nickName;
+        this.params.createTime =  new Date().Format('yyyy-MM-dd HH:mm:ss');
+        this.params.updateBy = name;
+        this.params.updateByName = nickName;
+        this.params.updateTime =  new Date().Format('yyyy-MM-dd HH:mm:ss');
+        // this.params.approver = name;
+        this.params.applicationTime =  new Date().Format('yyyy-MM-dd HH:mm:ss');
+        this.params.status = '0';
+        console.log(this.$store.state.user,'user');
+        this.params.orgName = '德荣集团';
+        this.useRowAdd(this.tabName);
+      }
+    },
+
+    //
+    async fetchItem(prop) {
+      console.log(prop,'prop----------------');
+      try {
+        // try
+        this.loading = true;
+
+        let { code, data } = await getChangeDetails(prop.id);
+
+        if(code == 200){
+          this.params = data;
+        }
+        
+      } catch (err) {
+        // catch
+        console.error(err);
+      } finally {
+        // finally
+        this.loading = false;
+      }
+    },
+    
+    //
+    async hide() {
+      const {
+        TabColumns,
+        TableColumns,
+        TabColumns: [
+          {
+            item: { key: tabName },
+          },
+        ],
+      } = useColumns();
+      this.visible = false;
+      this.$emit('success');
+      this.tabName = tabName;
+      this.params = this.$init.params([...TabColumns, ...TableColumns]);
+    },
+    //
+    async useRowAdd(prop) {
+      
+      const { TableColumns } = this.TabColumns.find(
+        ({ item: { key } }) => key === prop
+      );
+      this.params[prop].push({
+        delFlag: "0",
+        materialClassifyId:null,
+        ...this.$init.params(TableColumns),
+      });
+    },
+    //
+    async useRowRemove(prop, scope) {
+      const { addType } = this.$props;
+      const {
+        row: { $index },
+      } = scope;
+      if (addType === "add") {
+        this.params[prop].splice($index, 1);
+      }
+      if (addType === "edit") {
+        this.params[prop] = this.params[prop].map((item, index) => ({
+          ...item,
+          delFlag: index === $index ? "2" : item.delFlag,
+        })).filter(item =>( item.id  || (!item.id && item.delFlag === '0')) )
+        ;
+      }
+    },
+    handleSubmitValidate(prop,cb){
+
+      this.$refs[prop].$refs[prop].validate(async (valid) => {
+        if (valid) {
+          try {
+            this.loading = true;
+
+            let validList = this.params['materialBasic'].filter(item => item.delFlag === '0');
+
+            if(validList.length){
+              await cb();
+            }else{
+              this.$notify.error({
+                message:'物料信息不能不为空!'
+              })
+            }
+            
+          } catch (err) {
+            // catch
+            console.error(err);
+          } finally {
+            // finally
+            this.loading = false;
+          }
+        } else {
+          return false;
+        }
+      });
+    },
+    //
+    async useSubmit(prop) {
+      console.log(this.params,'this.params');
+      this.handleSubmitValidate(prop,async()=>{
+
+        try {
+          this.loading = true;
+          const {code,msg} = await addChangeList(this.params);
+
+          if(code == 200){
+
+            this.hide();
+            this.$notify.success({
+              title: msg,
+            });
+          }
+          
+        } catch (error) {}
+        finally{
+          this.loading = false;
+        }
+
+        
+        // await;
+      })
+    },
+  },
+  created() {
+  },
+  mounted() {},
+  destroyed() {},
+}
+</script>
+
+<template>
+ <el-drawer
+      v-bind="$attrs"
+      v-on="$listeners"
+      :size="width"
+      :visible.sync="visible"
+      destroy-on-close
+      :show-close="false"
+      @close="hide"
+      @open="beforeOpen"
+      v-loading="loading"
+    >
+      <div 
+        slot="title" 
+        style="display: flex;
+            justify-content: space-between;
+            align-items: center;"
+      >
+        <h3>{{title}}</h3>
+        <div>
+          <el-button
+          type="primary"
+          :size="$attrs.size"
+          :loading="loading"
+          @click="useSubmit('superForm')"
+          >确 认</el-button
+        >
+        <el-button :size="$attrs.size" :loading="loading" @click="hide"
+          >取 消</el-button
+        >
+        </div>
+      </div>
+      <el-super-form
+        v-model="params"
+        :dict="dict"
+        :rules="rules"
+        :size="$attrs.size"
+        :columns="TableColumns"
+        ref="superForm"
+        label-width="auto"
+        label-position="right"
+        style="padding: 20px"
+      >
+        <!-- <template slot="puOrgName" slot-scope="scope">
+          <component
+            v-bind="scope.attr"
+            v-model="scope.row[scope.item.key]"
+            :size="$attrs.size"
+            :source.sync="scope.row"
+          >
+          </component
+        ></template> -->
+      </el-super-form>
+      
+  
+      <el-tabs v-model="tabName" style="padding: 0 20px 20px">
+        <el-tab-pane
+          v-for="({ item, TableColumns: columns }, index) in TabColumns"
+          :key="index"
+          :label="item.title"
+          :name="item.key"
+          lazy
+        >
+          <div style="height: 420px;display:flex">
+            <el-super-table
+              v-model="materialInfo[item.key]"
+              :dict="dict"
+              :ref="tabName"
+              :columns="columns"
+              :size="$attrs.size"
+            >
+              <el-table-column fixed="right" label="操作" width="120" align="center">
+                <template slot="header" slot-scope="scope">
+                  <el-button
+                    type="text"
+                    :size="$attrs.size"
+                    @click="useRowAdd(tabName)"
+                  >
+                    增行
+                  </el-button>
+                </template>
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    :size="$attrs.size"
+                    @click.native.prevent="useRowRemove(tabName, scope)"
+                  >
+                  删除
+                  </el-button>
+                  <AmendantRecord
+                    v-if=" tabName ==='materialBasic' && addType === 'edit' && scope.row.id"
+                    v-model="scope.row"
+                  ></AmendantRecord>
+                </template>
+              </el-table-column>
+            </el-super-table>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+
+      
+     
+    </el-drawer>
+</template>
+
+<style scoped>
+::v-deep .el-table__row.is-hidden {
+  display: none;
+}
+</style>

+ 3 - 3
src/views/purchase/PurchaseDemandList/add.vue

@@ -983,7 +983,7 @@ export default {
               addDemand(this.basicForm).then(res => {
                 console.log(333)
                 if (res.code === 200) {
-                  this.$modal.notifySuccess("保存成功");
+                  this.$modal.notifySuccess(res.msg);
                   this.$modal.closeLoading();
                   this.back()
                 }
@@ -1000,7 +1000,7 @@ export default {
               // this.basicForm.puDemandItemList.push(...this.delDemandItemList)
               editDemand(param).then(res => {
                 if (res.code === 200) {
-                  this.$modal.notifySuccess("编辑成功");
+                  this.$modal.notifySuccess(res.msg);
                   this.$modal.closeLoading();
                   this.back()
                 }
@@ -1105,7 +1105,7 @@ export default {
     },
     // 单元格标红
     cellClassName({row, column, rowIndex, columnIndex}) {
-      if(this.basicForm.isCustomerSpecified == 'N' && column.label == '需求可用周期' && Number(row.demandPeriod) > 1.5 && Number(row.demandPeriod) > Number(row.minOrderQty)) {
+      if(this.basicForm.isCustomerSpecified == 'N' && column.label == '需求可用周期' && Number(row.demandPeriod) > 1.5 && Number(row.qty) > Number(row.minOrderQty)) {
         return 'success-row';
       }
     },

+ 152 - 53
src/views/purchase/contract/add/columns.js

@@ -3,7 +3,7 @@ import CONFIG from "@/config";
 export default function useColumns() {
   const TableColumns = [
     {
-      item: { key: "puOrgName", title: "采购组织", require: true,width:150 },
+      item: { key: "puOrgName", title: "采购组织", require: true, width: 150 },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -14,7 +14,10 @@ export default function useColumns() {
         },
       },
     },
-    { item: { key: "code", title: "合同编码",width:150 }, attr: { is: "el-input" } },
+    {
+      item: { key: "code", title: "合同编码", width: 150 },
+      attr: { is: "el-input" },
+    },
     {
       item: { key: "status", title: "状态" },
       attr: {
@@ -25,14 +28,14 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "lastPuMoney", title: "上年度采购额",width:100 },
+      item: { key: "lastPuMoney", title: "上年度采购额", width: 100 },
       attr: {
         is: "el-input-number",
         precision: CONFIG.precision,
       },
     },
     {
-      item: { key: "buyerName", title: "采购员", require: true,width:100 },
+      item: { key: "buyerName", title: "采购员", require: true, width: 100 },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -46,7 +49,7 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "supplierName", title: "供应商", require: true,width:100 },
+      item: { key: "supplierName", title: "供应商", require: true, width: 100 },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -58,18 +61,23 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "contractType", title: "合同类型", require: true ,width:100},
+      item: {
+        key: "contractType",
+        title: "合同类型",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-select", dictName: "puarchase_contract_contract_type" },
     },
     {
-      item: { key: "puMoneyYear", title: "本年度采购额",width:100 },
+      item: { key: "puMoneyYear", title: "本年度采购额", width: 100 },
       attr: {
         is: "el-input-number",
         precision: CONFIG.precision,
       },
     },
     {
-      item: { key: "puDeptName", title: "采购部门", require: true ,width:100},
+      item: { key: "puDeptName", title: "采购部门", require: true, width: 100 },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -81,33 +89,63 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "supplierTier", title: "供应商层级", require: true ,width:100},
+      item: {
+        key: "supplierTier",
+        title: "供应商层级",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-select", dictName: "puarchase_contract_supplier_tier" },
     },
     {
-      item: { key: "contractName", title: "合同名称", require: true ,width:100},
+      item: {
+        key: "contractName",
+        title: "合同名称",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "grossRateAverage", title: "平均毛利率 (%)", require: true,width:100 },
+      item: {
+        key: "grossRateAverage",
+        title: "平均毛利率 (%)",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-input-number",
         precision: 2,
       },
     },
     {
-      item: { key: "approveFlow", title: "审批流程", require: true,width:100 },
+      item: {
+        key: "approveFlow",
+        title: "审批流程",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-select", dictName: "puarchase_contract_approve_flow" },
     },
     {
-      item: { key: "consumableClass", title: "耗材类别", require: true,width:100 },
+      item: {
+        key: "consumableClass",
+        title: "耗材类别",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-select",
         dictName: "puarchase_contract_consumable_class",
       },
     },
     {
-      item: { key: "effectiveDate", title: "合同生效日期", require: true,width:100 },
+      item: {
+        key: "effectiveDate",
+        title: "合同生效日期",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-date-picker",
         valueFormat: "yyyy-MM-dd",
@@ -125,22 +163,42 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "contractFormat", title: "合同格式", require: true,width:100 },
+      item: {
+        key: "contractFormat",
+        title: "合同格式",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-select",
         dictName: "puarchase_contract_contract_format",
       },
     },
     {
-      item: { key: "productName", title: "产品类别&名称", require: true,width:100 },
+      item: {
+        key: "productName",
+        title: "产品类别&名称",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "endDate", title: "合同终止日期", require: true ,width:100},
+      item: {
+        key: "endDate",
+        title: "合同终止日期",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-date-picker", valueFormat: "yyyy-MM-dd" },
     },
     {
-      item: { key: "invoiceTax", title: "发票税率 (%)", require: true ,width:100},
+      item: {
+        key: "invoiceTax",
+        title: "发票税率 (%)",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "ntaxrate",
@@ -151,26 +209,36 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "emergencyDegree", title: "紧急程度", require: true,width:100 },
+      item: {
+        key: "emergencyDegree",
+        title: "紧急程度",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-select",
         dictName: "puarchase_contract_emergency_degree",
       },
     },
     {
-      item: { key: "project", title: "项目医院", require: true,width:100 },
+      item: { key: "project", title: "项目医院", require: true, width: 100 },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "deliveryType", title: "交货方式", require: true,width:100 },
+      item: {
+        key: "deliveryType",
+        title: "交货方式",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-select", dictName: "puarchase_contract_delivery_type" },
     },
     {
-      item: { key: "source", title: "合同来源",width:100 },
+      item: { key: "source", title: "合同来源", width: 100 },
       attr: { is: "el-input", value: "自制", disabled: true },
     },
     {
-      item: { key: "contractPartycName", title: "合同丙方",width:100 },
+      item: { key: "contractPartycName", title: "合同丙方", width: 100 },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -182,30 +250,40 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "guaranteePeriodEnd", title: "质保期限", require: true,width:100 },
+      item: {
+        key: "guaranteePeriodEnd",
+        title: "质保期限",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-input-number", precision: 2 },
     },
     {
-      item: { key: "freightMethods", title: "运费承担方式",width:100 },
+      item: { key: "freightMethods", title: "运费承担方式", width: 100 },
       attr: {
         is: "el-select",
         dictName: "puarchase_contract_freight_methods",
       },
     },
     {
-      item: { key: "signDate", title: "合同签订日期",width:100 },
+      item: { key: "signDate", title: "合同签订日期", width: 100 },
       attr: { is: "el-date-picker", valueFormat: "yyyy-MM-dd" },
     },
     {
-      item: { key: "isTarget", title: "是否有指标", require: true,width:100 },
+      item: { key: "isTarget", title: "是否有指标", require: true, width: 100 },
       attr: { is: "el-select", dictName: "sys_yes_no" },
     },
     {
-      item: { key: "contractTarget", title: "合同指标" ,width:100},
+      item: { key: "contractTarget", title: "合同指标", width: 100 },
       attr: { is: "el-input", placeholder: '当【是否有指标】="有"时,必填' },
     },
     {
-      item: { key: "exemptionPostageCondtion", title: "包邮条件", span: 12 ,width:100},
+      item: {
+        key: "exemptionPostageCondtion",
+        title: "包邮条件",
+        span: 12,
+        width: 100,
+      },
       attr: {
         is: "el-input",
         placeholder:
@@ -213,26 +291,37 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "isRebate", title: "是否有返利", require: true,width:100 },
+      item: { key: "isRebate", title: "是否有返利", require: true, width: 100 },
       attr: { is: "el-select", dictName: "sys_yes_no" },
     },
     {
-      item: { key: "rebatePolicy", title: "返利政策", span: 18, require: true ,width:100},
+      item: {
+        key: "rebatePolicy",
+        title: "返利政策",
+        span: 18,
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-input",
         placeholder: '当【是否有返利】="有"时,必填',
       },
     },
     {
-      item: { key: "externalContract", title: "外部合同号",width:100 },
+      item: { key: "externalContract", title: "外部合同号", width: 100 },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "rollbackPolicy", title: "退换货政策", require: true,width:100 },
+      item: {
+        key: "rollbackPolicy",
+        title: "退换货政策",
+        require: true,
+        width: 100,
+      },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "enquiryCode", title: "询价单号",width:100 },
+      item: { key: "enquiryCode", title: "询价单号", width: 100 },
       attr: { is: "el-input" },
     },
     {
@@ -241,13 +330,12 @@ export default function useColumns() {
         title: "合同主要内容",
         require: true,
         span: 24,
-        width:100
-        
+        width: 100,
       },
       attr: { is: "el-input", type: "textarea" },
     },
     {
-      item: { key: "refusalReasons", title: "拒绝理由", span: 24,width:100 },
+      item: { key: "refusalReasons", title: "拒绝理由", span: 24, width: 100 },
       attr: { is: "el-input" },
     },
     // {
@@ -259,32 +347,47 @@ export default function useColumns() {
     //   attr: { is: "el-file-upload", fileType: ["pdf"], disabled: true },
     // },
     {
-      item: { key: "externalFile", title: "对外附件", span: 24,width:100 },
+      item: { key: "externalFile", title: "对外附件", span: 24, width: 100 },
       attr: { is: "el-file-upload", fileType: ["pdf"] },
     },
     {
-      item: { key: "puFile", title: "采购商盖章合同附件", span: 24,width:100 },
+      item: {
+        key: "puFile",
+        title: "采购商盖章合同附件",
+        span: 24,
+        width: 100,
+      },
       attr: { is: "el-file-upload", fileType: ["pdf"] },
     },
     {
-      item: { key: "supplierFile", title: "供应商盖章合同附件", span: 24,width:100},
+      item: {
+        key: "supplierFile",
+        title: "供应商盖章合同附件",
+        span: 24,
+        width: 100,
+      },
       attr: { is: "el-file-upload", fileType: ["pdf"] },
     },
     {
-      item: { key: "projectCode", title: "项目编号" ,width:100},
+      item: { key: "projectCode", title: "项目编号", width: 100 },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "projectName", title: "项目名称",width:100 },
+      item: { key: "projectName", title: "项目名称", width: 100 },
       attr: { is: "el-input" },
     },
     { item: { key: "area", title: "区域" }, attr: { is: "el-input" } },
     {
-      item: { key: "consigneePhone", title: "收货人联系方式",width:100 },
+      item: { key: "consigneePhone", title: "收货人联系方式", width: 100 },
       attr: { is: "el-input" },
     },
     {
-      item: { key: "paymentAgreement", title: "付款协议", require: true,width:100 },
+      item: {
+        key: "paymentAgreement",
+        title: "付款协议",
+        require: true,
+        width: 100,
+      },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -296,14 +399,14 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "taxPrice", title: "价税合计",width:100 },
+      item: { key: "taxPrice", title: "价税合计", width: 100 },
       attr: {
         is: "el-input-number",
         precision: CONFIG.precision,
       },
     },
     {
-      item: { key: "currencyName", title: "币种", require: true,width:100 },
+      item: { key: "currencyName", title: "币种", require: true, width: 100 },
       attr: {
         is: "el-popover-select-v2",
         valueKey: "name",
@@ -315,7 +418,7 @@ export default function useColumns() {
       },
     },
     {
-      item: { key: "guaranteePeriod", title: "质保期",width:100 },
+      item: { key: "guaranteePeriod", title: "质保期", width: 100 },
       attr: {
         is: "el-input-number",
         precision: CONFIG.precision,
@@ -414,7 +517,7 @@ export default function useColumns() {
           attr: {
             formatter: (prop) => {
               const { qty = 0, taxPrice = 0 } = prop;
-              prop.taxMoney = (qty * taxPrice * 1);
+              prop.taxMoney = qty * taxPrice * 1;
               return prop.taxMoney;
             },
           },
@@ -436,11 +539,7 @@ export default function useColumns() {
           attr: {
             formatter: (prop) => {
               const { qty = 0, tax = 0, taxPrice = 0 } = prop;
-              prop.taxFreeMoney = (
-                qty *
-                (taxPrice / (tax / 100 + 1)) *
-                1
-              );
+              prop.taxFreeMoney = qty * (taxPrice / (tax / 100 + 1)) * 1;
               return prop.taxFreeMoney;
             },
           },

+ 28 - 30
src/views/purchase/contract/add/index.vue

@@ -1,7 +1,7 @@
 <script>
 import useColumns from "./columns";
-import { REFER } from "@/components/popover-select/api";
-import { ADD, CODE } from "@/api/business/purchase/contract";
+import { ADD, CODE, LINKAGREEMENT } from "@/api/business/purchase/contract";
+import { tax, currency } from "@/components/popover-select-v2/fetch";
 
 export default {
   name: "AddDrawer",
@@ -73,9 +73,7 @@ export default {
         const data = await CODE();
         if (data) {
           this.params.code = data;
-          return true;
         } else {
-          return false;
         }
       } catch (err) {
         // catch
@@ -86,20 +84,23 @@ export default {
       }
     },
     //
+    async changePaymentAgreement(prop) {
+      console.log(prop);
+      const {
+        selectData: { code },
+      } = prop;
+      const res = await LINKAGREEMENT(code);
+      console.log("res", res);
+    },
+    //
     async changeMaterialName(prop) {
       const { row } = prop;
       const { rateCode } = row;
       try {
         // try
         this.loading = true;
-        const { code, rows } = await REFER({
-          search: rateCode,
-          type: "TAX_RATE_PARAM",
-        });
-        if (code === 200) {
-          const [{ ntaxrate }] = rows;
-          row.tax = ntaxrate === "0E-8" ? "0.00000000" : ntaxrate;
-        }
+        const { ntaxrate } = await tax(rateCode);
+        row.tax = Number(ntaxrate === "0E-8" ? 0 : ntaxrate);
       } catch (err) {
         // catch
         console.error(err);
@@ -110,6 +111,8 @@ export default {
     },
     //
     async open() {
+      this.visible = true;
+      this.fetchCode();
       const {
         user: {
           deptId: puDept,
@@ -126,26 +129,10 @@ export default {
       this.params.buyerName = buyerName;
       this.params.puDept = puDept;
       this.params.puDeptName = puDeptName;
-      const { id, code, name } = await this.getCurrency("人民币");
+      const { id, code, name } = await currency("人民币");
       this.params.currency = id;
       this.params.currencyCode = code;
       this.params.currencyName = name;
-      this.visible = await this.fetchCode();
-    },
-    async getCurrency(search) {
-      let page = { pageNum: 1, pageSize: 10 };
-
-      const { code, rows } = await REFER(
-        {
-          isPage: true,
-          search,
-          type: "CURRENCY_PARAM",
-        },
-        page
-      );
-      if (code == 200) {
-        return rows[0];
-      }
     },
     //
     async hide() {
@@ -251,7 +238,18 @@ export default {
         label-width="auto"
         label-position="right"
         style="padding: 20px"
-      ></el-super-form>
+      >
+        <template slot="paymentAgreement" slot-scope="scope">
+          <component
+            v-bind="scope.attr"
+            v-model="scope.row[scope.item.key]"
+            :size="$attrs.size"
+            :source.sync="scope.row"
+            @change="changePaymentAgreement({ ...scope, selectData: $event })"
+          >
+          </component>
+        </template>
+      </el-super-form>
 
       <el-tabs v-model="tabName" style="margin: 0 20px">
         <el-tab-pane

+ 6 - 6
src/views/purchase/purchase-order/column.js

@@ -501,13 +501,13 @@ export const TabColumns = [
         },
         
       },
-      { 
-        item:{key: "material", title: "物料ID",width:10, },
-        attr:{
-          isHidden:true,
-        },
+      // { 
+      //   item:{key: "material", title: "物料ID",width:120, },
+      //   attr:{
+      //     isHidden:true,
+      //   },
         
-      },
+      // },
       { 
         item:{key: "materialName", title: "物料名称",width:150,  },
         attr:{

+ 0 - 1
src/views/purchase/purchase-order/edit/index.vue

@@ -544,7 +544,6 @@ export default {
               <el-input-number v-if="column.inputType === 'InputNumber'" 
                 v-model="params[column.key]"
                 :precision="column.precision"
-                :max="handleIsRevise() ? params[column.key] : Infinity"
                 :controls-position="column.controlsPosition" 
                 :placeholder="column.placeholder"
                 :clearable="column.clearable" 

+ 73 - 75
src/views/purchase/purchase-order/index.vue

@@ -604,62 +604,64 @@ export default {
       </el-col>
     </el-row>
 
-    <el-super-table
-      class="purchaseTable"
-      v-model="tableData"
-      ref="purchaseTable"
-      :dict="dict"
-      :columns="tableColumns"
-      :selectable="setSelectable"
-      index
-      checkbox
-      pagination
-      :page="page"
-      convenitentOperation
-      @pagination="fetchList(params, page)"
-      @row-dblclick="handleOpenSeeDrawer" 
-      @row-click="handleDetailsData" 
-      @selection-change="handleSelectionChange"
-      @select="handleSelect"
-    >
+    <div style="display: flex;height:420px;">
+      <el-super-table
+        class="purchaseTable"
+        v-model="tableData"
+        ref="purchaseTable"
+        :dict="dict"
+        :columns="tableColumns"
+        :selectable="setSelectable"
+        index
+        checkbox
+        pagination
+        :page="page"
+        convenitentOperation
+        @pagination="fetchList(params, page)"
+        @row-dblclick="handleOpenSeeDrawer" 
+        @row-click="handleDetailsData" 
+        @selection-change="handleSelectionChange"
+        @select="handleSelect"
+      >
+        
+        <el-table-column fixed="right" label="操作" width="120">
+            <template slot-scope="scope">
+              <el-button 
+                v-if="judgeIsOption('revise',scope.row)"
+                type="text" 
+                size="small" 
+                @click.stop="handleOpenEditDrawer(scope.row)"
+                v-hasPermi="['material:order:edit']">
+              修订
+              </el-button>
+              <el-button 
+                v-if="judgeIsOption('edit',scope.row)"
+                type="text" 
+                size="small" 
+                @click.stop="handleOpenEditDrawer(scope.row)"
+                v-hasPermi="['material:order:edit']">
+              编辑
+              </el-button>
+              <!-- 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中-->
+              <el-button 
+                v-if="judgeIsOption('del',scope.row)" 
+                type="text" 
+                size="small" 
+                @click.stop="handleDeleteList(scope.row)"
+                v-hasPermi="['material:order:remove']"
+              >删除</el-button>
+              <el-button 
+                v-if="judgeIsOption('submit',scope.row)" 
+                type="text" 
+                size="mini"
+                v-hasPermi="['material:order:toOa']" 
+                @click.stop="handleSubmit(scope.row)"
+              >提交</el-button>
+            </template>
+        </el-table-column>
       
-      <el-table-column fixed="right" label="操作" width="120">
-          <template slot-scope="scope">
-            <el-button 
-              v-if="judgeIsOption('revise',scope.row)"
-              type="text" 
-              size="small" 
-              @click.stop="handleOpenEditDrawer(scope.row)"
-              v-hasPermi="['material:order:edit']">
-            修订
-            </el-button>
-            <el-button 
-              v-if="judgeIsOption('edit',scope.row)"
-              type="text" 
-              size="small" 
-              @click.stop="handleOpenEditDrawer(scope.row)"
-              v-hasPermi="['material:order:edit']">
-            编辑
-            </el-button>
-            <!-- 0=自由态,1=审批中,2=已审核,3=已驳回 4=提交中-->
-            <el-button 
-              v-if="judgeIsOption('del',scope.row)" 
-              type="text" 
-              size="small" 
-              @click.stop="handleDeleteList(scope.row)"
-              v-hasPermi="['material:order:remove']"
-            >删除</el-button>
-            <el-button 
-              v-if="judgeIsOption('submit',scope.row)" 
-              type="text" 
-              size="mini"
-              v-hasPermi="['material:order:toOa']" 
-              @click.stop="handleSubmit(scope.row)"
-            >提交</el-button>
-          </template>
-      </el-table-column>
-    
-    </el-super-table>
+      </el-super-table>
+    </div>
 
     <div style="position: relative; padding-top: 10px;" v-loading="tabLoading">
       <el-row style="position: absolute; top: 30px; right: 20px;z-index: 10;">
@@ -679,21 +681,22 @@ export default {
           :label="column.title" 
           :name="column.key"
         >
-          <el-super-table
-            style="height: 300px;"
-            v-model="tabTableDatas[column.key]"
-            :ref="column.key"
-            :dict="dict"
-            :columns="column.tableColumns"
-            :selectable="setTabSelectable"
-            :checkbox="setTabSelectable()"
-            convenitentOperation
-            @select="handleTabSelect"
-            @selection-change="handleTabSelectionChange"
-
-          >
-          </el-super-table>
-         
+          <div style="height:580px;display:flex">
+            <el-super-table
+              v-model="tabTableDatas[column.key]"
+              :ref="column.key"
+              :dict="dict"
+              :columns="column.tableColumns"
+              :selectable="setTabSelectable"
+              :checkbox="setTabSelectable()"
+              convenitentOperation
+              @select="handleTabSelect"
+              @selection-change="handleTabSelectionChange"
+
+            >
+            </el-super-table>
+          </div>
+          
         </el-tab-pane>
         
       </el-tabs>
@@ -703,9 +706,4 @@ export default {
 </template>
 
 <style lang="scss">
-.purchaseTable{
-  .el-table__body-wrapper{
-    height: 480px;
-  }
-}
 </style>