|
@@ -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>
|
|
|
|