From eb91fd817dce989b3e81eac971068badaa6bcf53 Mon Sep 17 00:00:00 2001 From: yangfeng <wanwan926_4@163.com> Date: 星期一, 05 二月 2024 16:31:18 +0800 Subject: [PATCH] Merge branch 'dev' of http://192.168.5.5:10010/r/web/crm-web into dev --- src/components/makepager/TableCommonView.vue | 1 src/views/sales/quotation/AddQuotationDialog.vue | 4 src/views/sales/salesDetails/AddSalesDetailsDialog.vue | 19 ++- src/views/other/commonDialog/SelectCommonDialog.vue | 17 +++ src/views/sales/masterOrder/AddMasterOrderDialog.vue | 20 +++ src/api/date.js | 210 ++++++++++++++++++++++++++++++++++++++++++ src/views/sales/salesDetails/index.vue | 4 7 files changed, 264 insertions(+), 11 deletions(-) diff --git a/src/api/date.js b/src/api/date.js new file mode 100644 index 0000000..c7ea884 --- /dev/null +++ b/src/api/date.js @@ -0,0 +1,210 @@ +export default (() => { + const getDateObj = ms => { + const now = ms ? new Date(ms) : new Date() + const y = now.getFullYear() + let m = now.getMonth() + 1 + m = m > 9 ? m : '0' + m + let d = now.getDate() + d = d > 9 ? d : '0' + d + return { y, m, d } + } + // 鑾峰彇褰撳墠鏃ユ湡 + const getCurrentDate = ms => { + const dateObj = getDateObj(ms) + return '' + dateObj.y + '-' + dateObj.m + '-' + dateObj.d + } + //鑾峰彇褰撳墠 鍓嶅悗N澶╃殑鏃堕棿 + const getDateStr = (AddDayCount = 0) => { + let dd = new Date() + dd.setDate(dd.getDate() + AddDayCount) + let y = dd.getFullYear() + let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1) //鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0 + let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() //鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0 + return y + '-' + m + '-' + d + } + //鑾峰彇鏌愪釜鏃ユ湡 鍓嶅悗N澶╃殑鏃堕棿 + const getDateDay2 = (time, AddDayCount) => { + if (time) { + let dd = new Date(time) + dd.setDate(dd.getDate() + AddDayCount) + let y = dd.getFullYear() + let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1) //鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0 + let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() //鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0 + return y + '-' + m + '-' + d + } else { + return '--' + } + } + //鑾峰彇褰撳墠骞翠唤 + const getCurrentYear = ms => { + const dateObj = getDateObj(ms) + return '' + dateObj.y + } + // 鑾峰彇褰撳墠鏈堜唤 + const getCurrentMonth = ms => { + const dateObj = getDateObj(ms) + return '' + dateObj.y + '-' + dateObj.m + } + // 鑾峰彇涓婃湀鏈堜唤 + const getPreviousMonth = ms => { + const dateObj = getDateObj(ms) + const b = dateObj.m - 1 > 0 + let y = b ? dateObj.y : dateObj.y - 1 + let m = b ? dateObj.m - 1 : 12 + m = m > 9 ? m : '0' + m + return '' + y + '-' + m + } + // 鑾峰彇涓嬫湀鏈堜唤 + const getNextMonth = ms => { + const dateObj = getDateObj(ms) + const b = dateObj.m - (-1) != 13; + let y = b ? dateObj.y : dateObj.y + 1 + let m = b ? dateObj.m - (-1) : 1 + m = m > 9 ? m : '0' + m + return '' + y + '-' + m + } + // 鏍煎紡鍖栨椂闂� ==> yyyy-mm-dd + const formatDate = (value, str) => { + if (value) { + let date_arr = value.split(str) + let m = date_arr[1].length == 1 && date_arr[1] < 10 ? '0' + date_arr[1] : date_arr[1] + let d = date_arr[2].length == 1 && date_arr[2] < 10 ? '0' + date_arr[2] : date_arr[2] + return date_arr[0] + '-' + m + '-' + d + } else { + return '--' + } + } + const getK = value => { + if (value) { + let date = new Date(value) + return date + } else { + let v = new Date().getTime() + return v + } + } + //杞负鏃堕棿鎴� + const formatTime = value => { + if (value) { + let date = new Date(value) + return date.getTime() + } + } + const formatDate2 = (time, format = 'YY-MM-DD hh:mm:ss') => { + if (time) { + let date = time ? new Date(time) : new Date() + let year = date.getFullYear(), + month = date.getMonth() + 1, //鏈堜唤鏄粠0寮�濮嬬殑 + day = date.getDate(), + hour = date.getHours(), + min = date.getMinutes(), + sec = date.getSeconds() + let preArr = Array.apply(null, Array(10)).map(function (elem, index) { + return '0' + index + }) //寮�涓暱搴︿负10鐨勬暟缁� 鏍煎紡涓� 00 01 02 03 + + let newTime = format + .replace(/YY/g, year) + .replace(/MM/g, preArr[month] || month) + .replace(/DD/g, preArr[day] || day) + .replace(/hh/g, preArr[hour] || hour) + .replace(/mm/g, preArr[min] || min) + .replace(/ss/g, preArr[sec] || sec) + + return newTime + } else { + return '--' + } + } + + const getLastDay = dateStr => { + dateStr = dateStr || getCurrentMonth() + let nextMonthMS = new Date(getNextMonth(new Date(dateStr).getTime())).getTime() + return getCurrentDate(new Date(nextMonthMS - 1000 * 60 * 60 * 24).getTime()) + } + + // 瀵规瘮鏃堕棿 + const compareTime = (date1, date2) => { + let d1_date1 = new Date(date1), + d1_date2 = new Date(date2); + let time_span1 = d1_date1.getTime(), + time_span2 = d1_date2.getTime(); + return time_span1 - time_span2; + } + //鏍煎紡yy-mm month1灏忕殑 month2澶х殑 + const intervalMonth = (month1, month2) => { + let yearMonth, number; + let year1 = Number(getCurrentYear(month1)); + let year2 = Number(getCurrentYear(month2)); + if (year1 != year2) { + yearMonth = (year2 - year1) * 12; + } else { + yearMonth = 0; + } + let min = Number(month1.split('-')[1]); + let max = Number(month2.split('-')[1]); + if (min < max) { + number = max - min + yearMonth + 1 + } else { + number = yearMonth - (min - max) + 1 + } + return Number(number); + } + //鑾峰彇瀛e害鐨勬椂闂� val 渚嬪 yyyy,1 鏈�缁堢粨鏋� yyyy-mm-dd,yyyy-mm-dd + const qurterDay = (val) => { + let value; + let num = val.split(',')[1] + if (num == 1) { + value = val.split(',')[0] + '-01-01,' + val.split(',')[0] + '-03-31' + } else if (num == 2) { + value = val.split(',')[0] + '-04-30,' + val.split(',')[0] + '-06-30' + } else if (num == 3) { + value = val.split(',')[0] + '-07-31,' + val.split(',')[0] + '-09-30' + } else if (num == 4) { + value = val.split(',')[0] + '-10-30,' + val.split(',')[0] + '-12-31' + } + return [value, num]; + } + //鑾峰彇鏌愭湀鏈�鍚庝竴澶� + const getMonthLastDay = (dateStr) => { + let dateObj = getNextMonth(dateStr) + let date = getDateDay2(dateObj + '-01', -1) + return date + } + /*鑾峰彇褰撳墠鏃ユ湡*/ + const getWeekdayTime = (value) => { + let d = new Date(value) + let week = d.getDay() + let weekday = '' + if (week == 0) + weekday = '鏄熸湡鏃�' + else if (week == 1) + weekday = '鏄熸湡涓�' + else if (week == 2) + weekday = '鏄熸湡浜�' + else if (week == 3) + weekday = '鏄熸湡涓�' + else if (week == 4) + weekday = '鏄熸湡鍥�' + else if (week == 5) + weekday = '鏄熸湡浜�' + else if (week == 6) + weekday = '鏄熸湡鍏�' + return weekday + } + //璁$畻褰撳墠鏃堕棿鍒颁粖澶╃粨鏉熸椂杩樺墿澶氬皯 姣 + const getRestOfDayTime = () => { + let x = new Date(); + x.setHours(0, 0, 0, 0); + let y = new Date(); + return 24 * 3600 * 1000 - (y.getTime() - x.getTime()) + } + /* 鐢ㄤ簬鏈堟棩杩欑闇�瑕佸姞鍓嶇疆0鐨勬柟娉� + * @param num 闇�瑕佸姞0鐨勫弬鏁� string | number + * @return 缁撴灉 濮嬬粓淇濊瘉缁撴灉涓哄瓧绗︿覆 string + */ + const paddingZero = (num) => { + return num < 10 ? "0" + num : String(num) + } + return { paddingZero, getDateObj, getCurrentDate, getDateStr, getDateDay2, getCurrentYear, getCurrentMonth, getPreviousMonth, getNextMonth, formatDate, formatDate2, formatTime, getK, compareTime, getLastDay, intervalMonth, getMonthLastDay, qurterDay, getWeekdayTime, getRestOfDayTime } +})() diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue index 9cf911e..584763a 100644 --- a/src/components/makepager/TableCommonView.vue +++ b/src/components/makepager/TableCommonView.vue @@ -7,6 +7,7 @@ :data="tableList.tableInfomation" tooltip-effect="dark" :height="'calc(100% - 0px)'" + :max-height="tableList.maxHeight" style="width: 100%" :lazy="tableList.lazy" :show-summary="showSummary.show" diff --git a/src/views/other/commonDialog/SelectCommonDialog.vue b/src/views/other/commonDialog/SelectCommonDialog.vue index 4da1e9c..2a0acf5 100644 --- a/src/views/other/commonDialog/SelectCommonDialog.vue +++ b/src/views/other/commonDialog/SelectCommonDialog.vue @@ -29,6 +29,7 @@ </div> </div> <TableCommonView + class="bg-list" ref="tableListRef" :table-list="tableList" :select-box="editCommonConfig.isSelectBox" @@ -74,6 +75,7 @@ isSelectBox:false, title: "", clientId: 0, + isRequest:true, client_name: "", tableInfomation: [] } @@ -175,6 +177,7 @@ this.showCol = ["鎶ヤ环鍗曞彿", "閿�鍞礋璐d汉"] this.tableList = { selectIndex: true, + tableInfomation: [], allcol: [], showcol: this.showCol, @@ -347,6 +350,16 @@ }, // 鎶ヤ环鍗� async getQuotationList() { + if(!this.editConfig.isRequest){ + this.tableList.tableInfomation =this.editConfig.tableInfomation.map((item) => { + return { + ...item, + member_name: item.member.username + } + }) + this.pagerOptions.totalCount =this.editConfig.count?this.editConfig.count:0 + return true; + } await getQuotationList({ search_map: this.search_map, page: this.pagerOptions.currPage, @@ -552,6 +565,9 @@ <style lang="scss" scoped> .bg-view { margin: 10px; + .bg-list{ + min-height:370px; + } .query-bg { margin-left: -20px; margin-bottom: 10px; @@ -563,6 +579,7 @@ width: 100px; } } + .btn { float: right; } diff --git a/src/views/sales/masterOrder/AddMasterOrderDialog.vue b/src/views/sales/masterOrder/AddMasterOrderDialog.vue index 0d94b5f..86d34d6 100644 --- a/src/views/sales/masterOrder/AddMasterOrderDialog.vue +++ b/src/views/sales/masterOrder/AddMasterOrderDialog.vue @@ -101,7 +101,9 @@ <el-date-picker v-model="editConfig.infomation.start_time" value-format="yyyy-MM-dd HH:mm:ss" + :picker-options="pickerOptions" style="width: 100%" + @change="checkDate(editConfig.infomation.start_time,editConfig.infomation.end_time)" type="datetime" placeholder="閫夋嫨鏃ユ湡" > @@ -113,7 +115,9 @@ <el-date-picker v-model="editConfig.infomation.end_time" value-format="yyyy-MM-dd HH:mm:ss" + :picker-options="pickerOptions" type="datetime" + @change="checkDate(editConfig.infomation.start_time,editConfig.infomation.end_time)" style="width: 100%" placeholder="閫夋嫨鏃ユ湡" > @@ -188,6 +192,8 @@ import { getAddMasterOrder, getUpdateMasterOrder } from "@/api/sales/masterOrder" import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog" import codeMixin from "@/components/makepager/mixin/codeMixin" +import NewDate from "@/api/date"; +const { compareTime } = NewDate; export default { name: "QuotationDialog", mixins: [codeMixin], @@ -228,7 +234,12 @@ infomation: {} }, clientId: this.editCommonConfig.infomation.client_id, - objCode: { name: "", page: 0, pageSize: 0, type: "閿�鍞�诲崟缂栫爜", codeStandID: "" } + objCode: { name: "", page: 0, pageSize: 0, type: "閿�鍞�诲崟缂栫爜", codeStandID: "" }, + pickerOptions: { + disabledDate(time) { + return time.getTime() < new Date().getTime() - 86400000; + }, + }, } }, created() { @@ -244,6 +255,13 @@ } }, methods: { + checkDate(start,end){ + if(start&&end){ + if (compareTime(start, end) > 0) { + this.$message.error('鏈嶅姟鎴鏃堕棿瑕佹櫄浜庢湇鍔″紑濮嬫椂闂达紒') + } + } + }, formInfo() { this.objCode.codeStandID = "" if (this.editConfig.infomation.codeStandID) { diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue index c08cbe4..8684bc1 100644 --- a/src/views/sales/quotation/AddQuotationDialog.vue +++ b/src/views/sales/quotation/AddQuotationDialog.vue @@ -527,8 +527,8 @@ this.$message.error("浜у搧鍚嶇О涓嶈兘涓虹┖") } else { for (let i = 0; i < this.tableData.length; i++) { - if (this.tableData[i].cost || Number(this.tableData[i].cost) == 0) { - let reg = /^\+?[1-9]\d*$/ + if (this.tableData[i].cost) { + let reg =/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; if (!reg.test(this.tableData[i].cost)) { this.$message.error("鎴愭湰鍗曚环闇�瑕佸~鍐欏ぇ浜�0鐨�2浣嶅皬鏁帮紒") return true diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue index 37d3683..c8fcea5 100644 --- a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue +++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue @@ -116,7 +116,7 @@ :disabled="isNameChanceEdit || isView" ></el-autocomplete> <div - v-if="!isNameChanceEdit && !isView" + v-if="!isNameChanceEdit && !isView&&editConfig.infomation.client_name" class="common-select-btn" @click="selClientClick('chance')" > @@ -196,7 +196,7 @@ :disabled="isAddQuatation || isView" ></el-autocomplete> <div - v-if="!isAddQuatation && !isView" + v-if="!isAddQuatation && !isView&&editConfig.infomation.sale_chance_name" class="common-select-btn" @click="selClientClick('quotation')" > @@ -319,7 +319,7 @@ ></el-input> </el-form-item> </el-col> - <el-col :span="12"> + <!-- <el-col :span="12"> <el-form-item label="鐗╂祦鍏徃" prop="logisticCompany"> <el-input v-model="editConfig.infomation.logisticCompany" :disabled="isView"></el-input> </el-form-item> @@ -328,7 +328,7 @@ <el-form-item label="鐗╂祦鍗曞彿" prop="logisticNumber"> <el-input v-model="editConfig.infomation.logisticNumber" :disabled="isView"></el-input> </el-form-item> - </el-col> + </el-col> --> <el-col :span="12"> <el-form-item label="鐗╂祦璐圭敤" prop="logisticCost"> <el-input-number @@ -809,6 +809,7 @@ if (res.code == 200) { console.log(res) this.quotationList = res.data.list + this.count=res.data.count; if (value === "鍏ㄩ儴浜у搧") { // this.quotationList.map((item) => { // if (item.id === this.editConfig.infomation.quotationId) { @@ -834,11 +835,15 @@ restaurants = this.clientList console.log(restaurants, "瀹㈡埛鍗�") } else if (value === "chance") { - restaurants = this.saleChancelist + if(this.editConfig.infomation.client_name){ + restaurants = this.saleChancelist + } } else if (value === "subbill") { restaurants = this.subOrderList } else if (value === "quotation") { - restaurants = this.quotationList + if(this.editConfig.infomation.sale_chance_name){ + restaurants = this.quotationList + } } var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants cb(results) @@ -916,6 +921,8 @@ this.editSelCommonConfig.title = "鎶ヤ环鍗�" this.editSelCommonConfig.editVisible = true this.editSelCommonConfig.clientId = this.clientId + this.editSelCommonConfig.isRequest = false + this.editSelCommonConfig.count=this.count this.editSelCommonConfig.tableInfomation = [...this.quotationList] } }, diff --git a/src/views/sales/salesDetails/index.vue b/src/views/sales/salesDetails/index.vue index e88abf1..88a2e02 100644 --- a/src/views/sales/salesDetails/index.vue +++ b/src/views/sales/salesDetails/index.vue @@ -195,7 +195,7 @@ { label: "浜у搧鍚嶇О", prop: "name" }, { label: "鏁伴噺", prop: "amount" }, { label: "鍗曚綅", prop: "unit" }, - { label: "閿�鍞崟浠�", prop: "salePrice", price: true }, + { label: "閿�鍞崟浠�", prop: "price", price: true }, { label: "鎴愭湰鍗曚环", prop: "cost" }, { label: "姣涘埄", prop: "profit" }, { label: "姣涘埄鐜�(%)", prop: "margin" }, @@ -299,7 +299,7 @@ { label: "閿�鍞礋璐d汉", prop: "member_name" }, { label: "绛剧害鏃ユ湡", prop: "signTime" }, { label: "浜や粯鏃ユ湡", prop: "deliveryDate" }, - { label: "璁㈠崟鏉ユ簮", prop: "source" }, + // { label: "璁㈠崟鏉ユ簮", prop: "source" }, { label: "鍚堣", prop: "amountTotal", price: true }, { label: "鐘舵��", prop: "status", isCallMethod: true, getCallMethod: this.getStatus } ], -- Gitblit v1.8.0