whx před 1 rokem
rodič
revize
c13fc99124
79 změnil soubory, kde provedl 636 přidání a 82 odebrání
  1. 9 2
      virgo.wzfrontend/console/src/assets/scss/index.scss
  2. 10 0
      virgo.wzfrontend/console/src/components/common/listFilter.vue
  3. 4 0
      virgo.wzfrontend/console/src/components/document/editor.vue
  4. 65 0
      virgo.wzfrontend/console/src/components/work/bill/contract/detail.vue
  5. 127 0
      virgo.wzfrontend/console/src/components/work/contract/common/bill.vue
  6. 14 4
      virgo.wzfrontend/console/src/components/work/contract/common/selectTemplate.vue
  7. 15 3
      virgo.wzfrontend/console/src/components/work/contract/list/detail.vue
  8. 0 1
      virgo.wzfrontend/console/src/components/work/contract/list/edit.vue
  9. 44 0
      virgo.wzfrontend/console/src/httpApi/contract.js
  10. 10 0
      virgo.wzfrontend/console/src/router/modules/bill.js
  11. 10 3
      virgo.wzfrontend/console/src/views/system/log.vue
  12. 130 0
      virgo.wzfrontend/console/src/views/work/bill/contract.vue
  13. 42 8
      virgo.wzfrontend/console/src/views/work/contract/client.vue
  14. 48 16
      virgo.wzfrontend/console/src/views/work/contract/list.vue
  15. 70 9
      virgo.wzfrontend/console/src/views/work/contract/organization.vue
  16. 1 1
      virgo.wzfrontend/src/main/resources/static/index.html
  17. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/129.102b247d.css
  18. 0 1
      virgo.wzfrontend/src/main/resources/static/static/css/170.67238434.css
  19. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/19.b6c7aaf0.css
  20. 0 1
      virgo.wzfrontend/src/main/resources/static/static/css/292.67238434.css
  21. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/315.b6c7aaf0.css
  22. 0 0
      virgo.wzfrontend/src/main/resources/static/static/css/353.52c2cdde.css
  23. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/426.102b247d.css
  24. 1 0
      virgo.wzfrontend/src/main/resources/static/static/css/app.59d18e78.css
  25. 0 1
      virgo.wzfrontend/src/main/resources/static/static/css/app.8e6d501f.css
  26. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/129.edfc25b2.js
  27. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/153-legacy.a3cd7e66.js
  28. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/166-legacy.5c563171.js
  29. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/166.addba414.js
  30. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/170-legacy.e48191aa.js
  31. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/19-legacy.b9335762.js
  32. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/191-legacy.6610ce7c.js
  33. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/191.2e2f4840.js
  34. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/239-legacy.f63020d9.js
  35. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/239.642b43d6.js
  36. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/245-legacy.722539aa.js
  37. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/245.7e9ddb0c.js
  38. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/289-legacy.aa9dc31f.js
  39. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/289.f27775f6.js
  40. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/292.98efeb8a.js
  41. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/293.3c849cdd.js
  42. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/293.fea914fd.js
  43. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/315.7db20958.js
  44. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/419-legacy.52deb2da.js
  45. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/419.cd6c5723.js
  46. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/426-legacy.86c6653e.js
  47. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/499-legacy.3f999b75.js
  48. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/499.975cc7ee.js
  49. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/51-legacy.c605e01a.js
  50. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/51.c55c0e6f.js
  51. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/525.654dee46.js
  52. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.0e0ca36b.js
  53. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.4447f6e9.js
  54. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/529.045ffcf5.js
  55. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/529.ba108746.js
  56. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/556-legacy.a3414653.js
  57. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/56.3c1529bb.js
  58. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/61-legacy.5840b04d.js
  59. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/61.8da2dda6.js
  60. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/621-legacy.f5683636.js
  61. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/621.75f03a20.js
  62. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/689.61a948d5.js
  63. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/709-legacy.1fe71ae7.js
  64. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/709.122f0dde.js
  65. 0 0
      virgo.wzfrontend/src/main/resources/static/static/js/813-legacy.392f335a.js
  66. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/850-legacy.1530d666.js
  67. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/850.01ef0b7a.js
  68. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.1b9314fe.js
  69. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.a129211d.js
  70. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/896.4a55c4a6.js
  71. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/896.89436332.js
  72. 1 1
      virgo.wzfrontend/src/main/resources/static/static/js/906-legacy.0f3b6f18.js
  73. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.39233061.js
  74. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.beebe3ac.js
  75. 0 0
      virgo.wzfrontend/src/main/resources/static/static/js/994.5651dd19.js
  76. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.0475991d.js
  77. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.1cbbf6fd.js
  78. 0 1
      virgo.wzfrontend/src/main/resources/static/static/js/app.8c203a45.js
  79. 1 0
      virgo.wzfrontend/src/main/resources/static/static/js/app.b7872319.js

+ 9 - 2
virgo.wzfrontend/console/src/assets/scss/index.scss

@@ -129,12 +129,14 @@
 		height: 48px;
 		border-bottom: 1px solid #374156;
 		padding: 0 20px;
-		padding-top: 12px;
-		
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
 		.el-page-header__content{
 			color: $--color-common;
 			font-size: 16px;
 		}
+		
 	}
 	
 	.hui-content-insert {
@@ -1223,6 +1225,11 @@
 }
 //dialog
 .document-dialog{
+	.pdf-iframe {
+		border: none;
+		padding: 0;
+		margin: 0;
+	}
 	.el-dialog {
 		background: #fff !important;
 		height: 80vh;

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

@@ -54,6 +54,12 @@
 				<el-input prefix-icon="el-icon-search" v-model="order.name" placeholder="请输入房间号"></el-input>
 			</div>
 		</div>
+		<div class="filter-box" v-if="type === 'billContract'">
+			<div class="filter-item">
+				<el-input prefix-icon="el-icon-search" v-model="billContract.contractCode" placeholder="请输入合同编号">
+				</el-input>
+			</div>
+		</div>
 		<div class="filter-btn">
 			<el-button type="primary" size="medium" @click="submit">查询</el-button>
 			<el-button size="medium" @click="resetForm">重置</el-button>
@@ -91,6 +97,10 @@
 					name: '',
 				},
 				orderData: {},
+				billContract: {
+					contractCode: ''
+				},
+				billContractData: {}
 			}
 		},
 		created() {

+ 4 - 0
virgo.wzfrontend/console/src/components/document/editor.vue

@@ -74,6 +74,9 @@
 	import {
 		constData
 	} from '@/uitls/index.js';
+	import {
+		createLogger
+	} from 'vuex';
 	// import verifyQr from '@/components/verifyQr';
 	export default {
 		props: ['documentId', 'templateId'],
@@ -206,6 +209,7 @@
 							'<button class="sureAutograph el-button el-button--default el-button--medium">确认签名</button>';
 						break;
 					case 'seal':
+						if (elem.innerHTML) return;
 						elem.innerHTML = '<span class="sureSeal"">申请盖章</span>';
 						break;
 					default:

+ 65 - 0
virgo.wzfrontend/console/src/components/work/bill/contract/detail.vue

@@ -0,0 +1,65 @@
+<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>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getPaymentDetailById
+	} from '@/httpApi/contract'
+	export default {
+		props: ['detailId'],
+		data() {
+			return {
+				detail: {
+					phase: '-',
+					amount: '-',
+					startDate: '-',
+					endDate: '-'
+				}
+			}
+		},
+		created() {
+			if (this.detailId) this.init();
+		},
+		methods: {
+			init() {
+				getPaymentDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.detail = res.data
+					}
+				})
+			}
+		},
+	}
+</script>
+<style lang="scss">
+
+</style>

+ 127 - 0
virgo.wzfrontend/console/src/components/work/contract/common/bill.vue

@@ -0,0 +1,127 @@
+<template>
+	<div class="contract-bill">
+		<el-collapse>
+			<el-collapse-item :title="'第' + item.phase + '期'" v-for="(item,index) in list" :key="item.id">
+				<div class="contract-bill-box">
+					<div class="contract-bill-item">
+						<div class="name">账单期数</div>
+						<div class="label">{{'第' + item.phase + '期'}}</div>
+					</div>
+					<div class="contract-bill-item">
+						<div class="name">账单日期</div>
+						<div class="label">{{item.startDate}}至{{item.endDate}}</div>
+					</div>
+					<div class="contract-bill-item">
+						<div class="name">金额</div>
+						<div class="label">{{item.amount}}元</div>
+					</div>
+					<div class="contract-bill-item">
+						<div class="name">收款方</div>
+						<div class="label">{{item.organizationName}}</div>
+					</div>
+					<div class="contract-bill-item">
+						<div class="name">付款方</div>
+						<div class="label">{{item.payMerchantName || item.payClientName}}</div>
+					</div>
+					<div class="contract-bill-item">
+						<div class="name">账单组成</div>
+						<div class="label">{{returnLabel(item.data)}}</div>
+					</div>
+				</div>
+			</el-collapse-item>
+		</el-collapse>
+	</div>
+</template>
+
+<script>
+	import {
+		getPaymentListByPage
+	} from '@/httpApi/contract'
+	export default {
+		props: ['detailId'],
+		data() {
+			return {
+				list: []
+			}
+		},
+		created() {
+			this.init();
+		},
+		methods: {
+			init() {
+				getPaymentListByPage({
+					currPage: 1,
+					pageSize: 100,
+					contractId: this.detailId
+				}).then(res => {
+					if (res.state) {
+						this.list = res.data.dataList;
+					}
+				})
+			},
+			returnLabel(data) {
+				let list = JSON.parse(data);
+				let str = [];
+				for (var i = 0; i < list.length; i++) {
+					if (list[i].unitPrice) {
+						str.push(list[i].payCycle + '个月租金' + list[i].unitPrice + '元')
+					} else if (list[i].earnestMoney) {
+						str.push(this.$field.findTypeName('earnestMoneyType', list[i].earnestMoneyType) + list[i]
+							.earnestMoney + '元')
+					}
+				}
+				return str.join('+')
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.contract-bill {
+		width: 100%;
+		height: 100%;
+
+		.el-collapse {
+			border: none;
+		}
+
+		.contract-bill-box {
+			display: flex;
+			flex-wrap: wrap;
+
+			.contract-bill-item {
+				width: 20%;
+				padding-right: 15px;
+				margin-bottom: 15px;
+			}
+
+			.name {
+				font-size: 12px;
+				opacity: 0.8;
+				margin-bottom: 5px;
+			}
+		}
+
+		.el-collapse-item {
+			margin-bottom: 10px;
+
+			.el-collapse-item__header {
+				background: $--box-background;
+				color: $--color-common;
+				border: none;
+				padding-left: 20px;
+			}
+
+			.el-collapse-item__wrap {
+				background: $--box-background;
+				border-bottom: none;
+				border-top: 1px solid $--color-border;
+			}
+
+			.el-collapse-item__content {
+				color: $--color-common;
+				padding: 15px 0 0 15px;
+			}
+		}
+	}
+</style>

+ 14 - 4
virgo.wzfrontend/console/src/components/work/contract/common/selectTemplate.vue

@@ -77,8 +77,11 @@
 		</div>
 		<el-dialog :title="file.name" :visible.sync="documentShow" class="document-dialog" width="80%"
 			:append-to-body="true">
-			<editor :documentId="file.id" v-if="documentShow" @close="documentShow = false" @submit="submit">
-			</editor>
+			<div v-if="documentShow" style="width: 100%;height: 100%;">
+				<iframe v-if="status > 1 " :src="pdfUrl" width="100%" height="100%" class="pdf-iframe"></iframe>
+				<editor :documentId="file.id" v-else @close="documentShow = false" @submit="submit">
+				</editor>
+			</div>
 		</el-dialog>
 		<el-dialog :title="file.name" :visible.sync="fieldShow" width="900px" :append-to-body="true">
 			<field-form v-if="fieldShow" :documentId="file.id" :templateId="file.templateId" @callback="callback">
@@ -124,7 +127,7 @@
 	} from '@/httpApi/contract'
 	import config from '@/config'
 	export default {
-		props: ['documentFileList', 'type'],
+		props: ['documentFileList', 'type', 'status'],
 		data() {
 			return {
 				templateData: [],
@@ -145,12 +148,15 @@
 					checkStrictly: true
 				},
 				fileList: [],
-				fieldShow: false
+				fieldShow: false,
+				pdfUrl: '',
+				state: ''
 			}
 		},
 		created() {
 			this.templateData = this.documentFileList.document;
 			this.fileList = this.documentFileList.attachment;
+			this.state = this.status;
 		},
 		methods: {
 			selectTemplate() {
@@ -183,6 +189,7 @@
 			},
 			updateDocument(item) {
 				this.file = item;
+				this.pdfUrl = config.baseURL + '/file/archived/' + item.id + '/pdf.pdf';
 				this.documentShow = true;
 			},
 			change() {
@@ -246,6 +253,9 @@
 			}
 		},
 		watch: {
+			status() {
+				this.state = this.status;
+			},
 			documentFileList() {
 				this.templateData = this.documentFileList.document;
 				this.fileList = this.documentFileList.attachment;

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

@@ -146,7 +146,10 @@
 			</div>
 		</div>
 		<div class="hui-flex-box" v-show="stepId === 3">
-			<select-template type="look" :documentFileList="documentFileList"></select-template>
+			<select-template type="look" :documentFileList="documentFileList" :status="detail.status"></select-template>
+		</div>
+		<div class="hui-flex-box" v-show="stepId === 4">
+			<bill v-if="stepId == 4 && detail.id" :detailId="detail.id"></bill>
 		</div>
 	</div>
 </template>
@@ -159,6 +162,7 @@
 	import clauseDetail from '@/components/work/contract/common/clauseDetail'
 	import treeDetail from '@/components/common/house/treeDetail'
 	import selectTemplate from '@/components/work/contract/common/selectTemplate'
+	import bill from '@/components/work/contract/common/bill'
 	export default {
 		props: ['detailId'],
 		data() {
@@ -176,7 +180,7 @@
 					name: '合同文本',
 					icon: 'el-icon-takeaway-box'
 				}],
-				stepId: 1,
+				stepId: 4,
 				detail: {
 					clauseList: []
 				},
@@ -219,6 +223,13 @@
 							document: this.detail.document ? JSON.parse(this.detail.document) : [],
 							attachment: this.detail.attachment ? JSON.parse(this.detail.attachment) : []
 						}
+						if (this.detail.status >= 2) {
+							this.stepList.push({
+								id: 4,
+								name: '合同账单',
+								icon: 'el-icon-bank-card'
+							})
+						}
 					}
 				})
 			}
@@ -227,7 +238,8 @@
 			tag,
 			clauseDetail,
 			treeDetail,
-			selectTemplate
+			selectTemplate,
+			bill
 		},
 	}
 </script>

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

@@ -177,7 +177,6 @@
 	import {
 		insertContract,
 		getContractDetailById,
-		updateContract,
 		updateContractAll
 	} from '@/httpApi/contract'
 	import tag from '@/components/common/tag'

+ 44 - 0
virgo.wzfrontend/console/src/httpApi/contract.js

@@ -333,4 +333,48 @@ export function getRetrievers(retrievers) {
 		url: `/file/document/retrievers/${retrievers}`,
 		method: 'get',
 	})
+}
+/* 
+ * 归档合同
+ * 
+ */
+export function archivedDocument(id, projectName) {
+	return request({
+		url: `/file/archived/${id}/${projectName}`,
+		method: 'get',
+	})
+}
+/* 
+ * 生成合同账单
+ * 
+ * 
+ */
+export function paymentGenerate(clauseId) {
+	return request({
+		url: `/api/payment/generate/${clauseId}`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取合同账单
+ * 
+ * 
+ */
+export function getPaymentListByPage(data) {
+	return request({
+		url: `/api/payment/${data.currPage}/${data.pageSize}`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 通过ID获取合同账单详情
+ * 
+ * 
+ */
+export function getPaymentDetailById(id) {
+	return request({
+		url: `/api/payment/${id}`,
+		method: 'get',
+	})
 }

+ 10 - 0
virgo.wzfrontend/console/src/router/modules/bill.js

@@ -0,0 +1,10 @@
+const bill = [{
+	path: 'bill/contract',
+	component: () => import('@/views/work/bill/contract'),
+	name: '合同账单',
+	meta: {
+		title: '合同账单'
+	}
+}]
+
+export default bill;

+ 10 - 3
virgo.wzfrontend/console/src/views/system/log.vue

@@ -42,9 +42,16 @@
 			</el-timeline-item>
 			<el-timeline-item timestamp="2024-06-13" placement="top">
 				<div class="log-box">
-					<div class="log-item">1、完成对系统身份的梳理,包括1.客户、2.中介、3.组织成员、4.关联公司、5.组织所有者。</div>
-					<div class="log-item">2、新增项目组织按身份切换。</div>
-					<div class="log-item">3、新增工单管理页面。</div>
+					<div class="log-item">1、完成对系统身份的梳理,包括1.客户、2.中介、3.组织成员、4.关联公司、5.组织所有者。</div>
+					<div class="log-item">2、新增项目组织按身份切换。</div>
+					<div class="log-item">3、新增工单管理UI页面。</div>
+				</div>
+			</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">3、新增账单管理-合同账单列表、详情、搜索的功能。</div>
 				</div>
 			</el-timeline-item>
 		</el-timeline>

+ 130 - 0
virgo.wzfrontend/console/src/views/work/bill/contract.vue

@@ -0,0 +1,130 @@
+<template>
+	<div class="hui-flex hui-content">
+		<div class="hui-flex">
+			<div class="hui-content-title">
+				<div class="hui-title-item active">合同账单</div>
+			</div>
+			<div class="hui-flex-box hui-flex hui-table">
+				<list-filter 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">
+							<template slot-scope="scope">
+								<div style="text-align: center;">{{scope.$index + 1}}</div>
+							</template>
+						</el-table-column>
+						<el-table-column label="合同编码" prop="contractCode"></el-table-column>
+						<el-table-column label="账单期数" prop="code" width="100">
+							<template slot-scope="scope">
+								<span>{{'第' + scope.row.phase + '期'}}</span>
+							</template>
+						</el-table-column>
+						<el-table-column label="账单日期" prop="code" width="200">
+							<template slot-scope="scope">
+								<span>{{scope.row.startDate}}至{{scope.row.endDate}}</span>
+							</template>
+						</el-table-column>
+						<el-table-column label="金额">
+							<template slot-scope="scope">
+								<span>{{scope.row.amount + '元'}}</span>
+							</template>
+						</el-table-column>
+						<el-table-column label="收款方" prop="organizationName"></el-table-column>
+						<el-table-column label="付款方">
+							<template slot-scope="scope">
+								<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">
+							<template slot-scope="scope">
+								<div class="hui-table-operation">
+									<span class="table-operation" @click="detailItem(scope.row)">
+										详情
+									</span>
+								</div>
+							</template>
+						</el-table-column>
+						<template slot="empty">
+							<empty description="暂无数据"></empty>
+						</template>
+					</el-table>
+				</div>
+				<div class="hui-content-pagination">
+					<el-pagination :page-size="pageSize" :pager-count="9" layout="prev, pager, next" :total="totalCount"
+						@current-change="currentChange">
+					</el-pagination>
+				</div>
+			</div>
+		</div>
+		<el-drawer title="账单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :detailId="detailId"></detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	import detail from '@/components/work/bill/contract/detail'
+	import listFilter from '@/components/common/listFilter'
+
+	import {
+		getPaymentListByPage
+	} from '@/httpApi/contract'
+	export default {
+		data() {
+			return {
+				tableData: [],
+				currPage: 1,
+				pageSize: 10,
+				totalCount: 0,
+				detailId: '',
+				filterOption: {},
+				drawer: false
+			}
+		},
+		created() {
+			this.init();
+		},
+		methods: {
+			init() {
+				let postData = {
+					currPage: this.currPage,
+					pageSize: this.pageSize,
+					organizationId: this.$store.getters.organization.id,
+					projectId: this.$store.getters.project.id
+				}
+				postData = Object.assign(postData, this.filterOption);
+				getPaymentListByPage(postData).then(res => {
+					if (res.state) {
+						this.tableData = res.data.dataList;
+						this.totalCount = res.data.totalCount;
+					}
+				})
+			},
+			filterInit(option) {
+				this.filterOption = option;
+				this.currPage = 1;
+				this.init();
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			detailItem(item) {
+				this.detailId = item.id;
+				this.drawer = true;
+			},
+			callback(type) {
+				if (type === 'init') this.init();
+				this.type = 'list';
+			}
+		},
+		components: {
+			detail,
+			listFilter
+		},
+	}
+</script>
+
+<style>
+</style>

+ 42 - 8
virgo.wzfrontend/console/src/views/work/contract/client.vue

@@ -31,6 +31,14 @@
 						<el-table-column label="开始日" prop="startDate"></el-table-column>
 						<el-table-column label="结束日" prop="endDate"></el-table-column>
 						<el-table-column label="运营跟进人" prop="operatorName"></el-table-column>
+						<el-table-column label="状态" width="100">
+							<template slot-scope="scope">
+								<div class="hui-table-tag">
+									<div class="hui-tag hui-tag-info" v-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="150">
 							<template slot-scope="scope">
 								<div class="hui-table-operation">
@@ -55,9 +63,15 @@
 		<div class="hui-flex" v-else>
 			<div class="hui-nav">
 				<el-page-header @back="type = 'list'" :content="type === 'edit'?'新建合同':'合同详情'"></el-page-header>
+				<div class="nav-button">
+					<el-button type="primary" size="medium" @click="sureConcart"
+						v-if="type == 'detail' && detail.status === 1">
+						确认合同
+					</el-button>
+				</div>
 			</div>
-			<edit v-if="type === 'edit'" class="hui-flex-box" @callback="callback" :detailId="detailId"></edit>
-			<detail v-else class="hui-flex-box" @callback="callback" :detailId="detailId"></detail>
+			<edit v-if="type === 'edit'" class="hui-flex-box" @callback="callback" :detailId="detail.id"></edit>
+			<detail v-else class="hui-flex-box" @callback="callback" :detailId="detail.id"></detail>
 		</div>
 	</div>
 </template>
@@ -68,11 +82,13 @@
 	import listFilter from '@/components/common/listFilter'
 	import {
 		getContractListByPage,
-		deleteContractById
+		deleteContractById,
+		updateContract
 	} from '@/httpApi/contract'
 	import {
 		bindProjectDetail
 	} from '@/httpApi/organization'
+
 	export default {
 		data() {
 			return {
@@ -81,14 +97,15 @@
 				currPage: 1,
 				pageSize: 10,
 				totalCount: 0,
-				detailId: '',
 				filterOption: {},
-				clientId: ''
+				merchantId: '',
+				detail: {}
 			}
 		},
 		created() {
 			bindProjectDetail({
 				userId: this.$store.getters.user.userId,
+				projectId: this.$store.getters.project.id,
 				identityId: 1
 			}).then(res => {
 				if (res.state) {
@@ -104,7 +121,8 @@
 					currPage: this.currPage,
 					pageSize: this.pageSize,
 					clientId: this.clientId,
-					projectId: this.$store.getters.project.id
+					projectId: this.$store.getters.project.id,
+					statusList: [1, 2, 3, 4, 5]
 				}
 				postData = Object.assign(postData, this.filterOption);
 				getContractListByPage(postData).then(res => {
@@ -120,7 +138,7 @@
 				this.init();
 			},
 			insert() {
-				this.detailId = '';
+				this.detail = {};
 				this.type = 'edit';
 			},
 			currentChange(currPage) {
@@ -128,9 +146,25 @@
 				this.init();
 			},
 			detailItem(item) {
-				this.detailId = item.id;
+				this.detail = item;
 				this.type = 'detail';
 			},
+			sureConcart() {
+				this.$confirm('是否确定合同无误,确定后账单将自动生成?', () => {
+					updateContract({
+						id: this.detail.id,
+						status: 2
+					}).then(res => {
+						if (res.state) {
+							this.$message({
+								type: 'success',
+								message: '操作成功'
+							})
+							this.detail['status'] = 2;
+						}
+					})
+				});
+			},
 			callback(type) {
 				if (type === 'init') this.init();
 				this.type = 'list';

+ 48 - 16
virgo.wzfrontend/console/src/views/work/contract/list.vue

@@ -31,19 +31,34 @@
 								</div>
 							</template>
 						</el-table-column>
-						<el-table-column label="开始日" prop="startDate"></el-table-column>
-						<el-table-column label="结束日" prop="endDate"></el-table-column>
-						<el-table-column label="运营跟进人" prop="operatorName"></el-table-column>
+						<el-table-column label="开始日" prop="startDate" width="110"></el-table-column>
+						<el-table-column label="结束日" prop="endDate" width="110"></el-table-column>
+						<el-table-column label="运营跟进人" prop="operatorName" width="100"></el-table-column>
+						<el-table-column label="状态" width="100">
+							<template slot-scope="scope">
+								<div class="hui-table-operation" v-if="scope.row.status === 0">
+									<span class="table-operation" @click="sendItem(scope.row)">
+										发送租客
+									</span>
+								</div>
+								<div class="hui-table-tag" v-else>
+									<div class="hui-tag hui-tag-info" v-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="150">
 							<template slot-scope="scope">
 								<div class="hui-table-operation">
 									<span class="table-operation" @click="detailItem(scope.row)">
 										详情
 									</span>
-									<span class="table-operation" @click="updateItem(scope.row)">
+									<span class="table-operation" v-if="scope.row.status != 2"
+										@click="updateItem(scope.row)">
 										编辑
 									</span>
-									<span class="table-operation" @click="deleteItem(scope.row)">
+									<span class="table-operation" v-if="scope.row.status != 2"
+										@click="deleteItem(scope.row)">
 										删除
 									</span>
 								</div>
@@ -65,8 +80,8 @@
 			<div class="hui-nav">
 				<el-page-header @back="type = 'list'" :content="type === 'edit'?'新建合同':'合同详情'"></el-page-header>
 			</div>
-			<edit v-if="type === 'edit'" class="hui-flex-box" @callback="callback" :detailId="detailId"></edit>
-			<detail v-else class="hui-flex-box" @callback="callback" :detailId="detailId"></detail>
+			<edit v-if="type === 'edit'" class="hui-flex-box" @callback="callback" :detailId="detail.id"></edit>
+			<detail v-else class="hui-flex-box" @callback="callback" :detailId="detail.id"></detail>
 		</div>
 	</div>
 </template>
@@ -75,10 +90,10 @@
 	import edit from '@/components/work/contract/list/edit'
 	import detail from '@/components/work/contract/list/detail'
 	import listFilter from '@/components/common/listFilter'
-
 	import {
 		getContractListByPage,
-		deleteContractById
+		deleteContractById,
+		updateContract
 	} from '@/httpApi/contract'
 	export default {
 		data() {
@@ -88,7 +103,7 @@
 				currPage: 1,
 				pageSize: 10,
 				totalCount: 0,
-				detailId: '',
+				detail: {},
 				filterOption: {}
 			}
 		},
@@ -96,11 +111,12 @@
 			this.init();
 		},
 		methods: {
-			init() {
+			init() {
+				//合同状态,0-初始状态、1.已发送租客、2.已确认生成合同、3.已续费、4.即将过期、5.已过期、6.已退租。
 				let postData = {
 					currPage: this.currPage,
 					pageSize: this.pageSize,
-					organizationId: this.$store.getters.organization.id,
+					organizationId: this.$store.getters.organization.id,
 					projectId: this.$store.getters.project.id
 				}
 				postData = Object.assign(postData, this.filterOption);
@@ -117,7 +133,7 @@
 				this.init();
 			},
 			insert() {
-				this.detailId = '';
+				this.detailId = {};
 				this.type = 'edit';
 			},
 			currentChange(currPage) {
@@ -125,15 +141,31 @@
 				this.init();
 			},
 			detailItem(item) {
-				this.detailId = item.id;
+				this.detail = item;
 				this.type = 'detail';
 			},
 			updateItem(item) {
-				this.detailId = item.id;
+				this.detail = item;
 				this.type = 'edit';
 			},
+			sendItem(item) {
+				this.$confirm('确定要发送合同给租客?', () => {
+					updateContract({
+						id: item.id,
+						status: 1
+					}).then(res => {
+						if (res.state) {
+							this.$message({
+								type: 'success',
+								message: '操作成功'
+							})
+							this.init();
+						}
+					})
+				});
+			},
 			deleteItem(item) {
-				this.$confirm('确定要删除该合同文件?', () => {
+				this.$confirm('确定要删除该合同?', () => {
 					deleteContractById(item.id).then(res => {
 						if (res.state) {
 							this.$message({

+ 70 - 9
virgo.wzfrontend/console/src/views/work/contract/organization.vue

@@ -31,6 +31,14 @@
 						<el-table-column label="开始日" prop="startDate"></el-table-column>
 						<el-table-column label="结束日" prop="endDate"></el-table-column>
 						<el-table-column label="运营跟进人" prop="operatorName"></el-table-column>
+						<el-table-column label="状态" width="100">
+							<template slot-scope="scope">
+								<div class="hui-table-tag">
+									<div class="hui-tag hui-tag-info" v-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="150">
 							<template slot-scope="scope">
 								<div class="hui-table-operation">
@@ -55,9 +63,15 @@
 		<div class="hui-flex" v-else>
 			<div class="hui-nav">
 				<el-page-header @back="type = 'list'" :content="type === 'edit'?'新建合同':'合同详情'"></el-page-header>
+				<div class="nav-button">
+					<el-button type="primary" size="medium" @click="sureConcart"
+						v-if="type == 'detail' && detail.status === 1">
+						确认合同
+					</el-button>
+				</div>
 			</div>
-			<edit v-if="type === 'edit'" class="hui-flex-box" @callback="callback" :detailId="detailId"></edit>
-			<detail v-else class="hui-flex-box" @callback="callback" :detailId="detailId"></detail>
+			<edit v-if="type === 'edit'" class="hui-flex-box" @callback="callback" :detailId="detail.id"></edit>
+			<detail v-else class="hui-flex-box" @callback="callback" :detailId="detail.id"></detail>
 		</div>
 	</div>
 </template>
@@ -68,7 +82,10 @@
 	import listFilter from '@/components/common/listFilter'
 	import {
 		getContractListByPage,
-		deleteContractById
+		deleteContractById,
+		updateContract,
+		archivedDocument,
+		paymentGenerate
 	} from '@/httpApi/contract'
 	import {
 		bindProjectDetail
@@ -82,14 +99,15 @@
 				currPage: 1,
 				pageSize: 10,
 				totalCount: 0,
-				detailId: '',
 				filterOption: {},
-				merchantId: ''
+				merchantId: '',
+				detail: {}
 			}
 		},
 		created() {
 			bindProjectDetail({
-				bindOrganizationId: this.$store.getters.organization.id
+				bindOrganizationId: this.$store.getters.organization.id,
+				projectId: this.$store.getters.project.id
 			}).then(res => {
 				if (res.state) {
 					if (res.data.length == 0) return;
@@ -104,7 +122,8 @@
 					currPage: this.currPage,
 					pageSize: this.pageSize,
 					merchantId: this.merchantId,
-					projectId: this.$store.getters.project.id
+					projectId: this.$store.getters.project.id,
+					statusList: [1, 2, 3, 4, 5]
 				}
 				postData = Object.assign(postData, this.filterOption);
 				getContractListByPage(postData).then(res => {
@@ -120,7 +139,7 @@
 				this.init();
 			},
 			insert() {
-				this.detailId = '';
+				this.detail = {};
 				this.type = 'edit';
 			},
 			currentChange(currPage) {
@@ -128,9 +147,51 @@
 				this.init();
 			},
 			detailItem(item) {
-				this.detailId = item.id;
+				this.detail = item;
 				this.type = 'detail';
 			},
+			sureConcart() {
+				this.$confirm('是否确定合同无误,确定后账单将自动生成?', () => {
+					this.$loading.open();
+					let documentList = this.detail.document ? JSON.parse(this.detail.document) : [];
+					let promise = [];
+					for (let i = 0; i < documentList.length; i++) {
+						promise.push(new Promise((resolve, reject) => {
+							archivedDocument(documentList[i].id, this.$store.getters
+								.project.name).then(res => {
+								if (res.state) {
+									resolve(true)
+								} else {
+									reject(false)
+								}
+							})
+						}))
+					}
+					promise.push(new Promise((resolve, reject) => {
+						paymentGenerate(this.detail.id).then(res => {
+							if (res.state) {
+								resolve(true)
+							} else {
+								reject(false)
+							}
+						})
+					}))
+					Promise.all(promise).then(res => {
+						this.$loading.close();
+						updateContract({
+							id: this.detail.id,
+							status: 2
+						})
+						this.$message({
+							type: 'success',
+							message: '操作成功'
+						})
+						this.detail['status'] = 2;
+					}).catch(error => {
+						this.$loading.close();
+					})
+				});
+			},
 			callback(type) {
 				if (type === 'init') this.init();
 				this.type = 'list';

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/index.html


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/129.102b247d.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/css/170.67238434.css


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


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/css/292.67238434.css


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


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


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/426.102b247d.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/css/app.59d18e78.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/css/app.8e6d501f.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/129.edfc25b2.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/153-legacy.a3cd7e66.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/166-legacy.5c563171.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/166.addba414.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/170-legacy.e48191aa.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/19-legacy.b9335762.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/191-legacy.6610ce7c.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/191.2e2f4840.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/239-legacy.f63020d9.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/239.642b43d6.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/245-legacy.722539aa.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/245.7e9ddb0c.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/289-legacy.aa9dc31f.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/289.f27775f6.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/292.98efeb8a.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/293.3c849cdd.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/293.fea914fd.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/315.7db20958.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/419-legacy.52deb2da.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/419.cd6c5723.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/426-legacy.86c6653e.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/499-legacy.3f999b75.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/499.975cc7ee.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/51-legacy.c605e01a.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/51.c55c0e6f.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/525.654dee46.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.0e0ca36b.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/529-legacy.4447f6e9.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/529.045ffcf5.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/529.ba108746.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/556-legacy.a3414653.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/56.3c1529bb.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/61-legacy.5840b04d.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/61.8da2dda6.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/621-legacy.f5683636.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/621.75f03a20.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/689.61a948d5.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/709-legacy.1fe71ae7.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/709.122f0dde.js


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


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/850-legacy.1530d666.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/850.01ef0b7a.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.1b9314fe.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/896-legacy.a129211d.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/896.4a55c4a6.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/896.89436332.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/static/js/906-legacy.0f3b6f18.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.39233061.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/919-legacy.beebe3ac.js


virgo.wzfrontend/src/main/resources/static/static/js/994.814993ae.js → virgo.wzfrontend/src/main/resources/static/static/js/994.5651dd19.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.0475991d.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/app-legacy.1cbbf6fd.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/static/js/app.8c203a45.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/static/js/app.b7872319.js