From 96fdf32bd5612b6c16dcbcc8352a9f54adcc8e7e Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期五, 18 八月 2023 16:26:59 +0800 Subject: [PATCH] 產品相關及bug修復 --- src/views/service/serviceContract/DetailServiceContract.vue | 32 src/views/service/clientServiceOrder/DetailClientServiceOrder.vue | 2 src/views/sales/salesDetails/AddSalesDetailsDialog.vue | 164 ++-- src/components/makepager/TableCommonView.vue | 10 src/views/sales/salesDetails/DetailSpecification.vue | 32 src/views/other/payment/receipt/index.vue | 10 src/views/client/followupRecords/index.vue | 2 src/views/sales/salesReturn/DetailReturn.vue | 32 src/views/sales/subOrder/DetailSubOrder.vue | 32 src/views/other/payment/collectionPlan/AddCollectionPlan.vue | 195 ++--- src/views/client/contacts/DetailContacts.vue | 2 src/views/sales/salesDetails/index.vue | 21 src/views/service/serviceContract/AddServiceContractDialog.vue | 134 ++-- src/views/sales/refundForm/DetailRefundForm.vue | 38 src/views/client/client/DetailClientManage.vue | 12 src/views/sales/generatePlan/DetailGeneratePlan.vue | 6 src/components/makepager/CommonFormTableView.vue | 239 ++++++ src/views/other/commonDialog/SelectCommonDialog.vue | 5 src/views/sales/contractManage/DetailContractManage.vue | 6 src/views/sales/masterOrder/AddMasterOrderDialog.vue | 106 +- src/views/sales/salesReturn/AddSalesReturnDialog.vue | 171 ++++- src/views/sales/refundForm/AddRefundFormDialog.vue | 161 +++- src/views/service/serviceFollowup/DetailServiceFollowup.vue | 6 src/views/client/salesLead/DetailSalesLead.vue | 56 + src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue | 12 src/views/sales/quotation/AddQuotationDialog.vue | 116 +- src/views/sales/quotation/DetailQuotation.vue | 32 src/views/sales/subOrder/AddSubOrderDialog.vue | 205 ++---- src/views/other/payment/collectionPlan/index.vue | 10 src/views/sales/contractManage/AddContractManageDialog.vue | 4 src/views/sales/quotation/index.vue | 6 31 files changed, 1,009 insertions(+), 850 deletions(-) diff --git a/src/components/makepager/CommonFormTableView.vue b/src/components/makepager/CommonFormTableView.vue index 128caa4..b955bf0 100644 --- a/src/components/makepager/CommonFormTableView.vue +++ b/src/components/makepager/CommonFormTableView.vue @@ -1,15 +1,15 @@ <template> <div class="page-view"> - <el-form ref="form" :model="productTableList" :show-message="false" label-position="right"> + <el-form ref="form" :model="tableList" :show-message="false" label-position="right"> <el-table - :data="productTableList.tableData" + :data="tableList.tableData" :show-summary="showSummary.show" :summary-method="getSummaries" :span-method="arraySpanMethod" style="width: 100%" > <el-table-column - v-for="(item, i) in productTableList.tableColumn" + v-for="(item, i) in tableList.tableColumn" :key="i" :prop="item.prop" :label="item.label" @@ -43,6 +43,32 @@ ></el-input> </el-form-item> <el-form-item + v-else-if="item.productName" + label=" " + :prop="'tableData.' + scope.$index + '.' + item.prop" + :rules="[{ required: item.isRequird ? true : false, message: '浜у搧鍚嶇О涓嶈兘涓虹┖' }]" + > + <div class="custom-name"> + <el-autocomplete + v-model="scope.row[item.prop]" + :fetch-suggestions="querySearchAsync" + value-key="name" + size="mini" + @select=" + (val) => { + handleSelectClient(val, item.prop, scope.row) + } + " + ></el-autocomplete> + <div class="common-select-btn" @click="selClientClick(scope.row, item.prop)"> + <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> + </div> + <div class="common-select-btn" @click="clearupClient(scope.row)"> + <i class="el-icon-edit-outline" title="娓呴櫎"></i> + </div> + </div> + </el-form-item> + <el-form-item v-else-if="item.date" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop" @@ -51,6 +77,47 @@ <!-- <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input> --> <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px"> </el-date-picker> + </el-form-item> + <el-form-item + v-else-if="item.inputNumber" + 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" + :controls="false" + size="mini" + style="width: 100%; margin-right: 5px" + @change=" + (val) => { + commonInputChange(val, item.prop, scope.row) + } + " + ></el-input-number> + </el-form-item> + <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" + :controls="false" + size="mini" + style="width: 100%; margin-right: 5px" + @change=" + (val) => { + commonInputChange(val, item.prop, scope.row) + } + " + ></el-input-number> </el-form-item> <span v-else>{{ scope.row[item.prop] }}</span> </template> @@ -77,12 +144,21 @@ </el-col> </el-row> </div> + <!-- 鍚堝悓璁㈠崟 --> + <SelectCommonDialog + v-if="editSelCommonConfig.editVisible" + :edit-common-config="editSelCommonConfig" + @selClient="selClient" + /> </div> </template> <script> +import { getProductList } from "@/api/common/other" +import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" export default { name: "CommmonFormTableView", + components: { SelectCommonDialog }, props: { detailEnter: { type: Boolean, @@ -115,11 +191,39 @@ }, data() { return { - total: 0 + total: 0, + productList: [], + tableList: [], + editSelCommonConfig: { + editVisible: false, + title: "", + infomation: {} + }, + productIndex: 0 } + }, + created() { + this.getProductList() + this.tableList = this.productTableList }, computed: {}, methods: { + // 浜у搧鍚嶇О + async getProductList() { + await getProductList({ + productName: "", + productNumber: "", + page: 1, + pageSize: 5 + }).then((res) => { + console.log(res.data) + if (res.data.code === 200) { + if (res.data.data.data && res.data.data.data.length > 0) { + this.productList = res.data.data.data + } + } + }) + }, handleReserve(row) { return row._id ? row._id : row.id }, @@ -144,32 +248,41 @@ }, // 鍚堣 getSummaries(param) { - if (this.showSummary.show) { - const { columns, data } = param - const sums = [] - columns.forEach((column, index) => { - if (index === this.showSummary.mergeNumber) { - sums[index] = "灏忚" - } - const values = data.map((item) => Number(item[column.property])) - // if (column.property === this.showSummary.sumProp) { - if (this.showSummary.sumProp.includes(column.property)) { - sums[index] = values.reduce((prev, curr) => { - const value = Number(curr) - if (!isNaN(value)) { - return this.number_format(prev + curr, 2, ".", ",") - } else { - return this.number_format(prev, 2, ".", ",") - } - }, 0) - if (column.property === "total") { - this.total = sums[index] + const { columns, data } = param + const sums = [] + columns.forEach((column, index) => { + // // 鏇存敼琛屽悕绉� + if (index === this.showSummary.mergeNumber) { + sums[index] = "灏忚:" + return + } + const title = ["#"] + // 鍘婚櫎鏌愪簺涓嶉渶瑕佽绠楃殑鏁版嵁 + if (title.includes(column.label)) { + sums[index] = "" + return + } + // 鎶婂綋鍓嶈〃鏍兼暟鎹腑鍚屼釜鍒嗙被鐨勬暟鎹敹闆嗚捣鏉� + const values = data.map((item) => Number(item[column.property])) + // 杩囨护鎺� + if (!values.every((value) => Number.isNaN(value))) { + sums[index] = ` ${values.reduce((prev, curr) => { + const value = Number(curr) + if (!Number.isNaN(value)) { + const num = prev + curr + return Number(num.toFixed(2)) + } else { + return Number(prev.toFixed(2)) } - sums[index] - } - }) - return sums - } + }, 0)}` + } else { + sums[index] = "" + } + if (column.property === "total") { + this.total = sums[index] + } + }) + return sums }, // 鏁板瓧鎹㈣涓洪噾棰濇樉绀烘牸寮� number_format(number, decimals, dec_point, thousands_sep) { @@ -223,6 +336,63 @@ this.$emit("recalculateProductClick") }) .catch(() => {}) + }, + // 閫夋嫨浜у搧鍚嶇О鐩稿叧鏂规硶 + querySearchAsync(queryString, cb) { + var restaurants = this.productList + var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants + cb(results) + }, + createStateFilter(queryString) { + return (state) => { + return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + } + }, + handleSelectClient(item, prop, row) { + // this.clientId = item.id + console.log(item, prop, row) + this.tableList.tableData.map((ite) => { + if (ite.name === item.name) { + ite.amount = item.amount || 1 + ite.number = item.number + ite.price = item.price + ite.total = item.amount ? item.amount * item.price : 1 * item.price + } + }) + }, + selClientClick(row, prop) { + console.log(row, prop) + this.productIndex = row.productId - 1 + this.editSelCommonConfig.title = "浜у搧鍚嶇О" + this.editSelCommonConfig.editVisible = true + }, + selClient(item) { + console.log(item) + console.log(this.tableList.tableData) + // this.editConfig.infomation.client_name = row.name + this.tableList.tableData.map((ite, index) => { + if (index === this.productIndex) { + ite.name = item.name + ite.amount = item.amount || 1 + ite.number = item.number + ite.price = item.price + ite.total = item.amount ? item.amount * item.price : 1 * item.price + } + }) + }, + // 娓呴櫎宸查�夋嫨鐢ㄦ埛 + clearupClient(row) { + this.productIndex = row.productId - 1 + this.tableList.tableData.map((ite, index) => { + if (index === this.productIndex) { + ite.name = "" + ite.amount = 1 + ite.number = "" + ite.price = 0 + ite.total = 0 + } + }) + this.$emit("clearupProduct", this.tableList.tableData) } } } @@ -233,6 +403,14 @@ .page-view { .el-form-item { margin-bottom: 0; + .custom-name { + display: flex; + .common-select-btn { + margin-left: 5px; + font-size: 18px; + cursor: pointer; + } + } } } ::v-deep { @@ -251,5 +429,8 @@ .el-table th.el-table__cell > .cell { padding: 0 5px; } + .el-input__inner { + text-align: left; + } } </style> diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index 5abfbd8..e390ee3 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -92,6 +92,16 @@ </ul> <div v-else class="no-product">{{ "--" }}</div> </div> + <div v-else-if="item.isProductCommon" class="product-view"> + <ul v-if="scope.row.products && scope.row.products.length > 0"> + <li v-for="(item, index) in scope.row.products" :key="index"> + <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'"> + {{ item.prop === "price" ? item.price : item.total }} + </div> + </li> + </ul> + <div v-else class="no-product">{{ "--" }}</div> + </div> <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span> </template> </el-table-column> diff --git a/src/views/client/client/DetailClientManage.vue b/src/views/client/client/DetailClientManage.vue index ac60d6b..d71dab4 100644 --- a/src/views/client/client/DetailClientManage.vue +++ b/src/views/client/client/DetailClientManage.vue @@ -306,11 +306,11 @@ leftStr: "鎵�灞炲叕娴�", leftValue: "", rightStr: "涓嬫鍥炶鏃ユ湡", - rightValue: this.processTime(item.next_visit_time) + rightValue: item.next_visit_time }, { leftStr: "鏈�鏅氭湇鍔″埌鏈熸棩", - leftValue: this.processTime(item.latest_service_time), + leftValue: item.latest_service_time, rightStr: "鍒涘缓鏃堕棿", rightValue: "" }, @@ -364,7 +364,7 @@ }, { leftStr: "娉ㄥ唽鏃堕棿", - leftValue: this.processTime(item.registration_time), + leftValue: item.registration_time, rightStr: "娉ㄥ唽璧勯噾", rightValue: item.RegisteredCapital.name }, @@ -421,12 +421,6 @@ } else if (value === "annex") { this.isAnnexExpand = !this.isAnnexExpand } - }, - // 澶勭悊鏃堕棿 - processTime(dateTime) { - return this.dateFormat("YYYY-mm-dd HH:MM:SS", dateTime) === "1900-01-01 08:00:00" - ? "--" - : this.dateFormat("YYYY-mm-dd HH:MM:SS", dateTime) }, // 鏃堕棿鏄剧ず dateFormat(fmt, date) { diff --git a/src/views/client/contacts/DetailContacts.vue b/src/views/client/contacts/DetailContacts.vue index 74d6407..b375e17 100644 --- a/src/views/client/contacts/DetailContacts.vue +++ b/src/views/client/contacts/DetailContacts.vue @@ -203,7 +203,7 @@ }, { leftStr: "涓嬫鍥炶鏃ユ湡", - leftValue: "", + leftValue: item.Client.next_visit_time, rightStr: "鏈�鏂拌仈绯绘棩鏈�", rightValue: "" }, diff --git a/src/views/client/followupRecords/index.vue b/src/views/client/followupRecords/index.vue index 7227a7e..9922a00 100644 --- a/src/views/client/followupRecords/index.vue +++ b/src/views/client/followupRecords/index.vue @@ -153,7 +153,7 @@ { label: "鑱旂郴浜哄鍚�", prop: "contact_name", min: 100, isContactClick: true }, // 鑱旂郴浜哄鍚� { label: "瀹㈡埛鐘舵��", prop: "client_status", min: 100 }, // 瀹㈡埛鐘舵�� { label: "鑱旂郴鏂瑰紡", prop: "contact_information_name", min: 100 }, // 鑱旂郴鏂瑰紡 - { label: "鑱旂郴浜烘棩鏈�", prop: "follow_time", min: 130 }, // 鑱旂郴浜烘棩鏈� + { label: "鑱旂郴鏃ユ湡", prop: "follow_time", min: 130 }, // 鑱旂郴浜烘棩鏈� { label: "涓嬫鍥炶鏃ユ湡", prop: "next_follow_time", min: 130 }, // 涓嬫鍥炶鏃ユ湡 { label: "璐熻矗浜�", prop: "member_name", min: 110 }, // 璐熻矗浜� { label: "璺熻繘璁板綍", prop: "record", min: 130 } // 璺熻繘璁板綍 diff --git a/src/views/client/salesLead/DetailSalesLead.vue b/src/views/client/salesLead/DetailSalesLead.vue index 4a7745e..8a3a847 100644 --- a/src/views/client/salesLead/DetailSalesLead.vue +++ b/src/views/client/salesLead/DetailSalesLead.vue @@ -61,6 +61,10 @@ </div> </li> </ul> + <div class="business_scope"> + <div class="content-title">{{ "鏈�鏂拌繘灞�" }}</div> + <div class="content-data">{{ record ? record : "--" }}</div> + </div> </div> </div> <!-- 鍦板潃淇℃伅 --> @@ -145,11 +149,12 @@ addressInfoList: [], isRemarkExpand: true, // 澶囨敞淇℃伅 remarkInfoList: [], - addConfig: {} + addConfig: {}, + record: "" } }, created() { - this.setData() + this.setData(this.detailConfig.infomation) this.addConfig = { id_name: "sales_leads_id", id: this.detailConfig.infomation.id, @@ -160,31 +165,34 @@ }, mounted() {}, methods: { - setData() { + setData(item) { + if (item.FollowRecord && item.FollowRecord.length > 0) { + this.record = item.FollowRecord[0].record + } this.basicInfoList = [ { leftStr: "瀹㈡埛鍚嶇О", - leftValue: this.detailConfig.infomation.name, + leftValue: item.name, rightStr: "閿�鍞嚎绱㈢紪鍙�", - rightValue: this.detailConfig.infomation.number + rightValue: item.number }, { leftStr: "鑱旂郴浜哄鍚�", - leftValue: this.detailConfig.infomation.contact_name, + leftValue: item.contact_name, rightStr: "鑱旂郴浜鸿亴鍔�", - rightValue: this.detailConfig.infomation.contact_position + rightValue: item.contact_position }, { leftStr: "鎵嬫満鍙风爜", - leftValue: this.detailConfig.infomation.contact_phone, + leftValue: item.contact_phone, rightStr: "鍟嗘満鐘舵��", rightValue: "鏂板缓" }, { leftStr: "鍟嗘満鏉ユ簮", - leftValue: this.detailConfig.infomation.sales_resources, + leftValue: item.sales_resources, rightStr: "璐熻矗浜�", - rightValue: this.detailConfig.infomation.member_name + rightValue: item.member_name }, { leftStr: "鍒嗛厤鏃ユ湡", @@ -209,13 +217,13 @@ { leftStr: "鏈仈绯诲ぉ鏁�", leftValue: "", - rightStr: "鏈�鏂版帹杩涙椂闂�", + rightStr: "鏈�鏂拌仈绯绘棩鏈�", rightValue: "" }, { leftStr: "鏈�鏂拌繘灞�", - leftValue: "", - rightStr: "鏈�鏂拌仈绯绘棩鏈�", + leftValue: this.record, + rightStr: "", rightValue: "" } ] @@ -224,11 +232,11 @@ leftStr: "鍥藉", leftValue: "涓浗", rightStr: "鐪佷唤", - rightValue: this.detailConfig.infomation.Province.name + rightValue: item.Province.name }, { leftStr: "鍩庡競", - leftValue: this.detailConfig.infomation.City.name, + leftValue: item.City.name, rightStr: "", rightValue: "" } @@ -335,6 +343,24 @@ width: 100%; } } + .business_scope { + display: flex; + align-items: center; + font-size: 14px; + min-height: 40px; + .content-title { + width: 320px; + text-align: right; + color: #555; + } + .content-data { + flex: 1; + padding: 5px; + text-align: left; + margin-left: 25px; + color: #333; + } + } } } } diff --git a/src/views/other/commonDialog/SelectCommonDialog.vue b/src/views/other/commonDialog/SelectCommonDialog.vue index fcc993e..60238cb 100644 --- a/src/views/other/commonDialog/SelectCommonDialog.vue +++ b/src/views/other/commonDialog/SelectCommonDialog.vue @@ -145,9 +145,8 @@ this.tableList = { tableInfomation: [], tableColumn: [ - { label: "浜у搧鍚嶇О", prop: "Name", isClick: true }, - { label: "浜у搧缂栧彿", prop: "Number" }, - { label: "瑙勬牸鍨嬪彿", prop: "MaterialMode" } + { label: "浜у搧鍚嶇О", prop: "name", isClick: true }, + { label: "浜у搧缂栧彿", prop: "number" } ] } this.searchSel = { value: "Name", label: "浜у搧鍚嶇О" } diff --git a/src/views/other/payment/collectionPlan/AddCollectionPlan.vue b/src/views/other/payment/collectionPlan/AddCollectionPlan.vue index 64b634c..bf6b7cd 100644 --- a/src/views/other/payment/collectionPlan/AddCollectionPlan.vue +++ b/src/views/other/payment/collectionPlan/AddCollectionPlan.vue @@ -13,8 +13,8 @@ <div class="collection-view"> <div class="label">鏀舵璁″垝绫诲瀷</div> <el-select v-model="editConfig.infomation.collectionType" size="mini"> - <el-option label="璁″垝鏀舵鏃ユ湡" value="1"></el-option> - <el-option label="椤圭洰鐘舵��" value="2"></el-option> + <el-option label="璁″垝鏀舵鏃ユ湡" :value="1"></el-option> + <el-option label="椤圭洰鐘舵��" :value="2"></el-option> </el-select> </div> <div class="collection-view"> @@ -191,11 +191,13 @@ sourceId: this.editCommonConfig.infomation.id, principalId: 0, planAmount: 0, // 璁″垝閲戦 - firstDate: this.getCurrentDate(1) + firstDate: this.getCurrentDate(1), + collectionType: 1, + tableInfomation: [] } }, created() { - console.log(this.editCommonConfig.sourceType) + console.log(this.editCommonConfig) this.setData() this.setTableForm() this.getCommonData() @@ -204,7 +206,7 @@ // 璁剧疆鍒濆鍊� setData() { this.editConfig.infomation = { - collectionType: "1", + collectionType: this.collectionType, moneyType: "浜烘皯甯�", amount: this.amount.toFixed(2) } @@ -261,63 +263,9 @@ this.editConfig.visible = false }, setTableForm() { + this.setTableInfomation(this.firstDate) this.tableData = { - tableInfomation: [ - { - amount: this.amount, - amountReceivable: this.amount * 0.3, - amountReceived: 0, - amountTotal: 0, - collectionDate: this.getCurrentDate(1), - collectionType: 0, - fileId: 0, - id: 0, - moneyType: "浜烘皯甯�", - percent: 30, - principalId: this.principalId, - remark: "", - sourceId: this.sourceId, - sourceType: this.sourceType, - status: 1, - term: 1 - }, - { - amount: this.amount, - amountReceivable: this.amount * 0.5, - amountReceived: 0, - amountTotal: 0, - collectionDate: this.getCurrentDate(2), - collectionType: 0, - fileId: 0, - id: 0, - moneyType: "浜烘皯甯�", - percent: 50, - principalId: this.principalId, - remark: "", - sourceId: this.sourceId, - sourceType: this.sourceType, - status: 1, - term: 2 - }, - { - amount: this.amount, - amountReceivable: this.amount * 0.2, - amountReceived: 0, - amountTotal: 0, - collectionDate: this.getCurrentDate(3), - collectionType: 0, - fileId: 0, - id: 0, - moneyType: "浜烘皯甯�", - percent: 20, - principalId: this.principalId, - remark: "", - sourceId: this.sourceId, - sourceType: this.sourceType, - status: 1, - term: 3 - } - ], + tableInfomation: this.tableInfomation, tableColumn: [ { label: "鎿嶄綔", prop: "operate", width: 60 }, { label: "鏈熸", prop: "term", inputNumber: true, width: 90 }, @@ -327,6 +275,65 @@ { label: "澶囨敞", prop: "remark", input: true } ] } + }, + setTableInfomation(date) { + console.log(this.sourceId) + this.tableInfomation = [ + { + amount: this.amount, + amountReceivable: this.amount * 0.3, + amountReceived: 0, + amountTotal: 0, + collectionDate: this.setDate(date, 0), + collectionType: this.editConfig.infomation.collectionType, + fileId: 0, + id: 0, + moneyType: "浜烘皯甯�", + percent: 30, + principalId: this.principalId, + remark: "", + sourceId: this.sourceId, + sourceType: this.sourceType, + status: 1, + term: 1 + }, + { + amount: this.amount, + amountReceivable: this.amount * 0.5, + amountReceived: 0, + amountTotal: 0, + collectionDate: this.setDate(date, 1), + collectionType: this.editConfig.infomation.collectionType, + fileId: 0, + id: 0, + moneyType: "浜烘皯甯�", + percent: 50, + principalId: this.principalId, + remark: "", + sourceId: this.sourceId, + sourceType: this.sourceType, + status: 1, + term: 2 + }, + { + amount: this.amount, + amountReceivable: this.amount * 0.2, + amountReceived: 0, + amountTotal: 0, + collectionDate: this.setDate(date, 2), + collectionType: this.editConfig.infomation.collectionType, + fileId: 0, + id: 0, + moneyType: "浜烘皯甯�", + percent: 20, + principalId: this.principalId, + remark: "", + sourceId: this.sourceId, + sourceType: this.sourceType, + status: 1, + term: 3 + } + ] }, // 閲嶇畻 recalculateClick() { @@ -341,7 +348,7 @@ amountReceived: 0, amountTotal: 0, collectionDate: this.setDate(this.firstDate, 0), - collectionType: 0, + collectionType: this.editConfig.infomation.collectionType, fileId: 0, id: 0, moneyType: "浜烘皯甯�", @@ -362,7 +369,7 @@ amountReceived: 0, amountTotal: 0, collectionDate: this.setDate(this.firstDate, 0), - collectionType: 0, + collectionType: this.editConfig.infomation.collectionType, fileId: 0, id: 0, moneyType: "浜烘皯甯�", @@ -380,7 +387,7 @@ amountReceived: 0, amountTotal: 0, collectionDate: this.setDate(this.firstDate, 1), - collectionType: 0, + collectionType: this.editConfig.infomation.collectionType, fileId: 0, id: 0, moneyType: "浜烘皯甯�", @@ -394,62 +401,8 @@ } ] } else if (this.allTerms === 3) { - this.tableData.tableInfomation = [ - { - amount: this.amount, - amountReceivable: this.amount * 0.3, - amountReceived: 0, - amountTotal: 0, - collectionDate: this.setDate(this.firstDate, 0), - collectionType: 0, - fileId: 0, - id: 0, - moneyType: "浜烘皯甯�", - percent: 30, - principalId: this.principalId, - remark: "", - sourceId: this.sourceId, - sourceType: this.sourceType, - status: 1, - term: 1 - }, - { - amount: this.amount, - amountReceivable: this.amount * 0.5, - amountReceived: 0, - amountTotal: 0, - collectionDate: this.setDate(this.firstDate, 1), - collectionType: 0, - fileId: 0, - id: 0, - moneyType: "浜烘皯甯�", - percent: 50, - principalId: this.principalId, - remark: "", - sourceId: this.sourceId, - sourceType: this.sourceType, - status: 1, - term: 2 - }, - { - amount: this.amount, - amountReceivable: this.amount * 0.2, - amountReceived: 0, - amountTotal: 0, - collectionDate: this.setDate(this.firstDate, 2), - collectionType: 0, - fileId: 0, - id: 0, - moneyType: "浜烘皯甯�", - percent: 20, - principalId: this.principalId, - remark: "", - sourceId: this.sourceId, - sourceType: this.sourceType, - status: 1, - term: 3 - } - ] + this.setTableInfomation(this.firstDate) + this.tableData.tableInfomation = this.tableInfomation } }, delClick(row) { @@ -482,6 +435,8 @@ }, principalClick(val) { this.principalId = val + this.setTableInfomation(this.firstDate) + this.tableData.tableInfomation = this.tableInfomation } } } diff --git a/src/views/other/payment/collectionPlan/index.vue b/src/views/other/payment/collectionPlan/index.vue index 02ab516..4f5ffa8 100644 --- a/src/views/other/payment/collectionPlan/index.vue +++ b/src/views/other/payment/collectionPlan/index.vue @@ -112,6 +112,7 @@ }, created() { this.setTable() + console.log(this.addConfig) if (!this.isDetail) { this.serviceContractId = 0 } else { @@ -148,15 +149,15 @@ serviceContractId: this.serviceContractId }) .then((res) => { - if (res.code === 200) { - if (res.data.list && res.data.list.length > 0) { - const list = res.data.list.map((item) => { + if (res.data.code === 200) { + if (res.data.data.data && res.data.data.data.length > 0) { + const list = res.data.data.data.map((item) => { return { ...item } }) this.tableList.tableInfomation = list || [] - this.pagerOptions.totalCount = res.data.count + this.pagerOptions.totalCount = res.data.data.count } else { this.tableList.tableInfomation = [] } @@ -193,7 +194,6 @@ // 鏂板缓 addBtnClick() { if (this.tableList.tableInfomation && this.tableList.tableInfomation.length > 0) { - this.$message.success("璇ヨ鍗曞凡鍒涘缓鏀舵璁″垝") this.$confirm("璇ヨ鍗曞凡鍒涘缓鏀舵璁″垝", "鎻愮ず", { confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", diff --git a/src/views/other/payment/receipt/index.vue b/src/views/other/payment/receipt/index.vue index 2145240..63f0b6d 100644 --- a/src/views/other/payment/receipt/index.vue +++ b/src/views/other/payment/receipt/index.vue @@ -154,17 +154,17 @@ }) .then((res) => { console.log(res) - if (res.code === 200) { - if (res.data.list && res.data.list.length > 0) { - const list = res.data.list.map((item) => { + if (res.data.code === 200) { + if (res.data.data.data && res.data.data.data.length > 0) { + const list = res.data.data.data.map((item) => { return { ...item, - paymentType_name: item.PaymentType.name, + paymentType_name: item.paymentType.name, principal_name: item.principal.username } }) this.tableList.tableInfomation = list || [] - this.pagerOptions.totalCount = res.data.count + this.pagerOptions.totalCount = res.data.data.count } else { this.tableList.tableInfomation = [] } diff --git a/src/views/sales/contractManage/AddContractManageDialog.vue b/src/views/sales/contractManage/AddContractManageDialog.vue index 9338216..2303dd3 100644 --- a/src/views/sales/contractManage/AddContractManageDialog.vue +++ b/src/views/sales/contractManage/AddContractManageDialog.vue @@ -128,11 +128,11 @@ </el-row> </div> --> <!-- 灞曞紑鏀惰捣 --> - <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick"> + <!-- <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick"> <div>{{ unflodCollapseStr }}</div> <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div> <div v-else><i class="el-icon-arrow-down"></i></div> - </div> + </div> --> <!-- 閫夋嫨瀹℃壒娴佺▼ --> <!-- <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div> <div class="basic-info-view"> diff --git a/src/views/sales/contractManage/DetailContractManage.vue b/src/views/sales/contractManage/DetailContractManage.vue index 7937296..1bf21f0 100644 --- a/src/views/sales/contractManage/DetailContractManage.vue +++ b/src/views/sales/contractManage/DetailContractManage.vue @@ -39,11 +39,11 @@ <div class="tab-view"> <el-tabs v-model="activeName" @tab-click="tabsClick"> <el-tab-pane label="璇︽儏" name="first"></el-tab-pane> - <el-tab-pane label="闄勪欢绠$悊" name="annex"> - <!-- <template slot="label"> + <!-- <el-tab-pane label="闄勪欢绠$悊" name="annex"> --> + <!-- <template slot="label"> <div>璺熻繘璁板綍<el-badge type="primary" :value="2"> </el-badge></div> </template> --> - </el-tab-pane> + <!-- </el-tab-pane> --> </el-tabs> </div> <div v-if="activeName === 'first'" class="detail"> diff --git a/src/views/sales/generatePlan/DetailGeneratePlan.vue b/src/views/sales/generatePlan/DetailGeneratePlan.vue index 772f613..3b4c7e2 100644 --- a/src/views/sales/generatePlan/DetailGeneratePlan.vue +++ b/src/views/sales/generatePlan/DetailGeneratePlan.vue @@ -17,11 +17,11 @@ <div class="tab-view"> <el-tabs v-model="activeName" @tab-click="tabsClick"> <el-tab-pane label="璇︽儏" name="first"></el-tab-pane> - <el-tab-pane label="闄勪欢绠$悊" name="annex"> - <!-- <template slot="label"> + <!-- <el-tab-pane label="闄勪欢绠$悊" name="annex"> --> + <!-- <template slot="label"> <div>璺熻繘璁板綍<el-badge type="primary" :value="2"> </el-badge></div> </template> --> - </el-tab-pane> + <!-- </el-tab-pane> --> </el-tabs> </div> <div v-if="activeName === 'first'" class="detail"> diff --git a/src/views/sales/masterOrder/AddMasterOrderDialog.vue b/src/views/sales/masterOrder/AddMasterOrderDialog.vue index 3040d17..7135130 100644 --- a/src/views/sales/masterOrder/AddMasterOrderDialog.vue +++ b/src/views/sales/masterOrder/AddMasterOrderDialog.vue @@ -27,14 +27,18 @@ <div class="custom-name"> <el-autocomplete v-model="editConfig.infomation.client_name" - :fetch-suggestions="querySearchAsync" + :fetch-suggestions=" + (queryString, callback) => { + querySearchAsync(queryString, callback, 'client') + } + " value-key="name" - @select="handleSelectClient" + @select="handleSelectClient('client', $event)" ></el-autocomplete> - <div class="common-select-btn" @click="selClientClick"> + <div class="common-select-btn" @click="selClientClick('client')"> <i class="el-icon-circle-plus-outline" title="閫夋嫨"></i> </div> - <div class="common-select-btn" @click="clearupClient"> + <div class="common-select-btn" @click="clearupClient('client')"> <i class="el-icon-edit-outline" title="娓呴櫎"></i> </div> </div> @@ -182,7 +186,8 @@ editVisible: false, title: "", infomation: {} - } + }, + clientId: this.editCommonConfig.infomation.client_id } }, created() { @@ -207,37 +212,23 @@ const params = this.saveParams() console.log(params) if (this.editConfig.title === "鏂板缓") { - getAddMasterOrder(params) - .then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message({ - message: "娣诲姞鎴愬姛", - type: "success" - }) - this.$parent.getData() - } - }) - .catch((err) => { - console.log(err) - }) + getAddMasterOrder(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) } else { - getUpdateMasterOrder(params) - .then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message({ - message: "缂栬緫鎴愬姛", - type: "success" - }) - this.$parent.getData() - } - }) - .catch((err) => { - console.log(err) - }) + getUpdateMasterOrder(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("缂栬緫鎴愬姛") + this.$parent.getData() + } + }) } } else { console.log("error submit") @@ -249,10 +240,10 @@ let data = this.editConfig.infomation let params = { id: this.editConfig.title === "鏂板缓" ? 0 : data.id, - client_id: parseInt(data.client_id) || 0, + client_id: this.clientId || 0, end_time: data.end_time || "", member_id: data.member_id || 0, - money: parseFloat(data.money) || "0", + money: data.money || 0, number: data.number || "", start_time: data.start_time || "" } @@ -261,9 +252,12 @@ handleClose() { this.editConfig.visible = false }, - // 閫夋嫨瀹㈡埛鐩稿叧鏂规硶 - querySearchAsync(queryString, cb) { - var restaurants = this.clientList + // 閫夋嫨鐢ㄦ埛鐩稿叧鏂规硶 + querySearchAsync(queryString, cb, value) { + var restaurants = [] + if (value === "client") { + restaurants = this.clientList + } var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants cb(results) }, @@ -272,21 +266,31 @@ return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 } }, - handleSelectClient(item) { - this.editConfig.infomation.client_id = item.id + handleSelectClient(value, item) { + if (value === "client") { + this.clientId = item.id + } }, - selClientClick() { - this.editSelectClientConfig.editVisible = true + selClientClick(value) { + if (value === "client") { + this.editSelectClientConfig.editVisible = true + } }, - selClient(row) { - console.log(row) - this.editConfig.infomation.client_name = row.name - this.editConfig.infomation.client_id = row.id + selClient(row, value) { + if (value === "client") { + this.editConfig.infomation.client_name = row.name + this.clientId = row.id + } }, // 娓呴櫎宸查�夋嫨鐢ㄦ埛 - clearupClient() { - this.editConfig.infomation.client_name = "" - this.editConfig.infomation.client_id = 0 + clearupClient(value) { + if (value === "client") { + this.editConfig.infomation.client_name = "" + this.clientId = 0 + } else if (value === "contact") { + this.editConfig.infomation.contact_name = "" + this.contactId = 0 + } }, // 娣诲姞闄勪欢 addAnnexClick() {}, diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue index 309abba..45e4c87 100644 --- a/src/views/sales/quotation/AddQuotationDialog.vue +++ b/src/views/sales/quotation/AddQuotationDialog.vue @@ -203,6 +203,7 @@ @addProductClick="addProductClick" @emptyProductClick="emptyProductClick" @recalculateProductClick="recalculateProductClick" + @clearupProduct="clearupProduct" /> </div> <!-- 閫夋嫨瀹℃壒娴佺▼ --> @@ -327,8 +328,8 @@ showSummary: { show: true, total: true, - sumProp: ["Amount", "Unit", "other3"], - mergeNumber: 3 + sumProp: ["Amount", "total"], + mergeNumber: 2 }, editSelectClientConfig: { editVisible: false, @@ -350,8 +351,7 @@ saleChanceId: this.editCommonConfig.infomation.sale_chance_id, tableData: [], productId: 1, - addProductArr: [], - isProductName: false + isNoProduct: true } }, created() { @@ -380,23 +380,19 @@ } }) }, - productNameValidate() { - for (let i = 0; i < this.tableData.length; i++) { - if (this.tableData[i].Name === "") { - this.isProductName = true - return - } else { - this.isProductName = false - } - } - }, // 淇濆瓨 saveClick(formName) { - this.productNameValidate() this.$refs[formName].validate((valid) => { if (valid) { - console.log(this.isProductName) - if (this.isProductName) { + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { const params = this.saveParams() @@ -514,86 +510,84 @@ // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 setFormatClick() {}, setTableForm() { - if (this.editConfig.title === "鏂板缓" || this.editConfig.infomation.products === null) { + if (this.editConfig.title === "鏂板缓") { this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] } else { this.tableData = this.editConfig.infomation.products + this.tableData.map((item, index) => { + item.productId = index + 1 + }) } this.productTableList = { tableData: this.tableData, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "浜у搧鍚嶇О", prop: "Name", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "Number" }, - { label: "鏁伴噺", prop: "Amount", input: true, isRequird: true }, - { label: "閿�鍞崟浠�", prop: "Unit", input: true }, - { label: "浠风◣鍚堣", prop: "total", input: true }, - { label: "鎻忚堪", prop: "other8" } + { label: "#", prop: "productId", width: 40 }, + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } }, // 浜у搧鍒楄〃杈撳叆 inputContent(val, prop, row) { - console.log("aaaaaaaa") - console.log(val, prop) - this.productId = row.id + this.productId = row.productId this.tableData.map((item) => { - if (item.id === row.id) { + if (item.productId === row.productId) { item[prop] = val } }) - console.log(this.tableData) }, // 浜у搧鏂板 addProductClick() { this.productId++ this.tableData.push({ - id: this.productId, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 }) + this.showSummary.show = true }, // 浜у搧娓呯┖ emptyProductClick() { this.productId = 1 this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] this.productTableList.tableData = this.tableData }, // 浜у搧閲嶇畻 - recalculateProductClick() {} + recalculateProductClick() {}, + clearupProduct(data) { + this.tableData = data + this.productTableList.tableData = this.tableData + } } } </script> diff --git a/src/views/sales/quotation/DetailQuotation.vue b/src/views/sales/quotation/DetailQuotation.vue index 8f65d45..bf0fc69 100644 --- a/src/views/sales/quotation/DetailQuotation.vue +++ b/src/views/sales/quotation/DetailQuotation.vue @@ -249,33 +249,13 @@ }, setTableForm() { this.productTableList = { - tableData: [ - { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" - } - ], + tableData: this.detailConfig.infomation.products, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" } + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } } diff --git a/src/views/sales/quotation/index.vue b/src/views/sales/quotation/index.vue index 54f7b5f..c9606c0 100644 --- a/src/views/sales/quotation/index.vue +++ b/src/views/sales/quotation/index.vue @@ -144,9 +144,9 @@ { label: "鏈夋晥鏈�", prop: "validity_date", min: 100 }, // 淇敼鏃堕棿 // { label: "灏忚", prop: "subTotal" }, // 灏忚 // { label: "鍚堣", prop: "total" }, // 鍚堣 - { label: "浜у搧鍚嶇О", prop: "productName", isProduct: true }, // 浜у搧鍚嶇О - { label: "鏁伴噺", prop: "number1" }, // 鏁伴噺 - { label: "浠风◣鍚堣", prop: "priceTax" } // 浠风◣鍚堣 + { label: "浜у搧鍚嶇О", prop: "productName", isProductName: true }, + { label: "鏁伴噺", prop: "productNumber", isProductAmount: true }, + { label: "浠风◣鍚堣", prop: "priceTax", isProductCommon: true } ] } this.searchOptions = [] diff --git a/src/views/sales/refundForm/AddRefundFormDialog.vue b/src/views/sales/refundForm/AddRefundFormDialog.vue index b024999..f00aa48 100644 --- a/src/views/sales/refundForm/AddRefundFormDialog.vue +++ b/src/views/sales/refundForm/AddRefundFormDialog.vue @@ -192,7 +192,15 @@ </div> </div> <div class="product-view"> - <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" /> + <CommonFormTableView + :show-summary="showSummary" + :product-table-list="productTableList" + @inputContent="inputContent" + @addProductClick="addProductClick" + @emptyProductClick="emptyProductClick" + @recalculateProductClick="recalculateProductClick" + @clearupProduct="clearupProduct" + /> </div> <!-- 閫夋嫨瀹℃壒娴佺▼ --> <!-- <div v-if="editConfig.title === '鏂板缓'" class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div> @@ -305,7 +313,9 @@ title: "", infomation: {} }, - clientId: this.editCommonConfig.infomation.client_id + clientId: this.editCommonConfig.infomation.client_id, + productId: 1, + isNoProduct: true } }, created() { @@ -332,26 +342,38 @@ this.$refs[formName].validate((valid) => { if (valid) { console.log(this.editConfig.infomation) - const params = this.saveParams() - console.log(params) - if (this.editConfig.title === "鏂板缓") { - getAddSalesRefund(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("娣诲姞鎴愬姛") - this.$parent.getData() - } - }) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { + this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { - getUpdateSalesRefund(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("缂栬緫鎴愬姛") - this.$parent.getData() - } - }) + const params = this.saveParams() + console.log(params) + if (this.editConfig.title === "鏂板缓") { + getAddSalesRefund(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) + } else { + getUpdateSalesRefund(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("缂栬緫鎴愬姛") + this.$parent.getData() + } + }) + } } } else { console.log("error submit") @@ -412,36 +434,83 @@ // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 setFormatClick() {}, setTableForm() { - this.productTableList = { - tableData: [ + if (this.editConfig.title === "鏂板缓") { + this.tableData = [ { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } - ], + ] + } else { + this.tableData = this.editConfig.infomation.products + this.tableData.map((item, index) => { + item.productId = index + 1 + }) + } + this.productTableList = { + tableData: this.tableData, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" } + { label: "#", prop: "productId", width: 40 }, + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } + }, + // 浜у搧鍒楄〃杈撳叆 + inputContent(val, prop, row) { + this.productId = row.productId + this.tableData.map((item) => { + if (item.productId === row.productId) { + item[prop] = val + } + }) + }, + // 浜у搧鏂板 + addProductClick() { + this.productId++ + this.tableData.push({ + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + }) + this.showSummary.show = true + }, + // 浜у搧娓呯┖ + emptyProductClick() { + this.productId = 1 + this.tableData = [ + { + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + } + ] + this.productTableList.tableData = this.tableData + }, + // 浜у搧閲嶇畻 + recalculateProductClick() {}, + clearupProduct(data) { + this.tableData = data + this.productTableList.tableData = this.tableData } } } diff --git a/src/views/sales/refundForm/DetailRefundForm.vue b/src/views/sales/refundForm/DetailRefundForm.vue index 1353ee3..42422bb 100644 --- a/src/views/sales/refundForm/DetailRefundForm.vue +++ b/src/views/sales/refundForm/DetailRefundForm.vue @@ -17,11 +17,11 @@ <div class="tab-view"> <el-tabs v-model="activeName" @tab-click="tabsClick"> <el-tab-pane label="璇︽儏" name="first"></el-tab-pane> - <el-tab-pane label="闄勪欢绠$悊" name="annex"> - <!-- <template slot="label"> + <!-- <el-tab-pane label="闄勪欢绠$悊" name="annex"> --> + <!-- <template slot="label"> <div>璺熻繘璁板綍<el-badge type="primary" :value="2"> </el-badge></div> </template> --> - </el-tab-pane> + <!-- </el-tab-pane> --> </el-tabs> </div> <div v-if="activeName === 'first'" class="detail"> @@ -205,33 +205,13 @@ }, setTableForm() { this.productTableList = { - tableData: [ - { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" - } - ], + tableData: this.detailConfig.infomation.products, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" } + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } } diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue index 3aa7e53..b019896 100644 --- a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue +++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue @@ -206,7 +206,11 @@ <el-row> <el-col :span="24"> <el-form-item label="澶囨敞" prop="remark"> - <el-input type="textarea" :autosize="{ minRows: 2 }" v-model="editConfig.infomation.notes"></el-input> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.remark" + ></el-input> </el-form-item> </el-col> </el-row> @@ -257,6 +261,7 @@ @addProductClick="addProductClick" @emptyProductClick="emptyProductClick" @recalculateProductClick="recalculateProductClick" + @clearupProduct="clearupProduct" /> </div> <!-- 閫夋嫨瀹℃壒娴佺▼ --> @@ -376,7 +381,7 @@ showSummary: { show: true, total: true, - sumProp: ["other1", "other7"], + sumProp: ["Amount", "total"], mergeNumber: 2 }, editSelectClientConfig: { @@ -391,7 +396,8 @@ }, clientId: this.editCommonConfig.infomation.client_id, saleChanceId: this.editCommonConfig.infomation.saleChanceId, - productId: 1 + productId: 1, + isNoProduct: true } }, created() { @@ -423,26 +429,38 @@ this.$refs[formName].validate((valid) => { if (valid) { console.log(this.editConfig.infomation) - const params = this.saveParams() - console.log(params) - if (this.editConfig.title === "鏂板缓") { - getAddSalesDetails(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("娣诲姞鎴愬姛") - this.$parent.getData() - } - }) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { + this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { - getUpdateSalesDetails(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("缂栬緫鎴愬姛") - this.$parent.getData() - } - }) + const params = this.saveParams() + console.log(params) + if (this.editConfig.title === "鏂板缓") { + getAddSalesDetails(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) + } else { + getUpdateSalesDetails(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("缂栬緫鎴愬姛") + this.$parent.getData() + } + }) + } } } else { console.log("error submit") @@ -461,17 +479,7 @@ memberId: data.memberId || 0, number: data.number || "", phone: data.phone || "", - products: [ - { - amount: 0, - desc: "", - id: 0, - name: "", - number: "", - price: 0, - total: 0 - } - ], + products: this.tableData, remark: data.remark || "", saleChanceId: this.saleChanceId || 0, saleType: data.saleType || 0, @@ -529,9 +537,9 @@ } }, selClient(row, value) { - if (value === "contact") { - this.editConfig.infomation.contact_name = row.name - this.contactId = row.id + if (value === "client") { + this.editConfig.infomation.client_name = row.name + this.clientId = row.id } else if (value === "chance") { this.editConfig.infomation.sale_chance_name = row.name this.saleChanceId = row.id @@ -555,83 +563,81 @@ if (this.editConfig.title === "鏂板缓") { this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] } else { this.tableData = this.editConfig.infomation.products + this.tableData.map((item, index) => { + item.productId = index + 1 + }) } this.productTableList = { tableData: this.tableData, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "浜у搧鍚嶇О", prop: "Name", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "Number" }, - { label: "鏁伴噺", prop: "Amount", input: true, isRequird: true }, - { label: "閿�鍞崟浠�", prop: "Unit", input: true }, - { label: "浠风◣鍚堣", prop: "total", input: true }, - { label: "鎻忚堪", prop: "other8" } + { label: "#", prop: "productId", width: 40 }, + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } }, // 浜у搧鍒楄〃杈撳叆 inputContent(val, prop, row) { - console.log("aaaaaaaa") - console.log(val, prop) - this.productId = row.id + this.productId = row.productId this.tableData.map((item) => { - if (item.id === row.id) { + if (item.productId === row.productId) { item[prop] = val } }) - console.log(this.tableData) }, // 浜у搧鏂板 addProductClick() { this.productId++ this.tableData.push({ - id: this.productId, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 }) + this.showSummary.show = true }, // 浜у搧娓呯┖ emptyProductClick() { this.productId = 1 this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] this.productTableList.tableData = this.tableData }, // 浜у搧閲嶇畻 - recalculateProductClick() {} + recalculateProductClick() {}, + clearupProduct(data) { + this.tableData = data + this.productTableList.tableData = this.tableData + } } } </script> diff --git a/src/views/sales/salesDetails/DetailSpecification.vue b/src/views/sales/salesDetails/DetailSpecification.vue index 540e5f7..2667545 100644 --- a/src/views/sales/salesDetails/DetailSpecification.vue +++ b/src/views/sales/salesDetails/DetailSpecification.vue @@ -411,33 +411,13 @@ }, setTableForm() { this.productTableList = { - tableData: [ - { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" - } - ], + tableData: this.detailConfig.infomation.products, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" } + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } } diff --git a/src/views/sales/salesDetails/index.vue b/src/views/sales/salesDetails/index.vue index 560a58d..155b823 100644 --- a/src/views/sales/salesDetails/index.vue +++ b/src/views/sales/salesDetails/index.vue @@ -160,11 +160,10 @@ { label: "搴旀敹浣欓", prop: "amountReceivable", price: true }, { label: "宸插紑绁ㄩ噾棰�", prop: "invoicedAmount", price: true }, { label: "鏈紑绁ㄩ噾棰�", prop: "uninvoicedAmount", price: true }, - { label: "浜у搧鍚嶇О", prop: "productName" }, - { label: "鏁伴噺", prop: "number1" }, - { label: "鍚◣鍗曚环", prop: "taxUnitPrice", price: true }, - { label: "鏈嚭搴撴暟閲�", prop: "unOutoundNo" }, - { label: "浠风◣鍚堣", prop: "priceTax", price: true } + { label: "浜у搧鍚嶇О", prop: "productName", isProductName: true }, + { label: "鏁伴噺", prop: "productNumber", isProductAmount: true }, + { label: "閿�鍞崟浠�", prop: "taxUnitPrice", isProductCommon: true }, + { label: "浠风◣鍚堣", prop: "priceTax", isProductCommon: true } ] } this.searchOptions = [] @@ -301,9 +300,15 @@ } } ::v-deep { - .el-table .cell, - .el-table th.el-table__cell > .cell { - padding: 0 2px; + .el-table .el-table__cell { + padding: 0; + } + .el-table__header tr, + .el-table__header th { + height: 48px; + } + .el-table__footer-wrapper tbody td.el-table__cell { + height: 48px; } } </style> diff --git a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue index 55c02f7..b57cefe 100644 --- a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue +++ b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue @@ -215,7 +215,14 @@ </el-col> <el-col :span="12"> <el-form-item label="棰勭畻缁濆鍊�" prop="budget"> - <el-input v-model="editConfig.infomation.budget"></el-input> + <el-input-number + v-model="editConfig.infomation.budget" + placeholder="璇疯緭鍏�" + :min="0" + :precision="2" + :controls="false" + style="width: 25%; margin-right: 5px" + ></el-input-number> </el-form-item> </el-col> <el-col :span="12"> @@ -653,9 +660,6 @@ this.editConfig.visible = false if (res.code === 200) { this.$message.success("娣诲姞鎴愬姛") - // if (this.editConfig.title === "鏂板缓" && this.editConfig.infomation.client_name) { - // this.$parent.handleClose() - // } else { this.$parent.getData() // } } diff --git a/src/views/sales/salesReturn/AddSalesReturnDialog.vue b/src/views/sales/salesReturn/AddSalesReturnDialog.vue index 1c1bedc..90aae43 100644 --- a/src/views/sales/salesReturn/AddSalesReturnDialog.vue +++ b/src/views/sales/salesReturn/AddSalesReturnDialog.vue @@ -168,13 +168,21 @@ <div style="margin-left: 400px"> 甯佺 <el-select v-model="editConfig.infomation.currency" placeholder="璇烽�夋嫨" size="mini" style="width: 63%"> - <el-option v-for="item in currencyOptions" :key="item.value" :label="item.label" :value="item.value"> + <el-option v-for="item in currencyOptions" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </div> </div> <div class="product-view"> - <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" /> + <CommonFormTableView + :show-summary="showSummary" + :product-table-list="productTableList" + @inputContent="inputContent" + @addProductClick="addProductClick" + @emptyProductClick="emptyProductClick" + @recalculateProductClick="recalculateProductClick" + @clearupProduct="clearupProduct" + /> </div> </div> </el-form> @@ -235,16 +243,17 @@ productTableList: {}, showSummary: { show: true, - total: false, - refundable: true, - sumProp: ["other1", "other2", "other3", "other4"], - mergeNumber: 4 + total: true, + sumProp: ["Amount", "total"], + mergeNumber: 2 }, editSelectClientConfig: { editVisible: false, title: "", infomation: {} - } + }, + productId: 1, + isNoProduct: true } }, created() { @@ -259,7 +268,6 @@ .then((res) => { this.memberOptions = res.data.member this.repositoryOptions = res.data.repository - // this.currencyOptions = res.data.currency this.statusOptions = res.data.salesReturnStatus }) .catch((err) => { @@ -282,30 +290,42 @@ this.$refs[formName].validate((valid) => { if (valid) { console.log(this.editConfig.infomation) - const params = this.saveParams() - console.log(params) - if (this.editConfig.title === "鏂板缓") { - getAddSalesReturn(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("娣诲姞鎴愬姛") - this.$parent.getData() - } - }) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { + this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { - getUpdateSalesReturn(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("缂栬緫鎴愬姛") - this.$message({ - message: "缂栬緫鎴愬姛", - type: "success" - }) - this.$parent.getData() - } - }) + const params = this.saveParams() + console.log(params) + if (this.editConfig.title === "鏂板缓") { + getAddSalesReturn(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) + } else { + getUpdateSalesReturn(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("缂栬緫鎴愬姛") + this.$message({ + message: "缂栬緫鎴愬姛", + type: "success" + }) + this.$parent.getData() + } + }) + } } } else { console.log("error submit") @@ -375,26 +395,83 @@ // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 setFormatClick() {}, setTableForm() { + if (this.editConfig.title === "鏂板缓") { + this.tableData = [ + { + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + } + ] + } else { + this.tableData = this.editConfig.infomation.products + this.tableData.map((item, index) => { + item.productId = index + 1 + }) + } this.productTableList = { - tableData: [], + tableData: this.tableData, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" } + { label: "#", prop: "productId", width: 40 }, + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } + }, + // 浜у搧鍒楄〃杈撳叆 + inputContent(val, prop, row) { + this.productId = row.productId + this.tableData.map((item) => { + if (item.productId === row.productId) { + item[prop] = val + } + }) + }, + // 浜у搧鏂板 + addProductClick() { + this.productId++ + this.tableData.push({ + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + }) + this.showSummary.show = true + }, + // 浜у搧娓呯┖ + emptyProductClick() { + this.productId = 1 + this.tableData = [ + { + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 + } + ] + this.productTableList.tableData = this.tableData + }, + // 浜у搧閲嶇畻 + recalculateProductClick() {}, + clearupProduct(data) { + this.tableData = data + this.productTableList.tableData = this.tableData } } } diff --git a/src/views/sales/salesReturn/DetailReturn.vue b/src/views/sales/salesReturn/DetailReturn.vue index c47b0c1..24b03ca 100644 --- a/src/views/sales/salesReturn/DetailReturn.vue +++ b/src/views/sales/salesReturn/DetailReturn.vue @@ -256,33 +256,13 @@ }, setTableForm() { this.productTableList = { - tableData: [ - { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" - } - ], + tableData: this.detailConfig.infomation.products, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" } + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } } diff --git a/src/views/sales/subOrder/AddSubOrderDialog.vue b/src/views/sales/subOrder/AddSubOrderDialog.vue index bbd4601..2003554 100644 --- a/src/views/sales/subOrder/AddSubOrderDialog.vue +++ b/src/views/sales/subOrder/AddSubOrderDialog.vue @@ -126,70 +126,14 @@ </div> <div class="product-view"> <CommonFormTableView + :show-summary="showSummary" :product-table-list="productTableList" @inputContent="inputContent" @addProductClick="addProductClick" @emptyProductClick="emptyProductClick" @recalculateProductClick="recalculateProductClick" + @clearupProduct="clearupProduct" /> - </div> - <!-- 鍚堣 --> - <div class="basic-info-view"> - <el-row> - <el-col :span="7" :offset="17"> - <el-form-item prop="discount"> - <template slot="label"> - <span>鏁村崟鎶樻墸</span> - <el-select - v-model="discount" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 104px; margin-left: 3px" - disabled - > - <el-option - v-for="item in discountOptions" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </template> - <el-input v-model="editConfig.infomation.discount" disabled></el-input> - </el-form-item> - </el-col> - <el-col :span="7" :offset="17"> - <el-form-item prop="discount"> - <template slot="label"> - <span>璋冩暣</span> - <el-select - v-model="adjust" - placeholder="璇烽�夋嫨" - size="mini" - style="width: 74px; margin-left: 3px" - disabled - > - <el-option - v-for="item in adjustOptions" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> - </template> - <el-input v-model="editConfig.infomation.discount" disabled></el-input> - </el-form-item> - </el-col> - <el-col :span="7" :offset="17"> - <el-form-item label="鍚堣" prop="total"> - <el-button type="text" v-model="editConfig.infomation.total" style="color: #555; font-size: 13px">{{ - editConfig.infomation.total ? editConfig.infomation.total : "0.00" - }}</el-button> - </el-form-item> - </el-col> - </el-row> </div> </div> </el-form> @@ -266,9 +210,9 @@ productTableList: {}, showSummary: { show: true, - total: false, - sumProp: ["other1", "other7"], - mergeNumber: 7 + total: true, + sumProp: ["Amount", "total"], + mergeNumber: 2 }, editSelectClientConfig: { editVisible: false, @@ -319,26 +263,38 @@ this.$refs[formName].validate((valid) => { if (valid) { console.log(this.editConfig.infomation) - const params = this.saveParams() - console.log(params) - if (this.editConfig.title === "鏂板缓") { - getAddSubOrder(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("娣诲姞鎴愬姛") - this.$parent.getData() - } - }) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { + this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { - getUpdateSubOrder(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("缂栬緫鎴愬姛") - this.$parent.getData() - } - }) + const params = this.saveParams() + console.log(params) + if (this.editConfig.title === "鏂板缓") { + getAddSubOrder(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) + } else { + getUpdateSubOrder(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("缂栬緫鎴愬姛") + this.$parent.getData() + } + }) + } } } else { console.log("error submit") @@ -369,11 +325,6 @@ } else if (value === "master") { restaurants = this.masterOrderList } - // else if (value === "chance") { - // restaurants = this.saleChancelist - // } else { - // restaurants = this.saleLeadlist - // } var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants cb(results) }, @@ -433,83 +384,81 @@ if (this.editConfig.title === "鏂板缓") { this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] } else { this.tableData = this.editConfig.infomation.products + this.tableData.map((item, index) => { + item.productId = index + 1 + }) } this.productTableList = { tableData: this.tableData, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "浜у搧鍚嶇О", prop: "Name", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "Number" }, - { label: "鏁伴噺", prop: "Amount", input: true, isRequird: true }, - { label: "閿�鍞崟浠�", prop: "Unit", input: true }, - { label: "浠风◣鍚堣", prop: "total", input: true }, - { label: "鎻忚堪", prop: "other8" } + { label: "#", prop: "productId", width: 40 }, + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } }, // 浜у搧鍒楄〃杈撳叆 inputContent(val, prop, row) { - console.log("aaaaaaaa") - console.log(val, prop) - this.productId = row.id + this.productId = row.productId this.tableData.map((item) => { - if (item.id === row.id) { + if (item.productId === row.productId) { item[prop] = val } }) - console.log(this.tableData) }, // 浜у搧鏂板 addProductClick() { this.productId++ this.tableData.push({ - id: this.productId, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 }) + this.showSummary.show = true }, // 浜у搧娓呯┖ emptyProductClick() { this.productId = 1 this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] this.productTableList.tableData = this.tableData }, // 浜у搧閲嶇畻 - recalculateProductClick() {} + recalculateProductClick() {}, + clearupProduct(data) { + this.tableData = data + this.productTableList.tableData = this.tableData + } } } </script> diff --git a/src/views/sales/subOrder/DetailSubOrder.vue b/src/views/sales/subOrder/DetailSubOrder.vue index 5e47425..277c4a7 100644 --- a/src/views/sales/subOrder/DetailSubOrder.vue +++ b/src/views/sales/subOrder/DetailSubOrder.vue @@ -202,33 +202,13 @@ }, setTableForm() { this.productTableList = { - tableData: [ - { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" - } - ], + tableData: this.detailConfig.infomation.products, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" } + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } } diff --git a/src/views/service/clientServiceOrder/DetailClientServiceOrder.vue b/src/views/service/clientServiceOrder/DetailClientServiceOrder.vue index 8eaf37b..6ca36fb 100644 --- a/src/views/service/clientServiceOrder/DetailClientServiceOrder.vue +++ b/src/views/service/clientServiceOrder/DetailClientServiceOrder.vue @@ -17,7 +17,7 @@ <div class="tab-view"> <el-tabs v-model="activeName" @tab-click="tabsClick"> <el-tab-pane label="璇︽儏" name="first"></el-tab-pane> - <el-tab-pane label="闄勪欢绠$悊" name="annex"></el-tab-pane> + <!-- <el-tab-pane label="闄勪欢绠$悊" name="annex"></el-tab-pane> --> <el-tab-pane label="鏈嶅姟鍥炶鍗�" name="followup"> <!-- <template slot="label"> <div>璺熻繘璁板綍<el-badge type="primary" :value="2"> </el-badge></div> diff --git a/src/views/service/serviceContract/AddServiceContractDialog.vue b/src/views/service/serviceContract/AddServiceContractDialog.vue index ff2b7dc..52743f7 100644 --- a/src/views/service/serviceContract/AddServiceContractDialog.vue +++ b/src/views/service/serviceContract/AddServiceContractDialog.vue @@ -312,6 +312,7 @@ @addProductClick="addProductClick" @emptyProductClick="emptyProductClick" @recalculateProductClick="recalculateProductClick" + @clearupProduct="clearupProduct" /> </div> <!-- 閫夋嫨瀹℃壒娴佺▼ --> @@ -480,7 +481,8 @@ contractId: this.editCommonConfig.infomation.salesDetailsId, quotationId: this.editCommonConfig.infomation.quotationId, tableData: [], - productId: 1 + productId: 1, + isNoProduct: true } }, created() { @@ -512,26 +514,38 @@ this.$refs[formName].validate((valid) => { if (valid) { console.log(this.editConfig.infomation) - const params = this.saveParams() - console.log(params) - if (this.editConfig.title === "鏂板缓") { - getAddServiceContract(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("娣诲姞鎴愬姛") - this.$parent.getData() - } - }) + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].name.length === 0) { + this.isNoProduct = true + break + } else { + this.isNoProduct = false + } + } + if (this.isNoProduct) { + this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { - getUpdateServiceContract(params).then((res) => { - console.log(res) - this.editConfig.visible = false - if (res.code === 200) { - this.$message.success("缂栬緫鎴愬姛") - this.$parent.getData() - } - }) + const params = this.saveParams() + console.log(params) + if (this.editConfig.title === "鏂板缓") { + getAddServiceContract(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛") + this.$parent.getData() + } + }) + } else { + getUpdateServiceContract(params).then((res) => { + console.log(res) + this.editConfig.visible = false + if (res.code === 200) { + this.$message.success("缂栬緫鎴愬姛") + this.$parent.getData() + } + }) + } } } else { console.log("error submit") @@ -676,79 +690,71 @@ if (this.editConfig.title === "鏂板缓") { this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] } else { this.tableData = this.editConfig.infomation.products + this.tableData.map((item, index) => { + item.productId = index + 1 + }) } this.productTableList = { tableData: this.tableData, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "浜у搧鍚嶇О", prop: "Name", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "Number" }, - { label: "鏈嶅姟寮�濮嬫棩", prop: "other5", date: true, isRequird: true, min: 100 }, - { label: "鏈嶅姟鍒版湡鏃�", prop: "other6", date: true, isRequird: true, min: 100 }, - { label: "鏁伴噺", prop: "Amount", input: true, isRequird: true }, - { label: "閿�鍞崟浠�", prop: "Unit", input: true }, - { label: "浠风◣鍚堣", prop: "total", input: true }, - { label: "鎻忚堪", prop: "other8" } + { label: "#", prop: "productId", width: 40 }, + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } }, // 浜у搧鍒楄〃杈撳叆 inputContent(val, prop, row) { - console.log("aaaaaaaa") - console.log(val, prop) - this.productId = row.id + this.productId = row.productId this.tableData.map((item) => { - if (item.id === row.id) { + if (item.productId === row.productId) { item[prop] = val } }) - console.log(this.tableData) }, // 浜у搧鏂板 addProductClick() { this.productId++ this.tableData.push({ - id: this.productId, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 }) + this.showSummary.show = true }, // 浜у搧娓呯┖ emptyProductClick() { this.productId = 1 this.tableData = [ { - id: 1, - Amount: 0, - IsSale: true, - MaterialMode: "", - MinInventory: 0, - Name: "", - Number: "", - PurchaseType: "", - SalePrice: 0, - Unit: "" + productId: this.productId, + id: 0, + amount: 0, + desc: "", + name: "", + number: "", + price: 0, + total: 0 } ] this.productTableList.tableData = this.tableData diff --git a/src/views/service/serviceContract/DetailServiceContract.vue b/src/views/service/serviceContract/DetailServiceContract.vue index 2e0123b..403dc17 100644 --- a/src/views/service/serviceContract/DetailServiceContract.vue +++ b/src/views/service/serviceContract/DetailServiceContract.vue @@ -328,33 +328,13 @@ }, setTableForm() { this.productTableList = { - tableData: [ - { - id: "1", - productName: "涓婃捣鏈夐檺鍏徃", - other0: "ZDYBD03-1", - other1: "12", - other2: "5.00", - other4: "3.00", - other3: "2.00" - } - ], + tableData: this.detailConfig.infomation.products, tableColumn: [ - { label: "#", prop: "id", width: 40 }, - { label: "鍚◣鍗曚环", prop: "other9", input: true }, - { label: "浜у搧鍚嶇О", prop: "productName", input: true, isRequird: true }, - { label: "浜у搧缂栧彿", prop: "other0" }, - { label: "鏁伴噺", prop: "other1", input: true, isRequird: true }, - { label: "鎶樻墸鐜�(%)", prop: "other6", input: true }, - { label: "涓嶅惈绋庡崟浠�", prop: "other7", input: true }, - { label: "鎶樻墸棰�", prop: "other2" }, - { label: "绋�(閿�鍞�)", prop: "other7", input: true }, - { label: "瀹為檯鍚◣鍗曚环", prop: "other3" }, - { label: "涓嶅惈绋庨噾棰�", prop: "other4" }, - { label: "浠风◣鍚堣", prop: "other3", input: true }, - { label: "鎻忚堪", prop: "other8" }, - { label: "婧愬崟绫诲瀷", prop: "other5" }, - { label: "婧愬崟", prop: "other6" } + { label: "浜у搧鍚嶇О", prop: "name", productName: true, isRequird: true }, + { label: "浜у搧缂栧彿", prop: "number" }, + { label: "鏁伴噺", prop: "amount", inputNumber: true, isRequird: true }, + { label: "閿�鍞崟浠�", prop: "price", inputFloat: true }, + { label: "浠风◣鍚堣", prop: "total", inputFloat: true } ] } } diff --git a/src/views/service/serviceFollowup/DetailServiceFollowup.vue b/src/views/service/serviceFollowup/DetailServiceFollowup.vue index 0891623..d27b411 100644 --- a/src/views/service/serviceFollowup/DetailServiceFollowup.vue +++ b/src/views/service/serviceFollowup/DetailServiceFollowup.vue @@ -17,11 +17,11 @@ <div class="tab-view"> <el-tabs v-model="activeName" @tab-click="tabsClick"> <el-tab-pane label="璇︽儏" name="first"></el-tab-pane> - <el-tab-pane label="闄勪欢绠$悊" name="annex"> - <!-- <template slot="label"> + <!-- <el-tab-pane label="闄勪欢绠$悊" name="annex"> --> + <!-- <template slot="label"> <div>璺熻繘璁板綍<el-badge type="primary" :value="2"> </el-badge></div> </template> --> - </el-tab-pane> + <!-- </el-tab-pane> --> </el-tabs> </div> <div v-if="activeName === 'first'" class="detail"> -- Gitblit v1.8.0