Browse Source

更新采购退货

002390 1 year ago
parent
commit
7fe1baa4f2

+ 1 - 1
src/api/business/purchase/purchase-order.js

@@ -126,7 +126,7 @@ const putInStorage = (data) =>{
     data: data,
   });
 }
-// 获取入库数据
+// 获取退货订单
 const returnedGoods = (data) =>{
   return request({
     url: "/pu/order/returnedGoods",

+ 43 - 31
src/views/purchase/purchase-order/purchaseReturn/column.js

@@ -1,34 +1,46 @@
 export const TableColumns = [
   // {key:"pkOrg",title:"库存组织"},
-  {key:"orgName",title:"库存组织"},
-  {key:"vbillcode",title:"单据编码"},
-  {key:"dbilldate",title:"单据日期"},
-  {key:"drpOrderCode",title:"drp订单编号"},
-  {key:"cwarehouseName",title:"仓库"},
-  {key:"billtypeName",title:"出入库类型"},
-  {key:"cwhsmanagerName",title:"库管员"},
-  {key:"cbizName",title:"采购员"},
-  {key:"cdptName",title:"采购部门"},
-  {key:"ntotalnum",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:"紧急程度", inputType:"Checkbox", },
-  {key:"agent",title:"代理人"},
+  {key:"orgName",title:"库存组织", inputType:"Input", readonly:true,},
+  {key:"vbillcode",title:"单据编码", inputType:"Input", readonly:true,},
+  {key:"dbilldate",title:"单据日期", inputType:"DatePicker", disabled:true,valueFormat: "yyyy-MM-dd",},
+  {key:"drpOrderCode",title:"drp订单编号", inputType:"Input", readonly:true,},
+  {key:"cwarehouseName",title:"仓库", inputType:"Input", readonly:true,},
+  {key:"billtypeName",title:"出入库类型", inputType:"Input", readonly:true,},
+  {key:"cwhsmanagerName",title:"库管员", inputType:"Input", readonly:true,},
+  {key:"cbizName",title:"采购员", inputType:"Input", readonly:true,},
+  {key:"cdptName",title:"采购部门", inputType:"Input", readonly:true,},
+  {key:"ntotalnum",title:"总数量", inputType:"Input", readonly:true,},
+  {key:"freplenishflag",title:"退库", inputType:"Checkbox", width:80,  },
+  {key:"vreturnreason",title:"退货原因", inputType:"Input", readonly:true,},
+  {key:"syncSrm",title:"是否同步SRM", inputType:"Checkbox", width:80,disabled:true,},
+  {
+    key:"modeProcess",
+    title:"处理方式", 
+    inputType: "PopoverSelect",
+    valueKey: "id",
+    referName: "PROCESSTYPE_PARAM",
+    dataMapping: {
+      modeProcess: 'id',
+      modeProcessName: 'name'
+    },
+     isShow:true,
+    queryParams: () => ({}),
+   },
+  {key:"receivingContact",title:"收货联系人", inputType:"Input", readonly:true,},
+  {key:"project",title:"项目", inputType:"Input", readonly:true,},
+  {key:"goodsWarehouse",title:"收货仓库", inputType:"Input", readonly:true,},
+  {key:"shippingAddress",title:"收货地址", inputType:"Input", readonly:true,},
+  {key:"customerDept",title:"客户部门", inputType:"Input", readonly:true,},
+  {key:"degreeEmergency",title:"紧急程度", inputType:"Checkbox", width:80, disabled:true,},
+  {key:"agent",title:"代理人", inputType:"Input", readonly:true,},
   // {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:"billmaker",title:"制单人", inputType:"Input", readonly:true,},
+  {key:"dmakedate",title:"制单日期", inputType:"DatePicker", disabled:true,valueFormat: "yyyy-MM-dd",},
+  {key:"approver",title:"签字人", inputType:"Input", readonly:true,},
+  {key:"taudittime",title:"签字日期", inputType:"DatePicker", disabled:true,valueFormat: "yyyy-MM-dd",},
+  {key:"modifiedtime",title:"最后修改时间", inputType:"Input", disabled:true,},
+  {key:"modifier",title:"最后修改人", inputType:"Input", readonly:true,},
+  {key:"vnote",title:"备注", inputType:"Input", readonly:true,},
   
   
   // {key:"cdptvid",title:"采购部门"},
@@ -40,8 +52,8 @@ export const TableColumns = [
 
 // {key:"ncProcurementWarehouseDetailModels",title:"入库单明细"}
 export const DetailColumns =[
-  {key:"vsourceRowno",title:"来源单据行号"},
-  {key:"vsourcebillCode",title:"来源单据号"},
+  {key:"vsourceRowno",title:"行号", width:80, },
+  {key:"vsourcebillCode",title:"单据号", },
   {key:"materialCode",title:"物料编码"},
   {key:"materialName",title:"物料名称"},
   {key:"materialSpec",title:"规格"},
@@ -53,7 +65,7 @@ export const DetailColumns =[
   {key:"nassistnum",title:"实收数量"},
   {key:"nnum",title:"实收主数量"},
   {key:"dbizdate",title:"入库日期"},
-  {key:"flargess",title:"赠品", inputType:"Checkbox", },
+  {key:"flargess",title:"赠品", inputType:"Checkbox", width:80, },
   {key:"receivingCustomer",title:"收货客户"},
   {key:"udi",title:"UDI"},
   {key:"wmsRowNum",title:"WMS行号"},

+ 242 - 111
src/views/purchase/purchase-order/purchaseReturn/index.vue

@@ -1,7 +1,7 @@
 <!-- 采购退货 -->
 <script>
 
-import { initColumns, initDicts, } from "@/utils/init/index.js";
+import { initColumns, initDicts,initParams } from "@/utils/init/index.js";
 import { TableColumns, DetailColumns} from './column';
 import orderApi from "@/api/business/purchase/purchase-order";
 
@@ -19,15 +19,22 @@ export default{
       puOrderId:'',
       columns:NewTableColumns,
       detailColumns:NewDetailColumns,
-      tableData:[],
-      detaildData:[],
+      params:{
+        ...initParams(NewTableColumns),
+        ncProcurementWarehouseDetailModels:[]
+      },
 
     }
   },
   methods:{
+
     setVisible(prop) {
 
       this.visible = prop;
+
+      if(!prop){
+
+      }
     
     },
 
@@ -44,7 +51,7 @@ export default{
         if(code == 200){
 
           console.log(data,'查询入库数据');
-          this.tableData = [...data];
+          this.params = data[0];
         }
 
       }catch(err){}
@@ -62,14 +69,23 @@ export default{
     handleCancel(){
       this.setVisible(false);
     },
-    handleConfirm(){},
-    handleFetchDetail(row){
-      console.log(row,'row-----------');
-      this.detaildData = row['ncProcurementWarehouseDetailModels'] ? 
-                         row['ncProcurementWarehouseDetailModels']: [];
-    },
-    handleSelect(selection, row){
+    handleConfirm(){
+      try {
+        this.loading = true;
+
+        let data = {
+          vbillCode:this.params.vbillCode,
+          crowno:[],
+        }
+        let { code, msg} = orderApi.returnedGoods(data);
+
+        if(code == 200){
 
+        }
+      } catch (error) {}
+      finally{
+        this.loading = false;
+      }
     },
     handleDetailSelect(selection, row){
 
@@ -93,110 +109,225 @@ export default{
     @close="$emit('close')"
     v-loading="loading"
   >
-   
-    <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" type="primary" plain @click="handleConfirm">确定</el-button>
-          <el-button size="mini" @click="handleCancel">取 消</el-button>
-        </div>
-      </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-form
+      size="mini"
+      label-position="right"
+      ref="orderAddForm"
+      label-width="140px"
+      :model="params"
       >
-      <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 slot-scope="scope">
-            <dict-tag v-if="column.inputType === 'Select'" 
-              size="small" 
-              :value="scope.row[column.key]"
-              :options="dict.type[column.referName]"
-            />
-
-            <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>
-
-      </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"
+      <!-- :rules="rules" -->
+      <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" type="primary" plain @click="handleConfirm">确定</el-button>
+            <el-button size="mini" @click="handleCancel">取 消</el-button>
+          </div>
+        </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" 
+                  :disabled="column.disabled" 
+                  :readonly="column.readonly"
+                  style="width: 100%"
+                  ></el-input>
+                <dr-popover-select v-if="column.inputType === 'PopoverSelect'" 
+                  v-model="params[column.key]" 
+                  size="mini"
+                  :value-key="column.valueKey" 
+                  :source.sync="params" 
+                  :title="column.title" 
+                  :type="column.referName"
+                  :multiple="column.multiple" 
+                  :placeholder="column.placeholder" 
+                  :data-mapping="column.dataMapping"
+                  :disabled="column.disabled" 
+                  :query-params="column.queryParams"
+                  @change="handleReferChange"
+                  ></dr-popover-select>
+                <el-input v-if="column.inputType === 'Textarea'" 
+                  v-model="params[column.key]" 
+                  type="textarea"
+                  :placeholder="column.placeholder" 
+                  :clearable="column.clearable" 
+                  :disabled="column.disabled"
+                  style="width: 100%"
+                  ></el-input>
+                <el-input-number v-if="column.inputType === 'InputNumber'" 
+                  v-model="params[column.key]"
+                  :precision="column.precision"
+                  :max="handleIsRevise(params.status) ? params[column.key] : Infinity"
+                  :controls-position="column.controlsPosition" 
+                  :placeholder="column.placeholder"
+                  :clearable="column.clearable" 
+                  :disabled="column.disabled" 
+                  style="width: 100%"
+                  ></el-input-number>
+                <el-select v-if="column.inputType === 'Select'" 
+                  v-model="params[column.key]" 
+                  :disabled="column.disabled"
+                  :clearable="column.clearable" 
+                  :placeholder="column.placeholder" 
+                  style="width: 100%"
+                  @change="handleSelectChange(column.key,column.referName)"
+                  >
+                  <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="column.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" 
+                  :disabled="column.disabled"
+                  :picker-options="column.pickerOptions" 
+                  style="width: 100%"
+                  ></el-date-picker>
+                <el-checkbox v-if="column.inputType === 'Checkbox'" 
+                  v-model="params[column.key]" 
+                  :disabled="column.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="handleIsRevise(params.status)"
+                  ></file-upload-center>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        <!-- <el-table 
+          :data="tableData" 
+          size="mini"
+          highlight-current-row
+          @select="handleSelect"
+          @row-click="handleFetchDetail"
+          height="200"
+          style="width: 100%; margin: 20px 0 0 0"
+        >
         <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"
+          <el-table-column 
+            v-for="(column, index) in columns" 
+            :key="column.key" 
+            :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.inputType === 'Select'" 
+                size="small" 
+                :value="scope.row[column.key]"
+                :options="dict.type[column.referName]"
+              />
+
+              <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>
+
+        </el-table> -->
+      </el-card>
+
+
+      <el-card :body-style="{
+        padding: '20px',
+        display: 'flex',
+        'flex-wrap': 'wrap',
+        position: 'relative',
+        }" 
+        style="margin: 10px"
+      >
+        <el-table 
+          :data="params['ncProcurementWarehouseDetailModels']" 
+          style="width: 100%"
+          size="mini"
+          highlight-current-row
+          @select="handleDetailSelect"
         >
-          <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-table-column type="selection" width="45" ></el-table-column>
+          <el-table-column 
+            v-for="(cColumn, cIndex) in detailColumns" 
+            :key="cColumn.key" 
+            :prop="cColumn.key"
+            :label="cColumn.title" 
+            :width="cColumn.width || 180"
+            :show-overflow-tooltip="cColumn.showOverflowTooltip || true"
+          >
+            <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-form>
 
   </el-drawer>