Sfoglia il codice sorgente

Merge branch 'dev' of http://172.16.100.139/new-business/drp-web into dev

002390 1 anno fa
parent
commit
f7f5fc9da4

+ 40 - 0
src/components/computed-input-v2/index.vue

@@ -0,0 +1,40 @@
+<template>
+  <span v-on="$listeners">{{ innerValue || "- -" }}</span>
+</template>
+
+<script>
+export default {
+  name: "ComputedInputV2",
+  props: {
+    // v-model
+    value: {
+      type: [Number, String],
+      require: true,
+    },
+    // formatter
+    formatter: {
+      type: Function,
+      default: () => {},
+      require: true,
+    },
+  },
+  data() {
+    return {};
+  },
+  computed: {
+    innerValue: {
+      get() {
+        return this.formatter(this.value);
+      },
+    },
+  },
+  watch: {},
+  methods: {},
+  created() {
+    console.log("formatter", this, (this.$parent.row.customerName = "D"));
+  },
+  mounted() {},
+  destroyed() {},
+};
+</script>
+<style scoped></style>

+ 7 - 2
src/components/computed-input/index.vue

@@ -35,7 +35,6 @@ export default {
     newSource: {
       handler: function (newProp) {
         const { formatter } = this.$props;
-        console.log("formatter", formatter);
         this.$emit("input", formatter(newProp));
       },
       deep: true,
@@ -43,7 +42,13 @@ export default {
     },
   },
   methods: {},
-  created() {},
+  created() {
+    console.log(
+      "formatter",
+      this.$parent,
+      (this.$parent.row.customerName = "D")
+    );
+  },
   mounted() {},
   destroyed() {},
 };

+ 6 - 0
src/config/index.js

@@ -0,0 +1,6 @@
+export default {
+  // 尺寸
+  size: "mini",
+  // 保留小数位
+  precision: 6,
+};

+ 2 - 2
src/views/purchase/DemandSummary/index.vue

@@ -46,7 +46,7 @@
               <el-col :span="1.5">
                 <el-form-item label="生产厂家">
                   <el-input
-                  v-model="queryParams.manufacturer"
+                  v-model.trim="queryParams.manufacturer"
                   size="mini"
                   clearable
                   style="width: 200px"
@@ -105,7 +105,7 @@
               <el-col :span="1.5">
                 <el-form-item label="注册人">
                   <el-input
-                  v-model="queryParams.registrant"
+                  v-model.trim="queryParams.registrant"
                   size="mini"
                   clearable
                   style="width: 200px"

+ 1 - 0
src/views/purchase/PurchaseDemandList/add.vue

@@ -1120,6 +1120,7 @@ export default {
     pasteMe(e, socpe) {
       e.preventDefault() //阻止默认粘贴事件
       let source = e.clipboardData.getData("Text");
+      console.log('scope', socpe.column.property)
       console.log('eee:', source)
       // 首先对源头进行解析
       let rows = source.split("\r\n"); // 拆成一个数组

+ 0 - 1
src/views/purchase/apply/add/column.js

@@ -158,7 +158,6 @@ export const TabColumns = [
         attr: {
           component: "el-input-number",
           precision: 6,
-          formatter: (prop) => (prop ? (prop * 1).toFixed(6) : null),
         },
       },
       {

+ 1 - 1
src/views/purchase/catalogue/hooks/data.js

@@ -1,4 +1,4 @@
-import { initRules, initParams } from "@/utils/init";
+import { initRules, initParams } from "@/utils/init/index.js";
 
 export default function useData(prop) {
   const { FormColumns } = prop;

+ 1 - 1
src/views/purchase/catalogue/hooks/dicts.js

@@ -1,4 +1,4 @@
-import { initDicts } from "@/utils/init";
+import { initDicts } from "@/utils/init/index.js";
 
 export default function useDicts(prop) {
   const { FormColumns = [], TabColumns = [] } = prop;

+ 1 - 1
src/views/purchase/catalogue/index.vue

@@ -1,7 +1,7 @@
 <script>
 import { FormColumns, SearchColumns } from "./column";
 import { LIST } from "@/api/business/purchase/catalogue";
-import { initPage, initDicts, initParams } from "@/utils/init";
+import { initPage, initDicts, initParams } from "@/utils/init/index.js";
 export default {
   name: "PuchaseCatalogue",
   dicts: [...initDicts(SearchColumns), ...initDicts(FormColumns)],

+ 1 - 1
src/views/purchase/contract/hooks/data.js

@@ -1,4 +1,4 @@
-import { initRules, initParams } from "@/utils/init";
+import { initRules, initParams } from "@/utils/init/index.js";
 
 export default function useData(prop) {
   const { FormColumns, TabColumns } = prop;

+ 1 - 1
src/views/purchase/contract/hooks/dicts.js

@@ -1,4 +1,4 @@
-import { initDicts } from "@/utils/init";
+import { initDicts } from "@/utils/init/index.js";
 
 export default function useDicts(prop) {
   const { FormColumns = [], TabColumns = [] } = prop;

+ 1 - 1
src/views/purchase/contract/index.vue

@@ -1,7 +1,7 @@
 <script>
 import { FormColumns, SearchColumns } from "./column";
 import { LIST } from "@/api/business/purchase/contract";
-import { initPage, initDicts, initParams } from "@/utils/init";
+import { initPage, initDicts, initParams } from "@/utils/init/index.js";
 export default {
   name: "PuchaseContract",
   dicts: [...initDicts(SearchColumns), ...initDicts(FormColumns)],

+ 11 - 11
src/views/purchase/purchase-order/index.vue

@@ -16,6 +16,7 @@ export default {
     AddDrawer: () => import('./add/index.vue'),
     SeeDrawer: () => import('./see/index.vue'),
     EditDrawer: () => import('./edit/index.vue'),
+    PurchaseReturnDrawer: () => import('./purchaseReturn/index.vue'),
   },
   data() {
     const initTabColumns = () => TabColumns;
@@ -136,14 +137,14 @@ export default {
     async handleOpenSeeDrawer(row) {
       window.clearInterval(this.timeOut);
       const { id } = row;
-      const { setVisible, fetchItem } = this.$refs.seeDrawerFef;
+      const { setVisible, fetchItem } = this.$refs.seeDrawerRef;
       await setVisible(true);
       await fetchItem(id);
     },
     // 编辑、修订
     async handleOpenEditDrawer(row) {
       const { id } = row;
-      const { setVisible, fetchItem } = this.$refs.editDrawerFef;
+      const { setVisible, fetchItem } = this.$refs.editDrawerRef;
       await setVisible(true);
       await fetchItem(id);
     },
@@ -361,13 +362,11 @@ export default {
       
     },
     // 退货
-    handlePurchaseReturn(){
-      console.log(this.checkedList,'1111111111111');
-      // let {id:puOrderId} = ;
-      let puOrderId = Number(this.checkedList[0].id);
-      orderApi.putInStorage({puOrderId}).then(res=>{
-        console.log(res,'res---------------');
-      })
+    async handlePurchaseReturn(){
+      const { id } = this.checkedList[0];
+      const { setVisible, fetchStorage } = this.$refs.PurchaseReturnDrawerRef;
+      await setVisible(true);
+      await fetchStorage(id);
     },
     // 主表Select框
     handleSelect(selection, row) {
@@ -412,9 +411,10 @@ export default {
     style="width: calc(100% - 24px); height: 100%; margin: 10px" 
     :body-style="{ padding: 0 }"
   >
-    <SeeDrawer ref="seeDrawerFef"></SeeDrawer>
+    <SeeDrawer ref="seeDrawerRef"></SeeDrawer>
     <AddDrawer ref="addDrawerFef" @close="handleRefreshList"></AddDrawer>
-    <EditDrawer ref="editDrawerFef" @close="handleRefreshList"></EditDrawer>
+    <EditDrawer ref="editDrawerRef" @close="handleRefreshList"></EditDrawer>
+    <PurchaseReturnDrawer ref="PurchaseReturnDrawerRef" @close="handleRefreshList"></PurchaseReturnDrawer>
 
     <el-form 
       size="mini" 

+ 44 - 40
src/views/purchase/purchase-order/purchaseReturn/column.js

@@ -1,63 +1,67 @@
 export const TableColumns = [
-  {key:"pkOrg",title:"库存组织"},
-  {key:"orgName",title:"组织名称"},
-  {key:"approver",title:"签字人"},
-  {key:"billmaker",title:"制单人"},
-  {key:"cbizid",title:"采购员"},
-  {key:"cbizName",title:"采购员名称"},
-  {key:"cdptvid",title:"采购部门"},
-  {key:"cdptName",title:"部门名称"},
-  {key:"cwarehouseName",title:"仓库名称"},
-  {key:"cwarehouseid",title:"仓库id"},
-  {key:"cwhsmanagerid",title:"库管员"},
-  {key:"cwhsmanagerName",title:"库管员名称"},
+  // {key:"pkOrg",title:"库存组织"},
+  {key:"orgName",title:"库存组织"},
+  {key:"vbillcode",title:"单据编码"},
   {key:"dbilldate",title:"单据日期"},
-  {key:"dmakedate",title:"制单日期"},
-  {key:"freplenishflag",title:"退库"},
-  {key:"modifiedtime",title:"最后修改时间"},
-  {key:"modifier",title:"最后修改人"},
+  {key:"drpOrderCode",title:"drp订单编号"},
+  {key:"cwarehouseName",title:"仓库"},
+  {key:"billtypeName",title:"出入库类型"},
+  {key:"cwhsmanagerName",title:"库管员"},
+  {key:"cbizName",title:"采购员"},
+  {key:"cdptName",title:"采购部门"},
   {key:"ntotalnum",title:"总数量"},
-  {key:"taudittime",title:"签字日期"},
-  {key:"vbillcode",title:"单据日期"},
+  {key:"freplenishflag",title:"退库", inputType:"Checkbox", },
+  {key:"vreturnreason",title:"退货原因"},
+  {key:"syncSrm",title:"是否同步SRM", inputType:"Checkbox", },
+  {key:"modeProcess",title:"处理方式"},
+  {key:"receivingContact",title:"收货联系人"},
   {key:"project",title:"项目"},
   {key:"goodsWarehouse",title:"收货仓库"},
   {key:"shippingAddress",title:"收货地址"},
   {key:"customerDept",title:"客户部门"},
-  {key:"degreeEmergency",title:"紧急程度"},
+  {key:"degreeEmergency",title:"紧急程度", inputType:"Checkbox", },
   {key:"agent",title:"代理人"},
-  {key:"syncSrm",title:"是否同步SRM"},
-  {key:"modeProcess",title:"处理方式"},
-  {key:"receivingContact",title:"收货联系人"},
+  // {key:"agentName",title:"代理人"},
+  {key:"billmaker",title:"制单人"},
+  {key:"dmakedate",title:"制单日期"},
+  {key:"approver",title:"签字人"},
+  {key:"taudittime",title:"签字日期"},
+  {key:"modifiedtime",title:"最后修改时间"},
+  {key:"modifier",title:"最后修改人"},
   {key:"vnote",title:"备注"},
-  {key:"vreturnreason",title:"退货原因"},
-  {key:"billtypeName",title:"出入库类型名称"},
-  {key:"drpOrderCode",title:"drp订单编号"},
+  
+  
+  // {key:"cdptvid",title:"采购部门"},
+  // {key:"cbizid",title:"采购员"},
+  // {key:"cwarehouseid",title:"仓库id"},
+  // {key:"cwhsmanagerid",title:"库管员"},
   
 ];
 
 // {key:"ncProcurementWarehouseDetailModels",title:"入库单明细"}
 export const DetailColumns =[
+  {key:"vsourceRowno",title:"来源单据行号"},
+  {key:"vsourcebillCode",title:"来源单据号"},
   {key:"materialCode",title:"物料编码"},
   {key:"materialName",title:"物料名称"},
-  {key:"materialSpec",title:"物料规格"},
-  {key:"materialType",title:"物料型号"},
-  {key:"unitName",title:"计量单位名称"},
-  {key:"udi",title:"udi"},
-  {key:"vlotno",title:"批次号"},
-  {key:"registrationNum",title:"注册证号"},
-  {key:"vapprovalNumber",title:"批准文号"},
+  {key:"materialSpec",title:"规格"},
+  {key:"materialType",title:"型号"},
+  {key:"unitName",title:"计量单位"},
   {key:"vchangerate",title:"换算率"},
-  {key:"dbizdate",title:"入库日期"},
-  {key:"dprodate",title:"生产日期"},
-  {key:"vinvalidDate",title:"有效期至"},
-  {key:"flargess",title:"赠品"},
-  {key:"nassistnum",title:"实收数量"},
-  {key:"nnum",title:"实收主数量"},
   {key:"nshouldassistNum",title:"应收数量"},
   {key:"nshouldNum",title:"应收主数量"},
+  {key:"nassistnum",title:"实收数量"},
+  {key:"nnum",title:"实收主数量"},
+  {key:"dbizdate",title:"入库日期"},
+  {key:"flargess",title:"赠品", inputType:"Checkbox", },
   {key:"receivingCustomer",title:"收货客户"},
+  {key:"udi",title:"UDI"},
   {key:"wmsRowNum",title:"WMS行号"},
   {key:"agent",title:"代理人"},
-  {key:"vsourcebillCode",title:"来源单据号"},
-  {key:"vsourceRowno",title:"来源单据行号"}
+  {key:"vlotno",title:"批次号"},
+  {key:"dprodate",title:"生产日期"},
+  {key:"vinvalidDate",title:"有效期至"},
+  {key:"registrationNum",title:"注册证号"},
+  {key:"vapprovalNumber",title:"批准文号"},
+
 ];

+ 186 - 233
src/views/purchase/purchase-order/purchaseReturn/index.vue

@@ -1,4 +1,87 @@
 <!-- 采购退货 -->
+<script>
+
+import { initColumns, initDicts, } from "@/utils/init/index.js";
+import { TableColumns, DetailColumns} from './column';
+import orderApi from "@/api/business/purchase/purchase-order";
+
+const NewTableColumns = initColumns(TableColumns);
+const NewDetailColumns = initColumns(DetailColumns);
+
+export default{
+  name:'purchaseReturn',
+
+  data(){
+
+    return {
+      visible: false,
+      loading:false,
+      puOrderId:'',
+      columns:NewTableColumns,
+      detailColumns:NewDetailColumns,
+      tableData:[],
+      detaildData:[],
+
+    }
+  },
+  methods:{
+    setVisible(prop) {
+
+      this.visible = prop;
+    
+    },
+
+    async fetchStorage(id){
+
+      try{
+
+        this.loading = true;
+
+        this.puOrderId = Number(id);
+
+        let { code, data } = await orderApi.putInStorage({puOrderId: Number(id)});
+
+        if(code == 200){
+
+          console.log(data,'查询入库数据');
+          this.tableData = [...data];
+        }
+
+      }catch(err){}
+      finally{
+        this.loading = false;
+      }
+    },
+    beforeOpen(){},
+    // 刷新
+    handleRefresh(){
+
+      this.fetchStorage(this.puOrderId);
+    },
+    // 取消
+    handleCancel(){
+      this.setVisible(false);
+    },
+    handleConfirm(){},
+    handleFetchDetail(row){
+      console.log(row,'row-----------');
+      this.detaildData = row['ncProcurementWarehouseDetailModels'] ? 
+                         row['ncProcurementWarehouseDetailModels']: [];
+    },
+    handleSelect(selection, row){
+
+    },
+    handleDetailSelect(selection, row){
+
+    },
+
+
+  },
+  created(){
+  }
+}
+</script>
+
 <template>
 
   <el-drawer 
@@ -10,241 +93,111 @@
     @close="$emit('close')"
     v-loading="loading"
   >
-    <el-form 
-      size="mini" 
-      label-position="right" 
-      label-width="140px" 
-      :model="params" 
-      :rules="rules"
-      ref="orderSeeForm" 
+   
+    <el-card :body-style="{
+      padding: '20px',
+      display: 'flex',
+      'flex-wrap': 'wrap',
+      }" 
+      style="margin: 10px"
     >
-      <el-card :body-style="{
-        padding: '20px',
-        display: 'flex',
-        'flex-wrap': 'wrap',
-      }" style="margin: 10px">
-        <div slot="header" style="
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-          ">
-          <h3>查看</h3>
-          <div style="text-align: right">
-            <el-button size="mini" @click="handleRefresh">刷新</el-button>
-           
-            <el-button size="mini" @click="handleCancel">取 消</el-button>
-          </div>
+      <div slot="header" 
+        style="
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+        ">
+        <h3></h3>
+        <div style="text-align: right">
+          <el-button size="mini" @click="handleRefresh">刷新</el-button>
+          <el-button size="mini" type="primary" plain @click="handleConfirm">确定</el-button>
+          <el-button size="mini" @click="handleCancel">取 消</el-button>
         </div>
-        <el-row style="display:flex; flex-wrap: wrap;">
-          <el-col v-for="(column, index) in columns" :key="index" :span="column.span || 6">
-            <el-form-item :prop="column.key" :label="column.title">
-
-              <el-input v-if="column.inputType === 'Input'" 
-                v-model="params[column.key]" 
-                :placeholder="column.placeholder"
-                :clearable="column.clearable" 
-                readonly 
-                style="width: 100%"
-              ></el-input>
-              <dr-popover-select v-if="column.inputType === 'PopoverSelect'" 
-                v-model="params[column.key]" 
-                disabled
-                :value-key="column.valueKey" 
-                :source.sync="params" 
-                :title="column.title" 
-                :type="column.referName"
-                :multiple="column.multiple" 
-                :placeholder="column.placeholder" 
-                :data-mapping="column.dataMapping"
-                :query-params="column.queryParams"
-              ></dr-popover-select>
-
-              <el-input v-if="column.inputType === 'Textarea'" 
-                v-model="params[column.key]" 
-                type="textarea"
-                :placeholder="column.placeholder" 
-                :clearable="column.clearable" 
-                readonly 
-                style="width: 100%"
-              ></el-input>
-
-              <el-input-number v-if="column.inputType === 'InputNumber'" 
-                v-model="params[column.key]"
-                :controls-position="column.controlsPosition" 
-                :placeholder="column.placeholder"
-                :clearable="column.clearable" 
-                :precision="column.precision"
-                disabled 
-                style="width: 100%"
-              ></el-input-number>
-              <el-select v-if="column.inputType === 'Select'" 
-                v-model="params[column.key]" 
-                disabled 
-                size="mini"
-                :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-select v-if="column.inputType === 'TagSelect'" 
-                v-model="params[column.key]" 
-                multiple 
-                clearable
-                collapse-tags 
-                :placeholder="column.placeholder" 
-                :clearable="column.clearable" 
-                disabled
-                style="width: 100%">
-                <template #prefix>
-                  <el-icon class="el-icon-view" 
-                    style="cursor: pointer" 
-                    @click.stop="$message.info(234)">
-                  </el-icon>
-                </template>
-                <el-option 
-                  v-for="item in options" 
-                  :key="item.value" 
-                  :label="item.label" 
-                  :value="item.value"
-                >
-                </el-option>
-              </el-select>
-              <el-date-picker v-if="column.inputType === 'DatePicker'" 
-                v-model="params[column.key]" 
-                :type="column.type"
-                :placeholder="column.placeholder" 
-                :clearable="column.clearable" 
-                readonly
-                :picker-options="column.pickerOptions" 
-                style="width: 100%"
-              ></el-date-picker>
-              <el-checkbox v-if="column.inputType === 'Checkbox'" 
-                v-model="params[column.key]" 
-                disabled 
-                true-label="Y"
-                false-label="N"
-              ></el-checkbox>
-              <file-upload-center v-if="column.inputType === 'Upload'" 
-                v-model="params[column.key]"
-                :file-type="column.fileType" 
-                :disabled="true"
-              ></file-upload-center>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-card>
-      <el-card :body-style="{
-        padding: '20px',
-        display: 'flex',
-        'flex-wrap': 'wrap',
-        position: 'relative',
-      }" style="margin: 10px">
-        <el-tabs v-model="tabName" style="width: 100%">
-          <el-tab-pane 
-            v-for="(column, index) in tabColumns" 
-            :key="index" 
-            :label="column.title" 
-            :name="column.key"
-          >
-            <el-table :data="params[column.key]" style="width: 100%">
-              <el-table-column 
-                v-for="(cColumn, cIndex) in column.tableColumns" 
-                :key="cIndex" 
-                :prop="cColumn.key"
-                :label="cColumn.title" 
-                :width="cColumn.width || 80"
-              >
-                <template slot-scope="scope">
-                  <el-tag v-if="cColumn.key === 'index'">
-                    {{ scope.$index + 1 }}
-                  </el-tag>
-                  <el-input v-if="cColumn.inputType === 'Input'" 
-                    v-model="scope.row[cColumn.key]"
-                    :placeholder="cColumn.placeholder" 
-                    :clearable="cColumn.clearable" 
-                    readonly 
-                    size="mini"
-                    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" 
-                    :value-key="cColumn.valueKey" 
-                    disabled
-                    :type="cColumn.referName" 
-                    :multiple="cColumn.multiple" 
-                    :placeholder="cColumn.placeholder"
-                    :data-mapping="cColumn.dataMapping" 
-                    :query-params="cColumn.queryParams" 
-                    size="mini"
-                  ></dr-popover-select>
-
-                  <el-input-number v-if="cColumn.inputType === 'InputNumber'" 
-                    v-model="scope.row[cColumn.key]"
-                    :precision="cColumn.precision"
-                    :controls-position="cColumn.controlsPosition" 
-                    :placeholder="cColumn.placeholder"
-                    :clearable="cColumn.clearable" 
-                    disabled 
-                    size="mini" 
-                    style="width: 100%"
-                  ></el-input-number>
-
-                  <el-select v-if="cColumn.inputType === 'Select'" 
-                    v-model="scope.row[cColumn.key]" 
-                    disabled 
-                    size="mini"
-                    :clearable="cColumn.clearable" 
-                    :placeholder="cColumn.placeholder" 
-                    style="width: 100%">
-                    <el-option 
-                      v-for="item in dict.type[cColumn.referName]" 
-                      :key="item.value" 
-                      :label="item.label"
-                      :value="item.value"
-                    ></el-option>
-                  </el-select>
-
-                  <el-checkbox v-if="cColumn.inputType === 'Checkbox'" 
-                    v-model="scope.row[cColumn.key]" 
-                    disabled
-                    true-label="Y" 
-                    false-label="N"
-                  ></el-checkbox>
-
-                </template>
-              </el-table-column>
-            </el-table>
-          </el-tab-pane>
-        </el-tabs>
-      </el-card>
-
-    </el-form>
-  </el-drawer>
+      </div>
+      
+      <!-- @row-dblclick="handleOpenSeeDrawer" 
+      @row-click="handleDetailsData"  -->
+      <el-table 
+        :data="tableData" 
+        size="mini"
+        highlight-current-row
+        @select="handleSelect"
+        @row-click="handleFetchDetail"
+        height="350"
+        style="width: 100%; margin: 20px 0 0 0"
+      >
+      <el-table-column type="selection" width="45" ></el-table-column>
+      <el-table-column type="index" width="50" label="序号"></el-table-column>
+        <el-table-column 
+          v-for="(column, index) in columns" 
+          :key="index" 
+          :prop="column.key" 
+          :label="column.title"
+          :width="column.width || 180" 
+          :show-overflow-tooltip="column.showOverflowTooltip || true"
+        >
 
-</template>
+          <template slot-scope="scope">
+            <dict-tag v-if="column.inputType === 'Select'" 
+              size="small" 
+              :value="scope.row[column.key]"
+              :options="dict.type[column.referName]"
+            />
 
-<script>
-export default{
-  name:'purchaseReturn',
+            <el-checkbox v-else-if="column.inputType === 'Checkbox'"
+              v-model="scope.row[column.key]" 
+              disabled 
+              true-label="Y"
+              false-label="N"
+            > </el-checkbox>
+            <span v-else>{{ scope.row[column.key] }}</span>
+          </template>
+        </el-table-column>
 
-  data(){
-    return {
-      visible: false,
-      loading:false,
-    }
-  },
-  methods:{
-    beforeOpen(){}
-  }
-}
-</script>
+      </el-table>
+
+
+
+    </el-card>
+    <el-card :body-style="{
+      padding: '20px',
+      display: 'flex',
+      'flex-wrap': 'wrap',
+      position: 'relative',
+    }" style="margin: 10px">
+      <el-table 
+        :data="detaildData" 
+        style="width: 100%"
+        @select="handleDetailSelect"
+      >
+        <el-table-column type="selection" width="45" ></el-table-column>
+        <el-table-column 
+          v-for="(cColumn, cIndex) in detailColumns" 
+          :key="cIndex" 
+          :prop="cColumn.key"
+          :label="cColumn.title" 
+          :width="cColumn.width || 120"
+        >
+          <template slot-scope="scope">
+            <dict-tag v-if="cColumn.inputType === 'Select'" 
+              size="small" 
+              :value="scope.row[cColumn.key]"
+              :options="dict.type[cColumn.referName]"
+            />
+
+            <el-checkbox v-else-if="cColumn.inputType === 'Checkbox'"
+              v-model="scope.row[cColumn.key]" 
+              disabled 
+              true-label="Y"
+              false-label="N"
+            > </el-checkbox>
+            <span v-else>{{ scope.row[cColumn.key] }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+
+    </el-card>
+
+  </el-drawer>
+
+</template>

+ 11 - 11
src/views/purchase/task/column.js

@@ -45,7 +45,7 @@ export const SearchColumns = [
       title: "物料分类",
     },
     attr: {
-      component: "dr-popover-tree-select",
+      is: "dr-popover-tree-select",
       referName: "MATERIALCLASSIFY_PARAM",
       multiple: true,
       valueKey: "id",
@@ -57,7 +57,7 @@ export const SearchColumns = [
       title: "物料编码",
     },
     attr: {
-      component: "el-popover-multiple-select-v2",
+      is: "el-popover-multiple-select-v2",
       valueKey: "code",
       referName: "MATERIAL_PARAM",
     },
@@ -68,7 +68,7 @@ export const SearchColumns = [
       title: "物料描述",
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
     },
   },
   {
@@ -77,7 +77,7 @@ export const SearchColumns = [
       title: "单据号",
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
     },
   },
   {
@@ -86,7 +86,7 @@ export const SearchColumns = [
       title: "采购组织",
     },
     attr: {
-      component: "el-popover-multiple-select-v2",
+      is: "el-popover-multiple-select-v2",
       referName: "ORG_PARAM",
       valueKey: "id",
     },
@@ -97,7 +97,7 @@ export const SearchColumns = [
       title: "状态",
     },
     attr: {
-      component: "el-select",
+      is: "el-select",
       dictName: "purchase_task_status",
       clearable: true,
     },
@@ -108,7 +108,7 @@ export const SearchColumns = [
       title: "创建时间",
     },
     attr: {
-      component: "el-date-picker",
+      is: "el-date-picker",
       type: "daterange",
       unlinkPanels: true,
       rangeSeparator: "至",
@@ -125,7 +125,7 @@ export const SearchColumns = [
       title: "采购员",
     },
     attr: {
-      component: "el-popover-multiple-select-v2",
+      is: "el-popover-multiple-select-v2",
       referName: "CONTACTS_PARAM",
       valueKey: "code",
     },
@@ -136,7 +136,7 @@ export const SearchColumns = [
       title: "生产厂家",
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
     },
   },
   {
@@ -145,7 +145,7 @@ export const SearchColumns = [
       title: "收货客户",
     },
     attr: {
-      component: "el-popover-select-v2",
+      is: "el-popover-select-v2",
       referName: "CUSTOMERDEPT_PARAM",
       valueKey: "name",
     },
@@ -157,7 +157,7 @@ export const SearchColumns = [
       span: 12,
     },
     attr: {
-      component: "el-input",
+      is: "el-input",
       placeholder: "请输入来源单据号,多个用,分隔",
     },
   },

+ 17 - 13
src/views/purchase/task/first-direct/column.js

@@ -1,3 +1,5 @@
+import CONFIG from "@/config";
+
 export const TableColumns = [
   {
     item: { key: "supplierName", title: "供应商" },
@@ -13,7 +15,7 @@ export const TableColumns = [
   },
   {
     item: { key: "priceType", title: "价格类型" },
-    attr: { component: "dict-tag", dictName: "sys_price_type" },
+    attr: { component: "el-dict-tag", dictName: "sys_price_type" },
   },
   {
     item: { key: "effectiveDate", title: "价格生效日期" },
@@ -24,32 +26,34 @@ export const TableColumns = [
     attr: {},
   },
   {
-    item: { key: "newTax", title: "税率" },
+    item: { key: "tax", title: "税率" },
     attr: {
-      component: "dr-computed-input",
+      component: "el-computed-input-v2",
       formatter: (prop) => {
-        const { tax } = prop;
-        return (tax * 1).toFixed(6) + "%";
+        return (prop * 1).toFixed(CONFIG.precision) + "%";
       },
     },
   },
   {
     item: { key: "taxFreePrice", title: "无税单价" },
     attr: {
-      component: "dr-computed-input",
+      component: "el-computed-input-v2",
       formatter: (prop) => {
-        const { taxFreePrice } = prop;
-        return (taxFreePrice * 1).toFixed(6);
+        return (prop * 1).toFixed(CONFIG.precision);
+      },
+    },
+    listeners: {
+      click: (prop) => {
+        console.log("prop", prop);
       },
     },
   },
   {
     item: { key: "taxPrice", title: "主含税单价" },
     attr: {
-      component: "dr-computed-input",
+      component: "el-computed-input-v2",
       formatter: (prop) => {
-        const { taxPrice } = prop;
-        return (taxPrice * 1).toFixed(6);
+        return (prop * 1).toFixed(CONFIG.precision);
       },
     },
   },
@@ -59,7 +63,8 @@ export const TableColumns = [
       component: "el-input-number",
       min: () => 0,
       max: (prop) => {
-        return prop.puQty - (prop.executeQty || 0);
+        const { puQty = 0, executeQty = 0 } = prop;
+        return puQty - executeQty;
       },
       controlsPosition: "right",
     },
@@ -69,7 +74,6 @@ export const TableColumns = [
     attr: {
       component: "el-date-picker",
       valueFormat: "yyyy-MM-dd",
-      width: 300,
       pickerOptions: {
         disabledDate(time) {
           return time.getTime() < Date.now();

+ 11 - 7
src/views/purchase/task/first-direct/index.vue

@@ -3,7 +3,10 @@ import { TableColumns } from "./column";
 import { FIRSTDIRECT, ADD } from "@/api/business/purchase/task";
 export default {
   name: "FirstDirectPurchaseDrawer",
-  components: {},
+  components: {
+    ElDictTag: () => import("@/components/DictTag/index.vue"),
+    ElComputedInputV2: () => import("@/components/computed-input-v2/index.vue"),
+  },
   data() {
     return {
       size: "mini",
@@ -155,7 +158,7 @@ export default {
         >
           <template slot-scope="scope">
             <el-input-number
-              v-if="cItem.attr.component === 'el-input-number'"
+              v-if="cItem.item.key === 'el-input-number'"
               v-model="scope.row[cItem.item.key]"
               :size="size"
               :min="cItem.attr.min(item)"
@@ -180,15 +183,16 @@ export default {
               type="textarea"
               style="width: 90%"
             ></el-input>
-            <dr-computed-input
-              v-else-if="cItem.attr.component === 'dr-computed-input'"
+            <el-computed-input-v2
+              v-else-if="cItem.attr.component === 'el-computed-input-v2'"
+              v-on="cItem.listeners"
               v-model="scope.row[cItem.item.key]"
               :source="scope.row"
               :formatter="cItem.attr.formatter"
               style="width: 100%"
-            ></dr-computed-input>
-            <dict-tag
-              v-else-if="cItem.attr.component === 'dict-tag'"
+            ></el-computed-input-v2>
+            <el-dict-tag
+              v-else-if="cItem.attr.component === 'el-dict-tag'"
               :size="size"
               :value="scope.row[cItem.item.key]"
               :options="$dicts[cItem.attr.dictName]"

+ 0 - 1
src/views/purchase/task/index.vue

@@ -188,7 +188,6 @@ export default {
               v-bind="column.attr"
               v-model="params[column.item.key]"
               :source.sync="params"
-              :is="column.attr.component"
               @change="useQuery(params, page)"
               @keyup.enter.native="useQuery(params, page)"
               style="width: 100%"