From 2605e8abbd4d5c8b6fc7086b05b876ed96917bb4 Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期四, 06 七月 2023 18:44:38 +0800 Subject: [PATCH] 销售模块部分页面及新建页面添加 --- src/views/service/serviceContract/AddServiceContractDialog.vue | 4 src/views/sales/productPlan/index.vue | 67 src/views/sales/subOrder/index.vue | 118 - src/views/service/serviceFollowup/AddServiceFollowupDialog.vue | 1 src/components/makepager/PublicFunctionBtnView.vue | 15 src/components/makepager/SearchCommonView.vue | 28 src/views/sales/masterOrder/index.vue | 135 +- src/views/sales/salesDetails/AddSalesDetailsDialog.vue | 404 ++++++++ src/views/sales/masterOrder/AddMasterOrderDialog.vue | 237 ++++ src/views/sales/refundForm/index.vue | 71 src/views/custom/customManage/AddCustomManageDialog.vue | 10 src/components/makepager/TableCommonView.vue | 107 + src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue | 558 +++++++++++ src/views/sales/salesReturn/index.vue | 74 src/views/sales/quotation/AddQuotationDialog.vue | 349 ++++++ src/views/sales/salesOpportunity/index.vue | 153 ++- src/views/sales/subOrder/AddSubOrderDialog.vue | 294 +++++ src/views/sales/contractManage/index.vue | 73 src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue | 1 src/views/sales/quotation/index.vue | 122 +- src/views/sales/salesDetails/index.vue | 172 +- 21 files changed, 2,445 insertions(+), 548 deletions(-) diff --git a/src/components/makepager/PublicFunctionBtnView.vue b/src/components/makepager/PublicFunctionBtnView.vue index 342b59e..8626cd8 100644 --- a/src/components/makepager/PublicFunctionBtnView.vue +++ b/src/components/makepager/PublicFunctionBtnView.vue @@ -37,16 +37,20 @@ </div> </div> <!-- 鍒楄〃 --> - <div v-if="listButton" class="gray btn-icon" @click="listBtnClick"> + <div v-if="listButton" class="btn-icon" @click="listBtnClick"> <i class="el-icon-tickets"></i> </div> <!-- 鍦板浘 --> - <div v-if="mapButton" class="gray btn-icon" @click="mapBtnClick"> + <div v-if="mapButton" class="btn-icon" @click="mapBtnClick"> <i class="el-icon-location-information"></i> </div> <!-- 缁熻 --> - <div v-if="statistics" class="gray btn-icon" @click="statisticsBtnClick"> + <div v-if="statistics" class="btn-icon" @click="statisticsBtnClick"> <i class="el-icon-data-line"></i> + </div> + <!-- 瀹㈡埛婕忔枟 --> + <div v-if="customFunnel" class="btn-icon" @click="statisticsBtnClick" style="color: #666"> + <i class="el-icon-postcard" title="瀹㈡埛婕忔枟"></i> </div> </div> </div> @@ -81,6 +85,10 @@ default: false }, statistics: { + type: Boolean, + default: false + }, + customFunnel: { type: Boolean, default: false }, @@ -167,6 +175,7 @@ font-size: 20px; border-radius: 4px; color: rgb(0, 102, 255); + background-color: #f2f4fb; } .view-scope { display: flex; diff --git a/src/components/makepager/SearchCommonView.vue b/src/components/makepager/SearchCommonView.vue index 9f2f17e..768342a 100644 --- a/src/components/makepager/SearchCommonView.vue +++ b/src/components/makepager/SearchCommonView.vue @@ -29,6 +29,10 @@ <div class="high-icon"><i class="el-icon-news"></i></div> <div>骞抽摵鏌ユ壘</div> </div> + <div v-if="labelSearch" class="other-search-label" @click="labelSearchClick"> + <div class="high-icon"><i class="el-icon-discount"></i></div> + <div>鏍囩鏌ユ壘</div> + </div> </div> </div> <div v-if="isTileSearch" class="search-bottom"> @@ -101,29 +105,17 @@ searchOptions: { type: Array, default: () => [] + }, + labelSearch: { + type: Boolean, + default: false } }, data() { return { - // queryClassOptions: [ - // { value: "1", label: "鍏ㄩ儴" }, - // { value: "2", label: "骞垮憡瀹d紶" }, - // { value: "3", label: "璺熻繘涓�" }, - // { value: "4", label: "澶辫触鍏抽棴" } - // ], queryClassValue: this.queryClass, searchInput: "", searchSelValue: this.searchSel, - // searchOptions: [ - // { value: "1", label: "瀹㈡埛鍚嶇О" }, - // { value: "2", label: "閿�鍞嚎绱㈢紪鍙�" }, - // { value: "3", label: "鑱旂郴浜哄鍚�" }, - // { value: "4", label: "鎵嬫満鍙风爜" }, - // { value: "5", label: "鍟嗘満鏉ユ簮" }, - // { value: "6", label: "鐪佷唤" }, - // { value: "7", label: "鍩庡競" }, - // { value: "8", label: "璐熻矗浜�" } - // ], isTileSearch: false, tileSearchData: [ { @@ -161,6 +153,7 @@ tileSearchClick() { this.isTileSearch = !this.isTileSearch }, + labelSearchClick() {}, // 鍒犻櫎 handleClick(row) { console.log(row) @@ -223,7 +216,8 @@ font-size: 18px; } } - .other-search-tile { + .other-search-tile, + .other-search-label { display: flex; margin-left: 20px; .high-icon { diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index d85e3b9..ee1728d 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -7,10 +7,13 @@ tooltip-effect="dark" style="width: 100%" :lazy="tableList.lazy" + :show-summary="showSummary.show" + :summary-method="getSummaries" + :span-method="arraySpanMethod" @selection-change="handleSelectionChange" :header-cell-style="{ background: '#ECF4FF', color: '#666' }" > - <el-table-column type="selection" width="55"> </el-table-column> + <el-table-column type="selection" width="40"> </el-table-column> <el-table-column v-for="(item, i) in tableList.tableColumn" :key="i" @@ -20,6 +23,10 @@ :min-width="item.min" sortable > + <template slot-scope="scope"> + <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> + <span v-else>{{ scope.row[item.prop] }}</span> + </template> </el-table-column> <slot name="tableButton" /> </el-table> @@ -41,25 +48,101 @@ ] } } + }, + showSummary: { + type: Object, + default: () => { + return { + show: false, + sumProp: [], + mergeNumber: 1 + } + } } }, data() { return {} }, - computed: { - maxHeight() { - if (this.tableList.height) { - return `calc(100vh - ${this.tableList.height})` - } - return undefined - } - }, + computed: {}, methods: { handleReserve(row) { return row._id ? row._id : row.id }, handleSelectionChange(val) { this.$emit("getSelectArray", val) + }, + // 琛屽悎骞� + arraySpanMethod() { + if (this.showSummary.show) { + this.$nextTick(() => { + if (this.$refs.table.$el) { + var current = this.$refs.table.$el + .querySelector(".el-table__footer-wrapper") + .querySelector(".el-table__footer") + var cell = current.rows[0].cells + for (let i = 0; i < this.showSummary.mergeNumber; i++) { + cell[i].style.display = "none" + } + cell[this.showSummary.mergeNumber].classList.remove("is-left") + cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() + } + }) + } + }, + // 閲戦鍚堣 + getSummaries(param) { + if (this.showSummary.show) { + const { columns, data } = param + console.log(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 + 1] = 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) + sums[index + 1] + } + }) + return sums + } + }, + //瀹氫箟number_format鏂规硶 + number_format(number, decimals, dec_point, thousands_sep) { + decimals = 2 //杩欓噷榛樿璁剧疆淇濈暀涓や綅灏忔暟锛屼篃鍙互娉ㄩ噴杩欏彞閲囩敤浼犲叆鐨勫弬鏁� + /* + * 鍙傛暟璇存槑锛� + * number锛氳鏍煎紡鍖栫殑鏁板瓧 + * decimals锛氫繚鐣欏嚑浣嶅皬鏁� + * dec_point锛氬皬鏁扮偣绗﹀彿 + * thousands_sep锛氬崈鍒嗕綅绗﹀彿 + * */ + number = (number + "").replace(/[^0-9+-Ee.]/g, "") + var n = !isFinite(+number) ? 0 : +number, + prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, + dec = typeof dec_point === "undefined" ? "." : dec_point + var s = n.toString().split(".") + var re = /(-?\d+)(\d{3})/ + while (re.test(s[0])) { + s[0] = s[0].replace(re, "$1" + sep + "$2") + } + if ((s[1] || "").length < prec) { + s[1] = s[1] || "" + s[1] += new Array(prec - s[1].length + 1).join("0") + } else { + s[1] = s[1].substring(0, prec) //灏忔暟鐐逛綅鏁拌秴鍑洪暱搴︽椂鎴彇鍓嶉潰鐨勪綅鏁� + } + return s.join(dec) } } } @@ -72,4 +155,10 @@ margin-right: 10px; margin-bottom: 40px; } +::v-deep { + .el-table__footer-wrapper tbody td.el-table__cell { + background-color: #fff; + text-align: right; + } +} </style> diff --git a/src/views/custom/customManage/AddCustomManageDialog.vue b/src/views/custom/customManage/AddCustomManageDialog.vue index 034e261..3f1ca68 100644 --- a/src/views/custom/customManage/AddCustomManageDialog.vue +++ b/src/views/custom/customManage/AddCustomManageDialog.vue @@ -403,16 +403,6 @@ salesHead: [{ required: true, message: "璇烽�夋嫨閿�鍞礋璐d汉", trigger: "change" }], approvalOpinion: [{ required: true, message: "璇疯緭鍏ュ鎵规剰瑙�", trigger: "blur" }] }, - businessSourceOptions: [ - { value: "1", label: "鍚庡彴娉ㄥ唽" }, - { value: "2", label: "浠g悊鍟嗗鎴�" }, - { value: "3", label: "鐢佃瘽闄岀敓鎷滆" }, - { value: "4", label: "鐩存帴璁块棶" }, - { value: "5", label: "椤圭洰鍚堜綔" }, - { value: "6", label: "涓汉鑷壘" }, - { value: "7", label: "浜屾閿�鍞�" }, - { value: "8", label: "鍏徃鐢佃瘽" } - ], salesHeadOptions: [ { value: "1", label: "BOSS" }, { value: "2", label: "Mia" }, diff --git a/src/views/sales/contractManage/index.vue b/src/views/sales/contractManage/index.vue index 147fea7..6e5af75 100644 --- a/src/views/sales/contractManage/index.vue +++ b/src/views/sales/contractManage/index.vue @@ -1,12 +1,16 @@ <template> <div class="contract-manage"> - <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> + <SearchCommonView + ref="searchCommonView" + :label-search="true" + :query-class-options="queryClassOptions" + :search-options="searchOptions" + /> <div class="btn-pager"> <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" + :receive="false" + :submit-approval="true" + ::statistics="true" :operates-list="operatesList" /> <PagerView class="page" /> @@ -16,13 +20,12 @@ <el-table-column label="鎿嶄綔" width="100"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> </div> </template> @@ -53,9 +56,11 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "宸叉壒鍑�" }, + { value: "3", label: "瀹℃壒涓�" }, + { value: "4", label: "鏈彁浜�" }, + { value: "3", label: "宸查┏鍥�" }, + { value: "4", label: "宸叉嫆缁�" } ], searchOptions: [], operatesList: [ @@ -66,9 +71,9 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} @@ -83,31 +88,19 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", - salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", - productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + documentNumber: "ZDYB02-2", + owner: "绯荤粺绠$悊鍛�", + approvalStatus: "瀹℃壒涓�", + creator: "绯荤粺绠$悊鍛�", + createTime: "2023-0703 11:22:12" } ], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 }, + { label: "璐熻矗浜�", prop: "owner", min: 90 }, + { label: "瀹℃壒鐘舵��", prop: "approvalStatus" }, + { label: "鍒涘缓浜�", prop: "creator", min: 100 }, + { label: "鍒涘缓鏃堕棿", prop: "createTime" } ] } this.searchOptions = [] @@ -118,9 +111,9 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", saleLeadNumber: "LEA50", contactName: "", @@ -141,9 +134,9 @@ // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { customName: row.customName, saleLeadNumber: row.saleLeadNumber, contactName: row.contactName, diff --git a/src/views/sales/masterOrder/AddMasterOrderDialog.vue b/src/views/sales/masterOrder/AddMasterOrderDialog.vue new file mode 100644 index 0000000..236c0f3 --- /dev/null +++ b/src/views/sales/masterOrder/AddMasterOrderDialog.vue @@ -0,0 +1,237 @@ +<template> + <div class="add-quotation"> + <el-dialog + :title="editCommonConfig.title + '閿�鍞�诲崟'" + :visible.sync="editConfig.visible" + :width="dialogWidth" + :before-close="handleClose" + > + <el-form + ref="form" + :model="editConfig.infomation" + :rules="rules" + label-position="right" + label-width="308px" + size="mini" + > + <!-- 淇℃伅 --> + <div class="basic-info"> + <!-- 鍩烘湰淇℃伅 --> + <div v-if="isUnflod" class="basic-info-title">鍩烘湰淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col v-if="isUnflod" :span="12"> + <el-form-item label="瀹㈡埛鍚嶇О" prop="customName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.customName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col v-if="isUnflod" :span="12"> + <el-form-item label="鍗曟嵁缂栧彿" prop="documentNumber"> + <el-input v-model="editConfig.infomation.documentNumber"></el-input> + </el-form-item> + </el-col> + <el-col v-if="isUnflod" :span="12"> + <el-form-item label="璐熻矗浜�" prop="owner"> + <el-select v-model="editConfig.infomation.owner" placeholder="璇烽�夋嫨" size="mini" style="width: 63%"> + <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈嶅姟寮�濮嬫椂闂�" prop="serviceStartTime"> + <el-date-picker v-model="editConfig.infomation.serviceStartTime" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈嶅姟鎴鏃堕棿" prop="serviceDeadline"> + <el-date-picker v-model="editConfig.infomation.serviceDeadline" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍚堝悓閲戦" prop="contractAmount"> + <el-input v-model="editConfig.infomation.contractAmount"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 闄勪欢淇℃伅 --> + <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div> + <div v-if="isUnflod" class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="闄勪欢" prop=""> + <div class="annex-view"> + <div @click="addAnnexClick">娣诲姞</div> + <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + <!-- 灞曞紑鏀惰捣 --> + <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> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +export default { + name: "QuotationDialog", + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + infomation: { + customName: "", + documentNumber: "AC6521", + owner: "", + serviceStartTime: "", + serviceDeadline: "", + contractAmount: "" + } + } + } + } + }, + components: {}, + computed: {}, + data() { + return { + dialogWidth: "80%", + editConfig: this.editCommonConfig, + rules: { + documentNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + owner: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }] + }, + ownerOptions: [ + // 璐熻矗浜� + { value: "1", label: "BOSS" }, + { value: "2", label: "Mia" }, + { value: "3", label: "璐㈠姟" }, + { value: "4", label: "甯傚満" }, + { value: "5", label: "绯荤粺绠$悊鍛�" }, + { value: "6", label: "閿�鍞�" }, + { value: "7", label: "閿�鍞�荤洃" } + ], + unflodCollapseStr: "鏀惰捣", + isUnflod: true + } + }, + created() {}, + methods: { + handleClose() { + this.editConfig.visible = false + }, + // 娣诲姞闄勪欢 + addAnnexClick() {}, + // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 + setFormatClick() {}, + // 灞曞紑鏀惰捣 + unflodCollapseClick() { + if (this.unflodCollapseStr === "鏀惰捣") { + this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰" + this.isUnflod = false + } else { + this.unflodCollapseStr = "鏀惰捣" + this.isUnflod = true + } + } + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.add-quotation { + .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 { + display: flex; + .common-select-btn { + margin-left: 5px; + font-size: 18px; + } + } + } + .address-view { + margin-top: 10px; + padding-right: 40px; + } + .annex-view { + display: flex; + color: #6166d3; + .setFormat { + margin-left: 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; + } +} +::v-deep { + .el-dialog__header { + padding: 12.5px 10px; + border-bottom: 1px solid #e5e5e5; + .el-dialog__title { + font-size: 15px; + color: #323232; + font-weight: bold; + } + } + .el-dialog__body { + padding: 0px; + } + .el-dialog__footer { + padding: 0px; + text-align: center; + box-sizing: border-box; + border-top: 1px solid #dadee5; + } + .product-view { + .el-form-item__label { + padding: 0; + } + } +} +</style> diff --git a/src/views/sales/masterOrder/index.vue b/src/views/sales/masterOrder/index.vue index 55e93d7..bed80be 100644 --- a/src/views/sales/masterOrder/index.vue +++ b/src/views/sales/masterOrder/index.vue @@ -2,27 +2,20 @@ <div class="master-order"> <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :operates-list="operatesList" /> <PagerView class="page" /> </div> - <TableCommonView ref="tableListRef" :table-list="tableList"> + <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList"> <template slot="tableButton"> - <el-table-column label="鎿嶄綔" width="100"> + <el-table-column label="鎿嶄綔" width="60"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddMasterOrderDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> </div> </template> @@ -31,7 +24,7 @@ import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" import PagerView from "@/components/makepager/PagerView" import TableCommonView from "@/components/makepager/TableCommonView" -import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" +import AddMasterOrderDialog from "@/views/sales/masterOrder/AddMasterOrderDialog" export default { name: "MasterOrder", @@ -41,21 +34,19 @@ PublicFunctionBtnView, PagerView, TableCommonView, - AddSalesLeadDialog + AddMasterOrderDialog }, - computed: { - searchCommonHeight() { - return this.$refs.searchCommonView.offsetHeight - } - }, + computed: {}, data() { return { tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "宸叉壒鍑�" }, + { value: "3", label: "瀹℃壒涓�" }, + { value: "4", label: "鏈彁浜�" }, + { value: "5", label: "宸查┏鍥�" }, + { value: "6", label: "宸叉嫆缁�" } ], searchOptions: [], operatesList: [ @@ -66,12 +57,17 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} + }, + showSummary: { + show: true, + sumProp: ["contractAmount"], + mergeNumber: 5 } } }, @@ -83,31 +79,32 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", - salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", - productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + documentNumber: "ZDYBD03-1", + customName: "寮犱笁", + serviceStartTime: "2023-0703 11:22:12", + serviceDeadline: "2023-0703 11:22:12", + contractAmount: 13000.0, + owner: "绯荤粺绠$悊鍛�", + approvalStatus: "鏈彁浜�" + }, + { + documentNumber: "", + customName: "", + serviceStartTime: "", + serviceDeadline: "", + contractAmount: 13000.0, + owner: "", + approvalStatus: "" } ], tableColumn: [ + { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 }, // 鍗曟嵁缂栧彿 { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "鏈嶅姟寮�濮嬫椂闂�", prop: "serviceStartTime", min: 90 }, // 鏈嶅姟寮�濮嬫椂闂� + { label: "鏈嶅姟鎴鏃堕棿", prop: "serviceDeadline" }, // 鏈嶅姟鎴鏃堕棿 + { label: "鍚堝悓閲戦", prop: "contractAmount", min: 100 }, // 鍚堝悓閲戦 + { label: "璐熻矗浜�", prop: "owner" }, // 璐熻矗浜� + { label: "瀹℃壒鐘舵��", prop: "approvalStatus" } // 瀹℃壒鐘舵�� ] } this.searchOptions = [] @@ -118,47 +115,29 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", - saleLeadNumber: "LEA50", - contactName: "", - contactDuties: "", - phoneNumber: "", - businessStatus: "鏂板缓", - businessSource: "1", + documentNumber: "AC6521", owner: "", - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + serviceStartTime: "", + serviceDeadline: "", + contractAmount: "" } }, // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { - customName: row.customName, - saleLeadNumber: row.saleLeadNumber, - contactName: row.contactName, - contactDuties: row.contactDuties, - phoneNumber: row.phoneNumber, - businessStatus: "鏂板缓", - businessSource: row.businessSource, - owner: row.owner, - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { + customName: "", + documentNumber: "AC6521", + owner: "", + serviceStartTime: "", + serviceDeadline: "", + contractAmount: "" } } } diff --git a/src/views/sales/productPlan/index.vue b/src/views/sales/productPlan/index.vue index b764104..4b9f479 100644 --- a/src/views/sales/productPlan/index.vue +++ b/src/views/sales/productPlan/index.vue @@ -2,13 +2,7 @@ <div class="product-plan"> <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :operates-list="operatesList" /> <PagerView class="page" /> </div> <TableCommonView ref="tableListRef" :table-list="tableList"> @@ -16,13 +10,12 @@ <el-table-column label="鎿嶄綔" width="100"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫--> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> </div> </template> @@ -53,9 +46,11 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "宸叉壒鍑�" }, + { value: "3", label: "瀹℃壒涓�" }, + { value: "4", label: "鏈彁浜�" }, + { value: "3", label: "宸查┏鍥�" }, + { value: "4", label: "宸叉嫆缁�" } ], searchOptions: [], operatesList: [ @@ -66,9 +61,9 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} @@ -83,31 +78,19 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", - salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", - productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + documentNumber: "ZDYB04-2", + owner: "绯荤粺绠$悊鍛�", + approvalStatus: "鏈彁浜�", + creator: "绯荤粺绠$悊鍛�", + createTime: "2023-0703 11:22:12" } ], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 }, + { label: "璐熻矗浜�", prop: "owner", min: 90 }, + { label: "瀹℃壒鐘舵��", prop: "approvalStatus" }, + { label: "鍒涘缓浜�", prop: "creator", min: 100 }, + { label: "鍒涘缓鏃堕棿", prop: "createTime" } ] } this.searchOptions = [] @@ -118,9 +101,9 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", saleLeadNumber: "LEA50", contactName: "", @@ -141,9 +124,9 @@ // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { customName: row.customName, saleLeadNumber: row.saleLeadNumber, contactName: row.contactName, diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue new file mode 100644 index 0000000..210e329 --- /dev/null +++ b/src/views/sales/quotation/AddQuotationDialog.vue @@ -0,0 +1,349 @@ +<template> + <div class="add-quotation"> + <el-dialog + :title="editCommonConfig.title + '鎶ヤ环鍗�'" + :visible.sync="editConfig.visible" + :width="dialogWidth" + :before-close="handleClose" + > + <el-form + ref="form" + :model="editConfig.infomation" + :rules="rules" + label-position="right" + label-width="308px" + size="mini" + style="height: 60vh; overflow-x: hidden" + > + <!-- 淇℃伅 --> + <div class="basic-info"> + <!-- 鍩烘湰淇℃伅 --> + <div class="basic-info-title">鍩烘湰淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="瀹㈡埛鍚嶇О" prop="customName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.customName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎶ヤ环缂栧彿" prop="quotationNo"> + <el-input v-model="editConfig.infomation.quotationNo"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎶ヤ环鍗曠姸鎬�" prop="quotationStatus"> + <CommonSelectView + :common-value="editConfig.infomation.quotationStatus" + :common-options="quotationStatusOptions" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈夋晥鏈熻嚦" prop="validTo"> + <el-date-picker v-model="editConfig.infomation.validTo" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑱旂郴浜哄鍚�" prop="contactName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.contactName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞礋璐d汉" prop="salesHead"> + <el-select + v-model="editConfig.infomation.salesHead" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + > + <el-option + v-for="item in salesHeadOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞満浼�" prop="salesOpportunity"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.salesOpportunity"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 鏉℃涓庢潯浠� --> + <div class="basic-info-title">鏉℃涓庢潯浠�</div> + <div class="address-view"> + <el-row> + <el-col :span="24"> + <el-form-item label="鏉℃涓庢潯浠�" prop="termsTreaty"> + <el-input + type="textarea" + :autosize="{ minRows: 4 }" + v-model="editConfig.infomation.termsTreaty" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 闄勪欢淇℃伅 --> + <div class="basic-info-title">闄勪欢淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="闄勪欢" prop=""> + <div class="annex-view"> + <div @click="addAnnexClick">娣诲姞</div> + <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 浜у搧绠$悊 --> + <div class="basic-info-title" style="display: flex"> + 浜у搧绠$悊 + <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> + </el-select> + </div> + </div> + <div class="product-view"> + <CommonFormTableView :product-table-list="productTableList" /> + </div> + <!-- 閫夋嫨瀹℃壒娴佺▼ --> + <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="20"> + <el-form-item label="瀹℃壒娴佺▼" prop="approvalWorkflow"> + <el-select + v-model="editConfig.infomation.approvalWorkflow" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 100%" + > + <el-option + v-for="item in approvalWorkflowOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="瀹℃壒姝ラ" prop="approvalSteps"> + <el-input v-model="editConfig.infomation.approvalSteps"></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="瀹℃壒浜�" prop="approvalPerson"> + <el-input v-model="editConfig.infomation.approvalPerson"></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="瀹℃壒鎰忚" prop="approvalOpinion"> + <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + </el-form> + + <div slot="footer" class="dialog-footer"> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import CommonSelectView from "@/components/makepager/CommonSelectView" +import CommonFormTableView from "@/components/makepager/CommonFormTableView" +export default { + name: "QuotationDialog", + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + infomation: { + customName: "", + quotationNo: "AC6521", + quotationStatus: "", + validTo: "", + contactName: "", + salesHead: "", + salesOpportunity: "", + termsTreaty: "", + approvalWorkflow: "", + approvalSteps: "", + approvalPerson: "", + approvalOpinion: "" + } + } + } + } + }, + components: { CommonSelectView, CommonFormTableView }, + computed: { + searchCommonHeight() { + return this.$refs.searchCommonView.offsetHeight + } + }, + data() { + return { + dialogWidth: "80%", + editConfig: this.editCommonConfig, + rules: { + customName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + quotationNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + quotationStatus: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + salesHead: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }] + }, + salesHeadOptions: [ + // 閿�鍞礋璐d汉 + { value: "1", label: "BOSS" }, + { value: "2", label: "Mia" }, + { value: "3", label: "璐㈠姟" }, + { value: "4", label: "甯傚満" }, + { value: "5", label: "绯荤粺绠$悊鍛�" }, + { value: "6", label: "閿�鍞�" }, + { value: "7", label: "閿�鍞�荤洃" } + ], + quotationStatusOptions: [], // 鎶ヤ环鍗曠姸鎬� + currencyOptions: [ + { value: "1", label: "浜烘皯甯�(楼)" }, + { value: "2", label: "鑻遍晳(拢)" }, + { value: "3", label: "娆у厓(鈧�)" } + ], // 甯佺 + approvalWorkflowOptions: [], // 瀹℃壒娴佺▼ + productTableList: { + tableData: [ + { + id: "1", + productNumber: "123", + productName: "", + startDate: "", + endDate: "2016-05-02", + number: "", + address: "" + } + ] + } + } + }, + created() {}, + methods: { + handleClose() { + this.editConfig.visible = false + }, + // 娣诲姞闄勪欢 + addAnnexClick() {}, + // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 + setFormatClick() {} + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.add-quotation { + .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 { + display: flex; + .common-select-btn { + margin-left: 5px; + font-size: 18px; + } + } + } + .address-view { + margin-top: 10px; + padding-right: 40px; + } + .annex-view { + display: flex; + color: #6166d3; + .setFormat { + margin-left: 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; + } +} +::v-deep { + .el-dialog__header { + padding: 12.5px 10px; + border-bottom: 1px solid #e5e5e5; + .el-dialog__title { + font-size: 15px; + color: #323232; + font-weight: bold; + } + } + .el-dialog__body { + padding: 0px; + } + .el-dialog__footer { + padding: 0px; + text-align: center; + box-sizing: border-box; + border-top: 1px solid #dadee5; + } + .product-view { + .el-form-item__label { + padding: 0; + } + } +} +</style> diff --git a/src/views/sales/quotation/index.vue b/src/views/sales/quotation/index.vue index d3a1cad..805ae6d 100644 --- a/src/views/sales/quotation/index.vue +++ b/src/views/sales/quotation/index.vue @@ -1,28 +1,26 @@ <template> <div class="quotation"> - <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> + <SearchCommonView + ref="searchCommonView" + :label-search="true" + :query-class-options="queryClassOptions" + :search-options="searchOptions" + /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :submit-approval="true" :operates-list="operatesList" /> <PagerView class="page" /> </div> <TableCommonView ref="tableListRef" :table-list="tableList"> <template slot="tableButton"> - <el-table-column label="鎿嶄綔" width="100"> + <el-table-column label="鎿嶄綔" width="60"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddQuotationDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> </div> </template> @@ -31,7 +29,7 @@ import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" import PagerView from "@/components/makepager/PagerView" import TableCommonView from "@/components/makepager/TableCommonView" -import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" +import AddQuotationDialog from "@/views/sales/quotation/AddQuotationDialog" export default { name: "QuotationView", @@ -41,7 +39,7 @@ PublicFunctionBtnView, PagerView, TableCommonView, - AddSalesLeadDialog + AddQuotationDialog }, computed: { searchCommonHeight() { @@ -53,9 +51,9 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "浠婃棩鍒涘缓" }, + { value: "3", label: "鏈懆鍒涘缓" }, + { value: "4", label: "鏈湀鍒涘缓" } ], searchOptions: [], operatesList: [ @@ -66,9 +64,9 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} @@ -83,31 +81,29 @@ this.tableList = { tableInfomation: [ { + quotationNo: "QUO109", customName: "123123", - customType: "鏅�氬鎴�", + contactName: "椹噷濂�", salesHead: "绯荤粺绠$悊鍛�", modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", + subTotal: "锟�9,499.00", + total: "锟�9,499.00", productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + number: "1.00", + priceTax: "锟�9499.00" } ], tableColumn: [ + { label: "鎶ヤ环鍗曞彿", prop: "quotationNo", min: 90 }, // 鎶ヤ环鍗曞彿 { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 + { label: "鑱旂郴浜哄鍚�", prop: "contactName", min: 90 }, // 鑱旂郴浜哄鍚� { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� + { label: "灏忚", prop: "subTotal" }, // 灏忚 + { label: "鍚堣", prop: "total" }, // 鍚堣 { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "鏁伴噺", prop: "number" }, // 鏁伴噺 + { label: "浠风◣鍚堣", prop: "priceTax" } // 浠风◣鍚堣 ] } this.searchOptions = [] @@ -118,47 +114,41 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", - saleLeadNumber: "LEA50", + quotationNo: "AC6521", + quotationStatus: "", + validTo: "", contactName: "", - contactDuties: "", - phoneNumber: "", - businessStatus: "鏂板缓", - businessSource: "1", - owner: "", - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + salesHead: "", + salesOpportunity: "", + termsTreaty: "", + approvalWorkflow: "", + approvalSteps: "", + approvalPerson: "", + approvalOpinion: "" } }, // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { - customName: row.customName, - saleLeadNumber: row.saleLeadNumber, - contactName: row.contactName, - contactDuties: row.contactDuties, - phoneNumber: row.phoneNumber, - businessStatus: "鏂板缓", - businessSource: row.businessSource, - owner: row.owner, - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { + customName: "", + quotationNo: "AC6521", + quotationStatus: "", + validTo: "", + contactName: "", + salesHead: "", + salesOpportunity: "", + termsTreaty: "", + approvalWorkflow: "", + approvalSteps: "", + approvalPerson: "", + approvalOpinion: "" } } } diff --git a/src/views/sales/refundForm/index.vue b/src/views/sales/refundForm/index.vue index 46a0efe..724699f 100644 --- a/src/views/sales/refundForm/index.vue +++ b/src/views/sales/refundForm/index.vue @@ -2,13 +2,7 @@ <div class="refund-form"> <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :receive="false" :submit-approval="true" :operates-list="operatesList" /> <PagerView class="page" /> </div> <TableCommonView ref="tableListRef" :table-list="tableList"> @@ -16,13 +10,12 @@ <el-table-column label="鎿嶄綔" width="100"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> </div> </template> @@ -53,9 +46,9 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "鐜伴噾閫�娆�" }, + { value: "3", label: "鏃犻渶鍙戠エ" }, + { value: "4", label: "鏈湀閫�娆�" } ], searchOptions: [], operatesList: [ @@ -66,9 +59,9 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} @@ -83,31 +76,27 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", + refundOrderNo: "TKD20220118-44", + customName: "涓囩鐗╂枡鍙戝睍鏈夐檺鍏徃", + refundDate: "2022-01-18", + account: "浜烘皯甯佽处鎴�", + whetherInvoicing: "鏈紑", + paymentMethod: "鐜伴噾", salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", - productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + modifyTime: "202-01-18 13:11:05", + priceTax: "锟�12.00" } ], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "閫�娆惧崟缂栧彿", prop: "refundOrderNo" }, + { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, + { label: "閫�娆炬棩鏈�", prop: "refundDate", min: 90 }, + { label: "璐︽埛", prop: "account" }, + { label: "鏄惁寮�绁�", prop: "whetherInvoicing", min: 100 }, + { label: "浠樻鏂瑰紡", prop: "paymentMethod" }, + { label: "閿�鍞礋璐d汉", prop: "salesHead" }, + { label: "淇敼鏃堕棿", prop: "modifyTime" }, + { label: "浠风◣鍚堣", prop: "priceTax" } ] } this.searchOptions = [] @@ -118,9 +107,9 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", saleLeadNumber: "LEA50", contactName: "", @@ -141,9 +130,9 @@ // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { customName: row.customName, saleLeadNumber: row.saleLeadNumber, contactName: row.contactName, diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue new file mode 100644 index 0000000..a79366c --- /dev/null +++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue @@ -0,0 +1,404 @@ +<template> + <div class="add-sales-details"> + <el-dialog + :title="editCommonConfig.title + '閿�鍞槑缁嗗崟'" + :visible.sync="editConfig.visible" + :width="dialogWidth" + :before-close="handleClose" + > + <el-form + ref="form" + :model="editConfig.infomation" + :rules="rules" + label-position="right" + label-width="308px" + size="mini" + style="height: 60vh; overflow-x: hidden" + > + <!-- 淇℃伅 --> + <div class="basic-info"> + <!-- 鍩烘湰淇℃伅 --> + <div class="basic-info-title">鍩烘湰淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="瀹㈡埛鍚嶇О" prop="customName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.customName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁㈠崟缂栧彿" prop="orderNumber"> + <el-input v-model="editConfig.infomation.orderNumber"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞満浼�" prop="salesOpportunity"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.salesOpportunity"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閫夋嫨婧愬崟" prop="selSourceOrder"> + <el-select v-model="editConfig.infomation.selSourceOrder" size="mini" style="width: 63%"> + <el-option + v-for="item in selSourceOrderOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="绛剧害鏃ユ湡" prop="signDate"> + <el-date-picker v-model="editConfig.infomation.signDate" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞礋璐d汉" prop="salesHead"> + <el-select + v-model="editConfig.infomation.salesHead" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + > + <el-option + v-for="item in salesHeadOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="浜や粯鏃ユ湡" prop="deliveryDate"> + <el-date-picker v-model="editConfig.infomation.deliveryDate" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="寰俊璁㈠崟鐘舵��" prop="wechatOrderStatus"> + <CommonSelectView + :common-value="editConfig.infomation.wechatOrderStatus" + :common-options="wechatOrderStatusOptions" + /> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 鏀惰揣淇℃伅 --> + <div class="basic-info-title">鏀惰揣淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="鏀惰揣浜�" prop="consignee"> + <el-input v-model="editConfig.infomation.consignee"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏀惰揣浜鸿仈绯绘柟寮�" prop="consigneeContactInfo"> + <el-input v-model="editConfig.infomation.consigneeContactInfo"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鏀惰揣鍦板潃" prop="shippingAddress"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.shippingAddress" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 鏉℃涓庢潯浠� --> + <div class="basic-info-title">鏉℃涓庢潯浠�</div> + <div class="address-view"> + <el-row> + <el-col :span="24"> + <el-form-item label="鏉℃涓庢潯浠�" prop="termsTreaty"> + <el-input + type="textarea" + :autosize="{ minRows: 4 }" + v-model="editConfig.infomation.termsTreaty" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 澶囨敞淇℃伅 --> + <div class="basic-info-title">澶囨敞淇℃伅</div> + <div class="address-view"> + <el-row> + <el-col :span="24"> + <el-form-item label="澶囨敞" prop="notes"> + <el-input type="textarea" :autosize="{ minRows: 2 }" v-model="editConfig.infomation.notes"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 闄勪欢淇℃伅 --> + <div class="basic-info-title">闄勪欢淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="闄勪欢" prop=""> + <div class="annex-view"> + <div @click="addAnnexClick">娣诲姞</div> + <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 浜у搧绠$悊 --> + <div class="basic-info-title" style="display: flex"> + 浜у搧绠$悊 + <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> + </el-select> + </div> + </div> + <div class="product-view"> + <CommonFormTableView :product-table-list="productTableList" /> + </div> + <!-- 閫夋嫨瀹℃壒娴佺▼ --> + <div v-if="editConfig.title === '鏂板缓'" class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div> + <div v-if="editConfig.title === '鏂板缓'" class="basic-info-view"> + <el-row> + <el-col :span="20"> + <el-form-item label="瀹℃壒娴佺▼" prop="approvalWorkflow"> + <el-select + v-model="editConfig.infomation.approvalWorkflow" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 100%" + > + <el-option + v-for="item in approvalWorkflowOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="瀹℃壒姝ラ" prop="approvalSteps"> + <el-input v-model="editConfig.infomation.approvalSteps"></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="瀹℃壒浜�" prop="approvalPerson"> + <el-input v-model="editConfig.infomation.approvalPerson"></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="闇�瑕佸姞鎬ュ鎵�" prop="approvalUrgent"> + <el-checkbox v-model="editConfig.infomation.approvalUrgent"></el-checkbox> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="瀹℃壒鎰忚" prop="approvalOpinion"> + <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + </el-form> + + <div slot="footer" class="dialog-footer"> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import CommonSelectView from "@/components/makepager/CommonSelectView" +import CommonFormTableView from "@/components/makepager/CommonFormTableView" +export default { + name: "AddSalesDetailsDialog", + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + infomation: { + customName: "", + orderNumber: "XSHT521", + salesOpportunity: "", + selSourceOrder: "", + signDate: "", + salesHead: "", + deliveryDate: "", + wechatOrderStatus: "", + consignee: "", + consigneeContactInfo: "", + shippingAddress: "", + termsTreaty: "", + notes: "", + approvalWorkflow: "", + approvalSteps: "", + approvalPerson: "", + approvalUrgent: "", + approvalOpinion: "" + } + } + } + } + }, + components: { CommonSelectView, CommonFormTableView }, + computed: {}, + data() { + return { + dialogWidth: "80%", + editConfig: this.editCommonConfig, + rules: { + customName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + orderNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + signDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + salesHead: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }], + approvalOpinion: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }] + }, + salesHeadOptions: [ + // 閿�鍞礋璐d汉 + { value: "1", label: "BOSS" }, + { value: "2", label: "Mia" }, + { value: "3", label: "璐㈠姟" }, + { value: "4", label: "甯傚満" }, + { value: "5", label: "绯荤粺绠$悊鍛�" }, + { value: "6", label: "閿�鍞�" }, + { value: "7", label: "閿�鍞�荤洃" } + ], + selSourceOrderOptions: [{ value: "1", label: "閿�鍞瓙鍗�" }], + wechatOrderStatusOptions: [], // 寰俊璁㈠崟鐘舵�� + currencyOptions: [ + { value: "1", label: "浜烘皯甯�(楼)" }, + { value: "2", label: "鑻遍晳(拢)" }, + { value: "3", label: "娆у厓(鈧�)" } + ], // 甯佺 + approvalWorkflowOptions: [], // 瀹℃壒娴佺▼ + productTableList: { + tableData: [ + { + id: "1", + productNumber: "123", + productName: "", + startDate: "", + endDate: "2016-05-02", + number: "", + address: "" + } + ] + } + } + }, + created() {}, + methods: { + handleClose() { + this.editConfig.visible = false + }, + // 娣诲姞闄勪欢 + addAnnexClick() {}, + // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 + setFormatClick() {} + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.add-sales-details { + .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 { + display: flex; + .common-select-btn { + margin-left: 5px; + font-size: 18px; + } + } + } + .address-view { + margin-top: 10px; + padding-right: 40px; + } + .annex-view { + display: flex; + color: #6166d3; + .setFormat { + margin-left: 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; + } +} +::v-deep { + .el-dialog__header { + padding: 12.5px 10px; + border-bottom: 1px solid #e5e5e5; + .el-dialog__title { + font-size: 15px; + color: #323232; + font-weight: bold; + } + } + .el-dialog__body { + padding: 0px; + } + .el-dialog__footer { + padding: 0px; + text-align: center; + box-sizing: border-box; + border-top: 1px solid #dadee5; + } + .product-view { + .el-form-item__label { + padding: 0; + } + } +} +</style> diff --git a/src/views/sales/salesDetails/index.vue b/src/views/sales/salesDetails/index.vue index e82b948..9bc9112 100644 --- a/src/views/sales/salesDetails/index.vue +++ b/src/views/sales/salesDetails/index.vue @@ -2,27 +2,20 @@ <div class="sales-details"> <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :submit-approval="true" :operates-list="operatesList" /> <PagerView class="page" /> </div> - <TableCommonView ref="tableListRef" :table-list="tableList"> + <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList"> <template slot="tableButton"> - <el-table-column label="鎿嶄綔" width="100"> + <el-table-column label="鎿嶄綔" width="60"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSalesDetailsDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> </div> </template> @@ -31,7 +24,7 @@ import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" import PagerView from "@/components/makepager/PagerView" import TableCommonView from "@/components/makepager/TableCommonView" -import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" +import AddSalesDetailsDialog from "@/views/sales/salesDetails/AddSalesDetailsDialog" export default { name: "SalesDetails", @@ -41,7 +34,7 @@ PublicFunctionBtnView, PagerView, TableCommonView, - AddSalesLeadDialog + AddSalesDetailsDialog }, computed: { searchCommonHeight() { @@ -53,9 +46,10 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "宸插彂璐�" }, + { value: "3", label: "寰呴噰璐�" }, + { value: "4", label: "鏈湀浜や粯" }, + { value: "5", label: "宸蹭綔搴�" } ], searchOptions: [], operatesList: [ @@ -66,12 +60,26 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} + }, + showSummary: { + show: true, + sumProp: [ + "receiveTotalAmount", + "total", + "amountReceivable", + "invoicedAmount", + "uninvoicedAmount", + "number", + "unOutoundNo", + "priceTax" + ], + mergeNumber: 6 } } }, @@ -83,31 +91,39 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", + orderNumber: "XSHT265", + customName: "55555", + signDate: "2023-06-25", salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", + outboundStatus: "鏈嚭搴�", + receiveTotalAmount: "8000.00", + total: "8000.00", + amountReceivable: "8000.00", + invoicedAmount: "8000.00", + uninvoicedAmount: "8000.00", productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + number: "1.00", + taxUnitPrice: "8000.00", + unOutoundNo: "1.00", + priceTax: "8000.00" } ], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "璁㈠崟缂栧彿", prop: "orderNumber" }, + { label: "瀹㈡埛鍚嶇О", prop: "customName" }, + { label: "绛剧害鏃ユ湡", prop: "signDate" }, + { label: "閿�鍞礋璐d汉", prop: "salesHead" }, + { label: "鍑哄簱鐘舵��", prop: "outboundStatus" }, + { label: "宸叉敹鎬婚", prop: "receiveTotalAmount", price: true }, + { label: "鍚堣", prop: "total", price: true }, + { label: "搴旀敹浣欓", prop: "amountReceivable", price: true }, + { label: "宸插紑绁ㄩ噾棰�", prop: "invoicedAmount", price: true }, + { label: "鏈紑绁ㄩ噾棰�", prop: "uninvoicedAmount", price: true }, + { label: "浜у搧鍚嶇О", prop: "productName" }, + { label: "鏁伴噺", prop: "number" }, + { label: "鍚◣鍗曚环", prop: "taxUnitPrice", price: true }, + { label: "鏈嚭搴撴暟閲�", prop: "unOutoundNo" }, + { label: "浠风◣鍚堣", prop: "priceTax", price: true } ] } this.searchOptions = [] @@ -118,47 +134,51 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", - saleLeadNumber: "LEA50", - contactName: "", - contactDuties: "", - phoneNumber: "", - businessStatus: "鏂板缓", - businessSource: "1", - owner: "", - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + orderNumber: "XSHT521", + salesOpportunity: "", + selSourceOrder: "", + signDate: "", + salesHead: "", + deliveryDate: "", + wechatOrderStatus: "", + consignee: "", + consigneeContactInfo: "", + shippingAddress: "", + termsTreaty: "", + notes: "", + approvalWorkflow: "", + approvalSteps: "", + approvalPerson: "", + approvalOpinion: "" } }, // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { - customName: row.customName, - saleLeadNumber: row.saleLeadNumber, - contactName: row.contactName, - contactDuties: row.contactDuties, - phoneNumber: row.phoneNumber, - businessStatus: "鏂板缓", - businessSource: row.businessSource, - owner: row.owner, - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { + customName: "", + orderNumber: "XSHT521", + salesOpportunity: "", + selSourceOrder: "", + signDate: "", + salesHead: "", + deliveryDate: "", + wechatOrderStatus: "", + consignee: "", + consigneeContactInfo: "", + shippingAddress: "", + termsTreaty: "", + notes: "", + approvalWorkflow: "", + approvalSteps: "", + approvalPerson: "", + approvalOpinion: "" } } } @@ -175,4 +195,10 @@ } } } +::v-deep { + .el-table .cell, + .el-table th.el-table__cell > .cell { + padding: 0 2px; + } +} </style> diff --git a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue new file mode 100644 index 0000000..f11fa15 --- /dev/null +++ b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue @@ -0,0 +1,558 @@ +<template> + <div class="add-sales-opportunity"> + <el-dialog + :title="editCommonConfig.title + '閿�鍞満浼�'" + :visible.sync="editConfig.visible" + :width="dialogWidth" + :before-close="handleClose" + > + <el-form + ref="form" + :model="editConfig.infomation" + :rules="rules" + label-position="right" + label-width="308px" + size="mini" + style="height: 60vh; overflow-x: hidden" + > + <!-- 淇℃伅 --> + <div class="basic-info"> + <!-- 鍩烘湰淇℃伅 --> + <div class="basic-info-title">鏈轰細鍩烘湰淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="瀹㈡埛鍚嶇О" prop="customName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.customName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞満浼氱紪鍙�" prop="salesOpportunityNo"> + <el-input v-model="editConfig.infomation.salesOpportunityNo"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈轰細鍚嶇О" prop="opportunityName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.opportunityName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <!-- <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> --> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑱旂郴浜哄鍚�" prop="contactName"> + <el-input v-model="editConfig.infomation.contactName"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍟嗘満鏉ユ簮" prop="businessSource"> + <CommonSelectView + :common-value="editConfig.infomation.businessSource" + :common-options="businessSourceOptions" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍟嗘満绫诲瀷" prop="businessType"> + <CommonSelectView + :common-value="editConfig.infomation.businessType" + :common-options="businessTypeOptions" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞樁娈�" prop="saleStage"> + <CommonSelectView + :common-value="editConfig.infomation.saleStage" + :common-options="saleStageOptions" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞礋璐d汉" prop="salesHead"> + <el-select + v-model="editConfig.infomation.salesHead" + placeholder="璇烽�夋嫨" + size="mini" + style="width: 63%" + > + <el-option + v-for="item in salesHeadOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑰佸鎴疯惀閿�" prop="oldCustomerMarket"> + <CommonSelectView + :common-value="editConfig.infomation.oldCustomerMarket" + :common-options="oldCustomerMarketOptions" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="绔炰簤瀵规墜" prop="competitor"> + <el-input v-model="editConfig.infomation.competitor"></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 閿�鍞娴� --> + <div class="basic-info-title">閿�鍞娴�</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="鍙兘鎬�(%)" prop="possible"> + <CommonSelectView :common-value="editConfig.infomation.possible" :common-options="possibleOptions" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="甯佺" prop="currency"> + <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> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="棰勭畻缁濆鍊�" prop="budgetAbsoluteValue"> + <el-input v-model="editConfig.infomation.budgetAbsoluteValue"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="棰勮鎴愪氦鏃ユ湡" prop="expectDealDate"> + <el-date-picker v-model="editConfig.infomation.expectDealDate" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="棰勮鍚堝悓閲戦" prop="expectContractAmount"> + <el-input v-model="editConfig.infomation.expectContractAmount"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="褰撳墠鐘舵��" prop="currentState"> + <CommonSelectView + :common-value="editConfig.infomation.currentState" + :common-options="currentStateOptions" + /> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 鍟嗘満涓冭绱� --> + <div class="basic-info-title">鍟嗘満涓冭绱�(5W2P)</div> + <div class="address-view"> + <el-row> + <el-col :span="20"> + <el-form-item label="瀹㈡埛闇�姹傛垨鐥涚偣锛坵hy锛�" prop="demandPainPoint"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.demandPainPoint" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="鏄惁宸茬粡绔嬮」锛坧lan锛�" prop="projectApproval"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.projectApproval" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="璧勯噾棰勭畻鏄灏戯紙plan锛�" prop="fundBudget"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.fundBudget" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="鍏抽敭鍐崇瓥浜烘槸璋侊紙who锛�" prop="decisionMaker"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.decisionMaker" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="鍏抽敭鍐崇瓥鍥犵礌鏈夊摢浜涳紙what锛�" prop="decisionFactors"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.decisionFactors" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="鍐崇瓥娴佺▼鏄�庢牱鐨勶紙what锛�" prop="decisionFlow"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.decisionFlow" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="绔炰簤瀵规墜鎻愪緵鐨勬柟妗堬紙what锛�" prop="programme"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.programme" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- SWOT鍒嗘瀽 --> + <div class="basic-info-title">SWOT鍒嗘瀽</div> + <div class="address-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="浼樺娍(S)" prop="advantage"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.advantage" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍔e娍(W)" prop="disadvantage"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.disadvantage" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈轰細(O)" prop="opportunity"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.opportunity" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="濞佽儊(T)" prop="threaten"> + <el-input + type="textarea" + :autosize="{ minRows: 2 }" + v-model="editConfig.infomation.threaten" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 鍦板潃淇℃伅 --> + <div class="basic-info-title">鍦板潃淇℃伅</div> + <div class="address-view"> + <el-row> + <el-col :span="20"> + <el-form-item label="瀹氫綅" prop="position"> + <el-input v-model="editConfig.infomation.position"></el-input> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鍦板浘" prop="map"> + <div style="height: 100px"></div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍥藉" prop="country"> + <CommonSelectView :common-value="editConfig.infomation.country" :common-options="countryOptions" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鐪佷唤" prop="province"> + <CommonSelectView :common-value="editConfig.infomation.province" :common-options="provinceOptions" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍩庡競" prop="city"> + <CommonSelectView :common-value="editConfig.infomation.city" :common-options="cityOptions" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍖哄煙" prop="region"> + <CommonSelectView :common-value="editConfig.infomation.region" :common-options="regionOptions" /> + </el-form-item> + </el-col> + <el-col :span="20"> + <el-form-item label="璇︾粏鍦板潃" prop="address"> + <el-input + type="textarea" + :autosize="{ minRows: 2, maxRows: 4 }" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="editConfig.infomation.address" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 澶囨敞淇℃伅 --> + <div class="basic-info-title">澶囨敞淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="20"> + <el-form-item label="澶囨敞" prop="notes"> + <el-input + type="textarea" + :autosize="{ minRows: 2, maxRows: 4 }" + placeholder="璇疯緭鍏ュ唴瀹�" + v-model="editConfig.infomation.notes" + ></el-input> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 闄勪欢淇℃伅 --> + <div class="basic-info-title">闄勪欢淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="闄勪欢" prop=""> + <div class="annex-view"> + <div @click="addAnnexClick">娣诲姞</div> + <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + </div> + </el-form> + + <div slot="footer" class="dialog-footer"> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import CommonSelectView from "@/components/makepager/CommonSelectView" +export default { + name: "AddSalesOpportunityDialog", + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + infomation: { + customName: "", + salesOpportunityNo: "POT521", + opportunityName: "", + contactName: "", + businessSource: "", + businessType: "", + saleStage: "", + salesHead: "", + oldCustomerMarket: "", + competitor: "", + possible: "", + currency: "", + budgetAbsoluteValue: "", + expectDealDate: "", + expectContractAmount: "", + currentState: "", + demandPainPoint: "", + projectApproval: "", + fundBudget: "", + decisionMaker: "", + decisionFactors: "", + decisionFlow: "", + programme: "", + advantage: "", + disadvantage: "", + opportunity: "", + threaten: "", + position: "", + map: "", + country: "1", + province: "1", + city: "1", + region: "1", + notes: "" + } + } + } + } + }, + components: { CommonSelectView }, + computed: { + searchCommonHeight() { + return this.$refs.searchCommonView.offsetHeight + } + }, + data() { + return { + dialogWidth: "80%", + editConfig: this.editCommonConfig, + rules: { + salesOpportunityNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + opportunityName: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + salesHead: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + saleStage: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + currency: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + expectDealDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + expectContractAmount: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }] + }, + businessSourceOptions: [ + { value: "1", label: "鍚庡彴娉ㄥ唽" }, + { value: "2", label: "浠g悊鍟嗗鎴�" }, + { value: "3", label: "鐢佃瘽闄岀敓鎷滆" }, + { value: "4", label: "鐩存帴璁块棶" }, + { value: "5", label: "椤圭洰鍚堜綔" }, + { value: "6", label: "涓汉鑷壘" }, + { value: "7", label: "浜屾閿�鍞�" }, + { value: "8", label: "鍏徃鐢佃瘽" } + ], + salesHeadOptions: [ + { value: "1", label: "BOSS" }, + { value: "2", label: "Mia" }, + { value: "3", label: "璐㈠姟" }, + { value: "4", label: "甯傚満" }, + { value: "5", label: "绯荤粺绠$悊鍛�" }, + { value: "6", label: "閿�鍞�" }, + { value: "7", label: "閿�鍞�荤洃" } + ], + businessTypeOptions: [], // 鍟嗘満绫诲瀷 + saleStageOptions: [], // 閿�鍞樁娈� + oldCustomerMarketOptions: [], // 鑰佸鎴疯惀閿� + possibleOptions: [], // 鍙兘鎬� + currencyOptions: [], // 甯佺 + currentStateOptions: [], // 褰撳墠鐘舵�� + countryOptions: [{ value: "1", label: "涓浗" }], // 鍥藉 + provinceOptions: [ + { value: "1", label: "鍖椾含甯�" }, + { value: "2", label: "涓婃捣甯�" }, + { value: "3", label: "鍚夋灄鐪�" }, + { value: "4", label: "闄曡タ鐪�" } + ], // 鐪佷唤 + cityOptions: [ + { value: "1", label: "鍖椾含甯�" }, + { value: "2", label: "涓婃捣甯�" }, + { value: "3", label: "鍚夋灄甯�" }, + { value: "4", label: "瑗垮畨甯�" } + ], // 鍩庡競 + regionOptions: [ + { value: "1", label: "鏈濋槼鍖�" }, + { value: "2", label: "娴锋穩鍖�" }, + { value: "3", label: "閫氬窞鍖�" }, + { value: "4", label: "瑗垮煄鍖�" } + ] // 鍖哄煙 + } + }, + created() {}, + methods: { + handleClose() { + this.editConfig.visible = false + }, + // 娣诲姞闄勪欢 + addAnnexClick() {}, + // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 + setFormatClick() {} + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.add-sales-opportunity { + .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 { + display: flex; + .common-select-btn { + margin-left: 5px; + font-size: 18px; + } + } + } + .address-view { + margin-top: 10px; + padding-right: 40px; + } + .annex-view { + display: flex; + color: #6166d3; + .setFormat { + margin-left: 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; + } +} +::v-deep { + .el-dialog__header { + padding: 12.5px 10px; + border-bottom: 1px solid #e5e5e5; + .el-dialog__title { + font-size: 15px; + color: #323232; + font-weight: bold; + } + } + .el-dialog__body { + padding: 0px; + } + .el-dialog__footer { + padding: 0px; + text-align: center; + box-sizing: border-box; + border-top: 1px solid #dadee5; + } +} +</style> diff --git a/src/views/sales/salesOpportunity/index.vue b/src/views/sales/salesOpportunity/index.vue index 794f88f..c602de2 100644 --- a/src/views/sales/salesOpportunity/index.vue +++ b/src/views/sales/salesOpportunity/index.vue @@ -4,9 +4,8 @@ <div class="btn-pager"> <PublicFunctionBtnView :duplicate-check="true" - :list-button="true" - :map-button="true" :statistics="true" + :custom-funnel="true" :operates-list="operatesList" /> <PagerView class="page" /> @@ -22,7 +21,7 @@ </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSalesOpportunityDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> </div> </template> @@ -31,7 +30,7 @@ import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" import PagerView from "@/components/makepager/PagerView" import TableCommonView from "@/components/makepager/TableCommonView" -import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" +import AddSalesOpportunityDialog from "@/views/sales/salesOpportunity/AddSalesOpportunityDialog" export default { name: "SalesOpportunity", @@ -41,7 +40,7 @@ PublicFunctionBtnView, PagerView, TableCommonView, - AddSalesLeadDialog + AddSalesOpportunityDialog }, computed: { searchCommonHeight() { @@ -51,7 +50,21 @@ data() { return { tableList: {}, - queryClassOptions: [{ value: "1", label: "鍏ㄩ儴" }], + queryClassOptions: [ + { value: "1", label: "鍏ㄩ儴" }, + { value: "2", label: "鍒濇湡娌熼��" }, + { value: "3", label: "鍟嗗姟璋堝垽" }, + { value: "4", label: "鎴愬姛缁撴" }, + { value: "5", label: "澶辫触缁撴" }, + { value: "6", label: "鏈懆鍒涘缓" }, + { value: "7", label: "鏈湀鍒涘缓" }, + { value: "8", label: "鏈懆棰勮鎴愪氦" }, + { value: "9", label: "鏈湀棰勮鎴愪氦" }, + { value: "10", label: "鍦ㄨ皥鍟嗘満" }, + { value: "11", label: "椤圭洰鏆傚仠" }, + { value: "12", label: "15澶╂湭鑱旂郴鍟嗘満" }, + { value: "13", label: "棰勮閲戦1W浠ヤ笂" } + ], searchOptions: [], operatesList: [ { id: "1", name: "鍏变韩" }, @@ -61,9 +74,9 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鎭㈠京" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} @@ -78,31 +91,29 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", - salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", - productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + opportunityName: "123123", + customName: "涓婃捣閾冮摏", + salesOpportunityNo: "POT205", + contactName: "鍒樻��", + saleStage: "鍒濇湡娌熼��", + possible: "A绫诲鎴�", + expectDealDate: "50", + expectContractAmount: "2023-05-28", + budgetAbsoluteValue: "锟�200,000.00", + salesHead: "绯荤粺绠$悊鍛�" } ], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "鏈轰細鍚嶇О", prop: "opportunityName", min: 120 }, // 鏈轰細鍚嶇О + { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 90 }, // 瀹㈡埛鍚嶇О + { label: "閿�鍞満浼氱紪鍙�", prop: "salesOpportunityNo" }, // 閿�鍞満浼氱紪鍙� + { label: "鑱旂郴浜哄鍚�", prop: "contactName", min: 100 }, // 鑱旂郴浜哄鍚� + { label: "閿�鍞樁娈�", prop: "saleStage" }, // 閿�鍞樁娈� + { label: "鍙兘鎬�(%)", prop: "possible" }, // 鍙兘鎬� + { label: "棰勮鎴愪氦鏃ユ湡", prop: "expectDealDate" }, // 棰勮鎴愪氦鏃ユ湡 + { label: "棰勮鍚堝悓閲戦", prop: "expectContractAmount" }, // 棰勮鍚堝悓閲戦 + { label: "棰勭畻缁濆鍊�", prop: "budgetAbsoluteValue" }, // 棰勭畻缁濆鍊� + { label: "閿�鍞礋璐d汉", prop: "salesHead" } // 閿�鍞礋璐d汉 ] } this.searchOptions = [] @@ -113,47 +124,85 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", - saleLeadNumber: "LEA50", + salesOpportunityNo: "POT521", + opportunityName: "", contactName: "", - contactDuties: "", - phoneNumber: "", - businessStatus: "鏂板缓", - businessSource: "1", - owner: "", + businessSource: "", + businessType: "", + saleStage: "", + salesHead: "", + oldCustomerMarket: "", + competitor: "", + possible: "", + currency: "", + budgetAbsoluteValue: "", + expectDealDate: "", + expectContractAmount: "", + currentState: "", + demandPainPoint: "", + projectApproval: "", + fundBudget: "", + decisionMaker: "", + decisionFactors: "", + decisionFlow: "", + programme: "", + advantage: "", + disadvantage: "", + opportunity: "", + threaten: "", position: "", map: "", country: "1", province: "1", city: "1", region: "1", - address: "" + notes: "" } }, // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { - customName: row.customName, - saleLeadNumber: row.saleLeadNumber, - contactName: row.contactName, - contactDuties: row.contactDuties, - phoneNumber: row.phoneNumber, - businessStatus: "鏂板缓", - businessSource: row.businessSource, - owner: row.owner, + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { + customName: "", + salesOpportunityNo: "POT521", + opportunityName: "", + contactName: "", + businessSource: "", + businessType: "", + saleStage: "", + salesHead: "", + oldCustomerMarket: "", + competitor: "", + possible: "", + currency: "", + budgetAbsoluteValue: "", + expectDealDate: "", + expectContractAmount: "", + currentState: "", + demandPainPoint: "", + projectApproval: "", + fundBudget: "", + decisionMaker: "", + decisionFactors: "", + decisionFlow: "", + programme: "", + advantage: "", + disadvantage: "", + opportunity: "", + threaten: "", position: "", map: "", country: "1", province: "1", city: "1", region: "1", - address: "" + notes: "" } } } diff --git a/src/views/sales/salesReturn/index.vue b/src/views/sales/salesReturn/index.vue index e78644d..7029c18 100644 --- a/src/views/sales/salesReturn/index.vue +++ b/src/views/sales/salesReturn/index.vue @@ -2,27 +2,20 @@ <div class="sales-return"> <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :receive="false" :import-button="false" receive:operates-list="operatesList" /> <PagerView class="page" /> </div> <TableCommonView ref="tableListRef" :table-list="tableList"> <template slot="tableButton"> - <el-table-column label="鎿嶄綔" width="100"> + <el-table-column label="鎿嶄綔" width="60"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> </div> </template> @@ -53,9 +46,10 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "涓" }, + { value: "3", label: "缁撴潫" }, + { value: "4", label: "宸插叆搴�" }, + { value: "4", label: "鏈叆搴�" } ], searchOptions: [], operatesList: [ @@ -66,9 +60,9 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} @@ -83,31 +77,27 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", + salesReturnOrderNo: "THD20230607-44", + customName: "娆у厠绉戞妧鑲′唤鏈夐檺鍏徃", + returnDate: "2023-06-07", + state: "鏈叆搴�", + returnWarehouse: "鎬讳粨", + refundabe: "锟�9,499.00", + refunded: "锟�1,499.00", salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", - productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + modifyTime: "2023-06-07 11:10:25" } ], tableColumn: [ - { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� - { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "閿�鍞��璐у崟缂栧彿", prop: "salesReturnOrderNo", min: 120 }, + { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 90 }, + { label: "閫�璐ф棩鏈�", prop: "returnDate", min: 100 }, + { label: "鐘舵��", prop: "state" }, + { label: "閫�鍏ヤ粨搴�", prop: "returnWarehouse" }, + { label: "搴旈��娆�", prop: "refundabe" }, + { label: "宸查��娆�", prop: "refunded" }, + { label: "閿�鍞礋璐d汉", prop: "salesHead" }, + { label: "淇敼鏃堕棿", prop: "modifyTime" } ] } this.searchOptions = [] @@ -118,9 +108,9 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", saleLeadNumber: "LEA50", contactName: "", @@ -141,9 +131,9 @@ // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { customName: row.customName, saleLeadNumber: row.saleLeadNumber, contactName: row.contactName, diff --git a/src/views/sales/subOrder/AddSubOrderDialog.vue b/src/views/sales/subOrder/AddSubOrderDialog.vue new file mode 100644 index 0000000..fd6c74e --- /dev/null +++ b/src/views/sales/subOrder/AddSubOrderDialog.vue @@ -0,0 +1,294 @@ +<template> + <div class="add-quotation"> + <el-dialog + :title="editCommonConfig.title + '閿�鍞瓙鍗�'" + :visible.sync="editConfig.visible" + :width="dialogWidth" + :before-close="handleClose" + > + <el-form + ref="form" + :model="editConfig.infomation" + :rules="rules" + label-position="right" + label-width="308px" + size="mini" + > + <!-- 淇℃伅 --> + <div class="basic-info"> + <!-- 鍩烘湰淇℃伅 --> + <div class="basic-info-title">鍩烘湰淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="瀹㈡埛鍚嶇О" prop="customName"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.customName"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍗曟嵁缂栧彿" prop="documentNumber"> + <el-input v-model="editConfig.infomation.documentNumber"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閿�鍞�诲崟" prop="masterOrder"> + <div class="custom-name"> + <el-input v-model="editConfig.infomation.masterOrder"></el-input> + <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="閫夋嫨"></i></div> + <div class="common-select-btn"><i class="el-icon-edit" title="缂栬緫"></i></div> + </div> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璐熻矗浜�" prop="owner"> + <el-select v-model="editConfig.infomation.owner" placeholder="璇烽�夋嫨" size="mini" style="width: 63%"> + <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 闄勪欢淇℃伅 --> + <div class="basic-info-title">闄勪欢淇℃伅</div> + <div class="basic-info-view"> + <el-row> + <el-col :span="12"> + <el-form-item label="闄勪欢" prop=""> + <div class="annex-view"> + <div @click="addAnnexClick">娣诲姞</div> + <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div> + </div> + </el-form-item> + </el-col> + </el-row> + </div> + <!-- 浜у搧绠$悊 --> + <div class="basic-info-title" style="display: flex"> + 浜у搧绠$悊 + <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> + </el-select> + </div> + </div> + <div class="product-view"> + <CommonFormTableView :product-table-list="productTableList" /> + </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" + > + <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"></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"> + <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"></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> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> + <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import CommonFormTableView from "@/components/makepager/CommonFormTableView" +export default { + name: "QuotationDialog", + components: { CommonFormTableView }, + props: { + editCommonConfig: { + type: Object, + default: () => { + return { + visible: false, + title: "鏂板缓", + infomation: { + customName: "", + documentNumber: "AC6521", + masterOrder: "", + owner: "", + currency: "", + discount: "", + total: "14.00" + } + } + } + } + }, + computed: {}, + data() { + return { + dialogWidth: "80%", + editConfig: this.editCommonConfig, + rules: { + documentNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + owner: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }] + }, + ownerOptions: [ + // 璐熻矗浜� + { value: "1", label: "BOSS" }, + { value: "2", label: "Mia" }, + { value: "3", label: "璐㈠姟" }, + { value: "4", label: "甯傚満" }, + { value: "5", label: "绯荤粺绠$悊鍛�" }, + { value: "6", label: "閿�鍞�" }, + { value: "7", label: "閿�鍞�荤洃" } + ], + discount: "2", + discountOptions: [ + { value: "1", label: "鐧惧垎姣旈檷浠�" }, + { value: "2", label: "鐩存帴闄嶄环" } + ], // 鏁村崟鎶樻墸 + adjust: "1", + adjustOptions: [ + { value: "1", label: "澧炲姞" }, + { value: "2", label: "鍑忓皯" } + ], // 璋冩暣 + productTableList: { + tableData: [ + { + id: "1", + productNumber: "123", + productName: "", + startDate: "", + endDate: "2016-05-02", + number: "", + address: "" + } + ] + } + } + }, + created() {}, + methods: { + handleClose() { + this.editConfig.visible = false + }, + // 娣诲姞闄勪欢 + addAnnexClick() {}, + // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡 + setFormatClick() {} + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +.add-quotation { + .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 { + display: flex; + .common-select-btn { + margin-left: 5px; + font-size: 18px; + } + } + } + .address-view { + margin-top: 10px; + padding-right: 40px; + } + .annex-view { + display: flex; + color: #6166d3; + .setFormat { + margin-left: 10px; + } + } + } + .dialog-footer { + background-color: #f5f5f5; + height: 55px; + line-height: 55px; + } +} +::v-deep { + .el-dialog__header { + padding: 12.5px 10px; + border-bottom: 1px solid #e5e5e5; + .el-dialog__title { + font-size: 15px; + color: #323232; + font-weight: bold; + } + } + .el-dialog__body { + padding: 0px; + } + .el-dialog__footer { + padding: 0px; + text-align: center; + box-sizing: border-box; + border-top: 1px solid #dadee5; + } + .product-view { + .el-form-item__label { + padding: 0; + } + } +} +</style> diff --git a/src/views/sales/subOrder/index.vue b/src/views/sales/subOrder/index.vue index eae75a9..7eb42ec 100644 --- a/src/views/sales/subOrder/index.vue +++ b/src/views/sales/subOrder/index.vue @@ -2,27 +2,20 @@ <div class="sub-order"> <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> <div class="btn-pager"> - <PublicFunctionBtnView - :duplicate-check="true" - :list-button="true" - :map-button="true" - :statistics="true" - :operates-list="operatesList" - /> + <PublicFunctionBtnView :operates-list="operatesList" /> <PagerView class="page" /> </div> - <TableCommonView ref="tableListRef" :table-list="tableList"> + <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList"> <template slot="tableButton"> - <el-table-column label="鎿嶄綔" width="100"> + <el-table-column label="鎿嶄綔" width="60"> <template slot-scope="scope"> <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button> - <el-button type="text" size="small">璺熻繘</el-button> </template> </el-table-column> </template> </TableCommonView> <!-- 鏂板缓/缂栬緫 --> - <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> + <AddSubOrderDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> </div> </template> @@ -31,7 +24,7 @@ import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" import PagerView from "@/components/makepager/PagerView" import TableCommonView from "@/components/makepager/TableCommonView" -import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" +import AddSubOrderDialog from "@/views/sales/subOrder/AddSubOrderDialog" export default { name: "SubOrder", @@ -41,7 +34,7 @@ PublicFunctionBtnView, PagerView, TableCommonView, - AddSalesLeadDialog + AddSubOrderDialog }, computed: { searchCommonHeight() { @@ -53,9 +46,11 @@ tableList: {}, queryClassOptions: [ { value: "1", label: "鍏ㄩ儴" }, - { value: "2", label: "骞垮憡瀹d紶" }, - { value: "3", label: "璺熻繘涓�" }, - { value: "4", label: "澶辫触鍏抽棴" } + { value: "2", label: "宸叉壒鍑�" }, + { value: "3", label: "瀹℃壒涓�" }, + { value: "4", label: "鏈彁浜�" }, + { value: "5", label: "宸查┏鍥�" }, + { value: "6", label: "宸叉嫆缁�" } ], searchOptions: [], operatesList: [ @@ -66,12 +61,17 @@ { id: "5", name: "鏇存敼鍒涘缓浜�" }, { id: "6", name: "鏍戠粨鏋勮缃�" }, { id: "7", name: "瀹℃壒璁剧疆" }, - { id: "8", name: "鍏捣鍙傛暟璁剧疆" } + { id: "8", name: "鎭㈠棰勮鍒楀" } ], - editSalesLeadConfig: { + editConfig: { visible: false, title: "鏂板缓", infomation: {} + }, + showSummary: { + show: true, + sumProp: ["number"], + mergeNumber: 7 } } }, @@ -83,31 +83,23 @@ this.tableList = { tableInfomation: [ { - customName: "123123", - customType: "鏅�氬鎴�", - salesHead: "绯荤粺绠$悊鍛�", - modifyTime: "2023-0703 11:22:12", - customerSize: "499浠ヤ笂", - importantLevel: "A绫诲鎴�", - customNumber: "AC651", - customStatus: "娼滃湪瀹㈡埛", + documentNumber: "ZDYBD12-1", + customName: "涓婃捣鏈夐檺鍏徃", + masterOrder: "ZDYBD03-1", + owner: "绯荤粺绠$悊鍛�", + approvalStatus: "鏈彁浜�", productName: "鑷姩鎵撳嵃鏈�", - startDate: "2023-06-27", - endDate: "2024-07-15" + number: "2.00" } ], tableColumn: [ + { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 }, // 鍗曟嵁缂栧彿 { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О - { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90 }, // 瀹㈡埛绫诲瀷 - { label: "閿�鍞礋璐d汉", prop: "salesHead" }, // 閿�鍞礋璐d汉 - { label: "淇敼鏃堕棿", prop: "modifyTime", min: 100 }, // 淇敼鏃堕棿 - { label: "瀹㈡埛瑙勬ā", prop: "customerSize" }, // 瀹㈡埛瑙勬ā - { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆 - { label: "瀹㈡埛缂栧彿", prop: "customNumber" }, // 瀹㈡埛缂栧彿 - { label: "瀹㈡埛鐘舵��", prop: "customStatus" }, // 瀹㈡埛鐘舵�� + { label: "閿�鍞�诲崟", prop: "masterOrder", min: 90 }, // 閿�鍞�诲崟 + { label: "璐熻矗浜�", prop: "owner" }, // 璐熻矗浜� + { label: "瀹℃壒鐘舵��", prop: "approvalStatus" }, // 瀹℃壒鐘舵�� { label: "浜у搧鍚嶇О", prop: "productName" }, // 浜у搧鍚嶇О - { label: "鏈嶅姟寮�濮嬫棩鏈�", prop: "startDate" }, // 鏈嶅姟寮�濮嬫棩鏈� - { label: "鏈嶅姟鍒版湡鏃�", prop: "endDate" } // 鏈嶅姟鍒版湡鏃� + { label: "鏁伴噺", prop: "number", min: 100 } // 鏁伴噺 ] } this.searchOptions = [] @@ -118,47 +110,31 @@ }, // 鏂板缓 addBtnClick() { - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "鏂板缓" - this.editSalesLeadConfig.infomation = { + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.editConfig.infomation = { customName: "", - saleLeadNumber: "LEA50", - contactName: "", - contactDuties: "", - phoneNumber: "", - businessStatus: "鏂板缓", - businessSource: "1", + documentNumber: "AC6521", + masterOrder: "", owner: "", - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + currency: "", + discount: "", + total: "" } }, // 缂栬緫 handleClick(row) { console.log(row) - this.editSalesLeadConfig.visible = true - this.editSalesLeadConfig.title = "缂栬緫" - this.editSalesLeadConfig.infomation = { - customName: row.customName, - saleLeadNumber: row.saleLeadNumber, - contactName: row.contactName, - contactDuties: row.contactDuties, - phoneNumber: row.phoneNumber, - businessStatus: "鏂板缓", - businessSource: row.businessSource, - owner: row.owner, - position: "", - map: "", - country: "1", - province: "1", - city: "1", - region: "1", - address: "" + this.editConfig.visible = true + this.editConfig.title = "缂栬緫" + this.editConfig.infomation = { + customName: "", + documentNumber: "AC6521", + masterOrder: "", + owner: "", + currency: "", + discount: "", + total: "14.00" } } } diff --git a/src/views/service/serviceContract/AddServiceContractDialog.vue b/src/views/service/serviceContract/AddServiceContractDialog.vue index 26b0b60..83cc100 100644 --- a/src/views/service/serviceContract/AddServiceContractDialog.vue +++ b/src/views/service/serviceContract/AddServiceContractDialog.vue @@ -1,5 +1,5 @@ <template> - <div class="service-contract"> + <div class="add-service-contract"> <el-dialog :title="editCommonConfig.title + '鏈嶅姟鍚堝悓'" :visible.sync="editConfig.visible" @@ -339,7 +339,7 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.service-contract { +.add-service-contract { .basic-info { .basic-info-title { background-color: #f4f8fe; diff --git a/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue b/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue index b42379d..c8ef662 100644 --- a/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue +++ b/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue @@ -262,7 +262,6 @@ </div> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> </div> diff --git a/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue b/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue index 15560b4..2c252ab 100644 --- a/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue +++ b/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue @@ -143,7 +143,6 @@ </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button> <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button> </div> -- Gitblit v1.8.0