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