Pārlūkot izejas kodu

修改金额显示

chenrui 2 gadi atpakaļ
vecāks
revīzija
562ccc7efb
2 mainītis faili ar 151 papildinājumiem un 160 dzēšanām
  1. 106 125
      public/dzd/index.html
  2. 45 35
      public/dzd/js/resize.js

+ 106 - 125
public/dzd/index.html

@@ -54,7 +54,7 @@
 				border-radius: .3rem;
 				overflow: hidden;
 				position: absolute;
-				bottom: -1.9rem;
+				bottom: -1.1rem;
 				left: .2rem;
 				color: #333;
 			}
@@ -79,16 +79,13 @@
 			}
 
 			.amount {
-				font-weight: bold;
-			}
-
-			.amountName {
+				color: #f0ad4e;
 				font-weight: bold;
 			}
 
 			.handleOrder {
 				color: #999;
-				padding: 0rem .2rem .2rem;
+				padding: 1.3rem .2rem .2rem;
 			}
 
 			.handleOrder span:last-child {
@@ -169,21 +166,6 @@
 			.list-b {
 				color: #999;
 			}
-
-			.downLoadCon {
-				position: relative;
-			}
-
-			.finishImg {
-				width: 1rem;
-				height: 1rem;
-				position: absolute;
-				right: .06rem;
-				bottom: -.1rem;
-			}
-			.amount_list{
-				margin-bottom: 0.06rem;
-			}
 		</style>
 	</head>
 
@@ -197,56 +179,40 @@
 					尊敬的“{{info.customer.customerName || '--'}}”,您好!
 				</div>
 				<div class="tipDesc">
-					以下是您在本店的未结账单,请查阅。
+					以下是您{{time}}在本店的对账单,请查阅。
 				</div>
-				<div class="orderInfo" :style="{bottom:(info.discountAmount && info.discountAmount*1 !=0 ? '-1.9rem':'-1.3rem' )}">
-					<div class="amount_list flex align_center flex-between">
-						<span class="amountName">货款金额</span>
-						<span class="amount" v-if="info.totalAmount" :style="{color:!info.settleAmount? '#f0ad4e':'#333333'}">¥{{toThousands(info.totalAmount,2)}}</span>
-						<span class="amount" v-else :style="{color:!info.discountAmount ? '#f0ad4e':'#333333'}">¥0.00</span>
+				<div class="orderInfo">
+					<div class="flex align_center flex-between">
+						<span>欠款金额</span>
+						<span class="amount" v-if="info.totalAmount">¥{{toThousands(info.totalAmount,2)}}</span>
+						<span class="amount" v-else>¥0</span>
 					</div>
-					<div v-if="info.discountAmount && info.discountAmount*1 !=0">
-						<div class="amount_list flex align_center flex-between">
-							<span class="amountName">折让金额</span>
-							<span class="amount" v-if="info.discountAmount">-¥{{toThousands(info.discountAmount,2)}}</span>
-							<span class="amount" v-else>¥0.00</span>
-						</div>
-						<div class="amount_list flex align_center flex-between">
-							<span class="amountName">折后金额</span>
-							<span class="amount" style="color: #f0ad4e" v-if="info.settleAmount">¥{{toThousands(info.settleAmount,2)}}</span>
-							<span class="amount" style="color: #f0ad4e" v-else>¥0.00</span>
-						</div>
+					<div class="downLoadTip">
+						单据明细Excel下载请点击下面的链接:
 					</div>
-					<div class="downLoadCon">
-						<div class="downLoadTip">
-							单据明细Excel下载请点击下面的链接:
-						</div>
-						<div class="downLoadUrl" @click="downLoad">
-							http://iscm.360arrow.com/bill/对账单明细.xls
-						</div>
-						<img v-if="info.billStatus != 'UNSETTLE'" src="./img/finishImg.png" alt="" class="finishImg">
+					<div class="downLoadUrl" @click="downLoad">
+						http://iscm.360arrow.com/bill/对账单明细.xls
 					</div>
 				</div>
 			</div>
-			<div class="orderCon flex flex-column" :style="{paddingTop:(info.discountAmount && info.discountAmount*1 !=0 ? '2.1rem':'1.5rem' )}">
-				<div class="handleOrder flex flex-between align_center" >
+			<div class="orderCon flex flex-column">
+				<div class="handleOrder flex flex-between align_center">
 					<span>共{{saleList ? saleList.length : 0}}个销售单</span>
-					<span v-if="!flag" @click="openAll">全部展开</span>
-					<span v-else @click="openAll">全部关闭</span>
+					<span>全部展开</span>
 				</div>
 				<div class="oederBox">
 					<div v-for="(item,i) in saleList" :key="item.bizSn">
-						<div class="oederList flex align_center" @click="openInfoList(i)">
+						<div class="oederList flex align_center" @click="handleShow(item,i)">
 							<div class="order-l">
 								<div class="order-t flex align_center flex-between">
 									<span>{{item.bizDate.substr(0,10)}}</span>
 									<span>{{item.bizNo}}</span>
 								</div>
 								<div class="order-b  flex align_center flex-between">
-									<div>应付:¥{{item.bizAmount ||0}}</div>
-									<div>已付:¥{{item.settledAmount | 0}}</div>
+									<div>应付:¥{{toThousands(item.bizAmount,2)}}</div>
+									<div>已付:¥{{toThousands(item.settledAmount,2)}}</div>
 									<div>
-										待付:<span>¥{{item.unsettleAmount ? toThousands(item.unsettleAmount,2): 0}}</span>
+										欠款:<span>¥{{item.unsettleAmount ? toThousands(item.unsettleAmount,2): 0}}</span>
 									</div>
 								</div>
 							</div>
@@ -256,7 +222,7 @@
 							</div>
 						</div>
 						<div class="otherList" v-show="item.isShow">
-							<div class="list" v-for="(con,j) in item.list" :key="con.id">
+							<div class="list" v-for="(con,j) in saleDetailList" :key="con.id">
 								<div class="list-t flex align_center flex-between">
 									<span>{{con.dealerProductEntity.code}}</span>
 									<span>¥{{con.price?toThousands(con.price,2):0}}</span>
@@ -276,76 +242,91 @@
 	</body>
 	<script>
 		new Vue({
-		  el: '#app',
-		  data: {
-		    ajaxUrl: 'http://p.iscm.360arrow.com/qpls-md/',
-		    saleList: [],
-		    saleDetailList: [],
-		    info: {},
-		    flag: false
-		  },
-		  created () {
-		    this.loadData()
-		document.title = this.getUrlParam('name')
-  },
-		  methods: {
-		    loadData () {
-		      const ajaxData = {
-		        verifySn: this.getUrlParam('verifySn'),
-		        dealerSn: this.getUrlParam('userSn')
-		      }
-		      axios.post(this.ajaxUrl + 'verify/findBySn', ajaxData).then((res) => {
-		        this.info = res.data.data
-		        res.data.data.detailList.forEach(item => {
-		          item.isShow = false
-		          item.list = []
-		        })
-		        this.saleList = res.data.data.detailList
-		        this.getALlList(res.data.data.detailList)
-		      }).catch((error) => {
-		        console.log(error)
-		      })
-    },
-		    handleShow (con, i) {
-		      const req_data = {
-		        salesBillSn: con.bizSn
-		      }
-		      axios.post(this.ajaxUrl + 'salesDetail/queryList', req_data).then((res) => {
-		        this.saleList[i].list = res.data.data
-		      }).catch((error) => {
-		        console.log(error)
-		      })
-    },
-		    openInfoList (i) {
-		      this.saleList[i].isShow = !this.saleList[i].isShow
-		      this.saleList.splice()
-		    },
-		    downLoad () {
-		      window.location.href = this.ajaxUrl + 'verify/exportExcel?verifySn=' + this.getUrlParam(
-		        'verifySn') + '&dealerSn=' + this.getUrlParam('userSn')
-		    },
-		    getUrlParam (name) {
-		      var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') // 构造一个含有目标参数的正则表达式对象
-      var r = window.location.search.substr(1).match(reg) // 匹配目标参数
-		      if (r != null) return unescape(r[2])
-		      return null // 返回参数值
-		},
-		    openAll () {
-		      this.flag = !this.flag
-		      this.saleList.forEach((item, i) => {
-		        if (this.flag) {
-		          item.isShow = true
-		        } else {
-		          item.isShow = false
-		        }
-		      })
-		    },
-		    getALlList (list) {
-		      list.forEach((item, i) => {
-		        this.handleShow(item, i)
-		      })
-		    }
-		  }
+			el: '#app',
+			data: {
+				ajaxUrl: 'http://p.iscm.360arrow.com/qpls-md/',
+				saleList: [],
+				saleDetailList: [],
+				info: {},
+				time: '',
+				startTime:'',
+				endTime:'',
+				customerSn:''
+			},
+			created() {
+				this.loadData();
+				document.title = this.getUrlParam('name');
+			},
+			methods: {
+				loadData() {
+					let ajaxData = {
+						verifySn: this.getUrlParam('verifySn'),
+						dealerSn: this.getUrlParam('userSn')
+					}
+					axios.post(this.ajaxUrl + 'verify/findBySn', ajaxData).then((res) => {
+						this.info = res.data.data;
+						res.data.data.detailList.forEach(item=>{
+							item.isShow  = false;
+						})
+						this.saleList = res.data.data.detailList;
+						if (res.data.data.bizBeginDate && res.data.data.bizEndDate) {
+							this.time = res.data.data.bizBeginDate.split(' ')[0] + '至' + res.data.data
+								.bizEndDate.split(' ')[0]
+								this.customerSn = res.data.buyerSn;
+								this.startTime = res.data.data.bizBeginDate;
+								this.endTime = res.data.data.bizEndDate
+						}
+					}).catch((error) => {
+						console.log(error);
+					});
+				},
+				handleShow(con , i) {
+					let req_data = {
+						salesBillSn: con.bizSn
+					}
+					axios.post(this.ajaxUrl + 'salesDetail/queryList', req_data).then((res) => {
+						this.saleDetailList = res.data.data;
+						this.saleList[i].isShow = !this.saleList[i].isShow ;
+					}).catch((error) => {
+						console.log(error);
+					});
+					
+				},
+				downLoad() {
+					let ajaxData = {
+						targetSn: this.customerSn,
+						bizBeginDate: this.startTime,
+						bizEndDate: this.endTime,
+						dealerSn: this.getUrlParam(userSn)
+					}
+					// let ajaxData={
+					// 	targetSn: '478718467182370816',
+					// 	bizBeginDate: '2022-12-01 00:00:00',
+					// 	bizEndDate: '2022-12-21 59:59:59',
+					// 	dealerSn: '435465609255526400'
+					// }
+					axios.get(this.ajaxUrl + 'verify/exportExcel', {
+						params: ajaxData
+					}, {
+						responseType: 'blob',
+						dataType: "jsonp",
+						jsonp: "callback"
+					}).then((res) => {
+						if (res.status == 200) {
+							downloadExcel(res.data, '对账单明细')
+						}
+					}).catch((error) => {
+						console.log(error);
+					});
+
+				},
+				getUrlParam(name) {
+					var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
+					var r = window.location.search.substr(1).match(reg); //匹配目标参数
+					if (r != null) return unescape(r[2]);
+					return null; //返回参数值
+				}
+			}
 		})
 	</script>
 

+ 45 - 35
public/dzd/js/resize.js

@@ -1,41 +1,51 @@
 (function(doc, win) {
-   var docEl = doc.documentElement,
-    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
-    recalc = function() {
-     var clientWidth = docEl.clientWidth;
-     if(!clientWidth) return;
-     if(clientWidth >= 1080) {
-      docEl.style.fontSize = '100px';
-     } else {
-      docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
-     }
-    };
+	var docEl = doc.documentElement,
+		resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
+		recalc = function() {
+			var clientWidth = docEl.clientWidth;
+			if (!clientWidth) return;
+			if (clientWidth >= 1080) {
+				docEl.style.fontSize = '100px';
+			} else {
+				docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
+			}
+		};
 
-   if(!doc.addEventListener) return;
-   win.addEventListener(resizeEvt, recalc, false);
-   doc.addEventListener('DOMContentLoaded', recalc, false);
-   var docEl = document.documentElement;
-   var clientWidth = docEl.clientHeight;
-  })(document, window);
+	if (!doc.addEventListener) return;
+	win.addEventListener(resizeEvt, recalc, false);
+	doc.addEventListener('DOMContentLoaded', recalc, false);
+	var docEl = document.documentElement;
+	var clientWidth = docEl.clientHeight;
+})(document, window);
 
-function toThousands (num, decimal) {
-  if (decimal) {
-    num = formatDecimal(num, decimal)
-  }
-  return num.toString().replace(/\d+/, function (n) { // 先提取整数部分
-    return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
-      return $1 + ','
-    })
-  })
+
+// 导出
+function downloadExcel(data, fileName) {
+	if (!data) {
+		return
+	}
+	const a = moment().format('YYYYMMDDHHmmss')
+	const fname = fileName + a
+	const blob = new Blob([data], {
+		type: 'application/vnd.ms-excel'
+	})
+	if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+		navigator.msSaveBlob(blob, fname + '.xlsx')
+	} else {
+		const link = document.createElement('a')
+		link.style.display = 'none'
+		var href = URL.createObjectURL(blob)
+		link.href = href
+		link.setAttribute('download', fname + '.xlsx')
+
+		document.body.appendChild(link)
+		link.click()
+		document.body.removeChild(link)
+		window.URL.revokeObjectURL(href) // 释放掉blob对象
+	}
 }
 
-function formatDecimal (num, decimal) {
-  num = num.toString()
-  const index = num.indexOf('.')
-  if (index !== -1) {
-    num = num.substring(0, decimal + index + 1)
-  } else {
-    num = num.substring(0)
-  }
-  return parseFloat(num).toFixed(decimal)
+function toThousands(num, decimal) {
+	let numInfo = num ? num : 0
+	return parseFloat(numInfo).toFixed(decimal)
 }