From 85a5e415a9f5534551809564ce5e7ea38430377f Mon Sep 17 00:00:00 2001
From: zuozhengqing <a13193816592@163.com>
Date: 星期一, 18 三月 2024 15:25:11 +0800
Subject: [PATCH] 销售明细单添加发货,添加采购信息和委外信息,调整列表字段
---
src/components/makepager/CommonFormTableView.vue | 22 +
src/views/sales/salesDetails/shipmentsDialog.vue | 652 ++++++++++++++++++++++++++++++++++++++++
src/api/sales/salesDetails.js | 19 +
src/views/sales/salesDetails/index.vue | 229 ++++++++++++-
4 files changed, 891 insertions(+), 31 deletions(-)
diff --git a/src/api/sales/salesDetails.js b/src/api/sales/salesDetails.js
index 466b229..a6e50c0 100644
--- a/src/api/sales/salesDetails.js
+++ b/src/api/sales/salesDetails.js
@@ -70,3 +70,22 @@
data
})
}
+
+// 浜у搧鍏ュ簱淇℃伅
+export function getDeliveryPrepareInfo(data) {
+ return request({
+ url: "/api/salesDetails/getDeliveryPrepareInfo",
+ method: "post",
+ data
+ })
+}
+
+// 纭鍙戣揣
+export function confirmOutput(data) {
+ return request({
+ url: "/api/salesDetails/confirmOutput",
+ method: "post",
+ data
+ })
+}
+
diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue
index 1bf5fa7..32876d8 100644
--- a/src/components/makepager/CommonFormTableView.vue
+++ b/src/components/makepager/CommonFormTableView.vue
@@ -153,6 +153,28 @@
</span>
</template>
<el-form-item
+ v-else-if="item.inputFloat"
+ label=" "
+ :prop="'tableData.' + scope.$index + '.' + item.prop"
+ :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+ >
+ <el-input-number
+ v-model="scope.row[item.prop]"
+ placeholder=""
+ :min="0"
+ :precision="2"
+ :disabled="!isOperate"
+ :controls="false"
+ size="mini"
+ style="width: 100%; margin-right: 5px"
+ @change="
+ (val) => {
+ commonInputChange(val, item.prop, scope.row, scope)
+ }
+ "
+ ></el-input-number>
+ </el-form-item>
+ <el-form-item
v-else-if="item.inputNumber && selectBox"
label=" "
:prop="'tableData.' + scope.$index + '.' + item.prop"
diff --git a/src/views/sales/salesDetails/index.vue b/src/views/sales/salesDetails/index.vue
index d57155c..719169e 100644
--- a/src/views/sales/salesDetails/index.vue
+++ b/src/views/sales/salesDetails/index.vue
@@ -47,6 +47,9 @@
<!-- <el-button @click="delClick(scope.row.id)" type="text" size="small">鍒犻櫎</el-button> -->
<el-button @click.stop="closeClick(scope.row)" type="text" size="small">鍏抽棴</el-button>
</template>
+ <template v-if="scope.row.status === 3||scope.row.status === 4">
+ <el-button @click.stop="shipmentsClick(scope.row)" type="text" size="small">鍙戣揣</el-button>
+ </template>
</template>
</el-table-column>
</template>
@@ -98,6 +101,16 @@
>
閲囪喘淇℃伅
</div>
+ <div
+ class="tab-pane"
+ @click="getTab(4)"
+ :style="{
+ background: TabsIndex == 4 ? '#2a78fb' : '#F1F3F8',
+ color: TabsIndex == 4 ? '#fff' : '#666'
+ }"
+ >
+ 濮斿淇℃伅
+ </div>
</div>
<div class="list-view">
<TableCommonView :loading="loading" :table-list="productTableList" @selTableCol="selBottomTableCol">
@@ -138,6 +151,12 @@
:edit-common-config="editConfig"
@addCollectionPlanClick="addCollectionPlanClick"
/>
+ <!-- 鍙戣揣 -->
+ <ShipmentsDialog
+ v-if="editShipmentsConfig.visible"
+ :edit-common-config="editShipmentsConfig"
+ @addCollectionPlanClick="addCollectionPlanClick"
+ />
<!-- 閿�鍞槑缁嗚鎯� -->
<DetailSpecification v-if="specificationDetail.visible" :specification-detail="specificationDetail" />
<!-- 瀹㈡埛璇︽儏 -->
@@ -149,6 +168,7 @@
<script>
import AddSalesDetailsDialog from "@/views/sales/salesDetails/AddSalesDetailsDialog"
+import ShipmentsDialog from "@/views/sales/salesDetails/shipmentsDialog"
import {
getSalesDetailsList,
getDelSalesDetails,
@@ -179,6 +199,7 @@
mixins: [pageMixin],
components: {
AddSalesDetailsDialog,
+ ShipmentsDialog,
DetailSpecification,
DetailClientManage: () => import("@/views/client/client/DetailClientManage"),
AddCollectionPlan
@@ -191,34 +212,46 @@
data() {
// 浜у搧淇℃伅
const productColumn = [
- { label: "浜у搧缂栧彿", prop: "number", default: true },
- { label: "浜у搧鍚嶇О", prop: "name" },
- { label: "鏁伴噺", prop: "amount" },
+ { label: "浜у搧缂栧彿", prop: "productId", default: true },
+ { label: "浜у搧鍚嶇О", prop: "productName" },
+ { label: "浜у搧瑙勬牸", prop: "specs" },
{ label: "鍗曚綅", prop: "unit" },
+ { label: "璁㈠崟鏁伴噺", prop: "amount" },
+ { label: "宸插畬鎴愭暟閲�", prop: "finishAmount" },
+ { label: "宸插彂璐ф暟閲�", prop: "deliveryAmount" },
+ { label: "閲囪喘鏁伴噺", prop: "purchaseAmount" },
+ { label: "鐢熶骇鏁伴噺", prop: "makeAmount" },
+ { label: "濮斿鏁伴噺", prop: "outsourcingAmount" },
{ label: "閿�鍞崟浠�", prop: "price", price: true },
{ label: "鎴愭湰鍗曚环", prop: "cost" },
{ label: "姣涘埄", prop: "profit" },
{ label: "姣涘埄鐜�(%)", prop: "margin" },
{ label: "浠风◣鍚堣", prop: "total", price: true }
]
- // 搴撳瓨淇℃伅
+ // 鍙戣揣淇℃伅
const inventoryColumn = [
+ { label: "鍑哄簱鍗�", prop: "invoice" },
+ { label: "浠撳簱", prop: "warehouse" },
{ label: "浜у搧缂栧彿", prop: "number", default: true },
{ label: "浜у搧鍚嶇О", prop: "name" },
+ { label: "浜у搧瑙勬牸", prop: "specs" },
+ { label: "浜у搧鍗曚綅", prop: "unit" },
+ { label: "鍙戣揣鏁伴噺", prop: "amount" },
{ label: "璁㈠崟鏁伴噺", prop: "orderAmount" },
- { label: "鍙戣揣鍗�", prop: "invoice" },
{ label: "鎵胯繍鍟�", prop: "carrier" },
{ label: "杩愬崟鍙�", prop: "waybill" },
- { label: "浠撳簱", prop: "warehouse" },
- { label: "鍦ㄥ簱鏁伴噺", prop: "amount" },
- { label: "鍙敤搴撳瓨", prop: "availableNumber" },
- { label: "鍗曚綅", prop: "unit" }
+ { label: "鍒涘缓鏃堕棿", prop: "warehouse" },
+ { label: "鐘舵��", prop: "status" },
]
// 鍒堕�犱俊鎭�
const makeColumn = [
{ label: "鐢熶骇璁㈠崟", prop: "orderId", default: true },
+ { label: "浜у搧缂栧彿", prop: "productId" },
{ label: "浜у搧鍚嶇О", prop: "productName" },
- { label: "璁㈠崟鐘舵��", prop: "orderStatus" },
+ { label: "浜у搧瑙勬牸", prop: "specs" },
+ { label: "浜у搧鍗曚綅", prop: "unit" },
+ { label: "璁㈠崟鏁伴噺", prop: "amount" },
+ { label: "瀹屾垚鏁伴噺", prop: "finishAmount" },
{ label: "宸ュ崟缂栧彿", prop: "workOrderId" },
{ label: "宸ュ崟鐘舵��", prop: "workOrderStatus" },
{ label: "璁″垝寮�濮嬫椂闂�", prop: "startTime" },
@@ -232,6 +265,36 @@
default: true
},
{
+ label: "浜у搧缂栧彿",
+ prop: "productId",
+ default: true
+ },
+ {
+ label: "浜у搧鍚嶇О",
+ prop: "productName",
+ default: true
+ },
+ {
+ label: "浜у搧瑙勬牸",
+ prop: "specs",
+ default: true
+ },
+ {
+ label: "浜у搧鍗曚綅",
+ prop: "unit",
+ default: true
+ },
+ {
+ label: "璁″垝閲囪喘閲�",
+ prop: "amount",
+ default: true
+ },
+ {
+ label: "瀹屾垚閲囪喘閲�",
+ prop: "finishAmount",
+ default: true
+ },
+ {
label: "閲囪喘鍗曞悕绉�",
prop: "purchaseName"
},
@@ -239,16 +302,74 @@
label: "渚涘簲鍟嗗悕绉�",
prop: "supplierName"
},
- {
- label: "閲囪喘鏁伴噺",
- prop: "amount"
- },
+ // {
+ // label: "閲囪喘鏁伴噺",
+ // prop: "amount"
+ // },
{
label: "鐘舵��",
prop: "status",
isCallMethod: true,
getCallMethod: this.getpurchaseStatus
}
+ ]
+ // 濮斿
+ const outsourceColumn = [
+ {
+ label: "濮斿璁㈠崟",
+ prop: "outsourcingId",
+ default: true
+ },
+ {
+ label: "浜у搧缂栧彿",
+ prop: "productId",
+ default: true
+ },
+ {
+ label: "浜у搧鍚嶇О",
+ prop: "productName",
+ default: true
+ },
+ {
+ label: "浜у搧瑙勬牸",
+ prop: "specs",
+ default: true
+ },
+ {
+ label: "浜у搧鍗曚綅",
+ prop: "unit",
+ default: true
+ },
+ {
+ label: "濮斿鏁伴噺",
+ prop: "amount",
+ default: true
+ },
+ {
+ label: "瀹屾垚鏁伴噺",
+ prop: "finishAmount",
+ default: true
+ },
+ {
+ label: "璁㈠崟鐘舵��",
+ prop: "status",
+ default: true
+ },
+ {
+ label: "濮斿渚涘簲鍟�",
+ prop: "supplierName",
+ default: true
+ },
+ {
+ label: "绛剧害鏃ユ湡",
+ prop: "startTime",
+ default: true
+ },
+ {
+ label: "浜や粯鏃ユ湡",
+ prop: "endTime",
+ default: true
+ },
]
return {
tableList: {},
@@ -257,6 +378,15 @@
visible: false,
title: "鏂板缓",
infomation: {}
+ },
+ editShipmentsConfig:{
+ visible: false,
+ title: "鏂板缓",
+ infomation: {
+ saleDetailID:null,
+ saleDetailNumber:null,
+
+ }
},
showSummary: {
show: false,
@@ -309,25 +439,29 @@
TabsIndex: "0",
productTableList: {},
productColumn: productColumn,
- showProductCol: ["浜у搧缂栧彿", "浜у搧鍚嶇О", "鏁伴噺", "鍗曚綅", "閿�鍞崟浠�", "鎴愭湰鍗曚环", "姣涘埄", "姣涘埄鐜�(%)", "浠风◣鍚堣"],
+ showProductCol: ["浜у搧缂栧彿", "浜у搧鍚嶇О","浜у搧瑙勬牸", "鍗曚綅", "璁㈠崟鏁伴噺", "宸插畬鎴愭暟閲�", "宸插彂璐ф暟閲�", "閲囪喘鏁伴噺", "鐢熶骇鏁伴噺", "濮斿鏁伴噺","閿�鍞崟浠�","鎴愭湰鍗曚环","姣涘埄","姣涘埄鐜�","浠风◣鍚堣"],
inventoryColumn: inventoryColumn,
showInventoryCol: [
+ "鍑哄簱鍗�",
+ "浠撳簱",
"浜у搧缂栧彿",
"浜у搧鍚嶇О",
+ "浜у搧瑙勬牸",
+ "浜у搧鍗曚綅",
+ "鍙戣揣鏁伴噺",
"璁㈠崟鏁伴噺",
- "鍙戣揣鍗�",
"鎵胯繍鍟�",
"杩愬崟鍙�",
- "浠撳簱",
- "鍦ㄥ簱鏁伴噺",
- "鍙敤搴撳瓨",
- "鍗曚綅"
+ "鍒涘缓鏃堕棿",
+ "鐘舵��"
],
makeColumn: makeColumn,
showMakeCol: ["鐢熶骇璁㈠崟", "浜у搧鍚嶇О", "璁㈠崟鐘舵��", "宸ュ崟缂栧彿", "宸ュ崟鐘舵��", "璁″垝寮�濮嬫椂闂�", "璁″垝缁撴潫鏃堕棿"],
// 閲囪喘
purchaseColumn: purchaseColumn,
- showPurchaseCol: ["閲囪喘鍗曞彿", "閲囪喘鍗曞悕绉�", "渚涘簲鍟嗗悕绉�", "閲囪喘鏁伴噺", "鐘舵��"],
+ outsourceColumn:outsourceColumn,
+ showPurchaseCol: ["閲囪喘鍗曞彿", "浜у搧缂栧彿", "浜у搧鍚嶇О", "浜у搧瑙勬牸", "浜у搧鍗曚綅","璁″垝閲囪喘閲�","瀹屾垚閲囪喘閲�","閲囪喘鍗曞悕绉�","渚涘簲鍟嗗悕绉�","鐘舵��"],
+ showOutsourceCol:["濮斿璁㈠崟", "浜у搧缂栧彿", "浜у搧鍚嶇О", "浜у搧瑙勬牸", "浜у搧鍗曚綅","濮斿鏁伴噺","瀹屾垚鏁伴噺","璁㈠崟鐘舵��","濮斿渚涘簲鍟�","绛剧害鏃ユ湡","浜や粯鏃ユ湡"],
selectRow: {},
projectList: [],
projectListShow: false,
@@ -486,7 +620,14 @@
// 鑾峰彇浜у搧/搴撳瓨淇℃伅
async getProductInventoryInfo(row) {
if (this.TabsIndex == 0 || row.status == 1) {
- this.productTableList.tableInfomation = row.products || []
+ this.getProductOrderInfo(row)
+ // row.products.map((item)=>{
+ // item.purchaseAmount=item.purchaseFinishAmount+"/"+item.purchaseAmount
+ // item.makeAmount=item.makeFinishAmount+"/"+item.makeAmount
+ // item.outsourcingAmount=item.outsourcingFinishAmount+"/"+item.outsourcingAmount
+
+ // })
+ // this.productTableList.tableInfomation = row.products || []
} else {
if (row.number) {
this.loading = true
@@ -508,10 +649,23 @@
this.loading = true
await getProductOrderInfo(number)
.then((res) => {
- if (this.TabsIndex == 3) {
- this.productTableList.tableInfomation = res.data && res.data.purchaseInfo ? res.data.purchaseInfo : []
- } else {
+ if (this.TabsIndex == 0) {
+ if(res&&res.data){
+ res.data.productInfo.map((item=>{
+ item.purchaseAmount=item.purchaseFinishAmount+"/"+item.purchaseAmount
+ item.makeAmount=item.makeFinishAmount+"/"+item.makeAmount
+ item.outsourcingAmount=item.outsourcingFinishAmount+"/"+item.outsourcingAmount
+ }))
+ }
+ this.productTableList.tableInfomation = res.data && res.data.productInfo ? res.data.productInfo : []
+ } else if (this.TabsIndex == 1) {
+ this.productTableList.tableInfomation = res.data ? res.data : []
+ } else if (this.TabsIndex == 2) {
this.productTableList.tableInfomation = res.data && res.data.makeInfo ? res.data.makeInfo : []
+ } else if (this.TabsIndex == 3) {
+ this.productTableList.tableInfomation = res.data && res.data.purchaseInfo ? res.data.purchaseInfo : []
+ } else if(this.TabsIndex == 4) {
+ this.productTableList.tableInfomation = res.data && res.data.outsourcingInfo ? res.data.outsourcingInfo : []
}
this.loading = false
})
@@ -574,6 +728,13 @@
}
})
}
+ },
+ // 鍙戣揣
+ shipmentsClick(row){
+ this.editShipmentsConfig.visible=true
+ this.editShipmentsConfig.infomation.saleDetailID=row.id
+ this.editShipmentsConfig.infomation.saleDetailNumber=row.number
+ this.editShipmentsConfig.infomation.projectId=row.projectId
},
// 鍏抽棴
closeClick(row) {
@@ -653,12 +814,12 @@
this.TabsIndex = tab
if (this.TabsIndex == 0) {
// 浜у搧淇℃伅鍒楄〃
- this.tableBottomColumn = this.productColumn
- this.showBottomCol = this.showProductCol
+ this.tableBottomColumn = this.productColumn // 琛ㄥご
+ this.showBottomCol = this.showProductCol // 鍔ㄦ�佽〃澶�
this.setBottomList()
- this.getProductInventoryInfo(this.selectRow)
+ this.getProductInventoryInfo(this.selectRow.number)
} else if (this.TabsIndex == 1) {
- // 搴撳瓨淇℃伅鍒楄〃
+ // 鍙戣揣淇℃伅鍒楄〃
this.tableBottomColumn = this.inventoryColumn
this.showBottomCol = this.showInventoryCol
this.setBottomList()
@@ -679,17 +840,23 @@
this.showBottomCol = this.showPurchaseCol
this.setBottomList()
this.getProductOrderInfo(this.selectRow.number)
+ }if (this.TabsIndex == 4) {
+ // 濮斿淇℃伅鍒楄〃
+ this.tableBottomColumn = this.outsourceColumn
+ this.showBottomCol = this.showOutsourceCol
+ this.setBottomList()
+ this.getProductOrderInfo(this.selectRow.number)
}
},
// 鐘舵��
getStatus(val) {
- return val === 1 ? "寰呯‘璁�" : val === 2 ? "寰呭嚭搴�" : val === 3 ? "鍑哄簱瀹屾垚" : val === 4 ? "宸插叧闂�" : "--"
+ return val === 1 ? "寰呯‘璁�" : val === 2 ? "寰呭嚭搴�" : val === 3 ? "澶囪揣涓�" : val === 4 ? "寰呭嚭搴�" : val === 5 ? "鍑哄簱瀹屾垚" : val=== 6 ? "宸插叧闂�": "--"
},
// top 琛岀偣鍑�
tableRowClick(row) {
this.selectRow = row
if (this.TabsIndex == 0) {
- this.getProductInventoryInfo(this.selectRow)
+ this.getProductInventoryInfo(this.selectRow.number)
} else if (this.TabsIndex == 1) {
if (this.selectRow.status == 1) {
this.productTableList.tableInfomation = []
diff --git a/src/views/sales/salesDetails/shipmentsDialog.vue b/src/views/sales/salesDetails/shipmentsDialog.vue
new file mode 100644
index 0000000..99cadd4
--- /dev/null
+++ b/src/views/sales/salesDetails/shipmentsDialog.vue
@@ -0,0 +1,652 @@
+<template>
+ <div class="add-sales-details">
+ <el-dialog
+ :title="'鍙戣揣鍗�'"
+ :visible.sync="editConfig.visible"
+ :width="dialogWidth"
+ :before-close="handleClose"
+ append-to-body
+ custom-class="iframe-dialog"
+ >
+ <el-form
+ ref="form"
+ :model="editConfig.infomation"
+ :rules="rules"
+ label-position="right"
+ label-width="10%"
+ size="mini"
+ style="height: 60vh; overflow-x: hidden"
+ >
+ <!-- 淇℃伅 -->
+ <div class="basic-info">
+ <!-- 浜や粯淇℃伅 -->
+ <div class="basic-info-view">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item width="50%" label="浜や粯绫诲瀷" prop="addressee">
+ <el-radio-group v-model="shipmentsType" @change="handleRadioChange">
+ <el-radio :label="1">涓�娆″彂璐�</el-radio>
+ <el-radio :label="2">澶氭鍙戣揣</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍏宠仈椤圭洰" prop="projectId">
+ <el-select
+ v-model="editConfig.infomation.projectId"
+ placeholder="璇烽�夋嫨"
+ size="mini"
+ :disabled="true"
+ >
+ <el-option
+ v-for="item in projectList"
+ :key="item.projectId"
+ :label="item.projectName"
+ :value="item.projectId"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="24">
+ <el-form-item label="鍙戣揣浠撳簱" prop="addressee">
+ <el-select v-model="value" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col> -->
+ </el-row>
+ </div>
+ <div class="product-view">
+ <CommonFormTableView
+ ref="commonFormTableView"
+ :detail-enter="isView ? true : false"
+ :selectBox="false"
+ :addTypeIdMultiple="true"
+ pageName="quotation"
+ :detailEnter="true"
+ :isOperate="
+ (autoCodeHeadersObj.Bjd == 'yes' && editConfig.infomation.quotation_number) ||
+ autoCodeHeadersObj.Bjd != 'yes'
+ ? true
+ : false
+ "
+ :quotationNumber="autoCodeHeadersObj.Bjd == 'yes' ? editConfig.infomation.quotation_number : ''"
+ :product-table-list="productTableList"
+ @inputContent="inputContent"
+ @addProductClick="addProductClick"
+ @getSelectArray="getSelectArray"
+ @emptyProductClick="emptyProductClick"
+ @clearupProduct="clearupProduct"
+ ></CommonFormTableView>
+ </div>
+ <p class="tips" v-if="completely"><i class="el-icon-warning-outline">褰撳墠浠撳簱鑳芥弧瓒冲彂璐ч渶姹傦紝鐩存帴鍙戣揣鍚�</i></p>
+ <p class="tips" v-if="satisfyPartly"><i class="el-icon-warning-outline"></i>褰撳墠浠撳簱鍙兘閮ㄥ垎婊¤冻鍙戣揣闇�姹傦紝鏄惁纭鍙戣揣</p>
+ <p class="tips" v-if="dissatisfy"><i class="el-icon-warning-outline"></i>褰撳墠浠撳簱搴撳瓨涓嶈冻锛屼笉鑳藉畬鎴愪竴娆″彂璐э紝璇烽�夋嫨鍏朵粬浠撳簱鍚�</p>
+ </div>
+ </el-form>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" size="small" :disabled="dissatisfy" @click="saveClick('form')">纭畾鍙戣揣</el-button>
+ <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import CommonFormTableView from "@/components/makepager/CommonFormTableView"
+import { getAllData } from "@/api/client/client"
+import { getProjectList,getDeliveryPrepareInfo,confirmOutput } from "@/api/sales/salesDetails"
+import codeMixin from "@/components/makepager/mixin/codeMixin"
+import { getSaleChanceList } from "@/api/sales/salesOpportunity"
+import { getDataByType } from "@/api/data"
+import { mapActions } from "vuex"
+import { getQuotationList } from "@/api/sales/quotation"
+
+export default {
+ name: "ShipmentsDialog",
+ mixins: [codeMixin],
+ props: {
+ editCommonConfig: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ title: "鏂板缓",
+ infomation: {}
+ }
+ }
+ }
+ },
+ components: { CommonFormTableView },
+ computed: {
+ clientList() {
+ return this.$store.state.getClientName.clientList
+ },
+ },
+ data() {
+ return {
+ dialogWidth: "60%",
+ editConfig: this.editCommonConfig,
+ rules: {
+ client_name: [{ required: true, message: "璇烽�夋嫨瀹㈡埛鍚嶇О", trigger: "change" }],
+ },
+ memberOptions: [],
+ selSourceOrderOptions: [],
+ wechatOrderStatusOptions: [], // 寰俊璁㈠崟鐘舵��
+ currencyOptions: [{ id: 1, name: "浜烘皯甯�" }], // 甯佺
+ approvalWorkflowOptions: [], // 瀹℃壒娴佺▼
+ productTableList: {},
+ showSummary: {
+ show: true,
+ total: true,
+ sumProp: ["Amount", "total"],
+ mergeNumber: 7
+ },
+ editSelectClientConfig: {
+ editVisible: false,
+ title: "",
+ infomation: {}
+ },
+ editSelectChanceConfig: {
+ editVisible: false,
+ title: "",
+ infomation: {},
+ search_map: {}
+ },
+ editSelCommonConfig: {
+ editVisible: false,
+ title: "",
+ infomation: {}
+ },
+ clientId: this.editCommonConfig.infomation.client_id,
+ saleChanceId: this.editCommonConfig.infomation.sale_chance_id,
+ subbillId: this.editCommonConfig.infomation.subbillId,
+ productId: 1,
+ isNoProduct: true,
+ addCollectionConfig: {
+ visible: false,
+ title: "鏂板缓",
+ infomation: {}
+ },
+ amountTotal: 0,
+ isNameChanceEdit: false,
+ isAddQuatation: true,
+ // 浜や粯绫诲瀷
+ deliveryTypeList: getDataByType("deliveryType"),
+ projectList: [],
+ quotationList: [],
+ quotationId: this.editCommonConfig.infomation.quotationId,
+ tableData: [],
+ isView: this.editCommonConfig.title === "鏌ョ湅",
+ thatMember: {},
+ pickerOptions: {
+ disabledDate(time) {
+ return time.getTime() < Date.now() - 8.64e7
+ }
+ },
+ pickerOptionsBefore: {
+ disabledDate(time) {
+ return time.getTime() > Date.now()
+ }
+ },
+ shipmentsType:1,
+ options: [{
+ value: '1',
+ label: '浠撳簱1--搴撳瓨涓嶈冻鐨勬儏鍐�'
+ }, {
+ value: '2',
+ label: '浠撳簱1--搴撳瓨鍏呰冻鐨勬儏鍐�'
+ }],
+ value:"",
+ dissatisfy:false, // 涓�娆″彂璐�-涓嶈冻
+ completely:false, // 澶氭鍙戣揣锛屽厖瓒�
+ satisfyPartly:false, //澶氭鍙戣揣锛岄儴鍒嗘弧瓒�
+ }
+ },
+ mounted(){
+ this.getSaleChanceList()
+ this.getQuotation()
+ },
+ created() {
+ this.$store.dispatch("geClient")
+ this.setTableForm()
+ this.getCommonData()
+ this.formInfo()
+ this.getUseSystemSet({ modeType: "xsmx" })
+ this.getProjectList()
+ this.getDeliveryPrepareInfo({
+ saleDetailID: this.editCommonConfig.infomation.saleDetailID,
+ saleDetailNumber: this.editCommonConfig.infomation.saleDetailNumber
+ })
+ },
+ watch: {
+ "editClientManageConfig.visible"(val) {
+ if (val) {
+ this.formInfo()
+ }
+ }
+ },
+ methods: {
+ ...mapActions(["getChanceFilter", "getSubunitFliter"]),
+ formInfo() {
+ this.objCode.type = "閿�鍞槑缁嗙紪鐮�"
+ this.objCode.codeStandID = ""
+ if (this.editConfig.infomation.codeStandID) {
+ this.objCode.codeStandID = this.editConfig.infomation.codeStandID
+ }
+ this.getRCodeStandardList()
+ },
+ getCommonData() {
+ getAllData()
+ .then((res) => {
+ this.memberOptions = res.data.member
+ if (this.editConfig.title === "鏂板缓") {
+ let username = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*=\s*([^;]*).*$)|^.*$/, "$1")
+ this.memberOptions.map((item) => {
+ if (item.username == username) {
+ this.$set(this.editConfig.infomation, "memberId", item.id)
+ }
+ })
+ }
+ })
+ .catch((err) => {
+ console.log(err)
+ })
+ },
+ dataProcess() {
+ this.saleChancelist.map((item) => {
+ if (this.saleChanceId === item.id) {
+ this.editConfig.infomation.sale_chance_name = item.name
+ }
+ })
+ },
+ // 淇濆瓨
+ saveClick(formName) {
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ const params = this.saveParams()
+ confirmOutput(params).then((res)=>{
+ console.log(res,"res")
+ if(res&&res.code===200){
+ this.$message.success("鍙戣揣鎴愬姛!")
+ this.$parent.getData()
+ this.editConfig.visible=false
+ }
+ })
+ }
+ })
+ },
+ saveParams() {
+ let params = {
+ products:[],
+ saleDetailNumber:this.editCommonConfig.infomation.saleDetailNumber
+ }
+ this.productTableList.tableData.map((item)=>{
+ let obj={
+ number:item.number,
+ outputAmount:item.outputAmount||''
+ }
+ params.products.push(obj)
+ })
+ return params
+ },
+
+ handleClose() {
+ this.editConfig.visible = false
+ },
+ // 鑾峰彇鎶ヤ环鍗�
+ getQuotation(id, value) {
+ let params={
+ page: 0,
+ pageSize: 0,
+ }
+ if(id){
+ params.search_map={
+ sale_chance_id: id
+ }
+ }
+ getQuotationList(params).then((res) => {
+ if (res.code == 200) {
+ console.log(res)
+ this.quotationList = res.data.list
+ this.count = res.data.count
+ }
+ })
+ },
+ // 閫夋嫨瀹㈡埛鐩稿叧鏂规硶
+ querySearchAsync(queryString, cb, value) {
+ var restaurants = []
+ if (value === "client") {
+ restaurants = this.clientList
+ console.log(restaurants, "瀹㈡埛鍗�")
+ } else if (value === "chance") {
+ restaurants = this.saleChancelist
+ } else if (value === "subbill") {
+ restaurants = this.subOrderList
+ } else if (value === "quotation") {
+ restaurants = this.quotationList
+ }
+ var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants
+ cb(results)
+ },
+ createStateFilter(queryString, value) {
+ return (state) => {
+ if (value === "subbill" || value === "quotation") {
+ return state.number.toLowerCase().indexOf(queryString.toLowerCase()) === 0
+ } else {
+ return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0
+ }
+ }
+ },
+ // 閿�鍞満浼氬垪琛�
+ async getSaleChanceList(item) {
+ let params={}
+ if(item){
+ params={
+ page: 0,
+ pageSize: 0,
+ }
+ params.search_map={
+ client_id: item.id
+ }
+ }else{
+ params={
+ page: 0,
+ pageSize: 0,
+ }
+ }
+ await getSaleChanceList(params).then((res) => {
+ console.log(res)
+ this.saleChancelist = res.data.list
+ })
+ },
+ selClientClick(value) {
+ if (value === "client") {
+ this.editSelectClientConfig.editVisible = true
+ } else if (value === "chance") {
+ if (this.clientId) {
+ this.editSelectChanceConfig.clientId = this.clientId
+ }
+ this.editSelectChanceConfig.editVisible = true
+ } else if (value === "subbill") {
+ this.editSelCommonConfig.title = "閿�鍞瓙鍗�"
+ this.editSelCommonConfig.editVisible = true
+ this.editSelCommonConfig.clientId = this.clientId
+ } else if (value === "quotation") {
+ this.editSelCommonConfig.title = "鎶ヤ环鍗�"
+ if (this.saleChanceId && this.clientId) {
+ this.editSelCommonConfig.clientId = this.clientId
+ // 姝e悜閫夋嫨瀹㈡埛 閿�鍞満浼� 鎶ヤ环鍗�
+ this.editSelCommonConfig.isRequest = false
+ this.editSelCommonConfig.count = this.count
+ this.editSelCommonConfig.tableInfomation = [...this.quotationList]
+ } else {
+ // 鍙嶅悜閫夋嫨
+ this.editSelCommonConfig.isRequest = true
+ }
+ this.editSelCommonConfig.editVisible = true
+ }
+ },
+ setTableForm() {
+ if (this.editConfig.title === "鏂板缓" || this.editConfig.infomation.products.length === 0) {
+ this.tableData = [
+ {
+ productId: this.productId,
+ id: 0,
+ amount: 0,
+ desc: "",
+ name: "",
+ number: "",
+ price: 0,
+ cost: "",
+ profit: "",
+ margin: "",
+ total: 0,
+ unit: ""
+ }
+ ]
+ } else {
+ this.tableData = this.editConfig.infomation.products
+ this.tableData.map((item, index) => {
+ item.productId = index + 1
+ })
+ this.getQuotation(this.editConfig.infomation.saleChanceId, "鍏ㄩ儴浜у搧")
+ }
+ this.productTableList = {
+ tableData: this.tableData,
+ isReturn: true,
+ tableColumn: [
+ { label: "浜у搧缂栧彿", prop: "number" },
+ { label: "浜у搧鍚嶇О", prop: "name", min: 110 },
+ { label: "璁㈠崟鏁伴噺", prop: "specs" },
+ { label: "璁㈠崟瀹屾垚鏁伴噺", prop: "type" },
+ // { label: "鍙敤搴撳瓨", prop: "unit" },
+ ]
+ }
+ },
+ // 浜у搧鍒楄〃杈撳叆
+ inputContent(val, prop, row) {
+ // this.productId = row.productId
+ this.tableData.map((item) => {
+ if (item.number === row.number) {
+ item[prop] = val
+ }
+ })
+ },
+ // 浜у搧鏂板
+ addProductClick() {
+
+ },
+ // 鏂板鏂瑰紡淇敼
+ getSelectArray(val, index) {
+ if (this.tableData.length == 1 && this.tableData[0].number.length == 0) {
+ this.tableData = []
+ }
+ if (index < this.tableData.length) {
+ this.tableData.splice(index, 1)
+ val.map((item, ind) => {
+ this.tableData.splice(index + ind, 0, item)
+ })
+ } else {
+ this.tableData = this.tableData.concat(val)
+ }
+ this.productTableList.tableData = this.tableData
+ this.showSummary.show = true
+ },
+ // 浜у搧娓呯┖
+ emptyProductClick() {
+ this.productId = 1
+ this.tableData = [
+ {
+ productId: this.productId,
+ id: 0,
+ amount: 0,
+ desc: "",
+ name: "",
+ number: "",
+ price: 0,
+ cost: "",
+ profit: "",
+ margin: "",
+ total: 0,
+ unit: ""
+ }
+ ]
+ this.productTableList.tableData = this.tableData
+ },
+ clearupProduct(data) {
+ this.tableData = data
+ this.productTableList.tableData = this.tableData
+ },
+ // 鑾峰彇椤圭洰鍒楄〃
+ async getProjectList() {
+ await getProjectList({
+ page: 1,
+ pageSize: 100
+ }).then((res) => {
+ this.projectList = res.data
+ })
+ },
+ // 閿�鍞礋璐d汉鑷畾涔夋牎楠岃鍒�
+ validateMemberId(rule, value, callback) {
+ if (this.editConfig.infomation?.memberId > 0) {
+ callback()
+ } else {
+ callback(new Error("璇烽�夋嫨閿�鍞礋璐d汉"))
+ }
+ },
+ // 閫夋嫨鍙戣揣鏂瑰紡
+ handleRadioChange(value) {
+ if(value===1){
+ this.completely=false
+ this.satisfyPartly=false
+ this.productTableList.tableColumn=[
+ { label: "浜у搧缂栧彿", prop: "number" },
+ { label: "浜у搧鍚嶇О", prop: "name", min: 110 },
+ { label: "璁㈠崟鏁伴噺", prop: "orderAmount" },
+ { label: "璁㈠崟瀹屾垚鏁伴噺", prop: "finishAmount" },
+ { label: "鍙敤搴撳瓨", prop: "availableAmount" },
+ ]
+ this.dissatisfy=false
+ let portion=0
+ this.productTableList.tableData.map((item)=>{
+ if(item.availableAmount-item.leftAmount<0){
+ this.dissatisfy=true
+ return this.dissatisfy
+ }else{
+ portion++
+ }
+ })
+ if(portion===this.productTableList.tableData.length){
+ this.dissatisfy=false
+ this.completely=false
+ this.completely=true
+ }
+ }else if(value===2){
+ this.dissatisfy=false
+ this.productTableList.tableColumn= [
+ { label: "浜у搧缂栧彿", prop: "number" },
+ { label: "浜у搧鍚嶇О", prop: "name", min: 110 },
+ { label: "璁㈠崟鏁伴噺", prop: "orderAmount" },
+ { label: "璁㈠崟瀹屾垚鏁伴噺", prop: "finishAmount" },
+ { label: "鍙敤搴撳瓨", prop: "availableAmount" },
+ { label: "鏈彂璐ф暟閲�", prop: "leftAmount", },
+ { label: "鏈鍙戣揣鏁伴噺", prop: "outputAmount", inputFloat: true,isRequird: true },
+ { label: "鍓╀綑鍙戣揣鏁伴噺", prop: "availableAmount",},
+ ]
+ let portion=0
+ this.productTableList.tableData.map((item)=>{
+ if(item.availableAmount-item.leftAmount>=0){
+ portion++
+ }
+ })
+ if(0<portion<this.productTableList.tableData.length){
+ this.satisfyPartly=true
+ }else if(portion===this.productTableList.tableData.length){
+ this.completely=true
+ this.dissatisfy=fasle
+ }else if(portion===0){
+ this.dissatisfy=true
+ this.completely=false
+
+ }
+ }
+ },
+ // 浜у搧鍏ュ簱淇℃伅
+ async getDeliveryPrepareInfo(params){
+ await getDeliveryPrepareInfo(params).then((res)=>{
+ if(res&&res.code===200){
+ this.productTableList.tableData=res.data||[]
+ if(this.shipmentsType===1){
+ this.productTableList.tableData.map((item)=>{
+ if(item.availableAmount-item.leftAmount<0){
+ this.dissatisfy=true
+ return this.dissatisfy
+ }
+ })
+ }
+ }
+ })
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+::v-deep {
+ .iframe-dialog .el-dialog__body {
+ .el-form {
+ .el-form-item {
+ width: 100%;
+ }
+ }
+ .basic-info {
+ .basic-info-title {
+ background-color: #f4f8fe;
+ padding-left: 10px;
+ font-size: 15px;
+ font-weight: bold;
+ color: #666;
+ height: 42px;
+ line-height: 42px;
+ }
+ .basic-info-view {
+ margin-top: 10px;
+ padding-right: 40px;
+ .custom-name,
+ .common-select {
+ display: flex;
+ .common-select-sel {
+ width: 270px;
+ }
+ .common-select-btn {
+ margin-left: 5px;
+ font-size: 16px;
+ cursor: pointer;
+ }
+ }
+ }
+ .annex-view {
+ display: flex;
+ color: #6166d3;
+ .setFormat {
+ margin-left: 10px;
+ }
+ }
+ .tips{
+ font-size: 16px;
+ color: #FF9C49;
+ display: flex;
+ margin-left: 20px;
+ i{
+ font-size: 24px;
+ margin-right: 10px;
+ }
+ }
+ }
+ .unflod-collapse {
+ display: flex;
+ height: 30px;
+ justify-content: center;
+ align-items: center;
+ color: #6166d3;
+ }
+ .dialog-footer {
+ background-color: #f5f5f5;
+ height: 55px;
+ line-height: 55px;
+ }
+ .el-input__inner {
+ text-align: left;
+ }
+ }
+}
+</style>
--
Gitblit v1.8.0