whx 1 năm trước cách đây
mục cha
commit
ee8c91bc83
83 tập tin đã thay đổi với 463 bổ sung93 xóa
  1. 3 0
      virgo.wzfrontend/console/src/components/common/listFilter.vue
  2. 33 2
      virgo.wzfrontend/console/src/components/common/upload.vue
  3. 68 0
      virgo.wzfrontend/console/src/components/work/bill/common/invoiceForm.vue
  4. 68 0
      virgo.wzfrontend/console/src/components/work/bill/common/recodeForm.vue
  5. 102 28
      virgo.wzfrontend/console/src/components/work/bill/contract/detail.vue
  6. 18 1
      virgo.wzfrontend/console/src/components/work/contract/common/bill.vue
  7. 1 1
      virgo.wzfrontend/console/src/components/work/contract/list/detail.vue
  8. 36 1
      virgo.wzfrontend/console/src/httpApi/contract.js
  9. 9 2
      virgo.wzfrontend/console/src/views/system/log.vue
  10. 74 8
      virgo.wzfrontend/console/src/views/work/bill/contract.vue
  11. 1 1
      virgo.wzfrontend/src/main/resources/static/index.html
  12. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/112.62c9bb7a.css
  13. 0 1
      virgo.wzfrontend/src/main/resources/static/static/css/129.102b247d.css
  14. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/314.52c2cdde.css
  15. 0 1
      virgo.wzfrontend/src/main/resources/static/static/css/426.102b247d.css
  16. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/454.b6c7aaf0.css
  17. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/486.b6c7aaf0.css
  18. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/535.62c9bb7a.css
  19. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/933.52c2cdde.css
  20. 0 1
      virgo.wzfrontend/src/main/resources/static/static/css/app.59d18e78.css
  21. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/app.845114dc.css
  22. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/112.07d98df5.js
  23. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/129.edfc25b2.js
  24. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/153-legacy.b35adf44.js
  25. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/166-legacy.006065fc.js
  26. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/166.8a1bb2ae.js
  27. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/19-legacy.b9335762.js
  28. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/191-legacy.80165776.js
  29. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/191.92eb43b7.js
  30. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/239-legacy.f63020d9.js
  31. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/239.642b43d6.js
  32. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/245-legacy.722539aa.js
  33. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/245.7e9ddb0c.js
  34. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/254-legacy.9b93fd12.js
  35. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/289-legacy.aa9dc31f.js
  36. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/289.f27775f6.js
  37. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/293.305a97b0.js
  38. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/293.fea914fd.js
  39. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/314.d6a1fc4e.js
  40. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/315.7db20958.js
  41. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/375.b34f61c3.js
  42. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/404-legacy.db4c68d4.js
  43. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/412.1fe8aff3.js
  44. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/426-legacy.86c6653e.js
  45. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/454-legacy.883c431c.js
  46. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/461.4de306f0.js
  47. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/486.d72033b6.js
  48. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/498-legacy.1553e139.js
  49. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/51-legacy.e4b9b429.js
  50. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/51.817ed63e.js
  51. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/510.88ab23b3.js
  52. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/525-legacy.b7367007.js
  53. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/525.e4d5a9ac.js
  54. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.0e0ca36b.js
  55. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.567fbd9f.js
  56. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/529.0893b59b.js
  57. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/529.ba108746.js
  58. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/535-legacy.8f6a6f3f.js
  59. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/568-legacy.2f5ebb12.js
  60. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/61-legacy.23b1469f.js
  61. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/61.4ccd2ccb.js
  62. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/621-legacy.f5683636.js
  63. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/621.75f03a20.js
  64. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/64.51b8e8c0.js
  65. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/656-legacy.4e074330.js
  66. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/689.ea46d5f5.js
  67. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/719-legacy.a09e6eb7.js
  68. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/740.fe78f1d5.js
  69. 0 0
      virgo.wzfrontend/src/main/resources/static/static/js/813-legacy.4f51d75d.js
  70. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/850-legacy.2bd0f19e.js
  71. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/850.afdd94c1.js
  72. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.7370765f.js
  73. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.a129211d.js
  74. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/896.4a55c4a6.js
  75. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/896.c5cc17b4.js
  76. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/906-legacy.636f4590.js
  77. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.32a3e3e2.js
  78. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.beebe3ac.js
  79. 0 0
      virgo.wzfrontend/src/main/resources/static/static/js/994.523497e3.js
  80. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.0475991d.js
  81. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.9a49d203.js
  82. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/app.9d4283da.js
  83. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/app.b7872319.js

+ 3 - 0
virgo.wzfrontend/console/src/components/common/listFilter.vue

@@ -111,6 +111,9 @@
 				this[this.type] = JSON.parse(JSON.stringify(this[this.type + 'Data']));
 				this.$emit('filter', {});
 			},
+			resetField() {
+				this[this.type] = JSON.parse(JSON.stringify(this[this.type + 'Data']));
+			},
 			submit() {
 				let data = this.filterOption(this[this.type]);
 				this.$emit('filter', data);

+ 33 - 2
virgo.wzfrontend/console/src/components/common/upload.vue

@@ -13,7 +13,12 @@
 					<el-image :src="item.url" :preview-src-list="[item.url]" v-else>
 						<div slot="error" class="image-slot">
 							<el-tooltip class="item" effect="dark" :content="item.name" placement="bottom">
-								<div class="image-text">{{item.type.toUpperCase()}}</div>
+								<div class="image-text">
+									<span>{{item.type.toUpperCase()}}</span>
+									<div class="file-download">
+										<i class="el-icon-download" @click="download(item)"></i>
+									</div>
+								</div>
 							</el-tooltip>
 						</div>
 					</el-image>
@@ -146,6 +151,9 @@
 					this.fileList.splice(index, 1);
 				});
 			},
+			download(item) {
+				window.location.href = config.baseURL + '/file/filenode/' + item.id;
+			},
 			openVideo(item) {
 				this.video = item;
 				this.visible = true;
@@ -266,7 +274,23 @@
 			width: 100%;
 			height: 100%;
 			border-radius: 4px;
-			background: #9a9a9a;
+			background: #253642;
+			position: relative;
+
+			.file-download {
+				position: absolute;
+				display: none;
+				align-items: center;
+				justify-content: center;
+				font-size: 20px;
+				background: rgba(0, 0, 0, 0.8);
+				top: 0;
+				left: 0;
+				right: 0;
+				bottom: 0;
+				color: #fff;
+				cursor: pointer;
+			}
 
 			.image-text {
 				font-size: 20px;
@@ -277,7 +301,14 @@
 				justify-content: center;
 				color: #fff;
 				font-weight: bold;
+
+				&:hover {
+					.file-download {
+						display: flex;
+					}
+				}
 			}
+
 		}
 
 		.common-update-image-box {

+ 68 - 0
virgo.wzfrontend/console/src/components/work/bill/common/invoiceForm.vue

@@ -0,0 +1,68 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" label-position="top" :model="form">
+				<el-form-item label="发票名称" prop="name" :rules="[{required: true, message: '请输入发票名称'}]">
+					<el-input type="text" v-model="form.name" placeholder="请输入发票名称"></el-input>
+				</el-form-item>
+				<el-form-item label="发票附件" class="hui-textarea">
+					<upload ref="upload" :list="responsibility" type="insert" accept=".png, .jpg, .jpeg, .pdf"
+						text="上传发票">
+					</upload>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="medium" @click="$emit('callback')">取 消</el-button>
+			<el-button size="medium" type="primary" @click="submit">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import upload from '@/components/common/upload'
+	import {
+		insertPaymentInvoice,
+		putPaymentStatus
+	} from '@/httpApi/contract'
+	export default {
+		props: ['paymentId'],
+		data() {
+			return {
+				form: {
+					name: '',
+					data: '{}'
+				},
+				responsibility: []
+			}
+		},
+		created() {
+			this.form['paymentId'] = this.paymentId;
+		},
+		methods: {
+			submit() {
+				this.$refs.form.validate((valid) => {
+					if (valid) {
+						let postData = JSON.parse(JSON.stringify(this.form));
+						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
+						insertPaymentInvoice(postData).then(res => {
+							if (res.state) {
+								putPaymentStatus(this.paymentId, 2);
+								this.$message.success('操作成功');
+								this.$emit('callback', 'init');
+							}
+						})
+					} else {
+						return false;
+					}
+				});
+			}
+		},
+		components: {
+			upload
+		},
+	}
+</script>
+
+<style>
+</style>

+ 68 - 0
virgo.wzfrontend/console/src/components/work/bill/common/recodeForm.vue

@@ -0,0 +1,68 @@
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" label-position="top" :model="form">
+				<el-form-item label="账单名称" prop="name" :rules="[{required: true, message: '请输入账单名称'}]">
+					<el-input type="text" v-model="form.name" placeholder="请输入账单名称"></el-input>
+				</el-form-item>
+				<el-form-item label="回执单" class="hui-textarea">
+					<upload ref="upload" :list="responsibility" type="insert" accept=".png, .jpg, .jpeg, .pdf"
+						text="上传回执单">
+					</upload>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="medium" @click="$emit('callback')">取 消</el-button>
+			<el-button size="medium" type="primary" @click="submit">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import upload from '@/components/common/upload'
+	import {
+		insertPaymentRecord,
+		putPaymentStatus
+	} from '@/httpApi/contract'
+	export default {
+		props: ['paymentId'],
+		data() {
+			return {
+				form: {
+					name: '',
+					data: '{}'
+				},
+				responsibility: []
+			}
+		},
+		created() {
+			this.form['paymentId'] = this.paymentId;
+		},
+		methods: {
+			submit() {
+				this.$refs.form.validate((valid) => {
+					if (valid) {
+						let postData = JSON.parse(JSON.stringify(this.form));
+						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
+						insertPaymentRecord(postData).then(res => {
+							if (res.state) {
+								putPaymentStatus(this.paymentId, 1);
+								this.$message.success('操作成功');
+								this.$emit('callback', 'init');
+							}
+						})
+					} else {
+						return false;
+					}
+				});
+			}
+		},
+		components: {
+			upload
+		},
+	}
+</script>
+
+<style>
+</style>

+ 102 - 28
virgo.wzfrontend/console/src/components/work/bill/contract/detail.vue

@@ -1,32 +1,83 @@
 <template>
-	<div class="hui-detail">
-		<div class="hui-detail-title">基础信息</div>
-		<div class="hui-detail-content">
-			<div class="hui-detail-item">
-				<div class="hui-detail-label">账单期数</div>
-				<div class="hui-detail-value">{{'第' + detail.phase + '期'}}</div>
-			</div>
-			<div class="hui-detail-item">
-				<div class="hui-detail-label">账单日期</div>
-				<div class="hui-detail-value">{{detail.startDate}}至{{detail.endDate}}</div>
-			</div>
-			<div class="hui-detail-item">
-				<div class="hui-detail-label">金额</div>
-				<div class="hui-detail-value">{{detail.amount + '元'}}</div>
-			</div>
-			<div class="hui-detail-item">
-				<div class="hui-detail-label">收款方</div>
-				<div class="hui-detail-value">{{detail.organizationName}}</div>
-			</div>
-			<div class="hui-detail-item">
-				<div class="hui-detail-label">付款方</div>
-				<div class="hui-detail-value">{{detail.payMerchantName || detail.payClientName}}</div>
-			</div>
-			<div class="hui-detail-item">
-				<div class="hui-detail-label">状态</div>
-				<div class="hui-detail-value">{{detail.status}}</div>
+	<div class="hui-flex">
+		<div class="hui-flex-box">
+			<div class="hui-detail">
+				<div class="hui-detail-title">基础信息</div>
+				<div class="hui-detail-content">
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">账单期数</div>
+						<div class="hui-detail-value">{{'第' + detail.phase + '期'}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">账单日期</div>
+						<div class="hui-detail-value">{{detail.startDate}}至{{detail.endDate}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">金额</div>
+						<div class="hui-detail-value">{{detail.amount + '元'}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">收款方</div>
+						<div class="hui-detail-value">{{detail.organizationName}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">付款方</div>
+						<div class="hui-detail-value">{{detail.payMerchantName || detail.payClientName}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">状态</div>
+						<div class="hui-detail-value">
+							<div class="hui-tag hui-tag-info" v-if="!detail.status">待付款</div>
+							<div class="hui-tag hui-tag-warning" v-if="detail.status === 1">付款中</div>
+							<div class="hui-tag hui-tag-success" v-if="detail.status === 2">已付款</div>
+						</div>
+					</div>
+				</div>
+				<div class="hui-detail-title" v-if="detail.paymentRecordList.length > 0">付款记录</div>
+				<div class="hui-detail-content" v-for="(item,index) in detail.paymentRecordList">
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">付款名称</div>
+						<div class="hui-detail-value">{{item.name}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">回执单</div>
+						<div class="hui-detail-value">
+							<upload ref="upload" :list="item.attachment ? JSON.parse(item.attachment) : []"
+								type="preview">
+							</upload>
+						</div>
+					</div>
+				</div>
+				<div class="hui-detail-title" v-if="detail.paymentInvoiceList.length > 0">发票记录</div>
+				<div class="hui-detail-content" v-for="(item,index) in detail.paymentInvoiceList">
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">付款名称</div>
+						<div class="hui-detail-value">{{item.name}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">回执单</div>
+						<div class="hui-detail-value">
+							<upload ref="upload" :list="item.attachment ? JSON.parse(item.attachment) : []"
+								type="preview">
+							</upload>
+						</div>
+					</div>
+				</div>
 			</div>
 		</div>
+		<div class="hui-drawer-submit" v-if="detail.status !== 2 && detail.id">
+			<el-button size="medium" type="primary" @click="paymentOperation('record')" v-if="!detail.status">
+				账单付款
+			</el-button>
+			<el-button size="medium" type="primary" @click="paymentOperation('invoice')" v-if="detail.status === 1">
+				账单发票
+			</el-button>
+		</div>
+		<el-dialog title="新增" :visible.sync="visible" width="900px" :append-to-body="true">
+			<recode-form v-if="visible && type === 'record'" @callback="callback" :paymentId="detailId"></recode-form>
+			<invoice-form v-if="visible && type === 'invoice'" @callback="callback" :paymentId="detailId">
+			</invoice-form>
+		</el-dialog>
 	</div>
 </template>
 
@@ -34,6 +85,9 @@
 	import {
 		getPaymentDetailById
 	} from '@/httpApi/contract'
+	import recodeForm from '@/components/work/bill/common/recodeForm';
+	import invoiceForm from '@/components/work/bill/common/invoiceForm';
+	import upload from '@/components/common/upload'
 	export default {
 		props: ['detailId'],
 		data() {
@@ -42,8 +96,12 @@
 					phase: '-',
 					amount: '-',
 					startDate: '-',
-					endDate: '-'
-				}
+					endDate: '-',
+					paymentRecordList: [],
+					paymentInvoiceList: []
+				},
+				visible: false,
+				type: ''
 			}
 		},
 		created() {
@@ -56,8 +114,24 @@
 						this.detail = res.data
 					}
 				})
+			},
+			paymentOperation(type) {
+				this.type = type;
+				this.visible = true;
+			},
+			callback(type) {
+				if (type === 'init') {
+					this.init();
+					this.$emit('reload');
+				}
+				this.visible = false;
 			}
 		},
+		components: {
+			recodeForm,
+			invoiceForm,
+			upload
+		},
 	}
 </script>
 <style lang="scss">

+ 18 - 1
virgo.wzfrontend/console/src/components/work/contract/common/bill.vue

@@ -1,7 +1,15 @@
 <template>
 	<div class="contract-bill">
 		<el-collapse>
-			<el-collapse-item :title="'第' + item.phase + '期'" v-for="(item,index) in list" :key="item.id">
+			<el-collapse-item v-for="(item,index) in list" :key="item.id">
+				<template slot="title">
+					<div class="collapse-title">
+						<div class="label">{{'第' + item.phase + '期'}}</div>
+						<div class="hui-tag hui-tag-info" v-if="!item.status">待付款</div>
+						<div class="hui-tag hui-tag-warning" v-if="item.status === 1">付款中</div>
+						<div class="hui-tag hui-tag-success" v-if="item.status === 2">已付款</div>
+					</div>
+				</template>
 				<div class="contract-bill-box">
 					<div class="contract-bill-item">
 						<div class="name">账单期数</div>
@@ -81,6 +89,15 @@
 		width: 100%;
 		height: 100%;
 
+		.collapse-title {
+			display: flex;
+			align-items: center;
+
+			.label {
+				width: 60px;
+			}
+		}
+
 		.el-collapse {
 			border: none;
 		}

+ 1 - 1
virgo.wzfrontend/console/src/components/work/contract/list/detail.vue

@@ -180,7 +180,7 @@
 					name: '合同文本',
 					icon: 'el-icon-takeaway-box'
 				}],
-				stepId: 4,
+				stepId: 1,
 				detail: {
 					clauseList: []
 				},

+ 36 - 1
virgo.wzfrontend/console/src/httpApi/contract.js

@@ -366,7 +366,18 @@ export function getPaymentListByPage(data) {
 		method: 'post',
 		data: data
 	})
-}
+}
+/* 
+ * 更新合同账单状态
+ * @param {Object} data = {}
+ * 
+ */
+export function putPaymentStatus(id, status) {
+	return request({
+		url: `/api/payment/updateStatus/${id}/${status}`,
+		method: 'put',
+	})
+}
 /* 
  * 通过ID获取合同账单详情
  * 
@@ -377,4 +388,28 @@ export function getPaymentDetailById(id) {
 		url: `/api/payment/${id}`,
 		method: 'get',
 	})
+}
+/* 
+ * 新增付款记录
+ * @param {Object} data = {}
+ * 
+ */
+export function insertPaymentRecord(data) {
+	return request({
+		url: `/api/payment/record`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 新增发票记录
+ * @param {Object} data = {}
+ * 
+ */
+export function insertPaymentInvoice(data) {
+	return request({
+		url: `/api/payment/invoice`,
+		method: 'post',
+		data: data
+	})
 }

+ 9 - 2
virgo.wzfrontend/console/src/views/system/log.vue

@@ -49,11 +49,18 @@
 			</el-timeline-item>
 			<el-timeline-item timestamp="2024-06-14" placement="top">
 				<div class="log-box">
-					<div class="log-item">1、新增发送合同、确认合同、生成合同pdf文档的功能。</div>
-					<div class="log-item">2、新增合同详情-合同账单的功能。</div>
+					<div class="log-item">1、新增发送合同、确认合同、生成合同pdf文档的功能。</div>
+					<div class="log-item">2、新增合同详情-合同账单的功能。</div>
 					<div class="log-item">3、新增账单管理-合同账单列表、详情、搜索的功能。</div>
 				</div>
 			</el-timeline-item>
+			<el-timeline-item timestamp="2024-06-15" placement="top">
+				<div class="log-box">
+					<div class="log-item">1、账单管理新增企业收款账单、企业付款账单、个人付款账单的功能。</div>
+					<div class="log-item">2、新增账单付款记录、发票记录的功能。</div>
+					<div class="log-item">2、新增账单付款记录、发票记录附件下载的功能。</div>
+				</div>
+			</el-timeline-item>
 		</el-timeline>
 	</div>
 </template>

+ 74 - 8
virgo.wzfrontend/console/src/views/work/bill/contract.vue

@@ -2,10 +2,13 @@
 	<div class="hui-flex hui-content">
 		<div class="hui-flex">
 			<div class="hui-content-title">
-				<div class="hui-title-item active">合同账单</div>
+				<div :class="'hui-title-item'+ (titleId === item.id ? ' active':'')" v-for="(item,index) in titleList"
+					:key="item.id" @click="changeTitle(item.id)">
+					{{item.name}}
+				</div>
 			</div>
 			<div class="hui-flex-box hui-flex hui-table">
-				<list-filter type="billContract" @filter="filterInit"></list-filter>
+				<list-filter ref="billContract" type="billContract" @filter="filterInit"></list-filter>
 				<div class="hui-flex-box">
 					<el-table :data="tableData" row-key="id" border height="100%">
 						<el-table-column label="序号" width="50">
@@ -35,8 +38,16 @@
 								<span> {{scope.row.payMerchantName || scope.row.payClientName}}</span>
 							</template>
 						</el-table-column>
-						<el-table-column label="状态"></el-table-column>
-						<el-table-column label="操作" width="150">
+						<el-table-column label="状态" width="80">
+							<template slot-scope="scope">
+								<div class="hui-table-tag">
+									<div class="hui-tag hui-tag-info" v-if="!scope.row.status">待付款</div>
+									<div class="hui-tag hui-tag-warning" v-else-if="scope.row.status === 1">付款中</div>
+									<div class="hui-tag hui-tag-success" v-else-if="scope.row.status === 2">已付款</div>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column label="操作" width="80">
 							<template slot-scope="scope">
 								<div class="hui-table-operation">
 									<span class="table-operation" @click="detailItem(scope.row)">
@@ -58,7 +69,7 @@
 			</div>
 		</div>
 		<el-drawer title="账单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<detail v-if="drawer" :detailId="detailId"></detail>
+			<detail v-if="drawer" :detailId="detailId" @reload="init"></detail>
 		</el-drawer>
 	</div>
 </template>
@@ -66,7 +77,9 @@
 <script>
 	import detail from '@/components/work/bill/contract/detail'
 	import listFilter from '@/components/common/listFilter'
-
+	import {
+		bindProjectDetail
+	} from '@/httpApi/organization'
 	import {
 		getPaymentListByPage
 	} from '@/httpApi/contract'
@@ -79,7 +92,20 @@
 				totalCount: 0,
 				detailId: '',
 				filterOption: {},
-				drawer: false
+				drawer: false,
+				titleList: [{
+					id: 1,
+					name: '企业收款账单'
+				}, {
+					id: 2,
+					name: '企业付款账单'
+				}, {
+					id: 3,
+					name: '个人付款账单'
+				}],
+				titleId: 1,
+				merchantId: '',
+				clientId: ''
 			}
 		},
 		created() {
@@ -90,9 +116,15 @@
 				let postData = {
 					currPage: this.currPage,
 					pageSize: this.pageSize,
-					organizationId: this.$store.getters.organization.id,
 					projectId: this.$store.getters.project.id
 				}
+				if (this.titleId === 1) {
+					postData['organizationId'] = this.$store.getters.organization.id;
+				} else if (this.titleId === 2) {
+					postData['payMerchantId'] = this.merchantId;
+				} else {
+					postData['payClientId'] = this.clientId;
+				}
 				postData = Object.assign(postData, this.filterOption);
 				getPaymentListByPage(postData).then(res => {
 					if (res.state) {
@@ -101,6 +133,40 @@
 					}
 				})
 			},
+			changeTitle(id) {
+				this.titleId = id;
+				this.currPage = 1;
+				this.tableData = [];
+				this.$refs.billContract.resetField();
+				this.filterOption = {};
+				if (this.titleId === 2 && !this.merchantId) {
+					bindProjectDetail({
+						bindOrganizationId: this.$store.getters.organization.id,
+						projectId: this.$store.getters.project.id,
+						identityId: 4
+					}).then(res => {
+						if (res.state) {
+							if (res.data.length == 0) return;
+							this.merchantId = res.data[0].merchantId;
+							this.init();
+						}
+					})
+				} else if (this.titleId === 3 && !this.clientId) {
+					bindProjectDetail({
+						userId: this.$store.getters.user.userId,
+						projectId: this.$store.getters.project.id,
+						identityId: 1
+					}).then(res => {
+						if (res.state) {
+							if (res.data.length == 0) return;
+							this.clientId = res.data[0].clientId;
+							this.init();
+						}
+					})
+				} else {
+					this.init();
+				}
+			},
 			filterInit(option) {
 				this.filterOption = option;
 				this.currPage = 1;

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/index.html


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/112.62c9bb7a.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/css/129.102b247d.css


virgo.wzfrontend/src/main/resources/static/static/css/353.52c2cdde.css → virgo.wzfrontend/src/main/resources/static/static/css/314.52c2cdde.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/css/426.102b247d.css


virgo.wzfrontend/src/main/resources/static/static/css/19.b6c7aaf0.css → virgo.wzfrontend/src/main/resources/static/static/css/454.b6c7aaf0.css


virgo.wzfrontend/src/main/resources/static/static/css/315.b6c7aaf0.css → virgo.wzfrontend/src/main/resources/static/static/css/486.b6c7aaf0.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/535.62c9bb7a.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/933.52c2cdde.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/css/app.59d18e78.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/app.845114dc.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/112.07d98df5.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/129.edfc25b2.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/153-legacy.b35adf44.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/166-legacy.006065fc.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/166.8a1bb2ae.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/19-legacy.b9335762.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/191-legacy.80165776.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/191.92eb43b7.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/239-legacy.f63020d9.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/239.642b43d6.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/245-legacy.722539aa.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/245.7e9ddb0c.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/254-legacy.9b93fd12.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/289-legacy.aa9dc31f.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/289.f27775f6.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/293.305a97b0.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/293.fea914fd.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/314.d6a1fc4e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/315.7db20958.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/375.b34f61c3.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/404-legacy.db4c68d4.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/412.1fe8aff3.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/426-legacy.86c6653e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/454-legacy.883c431c.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/461.4de306f0.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/486.d72033b6.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/498-legacy.1553e139.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/51-legacy.e4b9b429.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/51.817ed63e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/510.88ab23b3.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/525-legacy.b7367007.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/525.e4d5a9ac.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.0e0ca36b.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.567fbd9f.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/529.0893b59b.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/529.ba108746.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/535-legacy.8f6a6f3f.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/568-legacy.2f5ebb12.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/61-legacy.23b1469f.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/61.4ccd2ccb.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/621-legacy.f5683636.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/621.75f03a20.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/64.51b8e8c0.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/656-legacy.4e074330.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/689.ea46d5f5.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/719-legacy.a09e6eb7.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/740.fe78f1d5.js


virgo.wzfrontend/src/main/resources/static/static/js/813-legacy.392f335a.js → virgo.wzfrontend/src/main/resources/static/static/js/813-legacy.4f51d75d.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/850-legacy.2bd0f19e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/850.afdd94c1.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.7370765f.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.a129211d.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/896.4a55c4a6.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/896.c5cc17b4.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/906-legacy.636f4590.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.32a3e3e2.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.beebe3ac.js


virgo.wzfrontend/src/main/resources/static/static/js/994.5651dd19.js → virgo.wzfrontend/src/main/resources/static/static/js/994.523497e3.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.0475991d.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.9a49d203.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/app.9d4283da.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/app.b7872319.js