whx 6 months ago
parent
commit
c372e01340
100 changed files with 1902 additions and 1691 deletions
  1. 5 4
      virgo.wzfrontend/console/src/components/flow/flowAction.vue
  2. 5 2
      virgo.wzfrontend/console/src/components/flow/flowForm.vue
  3. 6 2
      virgo.wzfrontend/console/src/components/work/bill/common/invoiceForm.vue
  4. 6 2
      virgo.wzfrontend/console/src/components/work/bill/common/recodeForm.vue
  5. 161 158
      virgo.wzfrontend/console/src/components/work/bill/routine/detail.vue
  6. 8 4
      virgo.wzfrontend/console/src/components/work/bill/routine/edit.vue
  7. 7 2
      virgo.wzfrontend/console/src/components/work/bim/bimForm.vue
  8. 9 5
      virgo.wzfrontend/console/src/components/work/business/organization/edit.vue
  9. 76 24
      virgo.wzfrontend/console/src/components/work/contract/list/edit.vue
  10. 4 1
      virgo.wzfrontend/console/src/components/work/contract/tag/edit.vue
  11. 5 2
      virgo.wzfrontend/console/src/components/work/contract/template/fieldEdit.vue
  12. 8 3
      virgo.wzfrontend/console/src/components/work/contract/template/fieldForm.vue
  13. 6 2
      virgo.wzfrontend/console/src/components/work/crm/agent/edit.vue
  14. 8 2
      virgo.wzfrontend/console/src/components/work/crm/customer/edit.vue
  15. 4 1
      virgo.wzfrontend/console/src/components/work/device/deviceForm.vue
  16. 147 144
      virgo.wzfrontend/console/src/components/work/device/eventForm.vue
  17. 10 6
      virgo.wzfrontend/console/src/components/work/operation/meeting/edit.vue
  18. 5 2
      virgo.wzfrontend/console/src/components/work/order/action.vue
  19. 1 1
      virgo.wzfrontend/console/src/components/work/order/detail.vue
  20. 8 4
      virgo.wzfrontend/console/src/components/work/order/edit.vue
  21. 5 2
      virgo.wzfrontend/console/src/components/work/organization/depart/edit.vue
  22. 11 5
      virgo.wzfrontend/console/src/components/work/organization/seal/edit.vue
  23. 6 2
      virgo.wzfrontend/console/src/components/work/organization/user/edit.vue
  24. 5 2
      virgo.wzfrontend/console/src/components/work/property/departForm.vue
  25. 5 1
      virgo.wzfrontend/console/src/components/work/space/house/lookRecordEdit.vue
  26. 6 1
      virgo.wzfrontend/console/src/components/work/space/project/edit.vue
  27. 110 106
      virgo.wzfrontend/console/src/components/work/space/set/projectItemForm.vue
  28. 74 72
      virgo.wzfrontend/console/src/components/work/space/set/projectItemTargetForm.vue
  29. 20 10
      virgo.wzfrontend/console/src/config/demo1.js
  30. 11 1
      virgo.wzfrontend/console/src/httpApi/loginRegister.js
  31. 340 326
      virgo.wzfrontend/console/src/layout/components/topNav.vue
  32. 133 134
      virgo.wzfrontend/console/src/layout/components/userDetail.vue
  33. 1 0
      virgo.wzfrontend/console/src/store/getters.js
  34. 10 1
      virgo.wzfrontend/console/src/store/modules/projectBase.js
  35. 14 2
      virgo.wzfrontend/console/src/views/website/home.vue
  36. 1 1
      virgo.wzfrontend/console/src/views/work/bill/routine/client.vue
  37. 1 1
      virgo.wzfrontend/console/src/views/work/bill/routine/organization.vue
  38. 1 1
      virgo.wzfrontend/console/src/views/work/bill/routine/payment.vue
  39. 2 2
      virgo.wzfrontend/console/src/views/work/order/clear.vue
  40. 2 2
      virgo.wzfrontend/console/src/views/work/order/operation.vue
  41. 182 181
      virgo.wzfrontend/console/src/views/work/order/service.vue
  42. 454 451
      virgo.wzfrontend/console/src/views/work/space/set.vue
  43. 1 1
      virgo.wzfrontend/src/main/resources/static/console/index.html
  44. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/1041.dc2bf83b.css
  45. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/109.710489ee.css
  46. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/1170.d878ce6b.css
  47. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/1735.22d48ee0.css
  48. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/1520.d878ce6b.css
  49. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/1618.f43f4c00.css
  50. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/1821.b6c7aaf0.css
  51. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/2038.2afa4fbc.css
  52. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/2059.b6c7aaf0.css
  53. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/206.62c9bb7a.css
  54. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/2288.48fa06e5.css
  55. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/2693.e193389d.css
  56. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/4388.f43f4c00.css
  57. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/4643.b6c7aaf0.css
  58. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/4781.62c9bb7a.css
  59. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/5046.7e28460d.css
  60. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/5501.7e28460d.css
  61. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/5523.863e2be4.css
  62. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/5679.48fa06e5.css
  63. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/6116.f275a232.css
  64. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/6355.e193389d.css
  65. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/6448.710489ee.css
  66. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/7032.dc2bf83b.css
  67. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/7204.28d0077f.css
  68. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/7788.28d0077f.css
  69. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/8187.863e2be4.css
  70. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/css/973.22d48ee0.css
  71. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/8869.b6c7aaf0.css
  72. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/8954.12d58e15.css
  73. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/9104.f275a232.css
  74. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/9593.12d58e15.css
  75. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/css/9818.b9bbdc53.css
  76. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/10.a4fe8103.js
  77. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1041-legacy.6ad6ef3f.js
  78. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/109-legacy.bfd6bd1b.js
  79. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1100-legacy.d5f1c59c.js
  80. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1170.5bed2788.js
  81. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1204.7d59cb66.js
  82. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1250-legacy.cc7b2a0c.js
  83. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1250-legacy.f47cbfb0.js
  84. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1250.0014d332.js
  85. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1250.56f594a9.js
  86. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1263-legacy.dc9fb2c6.js
  87. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1263.e2513cb7.js
  88. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/127.dd8f4f23.js
  89. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1433-legacy.897c5b3b.js
  90. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1433.42be6056.js
  91. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1437-legacy.c6ba321a.js
  92. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/251.3efb79fa.js
  93. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1498.dda556b7.js
  94. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1520-legacy.4ecce39b.js
  95. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1551-legacy.561c4db6.js
  96. 1 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/1618.dde3ecab.js
  97. 0 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/1620.e3ed803d.js
  98. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4940-legacy.ff271e93.js
  99. 1 1
      virgo.wzfrontend/src/main/resources/static/console/static/js/4337-legacy.bfd17f9d.js
  100. 0 0
      virgo.wzfrontend/src/main/resources/static/console/static/js/4337.312cfa76.js

+ 5 - 4
virgo.wzfrontend/console/src/components/flow/flowAction.vue

@@ -13,7 +13,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">确 定</el-button>
 		</div>
 	</div>
 </template>
@@ -30,13 +30,14 @@
 				form: {
 					content: ''
 				},
-				responsibility: []
+				responsibility: [],
+				loading: false
 			}
 		},
 		created() {},
 		methods: {
 			submit() {
-				this.$loading();
+				this.loading = true;
 				userFlowAction(this.projectFlowId, this.action.id, {
 					comment: JSON.stringify({
 						text: this.form.content,
@@ -49,7 +50,7 @@
 						this.$message.success('操作成功');
 						this.$emit('callback', 'init');
 					}
-					this.$loading.close();
+					this.loading = false;
 				});
 			},
 			returnState(name) {

+ 5 - 2
virgo.wzfrontend/console/src/components/flow/flowForm.vue

@@ -26,7 +26,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -57,7 +57,8 @@
 				ccList: [],
 				project: {},
 				flowForm: {},
-				flowData: {}
+				flowData: {},
+				loading: false
 			}
 		},
 		created() {
@@ -76,6 +77,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				let data = this.$refs.flowData.returnForm();
 				let formData = data.formData;
 				let commonForm = data.commonForm;
@@ -96,6 +98,7 @@
 				}
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 6 - 2
virgo.wzfrontend/console/src/components/work/bill/common/invoiceForm.vue

@@ -34,7 +34,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -61,7 +61,8 @@
 					cargoName: '',
 					data: '{}'
 				},
-				responsibility: []
+				responsibility: [],
+				loading: false
 			}
 		},
 		created() {
@@ -76,12 +77,14 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				this.$refs.form.validate((valid) => {
 					if (valid) {
 						if (this.$refs.upload.fileList.length === 0) return this.$message.warning('请上传发票');
 						let postData = JSON.parse(JSON.stringify(this.form));
 						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
 						insertPaymentInvoice(postData).then(res => {
+							this.loading = false;
 							if (res.state) {
 								if (this.type === 'payment') {
 									putPaymentStatus(this.itemId, 2);
@@ -96,6 +99,7 @@
 							}
 						})
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});

+ 6 - 2
virgo.wzfrontend/console/src/components/work/bill/common/recodeForm.vue

@@ -14,7 +14,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -36,7 +36,8 @@
 					name: '',
 					data: '{}'
 				},
-				responsibility: []
+				responsibility: [],
+				loading: false
 			}
 		},
 		created() {
@@ -44,12 +45,14 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				this.$refs.form.validate((valid) => {
 					if (valid) {
 						if (this.$refs.upload.fileList.length === 0) return this.$message.warning('请上传回执单');
 						let postData = JSON.parse(JSON.stringify(this.form));
 						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
 						insertPaymentRecord(postData).then(res => {
+							this.loading = false;
 							if (res.state) {
 								if (this.type === 'payment') {
 									putPaymentStatus(this.itemId, 1);
@@ -64,6 +67,7 @@
 							}
 						})
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});

+ 161 - 158
virgo.wzfrontend/console/src/components/work/bill/routine/detail.vue

@@ -1,159 +1,162 @@
-<template>
-	<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.name}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">提醒日期</div>
-						<div class="hui-detail-value">{{detail.reminderDate}}</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-warning" v-if="detail.status === 1">付款中</div>
-							<div class="hui-tag hui-tag-success" v-else-if="detail.status === 2">已付款</div>
-							<div class="hui-tag hui-tag-info" v-else-if="detail.status === 3">待付款</div>
-							<div class="hui-tag hui-tag-info" v-else>待发送</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 hui-detail-item-top">
-						<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">{{$field.findTypeName('invoiceType',item.type)}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">发票代码</div>
-						<div class="hui-detail-value">{{item.code}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">发票号码</div>
-						<div class="hui-detail-value">{{item.number}}</div>
-					</div>
-					<div class="hui-detail-item">
-						<div class="hui-detail-label">货物名称</div>
-						<div class="hui-detail-value">{{item.cargoName}}</div>
-					</div>
-					<div class="hui-detail-item hui-detail-item-top">
-						<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 === 3 || detail.status === 1">
-			<el-button size="medium" type="primary" @click="paymentOperation('record')" v-if="detail.status === 3">
-				账单付款
-			</el-button>
-			<el-button size="medium" type="primary" @click="paymentOperation('invoice')" v-if="detail.status === 1">
-				账单发票
-			</el-button>
-		</div>
-		<el-dialog :close-on-click-modal="false" title="新增" :visible.sync="visible" width="900px" :append-to-body="true">
-			<recode-form v-if="visible && type === 'record'" @callback="callback" :itemId="detailId"
-				type="paymentOrdinary">
-			</recode-form>
-			<invoice-form v-if="visible && type === 'invoice'" @callback="callback" :itemId="detailId"
-				type="paymentOrdinary">
-			</invoice-form>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import {
-		getPaymentDetailById
-	} from '@/httpApi/bill'
-	import upload from '@/components/common/upload'
-	import recodeForm from '@/components/work/bill/common/recodeForm';
-	import invoiceForm from '@/components/work/bill/common/invoiceForm';
-	export default {
-		props: ['detailId'],
-		data() {
-			return {
-				detail: {
-					phase: '-',
-					amount: '-',
-					startDate: '-',
-					endDate: '-',
-					paymentRecordList: [],
-					paymentInvoiceList: []
-				},
-				visible: false,
-				type: ''
-			}
-		},
-		created() {
-			if (this.detailId) this.init();
-		},
-		methods: {
-			init() {
-				getPaymentDetailById(this.detailId).then(res => {
-					if (res.state) {
-						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">
-
+<template>
+	<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.name}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">提醒日期</div>
+						<div class="hui-detail-value">{{detail.reminderDate}}</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-warning" v-if="detail.status === 1">付款中</div>
+							<div class="hui-tag hui-tag-success" v-else-if="detail.status === 2">已付款</div>
+							<div class="hui-tag hui-tag-info" v-else-if="detail.status === 3">待付款</div>
+							<div class="hui-tag hui-tag-info" v-else>待发送</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 hui-detail-item-top">
+						<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">{{$field.findTypeName('invoiceType',item.type)}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">发票代码</div>
+						<div class="hui-detail-value">{{item.code}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">发票号码</div>
+						<div class="hui-detail-value">{{item.number}}</div>
+					</div>
+					<div class="hui-detail-item">
+						<div class="hui-detail-label">货物名称</div>
+						<div class="hui-detail-value">{{item.cargoName}}</div>
+					</div>
+					<div class="hui-detail-item hui-detail-item-top">
+						<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 === 3 || detail.status === 1">
+			<el-button size="medium" type="primary" @click="paymentOperation('record')"
+				v-if="detail.status === 3 && this.showType === 2">
+				账单付款
+			</el-button>
+			<el-button size="medium" type="primary" @click="paymentOperation('invoice')"
+				v-if="detail.status === 1 && this.showType === 1">
+				账单发票
+			</el-button>
+		</div>
+		<el-dialog :close-on-click-modal="false" title="新增" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<recode-form v-if="visible && type === 'record'" @callback="callback" :itemId="detailId"
+				type="paymentOrdinary">
+			</recode-form>
+			<invoice-form v-if="visible && type === 'invoice'" @callback="callback" :itemId="detailId"
+				type="paymentOrdinary">
+			</invoice-form>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		getPaymentDetailById
+	} from '@/httpApi/bill'
+	import upload from '@/components/common/upload'
+	import recodeForm from '@/components/work/bill/common/recodeForm';
+	import invoiceForm from '@/components/work/bill/common/invoiceForm';
+	export default {
+		props: ['detailId'],
+		data() {
+			return {
+				detail: {
+					phase: '-',
+					amount: '-',
+					startDate: '-',
+					endDate: '-',
+					paymentRecordList: [],
+					paymentInvoiceList: []
+				},
+				visible: false,
+				type: ''
+			}
+		},
+		created() {
+			if (this.detailId) this.init();
+		},
+		methods: {
+			init() {
+				getPaymentDetailById(this.detailId).then(res => {
+					if (res.state) {
+						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">
+
 </style>

+ 8 - 4
virgo.wzfrontend/console/src/components/work/bill/routine/edit.vue

@@ -42,7 +42,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -75,6 +75,7 @@
 				},
 				merchantList: [],
 				clientList: [],
+				loading: false
 			}
 		},
 		created() {
@@ -118,7 +119,8 @@
 				this.form.payMerchantId = '';
 				this.form.payClientId = '';
 			},
-			submit() {
+			submit() {
+				this.loading = true;
 				this.$refs.form.validate((valid) => {
 					if (valid) {
 						this.form['amount'] = parseInt(this.form.amount);
@@ -127,12 +129,14 @@
 						} else {
 							insertPayment(this.form).then(this.successFunc);
 						}
-					} else {
+					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
-			successFunc(res) {
+			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 7 - 2
virgo.wzfrontend/console/src/components/work/bim/bimForm.vue

@@ -31,7 +31,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -66,7 +66,8 @@
 						"id": 7,
 						"typeName": "机电"
 					}
-				]
+				],
+				loading: false
 			}
 		},
 		created() {},
@@ -78,12 +79,15 @@
 				this.bimForm.bim = {};
 			},
 			submit() {
+				this.loading = true;
 				let id = this.$refs.projectItem.formBox.projectItemTargetId;
 				getProjectItemTargetBimList(id).then(res => {
 					if (res.state) {
 						let bims = res.data ? res.data.bims : res.data;
 						!bims ? this.insertProjectItemTargetBim(id) : this.updateProjectItemTargetBim(id, bims, res
 							.data.id);
+					} else {
+						this.loading = false;
 					}
 				})
 			},
@@ -103,6 +107,7 @@
 				}).then(this.successFunc);
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 9 - 5
virgo.wzfrontend/console/src/components/work/business/organization/edit.vue

@@ -33,7 +33,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -59,7 +59,8 @@
 					industryType: '',
 					data: '',
 				},
-				customList: []
+				customList: [],
+				loading: false
 			}
 		},
 		created() {
@@ -74,7 +75,8 @@
 			}
 		},
 		methods: {
-			submit() {
+			submit() {
+				this.loading = true;
 				this.$refs.organizationForm.validate((valid) => {
 					if (valid) {
 						let postData = JSON.parse(JSON.stringify(this.organizationForm));
@@ -84,12 +86,14 @@
 						} else {
 							insertOrganization(postData).then(this.successFunc);
 						}
-					} else {
+					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
-			successFunc(res) {
+			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 76 - 24
virgo.wzfrontend/console/src/components/work/contract/list/edit.vue

@@ -160,7 +160,8 @@
 		</div>
 		<div class="contract-btn">
 			<el-button size="medium" @click="lastSubmit" v-if="stepId > 1">上一步</el-button>
-			<el-button type="primary" size="medium" @click="submit">{{stepId === 3 ? '保存' : '下一步'}}</el-button>
+			<el-button type="primary" size="medium" @click="submit"
+				:loading="loading">{{stepId === 3 ? '保存' : '下一步'}}</el-button>
 		</div>
 	</div>
 </template>
@@ -272,7 +273,9 @@
 					document: [],
 					attachment: []
 				},
-				formData: {}
+				formData: {},
+				isCache: true,
+				loading: false
 			}
 		},
 		created() {
@@ -313,15 +316,51 @@
 					}
 				})
 			} else {
-				this.partList();
+				console.log(this.$store.getters.contractData);
+				if (this.$store.getters.contractData && JSON.stringify(this.$store.getters.contractData) != '{}') {
+					if (this.$store.getters.contractData.projectId != this.$store.getters.project.id) {
+						return this.$store.dispatch('projectBase/changeContractData', {});
+					}
+					this.initForm(this.$store.getters.contractData);
+				} else {
+					this.partList();
+				}
 			}
 		},
+		beforeDestroy() {
+			this.cacheData();
+		},
 		methods: {
+			initForm(data) {
+				this.formData = data;
+				for (let key in this.form) {
+					this.form[key] = data[key];
+				}
+				if (data.tagIds) this.tagIds = data.tagIds.split(',');
+				if (data.data) this.customList = JSON.parse(data.data);
+				this.clauseData = data.clauseList.map((node, index) => {
+					let obj = {
+						id: index + 1,
+						type: node.type,
+						form: node
+					}
+					if (index < 2) {
+						node['isDelete'] = false;
+					} else {
+						node['isDelete'] = true;
+					}
+					return obj;
+				})
+				this.partList();
+				this.documentFileList = {
+					document: data.document ? JSON.parse(data.document) : [],
+					attachment: data.attachment ? JSON.parse(data.attachment) : []
+				}
+			},
 			partList() {
 				getPartList(this.organization.id, this.$store.getters.project.id).then(res => {
 					if (res.state) {
 						this.partData = res.data;
-
 						if (this.form.roleId) {
 							this.returnPartList(this.partData, this.form.roleId);
 							this.partValue = findParentIds(this.partData, this.form.roleId);
@@ -443,6 +482,26 @@
 					area: area.join('、'),
 				}
 			},
+			cacheData() {
+				if (!this.isCache) return;
+				this.$store.dispatch('projectBase/changeContractData', this.setData());
+			},
+			setData() {
+				let selectTemplate = this.$refs.selectTemplate.returnData();
+				let postData = JSON.parse(JSON.stringify(this.form));
+				let houseIds = this.$refs.houseItem.returnHouseId();
+				postData['data'] = JSON.stringify(this.$refs.customData.listData);
+				if (this.$refs.tag.tagIds()) postData['tagIds'] = this.$refs.tag.tagIds();
+				let clauseDataBox = [];
+				for (let i = 0; i < this.clauseData.length; i++) {
+					clauseDataBox.push(this.$refs['clause' + this.clauseData[i].id][0].form)
+				}
+				postData['clauseList'] = clauseDataBox;
+				postData['attachment'] = selectTemplate.attachment;
+				postData['document'] = selectTemplate.document;
+				postData['projectItemTargetRoomIds'] = houseIds.join(',');
+				return postData;
+			},
 			submit() {
 				if (this.stepId === 1) {
 					this.$refs.form.validate((valid) => {
@@ -467,32 +526,25 @@
 						this.setDocumentData();
 					})
 				} else if (this.stepId === 3) {
-					let selectTemplate = this.$refs.selectTemplate.returnData();
-					let postData = JSON.parse(JSON.stringify(this.form));
-					postData['data'] = JSON.stringify(this.$refs.customData.listData);
-					if (this.$refs.tag.tagIds()) postData['tagIds'] = this.$refs.tag.tagIds();
-					postData['clauseList'] = this.clauseDataBox;
-					postData['attachment'] = selectTemplate.attachment;
-					postData['document'] = selectTemplate.document;
-					postData['projectItemTargetRoomIds'] = this.houseIds.join(',');
+					this.loading = true;
+					let postData = this.setData();
 					if (this.detailId) {
 						postData['id'] = this.formData.id;
-						updateContractAll(postData).then(res => {
-							if (res.state) {
-								this.$message.success('操作成功');
-								this.$emit('callback', 'init');
-							}
-						})
+						updateContractAll(postData).then(this.successFunc)
 					} else {
-						insertContract(postData).then(res => {
-							if (res.state) {
-								this.$message.success('操作成功');
-								this.$emit('callback', 'init');
-							}
-						})
+						insertContract(postData).then(this.successFunc)
 					}
 				}
 			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$store.dispatch('projectBase/changeContractData', {});
+					this.isCache = false;
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			},
 			insertClause(type) {
 				this.clauseData.push({
 					id: this.clauseIndex,

+ 4 - 1
virgo.wzfrontend/console/src/components/work/contract/tag/edit.vue

@@ -13,7 +13,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -34,6 +34,7 @@
 					projectId: '',
 					parentId: -1,
 				},
+				loading: false
 			}
 		},
 		created() {
@@ -47,6 +48,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				if (this.isUpdate) {
 					updateTag(this.tagFrom).then(this.successFunc)
 				} else {
@@ -54,6 +56,7 @@
 				}
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 5 - 2
virgo.wzfrontend/console/src/components/work/contract/template/fieldEdit.vue

@@ -26,7 +26,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -51,7 +51,8 @@
 					data: ''
 				},
 				fieldList: [],
-				fieldValue: 1
+				fieldValue: 1,
+				loading: false
 			}
 		},
 		created() {
@@ -74,6 +75,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				if (this.fieldForm.type === 2 || this.fieldForm.type === 4) {
 					this.fieldForm['data'] = JSON.stringify({
 						list: this.$refs.fieldData.listData,
@@ -89,6 +91,7 @@
 				}
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 8 - 3
virgo.wzfrontend/console/src/components/work/contract/template/fieldForm.vue

@@ -25,7 +25,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -44,7 +44,8 @@
 			return {
 				fieldForm: {},
 				list: [],
-				fieldData: {}
+				fieldData: {},
+				loading: false
 			}
 		},
 		created() {
@@ -79,6 +80,7 @@
 				})
 			},
 			submit() {
+				this.loading = true;
 				this.$refs.fieldForm.validate((valid) => {
 					if (valid) {
 						if (this.fieldData.id) {
@@ -94,6 +96,7 @@
 							}).then(this.successFunc)
 						}
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});
@@ -109,12 +112,14 @@
 						documentId: this.documentId,
 						userId: this.$store.getters.user.userId
 					}).then(res => {
+						this.loading = false;
 						if (res.state) {
 							this.$message.success('操作成功');
 							this.$emit('callback', 'init');
 						}
 					})
-
+				} else {
+					this.loading = false;
 				}
 			}
 		}

+ 6 - 2
virgo.wzfrontend/console/src/components/work/crm/agent/edit.vue

@@ -22,7 +22,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -61,7 +61,8 @@
 						trigger: 'blur'
 					}],
 				},
-				responsibility: []
+				responsibility: [],
+				loading: false
 			}
 		},
 		created() {
@@ -81,6 +82,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				this.$refs.agentForm.validate((valid) => {
 					if (valid) {
 						let postData = JSON.parse(JSON.stringify(this.agentForm));
@@ -91,11 +93,13 @@
 							insertAgent(postData).then(this.successFunc);
 						}
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 8 - 2
virgo.wzfrontend/console/src/components/work/crm/customer/edit.vue

@@ -64,7 +64,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -115,7 +115,8 @@
 						trigger: 'blur'
 					}],
 				},
-				isCache: true
+				isCache: true,
+				loading: false
 			}
 		},
 		created() {
@@ -154,6 +155,7 @@
 				return postData;
 			},
 			submit() {
+				this.loading = true;
 				this.$refs.customerForm.validate((valid) => {
 					if (valid) {
 						let postData = this.setData();
@@ -163,13 +165,17 @@
 							insertCustomer(postData).then(this.successFunc);
 						}
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
+					this.$store.dispatch('projectBase/changeCustomerData', {});
+					this.isCache = false;
 					this.$emit('callback', 'init');
 				}
 			}

+ 4 - 1
virgo.wzfrontend/console/src/components/work/device/deviceForm.vue

@@ -53,7 +53,7 @@
 		</div>
 		<div class="hui-drawer-submit">
 			<el-button size="mini" @click="close">取 消</el-button>
-			<el-button size="mini" type="primary" @click="submit">保 存</el-button>
+			<el-button size="mini" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -102,6 +102,7 @@
 					label: 'name',
 					value: 'id'
 				},
+				loading:false
 			}
 		},
 		created() {
@@ -142,6 +143,7 @@
 				this.deviceForm['operateDeviceLevelId'] = this.departId[this.departId.length - 1];
 			},
 			submit() {
+				this.loading = true;
 				this.deviceForm['attachment'] = JSON.stringify(this.$refs.upload.fileList);
 				this.deviceForm['document'] = JSON.stringify(this.$refs.document.fileList);
 				this.deviceForm['projectItemId'] = this.$refs.projectItem.formBox.projectItemId;
@@ -154,6 +156,7 @@
 				}
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback');

+ 147 - 144
virgo.wzfrontend/console/src/components/work/device/eventForm.vue

@@ -1,147 +1,150 @@
-<template>
-	<div class="hui-drawer hui-table-box">
-		<div class="hui-title">
-			<div class="hui-title-label">新增{{typeName}}</div>
-			<div class="hui-title-right">
-				<i class="el-icon-close" title="关闭" @click="close"></i>
-			</div>
-		</div>
-		<div class="hui-table-box-content">
-			<div class="event-form">
-				<el-form :model="eventForm" :rules="eventRuler" tatus-icon label-width="100px" size="medium">
-					<el-form-item label="变更目录" v-if="type ===1">
-						<el-cascader ref="partChange" v-model="departId" :options="departList" :props="defaultProps"
-							@change="changePart"></el-cascader>
-					</el-form-item>
-					<el-form-item :label="typeName + '名称'">
-						<el-input type="text" v-model="eventForm.title"></el-input>
-					</el-form-item>
-					<el-form-item :label="typeName + '描述'">
-						<el-input type="text" v-model="eventForm.remark"></el-input>
-					</el-form-item>
-					<el-form-item label="附件">
-						<upload ref="upload" :list="responsibility" offset="left"></upload>
-					</el-form-item>
-				</el-form>
-			</div>
-		</div>
-		<div class="hui-drawer-submit">
-			<el-button size="mini" @click="close">取 消</el-button>
-			<el-button size="mini" type="primary" @click="submit">保 存</el-button>
-		</div>
-	</div>
-</template>
-
-<script>
-	import {
-		getDevicePartList,
-		insertDeviceEvent,
-		updateDevice
-	} from '@/httpApi/work'
-	import upload from '@/components/common/upload'
-	import {
-		findParent
-	} from '@/uitls'
-	export default {
-		props: ['type', 'deviceId'],
-		data() {
-			return {
-				eventForm: {
-					title: '',
-					content: '',
-					remark: '',
-					attachment: '',
-					type: '',
-					deviceId: ''
-				},
-				eventRuler: {},
-				responsibility: [],
-				departList: [],
-				departId: [],
-				defaultProps: {
-					children: 'children',
-					label: 'name',
-					value: 'id'
-				},
-				typeName: ''
-			}
-		},
-		created() {
-			this.typeName = this.returnName();
-			this.eventForm['type'] = this.type;
-			this.eventForm['deviceId'] = this.deviceId;
-			if (this.type === 1) this.getPartList();
-		},
-		methods: {
-			returnName() {
-				let str = '';
-				switch (this.type) {
-					case 1:
-						str = '变更'
-						break;
-					case 2:
-						str = '折旧'
-						break;
-					case 3:
-						str = '盘点'
-						break;
-					default:
-						break;
-				}
-				return str;
-			},
-			getPartList() {
-				getDevicePartList(this.$store.getters.organization.id, this.$store.getters.project.id).then(res => {
-					if (res.state) {
-						this.departList = res.data;
-						this.returnChildren(this.departList);
-					}
-				})
-			},
-			returnChildren(data) {
-				data.forEach(item => {
-					if (item.children && item.children.length == 0) item.children = null;
-					if (item.children && item.children.length > 0) this.returnChildren(item.children);
-				});
-			},
-			changePart() {
-				this.eventForm['content'] = findParent(this.departList, this.$refs.partChange.getCheckedNodes()[0].data)
-					.map(node => node.name).join('/');
-			},
+<template>
+	<div class="hui-drawer hui-table-box">
+		<div class="hui-title">
+			<div class="hui-title-label">新增{{typeName}}</div>
+			<div class="hui-title-right">
+				<i class="el-icon-close" title="关闭" @click="close"></i>
+			</div>
+		</div>
+		<div class="hui-table-box-content">
+			<div class="event-form">
+				<el-form :model="eventForm" :rules="eventRuler" tatus-icon label-width="100px" size="medium">
+					<el-form-item label="变更目录" v-if="type ===1">
+						<el-cascader ref="partChange" v-model="departId" :options="departList" :props="defaultProps"
+							@change="changePart"></el-cascader>
+					</el-form-item>
+					<el-form-item :label="typeName + '名称'">
+						<el-input type="text" v-model="eventForm.title"></el-input>
+					</el-form-item>
+					<el-form-item :label="typeName + '描述'">
+						<el-input type="text" v-model="eventForm.remark"></el-input>
+					</el-form-item>
+					<el-form-item label="附件">
+						<upload ref="upload" :list="responsibility" offset="left"></upload>
+					</el-form-item>
+				</el-form>
+			</div>
+		</div>
+		<div class="hui-drawer-submit">
+			<el-button size="mini" @click="close">取 消</el-button>
+			<el-button size="mini" type="primary" @click="submit" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		getDevicePartList,
+		insertDeviceEvent,
+		updateDevice
+	} from '@/httpApi/work'
+	import upload from '@/components/common/upload'
+	import {
+		findParent
+	} from '@/uitls'
+	export default {
+		props: ['type', 'deviceId'],
+		data() {
+			return {
+				eventForm: {
+					title: '',
+					content: '',
+					remark: '',
+					attachment: '',
+					type: '',
+					deviceId: ''
+				},
+				eventRuler: {},
+				responsibility: [],
+				departList: [],
+				departId: [],
+				defaultProps: {
+					children: 'children',
+					label: 'name',
+					value: 'id'
+				},
+				typeName: '',
+				loading: false
+			}
+		},
+		created() {
+			this.typeName = this.returnName();
+			this.eventForm['type'] = this.type;
+			this.eventForm['deviceId'] = this.deviceId;
+			if (this.type === 1) this.getPartList();
+		},
+		methods: {
+			returnName() {
+				let str = '';
+				switch (this.type) {
+					case 1:
+						str = '变更'
+						break;
+					case 2:
+						str = '折旧'
+						break;
+					case 3:
+						str = '盘点'
+						break;
+					default:
+						break;
+				}
+				return str;
+			},
+			getPartList() {
+				getDevicePartList(this.$store.getters.organization.id, this.$store.getters.project.id).then(res => {
+					if (res.state) {
+						this.departList = res.data;
+						this.returnChildren(this.departList);
+					}
+				})
+			},
+			returnChildren(data) {
+				data.forEach(item => {
+					if (item.children && item.children.length == 0) item.children = null;
+					if (item.children && item.children.length > 0) this.returnChildren(item.children);
+				});
+			},
+			changePart() {
+				this.eventForm['content'] = findParent(this.departList, this.$refs.partChange.getCheckedNodes()[0].data)
+					.map(node => node.name).join('/');
+			},
 			submit() {
-				this.eventForm['attachment'] = JSON.stringify(this.$refs.upload.fileList);
-				insertDeviceEvent(this.eventForm).then(this.successFunc)
-			},
+				this.loading = true;
+				this.eventForm['attachment'] = JSON.stringify(this.$refs.upload.fileList);
+				insertDeviceEvent(this.eventForm).then(this.successFunc)
+			},
 			successFunc(res) {
-				if (res.state) {
-					this.$message.success('操作成功');
-					if (this.type === 1) {
-						let operateDeviceLevelId = this.departId[this.departId.length - 1];
-						updateDevice({
-							id: this.deviceId,
-							operateDeviceLevelId: operateDeviceLevelId
-						}).then(res => {
-							if (res.state) {
-								this.$emit('callback');
-							}
-						})
-					} else {
-						this.$emit('callback');
-					}
-				}
-			},
-			close() {
-				this.$emit('callback', 'cancel')
-			}
-		},
-		components: {
-			upload
-		},
-	}
-</script>
-
-<style lang="scss">
-	.event-form {
-		padding: 10px;
-	}
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					if (this.type === 1) {
+						let operateDeviceLevelId = this.departId[this.departId.length - 1];
+						updateDevice({
+							id: this.deviceId,
+							operateDeviceLevelId: operateDeviceLevelId
+						}).then(res => {
+							if (res.state) {
+								this.$emit('callback');
+							}
+						})
+					} else {
+						this.$emit('callback');
+					}
+				}
+			},
+			close() {
+				this.$emit('callback', 'cancel')
+			}
+		},
+		components: {
+			upload
+		},
+	}
+</script>
+
+<style lang="scss">
+	.event-form {
+		padding: 10px;
+	}
 </style>

+ 10 - 6
virgo.wzfrontend/console/src/components/work/operation/meeting/edit.vue

@@ -39,7 +39,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -69,7 +69,8 @@
 				meetingPlace: [],
 				meetingType: [],
 				ccList: [],
-				contentList: []
+				contentList: [],
+				loading: false
 			}
 		},
 		created() {
@@ -103,11 +104,12 @@
 				getMeetingPlaceListByQuery(data).then(res => successFunc(res, 'meetingPlace'));
 				getMeetingTypeListByQuery(data).then(res => successFunc(res, 'meetingType'));
 			},
-			submit() {
+			submit() {
+				this.loading = true;
 				this.$refs.form.validate((valid) => {
 					if (valid) {
 						let postData = JSON.parse(JSON.stringify(this.form));
-						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
+						postData['attachment'] = JSON.stringify(this.$refs.upload.fileList);
 						postData['content'] = JSON.stringify(this.$refs.content.listData);
 						if (this.$refs.cc.list.length > 0) postData['joinUserIds'] = this.$refs.cc.list.map(node =>
 							node.id).join(',');
@@ -116,12 +118,14 @@
 						} else {
 							insertMeeting(postData).then(this.successFunc);
 						}
-					} else {
+					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
-			successFunc(res) {
+			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 5 - 2
virgo.wzfrontend/console/src/components/work/order/action.vue

@@ -15,7 +15,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">确 定</el-button>
 		</div>
 	</div>
 </template>
@@ -32,7 +32,8 @@
 				form: {
 					remark: ''
 				},
-				responsibility: []
+				responsibility: [],
+				loading: false
 			}
 		},
 		created() {
@@ -40,6 +41,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				let postData = {
 					id: this.operationId,
 					remark: this.form.remark,
@@ -47,6 +49,7 @@
 					status: 1
 				}
 				putOrderProcess(postData).then(res => {
+					this.loading = false;
 					if (res.state) {
 						this.$message.success('操作成功');
 						this.$emit('callback', 'init');

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

@@ -28,7 +28,7 @@
 					</div>
 					<div class="hui-detail-item">
 						<div class="hui-detail-label">跟进人</div>
-						<div class="hui-detail-value">{{detail.followUpPerson}}</div>
+						<div class="hui-detail-value">{{detail.followUpPersonName}}</div>
 					</div>
 					<div class="hui-detail-item">
 						<div class="hui-detail-label">联系方式</div>

+ 8 - 4
virgo.wzfrontend/console/src/components/work/order/edit.vue

@@ -65,7 +65,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -111,7 +111,8 @@
 				customList: [],
 				workWay: [],
 				contractList: [],
-				followUpPerson: []
+				followUpPerson: [],
+				loading: false
 			}
 		},
 		created() {
@@ -185,7 +186,8 @@
 					}
 				})
 			},
-			submit() {
+			submit(e) {
+				this.loading = true;
 				this.form['userId'] = this.$store.getters.user.userId;
 				this.$refs.form.validate((valid) => {
 					if (valid) {
@@ -199,11 +201,13 @@
 							insertOrder(postData).then(this.successFunc);
 						}
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
-			successFunc(res) {
+			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 5 - 2
virgo.wzfrontend/console/src/components/work/organization/depart/edit.vue

@@ -19,7 +19,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -45,7 +45,8 @@
 				},
 				departmentRuler: {},
 				responsibility: [],
-				ccList: []
+				ccList: [],
+				loading: false
 			}
 		},
 		created() {
@@ -61,6 +62,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				this.departmentForm['responsibility'] = JSON.stringify(this.$refs.upload.fileList);
 				this.departmentForm['responsible'] = JSON.stringify(this.$refs.cc.list);
 				if (this.isUpdate) {
@@ -70,6 +72,7 @@
 				}
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 11 - 5
virgo.wzfrontend/console/src/components/work/organization/seal/edit.vue

@@ -16,7 +16,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -36,7 +36,8 @@
 					name: '',
 					comment: ''
 				},
-				responsibility: [],
+				responsibility: [],
+				loading:false
 			}
 		},
 		created() {
@@ -62,9 +63,13 @@
 			}
 		},
 		methods: {
-			submit() {
+			submit() {
+				this.loading = true;
 				let fileList = this.$refs.upload.fileList;
-				if (fileList.length < 1) this.$message.warning('请上传印章');
+				if (fileList.length < 1) {
+					this.loading = false;
+					this.$message.warning('请上传印章');
+				}
 				this.sealForm['fileNodeId'] = fileList[0].id;
 				if (this.isUpdate) {
 					updateSeal(this.sealForm).then(this.successFunc)
@@ -72,7 +77,8 @@
 					insertSeal(this.sealForm).then(this.successFunc)
 				}
 			},
-			successFunc(res) {
+			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 6 - 2
virgo.wzfrontend/console/src/components/work/organization/user/edit.vue

@@ -23,7 +23,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -72,23 +72,27 @@
 					}],
 				},
 				show: false,
-				alertShow: false
+				alertShow: false,
+				loading: false
 			}
 		},
 		created() {},
 		methods: {
 			submit() {
+				this.loading = true;
 				this.$nextTick(() => {
 					this.$refs.userForm.validate(valid => {
 						if (valid) {
 							insertUser(this.$store.getters.organization.id, this.part.id, this.userForm)
 								.then(res => {
+									this.loading = false;
 									if (res.state) {
 										this.$emit('callback', 'init');
 										this.$message.success('操作成功');
 									}
 								})
 						} else {
+							this.loading = false;
 							return false;
 						}
 					});

+ 5 - 2
virgo.wzfrontend/console/src/components/work/property/departForm.vue

@@ -12,7 +12,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -33,7 +33,8 @@
 					parentId: -1,
 					isp: 0
 				},
-				departmentRuler: {}
+				departmentRuler: {},
+				loading: false
 			}
 		},
 		created() {
@@ -47,6 +48,7 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				if (this.isUpdate) {
 					updateDeviceDepartment(this.departmentForm).then(this.successFunc)
 				} else {
@@ -54,6 +56,7 @@
 				}
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 5 - 1
virgo.wzfrontend/console/src/components/work/space/house/lookRecordEdit.vue

@@ -17,7 +17,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -42,6 +42,7 @@
 					attachment: ''
 				},
 				responsibility: [],
+				loading: false
 			}
 		},
 		created() {
@@ -53,17 +54,20 @@
 		},
 		methods: {
 			submit() {
+				this.loading = true;
 				this.$refs.recordForm.validate((valid) => {
 					if (valid) {
 						let postData = JSON.parse(JSON.stringify(this.recordForm));
 						postData['attachment'] = JSON.stringify(this.$refs.image.fileList);
 						insertLookRecord(postData).then(this.successFunc);
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');

+ 6 - 1
virgo.wzfrontend/console/src/components/work/space/project/edit.vue

@@ -46,7 +46,7 @@
 		</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>
+			<el-button size="medium" type="primary" @click="submit" :loading="loading">保 存</el-button>
 		</div>
 	</div>
 </template>
@@ -82,6 +82,7 @@
 				showMap: false,
 				supportingFacilities: [],
 				isCache: true,
+				loading: false
 			}
 		},
 		created() {
@@ -145,6 +146,7 @@
 				return postData;
 			},
 			submit() {
+				this.loading = true;
 				this.$refs.projectForm.validate((valid) => {
 					if (valid) {
 						let postData = this.setData();
@@ -154,17 +156,20 @@
 							insertProject(postData).then(this.successFunc);
 						}
 					} else {
+						this.loading = false;
 						return false;
 					}
 				});
 			},
 			successFunc(res) {
+				this.loading = false;
 				if (res.state) {
 					this.$store.dispatch('projectBase/changeProjectData', {});
 					this.isCache = false;
 					this.$message.success('操作成功');
 					this.$emit('callback', 'init');
 				}
+
 			}
 		},
 		components: {

+ 110 - 106
virgo.wzfrontend/console/src/components/work/space/set/projectItemForm.vue

@@ -1,107 +1,111 @@
-<template>
-	<div class="hui-flex hui-dialog">
-		<div class="hui-flex-box hui-dialog-content">
-			<el-form ref="projectItemForm" label-position="top" :model="projectItemForm">
-				<el-form-item label="楼宇名称" prop="name" :rules="[{required: true, message: '请输入楼宇名称'}]">
-					<el-input type="text" v-model="projectItemForm.name" placeholder="请输入楼宇名称"></el-input>
-				</el-form-item>
-				<el-form-item label="建筑总面积(m²)" prop="area" :rules="[{required: true, message: '请输入建筑总面积'}]">
-					<el-input type="number" v-model="projectItemForm.area" placeholder="请输入建筑总面积m²"></el-input>
-				</el-form-item>
-				<el-form-item label="具体位置">
-					<el-input type="text" v-model="projectItemForm.address" placeholder="请输入具体位置">
-					</el-input>
-				</el-form-item>
-				<el-form-item label="产权证书/不动产权证号">
-					<el-input type="text" v-model="projectItemForm.propertyCertificateNumber"
-						placeholder="请输入产权证书/不动产权证号">
-					</el-input>
-				</el-form-item>
-				<el-form-item label="楼宇图片" class="hui-textarea">
-					<upload ref="upload" :list="responsibility" type="insert"></upload>
-				</el-form-item>
-				<el-form-item label="楼宇标签" class="hui-textarea">
-					<tag ref="tag" type="insert" :tagType="2"
-						:tagActive="projectItemForm.tagIds ? projectItemForm.tagIds.split(',') : []">
-					</tag>
-				</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 {
-		insertProjectItem,
-		getProjectItemDetailById,
-		updateProjectItem
-	} from '@/httpApi/space'
-	import upload from '@/components/common/upload'
-	import tag from '@/components/common/tag'
-	export default {
-		props: ['isUpdate', 'detailId'],
-		data() {
-			return {
-				projectItemForm: {
-					name: '', //楼宇名称
-					area: '',
-					address: '',
-					propertyCertificateNumber: '',
-					picture: '',
-					tagIds: ''
-				},
-				specific: '',
-				responsibility: []
-			}
-		},
-		created() {
-			this.projectItemForm['projectId'] = this.$store.getters.project.id;
-			if (this.isUpdate) {
-				getProjectItemDetailById(this.detailId).then(res => {
-					if (res.state) {
-						this.projectItemForm = res.data;
-						if (this.projectItemForm.picture) this.responsibility = JSON.parse(this.projectItemForm
-							.picture);
-					}
-				})
-			}
-		},
-		methods: {
-			submit() {
-				this.$refs.projectItemForm.validate((valid) => {
-					if (valid) {
-						let postData = JSON.parse(JSON.stringify(this.projectItemForm));
-						postData.data = JSON.stringify({
-							specific: this.specific
-						});
-						postData['picture'] = JSON.stringify(this.$refs.upload.fileList);
-						postData['tagIds'] = this.$refs.tag.tagIds();
-						if (this.isUpdate) {
-							updateProjectItem(postData).then(this.successFunc);
-						} else {
-							insertProjectItem(postData).then(this.successFunc);
-						}
-					} else {
-						return false;
-					}
-				});
-			},
-			successFunc(res) {
-				if (res.state) {
-					this.$message.success('操作成功');
-					this.$emit('callback', 'init');
-				}
-			}
-		},
-		components: {
-			upload,
-			tag
-		},
-	}
-</script>
-
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="projectItemForm" label-position="top" :model="projectItemForm">
+				<el-form-item label="楼宇名称" prop="name" :rules="[{required: true, message: '请输入楼宇名称'}]">
+					<el-input type="text" v-model="projectItemForm.name" placeholder="请输入楼宇名称"></el-input>
+				</el-form-item>
+				<el-form-item label="建筑总面积(m²)" prop="area" :rules="[{required: true, message: '请输入建筑总面积'}]">
+					<el-input type="number" v-model="projectItemForm.area" placeholder="请输入建筑总面积m²"></el-input>
+				</el-form-item>
+				<el-form-item label="具体位置">
+					<el-input type="text" v-model="projectItemForm.address" placeholder="请输入具体位置">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="产权证书/不动产权证号">
+					<el-input type="text" v-model="projectItemForm.propertyCertificateNumber"
+						placeholder="请输入产权证书/不动产权证号">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="楼宇图片" class="hui-textarea">
+					<upload ref="upload" :list="responsibility" type="insert"></upload>
+				</el-form-item>
+				<el-form-item label="楼宇标签" class="hui-textarea">
+					<tag ref="tag" type="insert" :tagType="2"
+						:tagActive="projectItemForm.tagIds ? projectItemForm.tagIds.split(',') : []">
+					</tag>
+				</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" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		insertProjectItem,
+		getProjectItemDetailById,
+		updateProjectItem
+	} from '@/httpApi/space'
+	import upload from '@/components/common/upload'
+	import tag from '@/components/common/tag'
+	export default {
+		props: ['isUpdate', 'detailId'],
+		data() {
+			return {
+				projectItemForm: {
+					name: '', //楼宇名称
+					area: '',
+					address: '',
+					propertyCertificateNumber: '',
+					picture: '',
+					tagIds: ''
+				},
+				specific: '',
+				responsibility: [],
+				loading: false
+			}
+		},
+		created() {
+			this.projectItemForm['projectId'] = this.$store.getters.project.id;
+			if (this.isUpdate) {
+				getProjectItemDetailById(this.detailId).then(res => {
+					if (res.state) {
+						this.projectItemForm = res.data;
+						if (this.projectItemForm.picture) this.responsibility = JSON.parse(this.projectItemForm
+							.picture);
+					}
+				})
+			}
+		},
+		methods: {
+			submit() {
+				this.loading = true;
+				this.$refs.projectItemForm.validate((valid) => {
+					if (valid) {
+						let postData = JSON.parse(JSON.stringify(this.projectItemForm));
+						postData.data = JSON.stringify({
+							specific: this.specific
+						});
+						postData['picture'] = JSON.stringify(this.$refs.upload.fileList);
+						postData['tagIds'] = this.$refs.tag.tagIds();
+						if (this.isUpdate) {
+							updateProjectItem(postData).then(this.successFunc);
+						} else {
+							insertProjectItem(postData).then(this.successFunc);
+						}
+					} else {
+						this.loading = false;
+						return false;
+					}
+				});
+			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			}
+		},
+		components: {
+			upload,
+			tag
+		},
+	}
+</script>
+
 <style lang="scss"></style>

+ 74 - 72
virgo.wzfrontend/console/src/components/work/space/set/projectItemTargetForm.vue

@@ -1,73 +1,75 @@
-<template>
-	<div class="hui-flex hui-dialog">
-		<div class="hui-flex-box hui-dialog-content">
-			<el-form ref="form" :model="form" label-position="top">
-				<el-form-item label="楼层名称">
-					<el-input type="text" v-model="form.name" placeholder="请输入楼层名称"></el-input>
-				</el-form-item>
-				<el-form-item label="房源数量">
-					<el-input type="number" v-model="form.roomNumber" placeholder="请输入房源数量"></el-input>
-				</el-form-item>
-				<el-form-item label="产权证书/不动产权证号">
-					<el-input type="text" v-model="form.propertyCertificateNumber" placeholder="请输入产权证书/不动产权证号">
-					</el-input>
-				</el-form-item>
-				<el-form-item label="排序">
-					<el-input type="number" v-model="form.sequence" placeholder="请输入排序"></el-input>
-				</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 {
-		insertProjectItemTarget,
-		getProjectItemTargetDetailById,
-		updateProjectItemTarget
-	} from '@/httpApi/space'
-	export default {
-		props: ['isUpdate', 'projectItemId', 'detailId'],
-		data() {
-			return {
-				form: {
-					name: '',
-					sequence: '',
-					roomNumber: '',
-					propertyCertificateNumber: ''
-				}
-			}
-		},
-		created() {
-			this.form['projectId'] = this.$store.getters.project.id;
-			this.form['projectItemId'] = this.projectItemId;
-			if (this.isUpdate) {
-				getProjectItemTargetDetailById(this.detailId).then(res => {
-					if (res.state) this.form = res.data;
-				})
-			}
-		},
-		methods: {
-			submit() {
-				if (this.isUpdate) {
-					updateProjectItemTarget(this.form).then(this.successFunc);
-				} else {
-
-					insertProjectItemTarget(this.form).then(this.successFunc);
-				}
-			},
-			successFunc(res) {
-				if (res.state) {
-					this.$message.success('操作成功');
-					this.$emit('callback', 'init');
-				}
-			}
-		}
-	}
-</script>
-
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="form" :model="form" label-position="top">
+				<el-form-item label="楼层名称">
+					<el-input type="text" v-model="form.name" placeholder="请输入楼层名称"></el-input>
+				</el-form-item>
+				<el-form-item label="房源数量">
+					<el-input type="number" v-model="form.roomNumber" placeholder="请输入房源数量"></el-input>
+				</el-form-item>
+				<el-form-item label="产权证书/不动产权证号">
+					<el-input type="text" v-model="form.propertyCertificateNumber" placeholder="请输入产权证书/不动产权证号">
+					</el-input>
+				</el-form-item>
+				<el-form-item label="排序">
+					<el-input type="number" v-model="form.sequence" placeholder="请输入排序"></el-input>
+				</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" :loading="loading">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		insertProjectItemTarget,
+		getProjectItemTargetDetailById,
+		updateProjectItemTarget
+	} from '@/httpApi/space'
+	export default {
+		props: ['isUpdate', 'projectItemId', 'detailId'],
+		data() {
+			return {
+				form: {
+					name: '',
+					sequence: '',
+					roomNumber: '',
+					propertyCertificateNumber: ''
+				},
+				loading: false
+			}
+		},
+		created() {
+			this.form['projectId'] = this.$store.getters.project.id;
+			this.form['projectItemId'] = this.projectItemId;
+			if (this.isUpdate) {
+				getProjectItemTargetDetailById(this.detailId).then(res => {
+					if (res.state) this.form = res.data;
+				})
+			}
+		},
+		methods: {
+			submit() {
+				this.loading = true;
+				if (this.isUpdate) {
+					updateProjectItemTarget(this.form).then(this.successFunc);
+				} else {
+					insertProjectItemTarget(this.form).then(this.successFunc);
+				}
+			},
+			successFunc(res) {
+				this.loading = false;
+				if (res.state) {
+					this.$message.success('操作成功');
+					this.$emit('callback', 'init');
+				}
+			}
+		}
+	}
+</script>
+
 <style lang="scss"></style>

+ 20 - 10
virgo.wzfrontend/console/src/config/demo1.js

@@ -86,7 +86,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1201',
 		"position": {
 			"x": 36996.09127627318,
 			"y": 63567.76113487003,
@@ -137,7 +138,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1202',
 		"position": {
 			"x": 36996.37901903659,
 			"y": 50931.52053656608,
@@ -188,7 +190,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1203',
 		"position": {
 			"x": 39000,
 			"y": 38896.136235233185,
@@ -249,7 +252,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1204',
 		"position": {
 			"x": 39000,
 			"y": 24623.89962333094,
@@ -315,7 +319,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1205',
 		"position": {
 			"x": 39000,
 			"y": 10503.378123087425,
@@ -376,7 +381,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1206',
 		"position": {
 			"x": 14277.809212661703,
 			"y": 10974.475324874935,
@@ -427,7 +433,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1207',
 		"position": {
 			"x": 14277.058998940402,
 			"y": 25377.087874417703,
@@ -478,7 +485,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1208',
 		"position": {
 			"x": 14277.026862204193,
 			"y": 38658.98888696544,
@@ -529,7 +537,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1209',
 		"position": {
 			"x": 17562.594097650508,
 			"y": 52501.217954382904,
@@ -590,7 +599,8 @@ export default {
 		],
 		"height": 4000,
 		"color": 'rgba(52, 114, 211, 0.6)',
-		"name": "xxxx数据科技有限公司",
+		"name": "xxxx数据科技有限公司",
+		"floorName":'1210',
 		"position": {
 			"x": 17562.898479950043,
 			"y": 63853.4809260422,

+ 11 - 1
virgo.wzfrontend/console/src/httpApi/loginRegister.js

@@ -43,7 +43,17 @@ export function getUserInfo(data) {
 		method: 'get'
 	})
 }
-
+/* 
+ * 获取用户信息
+ * 
+ * 
+ */
+export function getUserInfoById(userId) {
+	return request({
+		url: `/manager/userInfo/${userId}`,
+		method: 'get'
+	})
+}
 /* 
  * 切换组织
  * @param null 

+ 340 - 326
virgo.wzfrontend/console/src/layout/components/topNav.vue

@@ -1,327 +1,341 @@
-<template>
-	<div class="work-layout-title">
-		<div class="work-layout-left">
-			<div class="work-layout-image">
-				<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01"
-					alt="" />
-			</div>
-			<div class="work-layout-label">红链智慧建筑</div>
-			<div class="work-layout-button" @click="$router.push('/')">
-				<i class="iconfont huifont-shouye"></i><span>首页</span>
-			</div>
-			<div class="work-layout-line"></div>
-			<div class="work-layout-project" @click="visible = true">
-				<span>{{projects.name}}</span>
-				<i class="iconfont huifont-xiala-top"></i>
-			</div>
-		</div>
-		<div class="work-layout-right">
-			<div class="work-layout-button" @click="$router.push('/website/home')" style="margin-right: 20px;">
-				<i class="iconfont huifont-shouye"></i><span>公海房源</span>
-			</div>
-			<div :class="'work-layout-type'+($route.path === item.path?' active' : '')" v-for="(item,index) in list"
-				@click="$router.push(item.path)" :key="item.id">
-				<i :class="'iconfont ' + item.icon"></i><span>{{item.name}}</span>
-			</div>
-			<div class="work-layout-badge" @click="$router.push('/message')">
-				<el-badge is-dot>
-					<i class="iconfont huifont-xiaoxi"></i>
-				</el-badge>
-			</div>
-			<el-dropdown @visible-change="value => userDropdown = value" @command="userCommand">
-				<div class="work-layout-user">
-					<div class="work-layout-avatar">
-						<avatar :user="users"></avatar>
-					</div>
-					<i :class="'iconfont huifont-gerenzhongxinxiala'+ (userDropdown ? ' dropdown-icon' : '')"></i>
-				</div>
-				<el-dropdown-menu class="user-dropdown" slot="dropdown">
-					<el-dropdown-item command="user">{{users.name}}</el-dropdown-item>
-					<el-dropdown-item command="detail">个人信息</el-dropdown-item>
-					<el-dropdown-item command="loginout">退出登录</el-dropdown-item>
-				</el-dropdown-menu>
-			</el-dropdown>
-		</div>
-		<el-drawer title="个人信息" class="user-drawer" :modal="false" :visible.sync="drawer" :size="400"
-			:append-to-body="true">
-			<user-detail v-if="drawer"></user-detail>
-		</el-drawer>
-		<el-dialog :close-on-click-modal="false" title="切换项目" :visible.sync="visible" width="900px" :append-to-body="true">
-			<select-project @callback="callback" v-if="visible"></select-project>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import userDetail from './userDetail'
-	import selectProject from './selectProject'
-	import {
-		removeToken
-	} from '@/uitls/auth';
-	import {
-		mapGetters
-	} from 'vuex';
-	import avatar from '@/components/common/avatar'
-	export default {
-		data() {
-			return {
-				projects: {},
-				users: {},
-				userDropdown: false,
-				drawer: false,
-				visible: false,
-				list: [{
-					id: 2,
-					path: '/work/staging/project',
-					name: '项目工作台',
-					icon: 'huifont-xiangmugongzuotai1'
-				}]
-			}
-		},
-		created() {
-			this.init();
-		},
-		methods: {
-			init() {
-				this.projects = this.$store.getters.project;
-				this.users = this.$store.getters.user;
-				this.users['name'] = this.users.userName;
-			},
-			loginout() {
-				this.$confirm('是否要退出登录?', () => {
-					removeToken();
-					window.location.replace(window.location.origin);
-					this.$message.success('退出成功');
-				});
-			},
-			callback() {
-				this.visible = false;
-			},
-			userCommand(command) {
-				switch (command) {
-					case 'detail':
-						this.drawer = true;
-						break;
-					case 'loginout':
-						this.loginout();
-						break;
-					default:
-						break;
-				}
-			}
-		},
-		components: {
-			userDetail,
-			selectProject
-		},
-		watch: {
-			user() {
-				this.init();
-			},
-			project() {
-				this.init();
-			}
-		},
-		computed: {
-			...mapGetters(['user', 'project'])
-		},
-	}
-</script>
-
-<style lang="scss">
-	.work-layout-title {
-		display: flex;
-		height: 52px;
-		position: absolute;
-		left: 0;
-		right: 0;
-		top: 0;
-		justify-content: space-between;
-		background: #1E2430;
-
-		.work-layout-button {
-			background-color: #2b2f3a;
-			width: 82px;
-			height: 36px;
-			border-radius: 4px;
-			display: flex;
-			align-items: center;
-			cursor: pointer;
-			justify-content: center;
-
-			.iconfont {
-				font-size: 23px;
-			}
-
-			span {
-				font-size: 13px;
-				margin-left: 6px;
-			}
-		}
-
-		.work-layout-right {
-			height: 100%;
-			padding-right: 24px;
-			display: flex;
-			align-items: center;
-
-			.work-layout-button {
-				width: 100px;
-			}
-
-			.work-layout-type {
-				display: flex;
-				align-items: center;
-				cursor: pointer;
-				height: 100%;
-				padding: 0 15px;
-
-				.iconfont {
-					font-size: 22px;
-				}
-
-				span {
-					font-size: 13px;
-					margin-left: 2px;
-				}
-			}
-
-			.work-layout-type:hover,
-			.work-layout-type.active {
-				background: $--color-primary;
-				color: #fff;
-			}
-
-			.work-layout-badge {
-				margin-right: 35px;
-				cursor: pointer;
-				margin-left: 20px;
-
-				.iconfont {
-					font-size: 22px;
-				}
-
-				.el-badge__content {
-					border: none;
-				}
-			}
-
-			.work-layout-user {
-				display: flex;
-				align-items: center;
-				cursor: pointer;
-
-				.work-layout-avatar {
-					width: 32px;
-					height: 32px;
-					border-radius: 50%;
-					overflow: hidden;
-					margin-right: 8px;
-				}
-
-				.iconfont {
-					font-size: 14px;
-					color: $--color-common;
-					transition: all 300ms;
-				}
-
-				.dropdown-icon {
-					transform: rotate(180deg);
-				}
-			}
-		}
-
-
-		.work-layout-left {
-			height: 100%;
-			padding-left: 24px;
-			display: flex;
-			align-items: center;
-
-			.work-layout-image {
-				width: 36px;
-				height: 36px;
-				border-radius: 4px;
-				overflow: hidden;
-
-				img {
-					width: 100%;
-					height: 100%;
-				}
-			}
-
-			.work-layout-label {
-				padding-left: 10px;
-				font-size: 18px;
-				font-weight: bold;
-				color: #fff;
-				font-weight: 600;
-				margin-right: 77px;
-			}
-
-
-
-			.work-layout-line {
-				background: #a9a9a9;
-				width: 1px;
-				height: 20px;
-				margin: 0 23px;
-			}
-
-			.work-layout-project {
-				display: flex;
-				align-items: center;
-				color: $--color-common;
-				cursor: pointer;
-
-				span {
-					font-size: 13px;
-					margin-right: 5px;
-				}
-
-				.iconfont {
-					transition: all 300ms;
-				}
-
-				.dropdown-icon {
-					transform: rotate(180deg);
-				}
-			}
-		}
-	}
-
-	.user-dropdown.el-dropdown-menu.el-popper {
-		width: 180px;
-		border-radius: 4px;
-		margin-top: 10px;
-
-		.el-dropdown-menu__item {
-			padding: 8px 40px 8px 16px;
-			margin: 2px 0;
-		}
-
-		.el-dropdown-menu__item:first-child {
-			background: $--color-background-hover;
-
-		}
-	}
-
-	.project-dropdown.el-dropdown-menu.el-popper {
-		border-radius: 4px;
-		margin-top: 17px;
-
-		.el-dropdown-menu__item {
-			padding: 8px 40px 8px 16px;
-			margin: 2px 0;
-		}
-	}
-
-	.user-drawer {
-
-		.el-drawer.ltr,
-		.el-drawer.rtl {
-			top: 52px;
-			height: auto;
-		}
-	}
+<template>
+	<div class="work-layout-title">
+		<div class="work-layout-left">
+			<div class="work-layout-image">
+				<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01"
+					alt="" />
+			</div>
+			<div class="work-layout-label">红链智慧建筑</div>
+			<div class="work-layout-button" @click="$router.push('/')">
+				<i class="iconfont huifont-shouye"></i><span>首页</span>
+			</div>
+			<div class="work-layout-line"></div>
+			<div class="work-layout-project" @click="visible = true">
+				<span>{{projects.name}}</span>
+				<i class="iconfont huifont-xiala-top"></i>
+			</div>
+		</div>
+		<div class="work-layout-right">
+			<div class="work-layout-button" @click="$router.push('/website/home')" style="margin-right: 20px;">
+				<i class="iconfont huifont-shouye"></i><span>公海房源</span>
+			</div>
+			<div :class="'work-layout-type'+($route.path === item.path?' active' : '')" v-for="(item,index) in list"
+				@click="$router.push(item.path)" :key="item.id">
+				<i :class="'iconfont ' + item.icon"></i><span>{{item.name}}</span>
+			</div>
+			<div class="work-layout-badge" @click="$router.push('/message')">
+				<el-badge is-dot>
+					<i class="iconfont huifont-xiaoxi"></i>
+				</el-badge>
+			</div>
+			<el-dropdown @visible-change="value => userDropdown = value" @command="userCommand">
+				<div class="work-layout-user">
+					<div class="work-layout-avatar">
+						<avatar :user="users"></avatar>
+					</div>
+					<i :class="'iconfont huifont-gerenzhongxinxiala'+ (userDropdown ? ' dropdown-icon' : '')"></i>
+				</div>
+				<el-dropdown-menu class="user-dropdown" slot="dropdown">
+					<el-dropdown-item command="user">{{users.name}}</el-dropdown-item>
+					<el-dropdown-item command="detail">个人信息</el-dropdown-item>
+					<el-dropdown-item command="loginout">退出登录</el-dropdown-item>
+				</el-dropdown-menu>
+			</el-dropdown>
+		</div>
+		<el-drawer title="个人信息" class="user-drawer" :modal="false" :visible.sync="drawer" :size="400"
+			:append-to-body="true">
+			<user-detail v-if="drawer"></user-detail>
+		</el-drawer>
+		<el-dialog :close-on-click-modal="false" title="切换项目" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<select-project @callback="callback" v-if="visible"></select-project>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import userDetail from './userDetail'
+	import selectProject from './selectProject'
+	import {
+		removeToken
+	} from '@/uitls/auth';
+	import {
+		getUserInfoById
+	} from '@/httpApi/loginRegister'
+	import {
+		mapGetters
+	} from 'vuex';
+	import avatar from '@/components/common/avatar'
+	export default {
+		data() {
+			return {
+				projects: {},
+				users: {},
+				userDropdown: false,
+				drawer: false,
+				visible: false,
+				list: [{
+					id: 2,
+					path: '/work/staging/project',
+					name: '项目工作台',
+					icon: 'huifont-xiangmugongzuotai1'
+				}]
+			}
+		},
+		created() {
+			this.init();
+			this.initUserInfo();
+		},
+		methods: {
+			init() {
+				this.projects = this.$store.getters.project;
+				this.users = this.$store.getters.user;
+				this.users['name'] = this.users.userName;
+			},
+			initUserInfo() {
+				getUserInfoById(this.$store.getters.user.userId).then(res => {
+					if (res.state) {
+						let userData = this.$store.getters.user;
+						userData['portrait'] = res.data.portrait;
+						this.$store.dispatch('app/changeUser', userData);
+					}
+				});
+			},
+			loginout() {
+				this.$confirm('是否要退出登录?', () => {
+					removeToken();
+					window.location.replace(window.location.origin);
+					this.$message.success('退出成功');
+				});
+			},
+			callback() {
+				this.visible = false;
+			},
+			userCommand(command) {
+				switch (command) {
+					case 'detail':
+						this.drawer = true;
+						break;
+					case 'loginout':
+						this.loginout();
+						break;
+					default:
+						break;
+				}
+			}
+		},
+		components: {
+			userDetail,
+			selectProject
+		},
+		watch: {
+			user() {
+				this.init();
+			},
+			project() {
+				this.init();
+			}
+		},
+		computed: {
+			...mapGetters(['user', 'project'])
+		},
+	}
+</script>
+
+<style lang="scss">
+	.work-layout-title {
+		display: flex;
+		height: 52px;
+		position: absolute;
+		left: 0;
+		right: 0;
+		top: 0;
+		justify-content: space-between;
+		background: #1E2430;
+
+		.work-layout-button {
+			background-color: #2b2f3a;
+			width: 82px;
+			height: 36px;
+			border-radius: 4px;
+			display: flex;
+			align-items: center;
+			cursor: pointer;
+			justify-content: center;
+
+			.iconfont {
+				font-size: 23px;
+			}
+
+			span {
+				font-size: 13px;
+				margin-left: 6px;
+			}
+		}
+
+		.work-layout-right {
+			height: 100%;
+			padding-right: 24px;
+			display: flex;
+			align-items: center;
+
+			.work-layout-button {
+				width: 100px;
+			}
+
+			.work-layout-type {
+				display: flex;
+				align-items: center;
+				cursor: pointer;
+				height: 100%;
+				padding: 0 15px;
+
+				.iconfont {
+					font-size: 22px;
+				}
+
+				span {
+					font-size: 13px;
+					margin-left: 2px;
+				}
+			}
+
+			.work-layout-type:hover,
+			.work-layout-type.active {
+				background: $--color-primary;
+				color: #fff;
+			}
+
+			.work-layout-badge {
+				margin-right: 35px;
+				cursor: pointer;
+				margin-left: 20px;
+
+				.iconfont {
+					font-size: 22px;
+				}
+
+				.el-badge__content {
+					border: none;
+				}
+			}
+
+			.work-layout-user {
+				display: flex;
+				align-items: center;
+				cursor: pointer;
+
+				.work-layout-avatar {
+					width: 32px;
+					height: 32px;
+					border-radius: 50%;
+					overflow: hidden;
+					margin-right: 8px;
+				}
+
+				.iconfont {
+					font-size: 14px;
+					color: $--color-common;
+					transition: all 300ms;
+				}
+
+				.dropdown-icon {
+					transform: rotate(180deg);
+				}
+			}
+		}
+
+
+		.work-layout-left {
+			height: 100%;
+			padding-left: 24px;
+			display: flex;
+			align-items: center;
+
+			.work-layout-image {
+				width: 36px;
+				height: 36px;
+				border-radius: 4px;
+				overflow: hidden;
+
+				img {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.work-layout-label {
+				padding-left: 10px;
+				font-size: 18px;
+				font-weight: bold;
+				color: #fff;
+				font-weight: 600;
+				margin-right: 77px;
+			}
+
+
+
+			.work-layout-line {
+				background: #a9a9a9;
+				width: 1px;
+				height: 20px;
+				margin: 0 23px;
+			}
+
+			.work-layout-project {
+				display: flex;
+				align-items: center;
+				color: $--color-common;
+				cursor: pointer;
+
+				span {
+					font-size: 13px;
+					margin-right: 5px;
+				}
+
+				.iconfont {
+					transition: all 300ms;
+				}
+
+				.dropdown-icon {
+					transform: rotate(180deg);
+				}
+			}
+		}
+	}
+
+	.user-dropdown.el-dropdown-menu.el-popper {
+		width: 180px;
+		border-radius: 4px;
+		margin-top: 10px;
+
+		.el-dropdown-menu__item {
+			padding: 8px 40px 8px 16px;
+			margin: 2px 0;
+		}
+
+		.el-dropdown-menu__item:first-child {
+			background: $--color-background-hover;
+
+		}
+	}
+
+	.project-dropdown.el-dropdown-menu.el-popper {
+		border-radius: 4px;
+		margin-top: 17px;
+
+		.el-dropdown-menu__item {
+			padding: 8px 40px 8px 16px;
+			margin: 2px 0;
+		}
+	}
+
+	.user-drawer {
+
+		.el-drawer.ltr,
+		.el-drawer.rtl {
+			top: 52px;
+			height: auto;
+		}
+	}
 </style>

+ 133 - 134
virgo.wzfrontend/console/src/layout/components/userDetail.vue

@@ -1,135 +1,134 @@
-<template>
-	<div class="hui-flex">
-		<div class="hui-flex-box">
-			<div class="user-info">
-				<div class="user-info-avatar">
-					<div class="user-info-img">
-						<avatar :user="user"></avatar>
-					</div>
-					<div class="user-info-text">
-						<div class="user-info-name">{{user.name}}</div>
-						<div class="user-info-sub">项目经理</div>
-					</div>
-				</div>
-				<el-tabs v-model="activeName">
-					<el-tab-pane label="基本信息" name="first"></el-tab-pane>
-				</el-tabs>
-				<div class="user-info-list" v-if="activeName === 'first'">
-					<div class="user-info-item">
-						<div class="user-info-label">姓名</div>
-						<div class="user-info-value">{{user.name}}</div>
-					</div>
-					<div class="user-info-item">
-						<div class="user-info-label">性别</div>
-						<div class="user-info-value">{{user.sex == 'M'?'男':'女'}}</div>
-					</div>
-					<div class="user-info-item">
-						<div class="user-info-label">手机号</div>
-						<div class="user-info-value">{{user.phone}}</div>
-					</div>
-					<div class="user-info-item">
-						<div class="user-info-label">邮箱</div>
-						<div class="user-info-value">{{user.email}}</div>
-					</div>
-				</div>
-			</div>
-		</div>
-		<div class="hui-drawer-submit">
-			<el-button size="medium" type="primary" @click="visible = true">编辑基本信息</el-button>
-		</div>
-		<el-dialog :close-on-click-modal="false" title="编辑基本信息" :visible.sync="visible" width="900px" :append-to-body="true">
-			<user-update v-if="visible" :user="user" @callback="callback"></user-update>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import {
-		getOperationUserInfo,
-		getUserInfo
-	} from '@/httpApi/loginRegister'
-	import avatar from '@/components/common/avatar'
-	import userUpdate from './userUpdate'
-	export default {
-		data() {
-			return {
-				activeName: 'first',
-				user: {
-					operateUserInfo: {}
-				},
-				visible: false
-			}
-		},
-		created() {
-			this.init();
-		},
-		methods: {
-			init() {
-				getUserInfo().then(res => {
-					if (res.state) {
-						this.user = res.data;
-						console.log(this.user);
-						if (!this.user.operateUserInfo) this.user['operateUserInfo'] = {};
-						this.$store.dispatch('app/changeUser', this.user);
-					}
-				});
-			},
-			callback(type) {
-				this.visible = false;
-				if (type === 'init') this.init();
-			}
-		},
-		components: {
-			avatar,
-			userUpdate
-		},
-	}
-</script>
-
-<style lang="scss">
-	.user-info {
-		height: 100%;
-		width: 100%;
-		display: flex;
-		flex-direction: column;
-		padding: 20px;
-
-		.user-info-list {
-			flex: 1;
-			height: 0;
-			overflow-y: auto;
-
-			.user-info-item {
-				margin-bottom: 20px;
-
-				.user-info-label {
-					font-size: 12px;
-					opacity: 0.6;
-					margin-bottom: 5px;
-				}
-			}
-		}
-
-		.user-info-avatar {
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-
-			.user-info-img {
-				width: 45px;
-				height: 45px;
-				overflow: hidden;
-				border-radius: 50%;
-				margin-right: 16px;
-			}
-
-			.user-info-text {
-				.user-info-sub {
-					font-size: 12px;
-					opacity: 0.6;
-					margin-top: 5px;
-				}
-			}
-		}
-	}
+<template>
+	<div class="hui-flex">
+		<div class="hui-flex-box">
+			<div class="user-info">
+				<div class="user-info-avatar">
+					<div class="user-info-img">
+						<avatar :user="user"></avatar>
+					</div>
+					<div class="user-info-text">
+						<div class="user-info-name">{{user.name}}</div>
+						<div class="user-info-sub">项目经理</div>
+					</div>
+				</div>
+				<el-tabs v-model="activeName">
+					<el-tab-pane label="基本信息" name="first"></el-tab-pane>
+				</el-tabs>
+				<div class="user-info-list" v-if="activeName === 'first'">
+					<div class="user-info-item">
+						<div class="user-info-label">姓名</div>
+						<div class="user-info-value">{{user.name}}</div>
+					</div>
+					<div class="user-info-item">
+						<div class="user-info-label">性别</div>
+						<div class="user-info-value">{{user.sex == 'M'?'男':'女'}}</div>
+					</div>
+					<div class="user-info-item">
+						<div class="user-info-label">手机号</div>
+						<div class="user-info-value">{{user.phone}}</div>
+					</div>
+					<div class="user-info-item">
+						<div class="user-info-label">邮箱</div>
+						<div class="user-info-value">{{user.email}}</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div class="hui-drawer-submit">
+			<el-button size="medium" type="primary" @click="visible = true">编辑基本信息</el-button>
+		</div>
+		<el-dialog :close-on-click-modal="false" title="编辑基本信息" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<user-update v-if="visible" :user="user" @callback="callback"></user-update>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import {
+		getUserInfo
+	} from '@/httpApi/loginRegister'
+	import avatar from '@/components/common/avatar'
+	import userUpdate from './userUpdate'
+	export default {
+		data() {
+			return {
+				activeName: 'first',
+				user: {
+					operateUserInfo: {}
+				},
+				visible: false
+			}
+		},
+		created() {
+			this.init();
+		},
+		methods: {
+			init() {
+				getUserInfo().then(res => {
+					if (res.state) {
+						this.user = res.data;
+						if (!this.user.operateUserInfo) this.user['operateUserInfo'] = {};
+						this.$store.dispatch('app/changeUser', this.user);
+					}
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			avatar,
+			userUpdate
+		},
+	}
+</script>
+
+<style lang="scss">
+	.user-info {
+		height: 100%;
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+		padding: 20px;
+
+		.user-info-list {
+			flex: 1;
+			height: 0;
+			overflow-y: auto;
+
+			.user-info-item {
+				margin-bottom: 20px;
+
+				.user-info-label {
+					font-size: 12px;
+					opacity: 0.6;
+					margin-bottom: 5px;
+				}
+			}
+		}
+
+		.user-info-avatar {
+			display: flex;
+			align-items: center;
+			margin-bottom: 20px;
+
+			.user-info-img {
+				width: 45px;
+				height: 45px;
+				overflow: hidden;
+				border-radius: 50%;
+				margin-right: 16px;
+			}
+
+			.user-info-text {
+				.user-info-sub {
+					font-size: 12px;
+					opacity: 0.6;
+					margin-top: 5px;
+				}
+			}
+		}
+	}
 </style>

+ 1 - 0
virgo.wzfrontend/console/src/store/getters.js

@@ -10,6 +10,7 @@ const getters = {
 	houseData: state => state.projectBase.houseData, //房源缓存
 	projectData: state => state.projectBase.projectData, //项目缓存
 	customerData: state => state.projectBase.customerData, //客户缓存
+	contractData: state => state.projectBase.contractData, //合同缓存
 	city: state => state.app.city, //当前位置
 	event: state => state.app.event, //事件
 }

+ 10 - 1
virgo.wzfrontend/console/src/store/modules/projectBase.js

@@ -6,7 +6,8 @@ const state = {
 	project: {},
 	houseData: {},
 	projectData: {},
-	customerData: {}
+	customerData: {},
+	contractData:{}
 }
 
 const mutations = {
@@ -21,6 +22,9 @@ const mutations = {
 	},
 	CHANGE_CUSTOMER_DATA: (state, customerData) => {
 		state.customerData = customerData;
+	},
+	CHANGE_CONTRACT_DATA: (state, contractData) => {
+		state.contractData = contractData;
 	}
 }
 
@@ -44,6 +48,11 @@ const actions = {
 		commit,
 	}, customerData) {
 		commit('CHANGE_CUSTOMER_DATA', customerData);
+	},
+	changeContractData({
+		commit,
+	}, contractData) {
+		commit('CHANGE_CONTRACT_DATA', contractData);
 	}
 }
 

+ 14 - 2
virgo.wzfrontend/console/src/views/website/home.vue

@@ -14,7 +14,7 @@
 			</div>
 			<div class="high-seas">
 				<div class="title">公海房源</div>
-				<house-list type="highseas"></house-list>
+				<house-list type="highseas" :key="reloadKey"></house-list>
 			</div>
 		</div>
 		<house-foot type="all"></house-foot>
@@ -24,14 +24,26 @@
 <script>
 	import houseList from "@/components/website/houseList.vue"
 	import houseFoot from "@/components/website/houseFoot.vue"
+	import {
+		mapGetters
+	} from 'vuex';
 	export default {
 		data() {
 			return {
-				value: ''
+				value: '',
+				reloadKey: false
 			}
 		},
 		created() {
 
+		},
+		computed: {
+			...mapGetters(['city'])
+		},
+		watch: {
+			city() {
+				this.reloadKey = !this.reloadKey;
+			}
 		},
 		components: {
 			houseList,

+ 1 - 1
virgo.wzfrontend/console/src/views/work/bill/routine/client.vue

@@ -61,7 +61,7 @@
 			</div>
 		</div>
 		<el-drawer title="账单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<detail v-if="drawer" :detailId="detailId" @reload="init"></detail>
+			<detail v-if="drawer" :detailId="detailId" @reload="init" :showType="2"></detail>
 		</el-drawer>
 	</div>
 </template>

+ 1 - 1
virgo.wzfrontend/console/src/views/work/bill/routine/organization.vue

@@ -61,7 +61,7 @@
 			</div>
 		</div>
 		<el-drawer title="账单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<detail v-if="drawer" :detailId="detailId" @reload="init"></detail>
+			<detail v-if="drawer" :detailId="detailId" @reload="init" :showType="2"></detail>
 		</el-drawer>
 	</div>
 </template>

+ 1 - 1
virgo.wzfrontend/console/src/views/work/bill/routine/payment.vue

@@ -79,7 +79,7 @@
 			<edit v-if="visible" @callback="callback" :isUpdate="isUpdate" :detailId="detailId"></edit>
 		</el-dialog>
 		<el-drawer title="账单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<detail v-if="drawer" :detailId="detailId" @reload="init"></detail>
+			<detail v-if="drawer" :detailId="detailId" @reload="init" :showType="1"></detail>
 		</el-drawer>
 	</div>
 </template>

+ 2 - 2
virgo.wzfrontend/console/src/views/work/order/clear.vue

@@ -21,7 +21,7 @@
 							<template slot-scope="scope">
 								<div class="hui-ellipsis">
 									<span v-for="(item,index) in scope.row.roomMap">
-										{{item}}、
+										<span>{{item}}</span><span v-if="index<scope.row.roomMap.length-1"></span>
 									</span>
 								</div>
 							</template>
@@ -31,7 +31,7 @@
 								{{scope.row.tenantType === 1 ? scope.row.merchantName: scope.row.clientName}}
 							</template>
 						</el-table-column>
-						<el-table-column label="跟进人" prop="followUpPerson"></el-table-column>
+						<el-table-column label="跟进人" prop="followUpPersonName"></el-table-column>
 						<el-table-column label="服务方式">
 							<template slot-scope="scope">
 								<span>{{$field.findTypeName('clearWorkWay',scope.row.workWay)}}</span>

+ 2 - 2
virgo.wzfrontend/console/src/views/work/order/operation.vue

@@ -21,12 +21,12 @@
 							<template slot-scope="scope">
 								<div class="hui-ellipsis">
 									<span v-for="(item,index) in scope.row.roomMap">
-										{{item}}、
+										<span>{{item}}</span><span v-if="index<scope.row.roomMap.length-1"></span>
 									</span>
 								</div>
 							</template>
 						</el-table-column>
-						<el-table-column label="跟进人" prop="followUpPerson"></el-table-column>
+						<el-table-column label="跟进人" prop="followUpPersonName"></el-table-column>
 						<el-table-column label="合同代码" prop="contractCode"></el-table-column>
 						<el-table-column label="状态">
 							<template slot-scope="scope">

+ 182 - 181
virgo.wzfrontend/console/src/views/work/order/service.vue

@@ -1,182 +1,183 @@
-<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="order" @filter="filterInit"></list-filter>
-				<div class="hui-content-insert">
-					<el-button type="primary" size="medium" @click="insert">新增工单</el-button>
-				</div>
-				<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="name"></el-table-column>
-						<el-table-column label="楼宇房号" prop="projectItemTargetRoomIds">
-							<template slot-scope="scope">
-								<div class="hui-ellipsis">
-									<span v-for="(item,index) in scope.row.roomMap">
-										{{item}}、
-									</span>
-								</div>
-							</template>
-						</el-table-column>
-						<el-table-column label="关联租客" prop="name">
-							<template slot-scope="scope">
-								{{scope.row.tenantType === 1 ? scope.row.merchantName: scope.row.clientName}}
-							</template>
-						</el-table-column>
-						<el-table-column label="跟进人" prop="followUpPerson"></el-table-column>
-						<el-table-column label="服务方式">
-							<template slot-scope="scope">
-								<span>{{$field.findTypeName('serviceWorkWay',scope.row.workWay)}}</span>
-							</template>
-						</el-table-column>
-						<el-table-column label="状态">
-							<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" v-else-if="scope.row.status === 1">待处理</div>
-									<div class="hui-tag hui-tag-warning" v-else-if="scope.row.status === 2">处理中</div>
-									<div class="hui-tag hui-tag-success" v-else>已处理</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" v-if="!scope.row.status"
-										@click="updateItem(scope.row)">
-										编辑
-									</span>
-									<span class="table-operation" v-if="!scope.row.status"
-										@click="deleteItem(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-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px" :append-to-body="true">
-			<edit v-if="visible" @callback="callback" :isUpdate="isUpdate" :detailId="detailId" :type="type"></edit>
-		</el-dialog>
-		<el-drawer title="工单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<detail v-if="drawer" :detailId="detailId" @callback="callback"></detail>
-		</el-drawer>
-	</div>
-</template>
-
-<script>
-	import edit from '@/components/work/order/edit'
-	import detail from '@/components/work/order/detail'
-	import listFilter from '@/components/common/listFilter'
-
-	import {
-		getOrderPageListByQuery,
-		deleteOrder
-	} from '@/httpApi/order'
-	export default {
-		data() {
-			return {
-				tableData: [],
-				currPage: 1,
-				pageSize: 10,
-				totalCount: 0,
-				detailId: '',
-				filterOption: {},
-				isUpdate: false,
-				visible: false,
-				type: 1,
-				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,
-					type: this.type
-				}
-				postData = Object.assign(postData, this.filterOption);
-				getOrderPageListByQuery(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();
-			},
-			insert() {
-				this.detailId = '';
-				this.isUpdate = false;
-				this.visible = true;
-			},
-			currentChange(currPage) {
-				this.currPage = currPage;
-				this.init();
-			},
-			detailItem(item) {
-				this.detailId = item.id;
-				this.drawer = true;
-			},
-			updateItem(item) {
-				this.detailId = item.id;
-				this.isUpdate = true;
-				this.visible = true;
-			},
-			deleteItem(item) {
-				this.$confirm('确定要删除该工单?', () => {
-					deleteOrder(item.id).then(res => {
-						if (res.state) {
-							this.$message({
-								type: 'success',
-								message: '操作成功'
-							})
-							this.init();
-						}
-					})
-				});
-			},
-			callback(type) {
-				if (type === 'init') this.init();
-				this.visible = false;
-			}
-		},
-		components: {
-			edit,
-			detail,
-			listFilter
-		},
-	}
-</script>
-
-<style>
+<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="order" @filter="filterInit"></list-filter>
+				<div class="hui-content-insert">
+					<el-button type="primary" size="medium" @click="insert">新增工单</el-button>
+				</div>
+				<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="name"></el-table-column>
+						<el-table-column label="楼宇房号" prop="projectItemTargetRoomIds">
+							<template slot-scope="scope">
+								<div class="hui-ellipsis">
+									<span v-for="(item,index) in scope.row.roomMap">
+										<span>{{item}}</span><span v-if="index<scope.row.roomMap.length-1">、</span>
+									</span>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column label="关联租客" prop="name">
+							<template slot-scope="scope">
+								{{scope.row.tenantType === 1 ? scope.row.merchantName: scope.row.clientName}}
+							</template>
+						</el-table-column>
+						<el-table-column label="跟进人" prop="followUpPersonName"></el-table-column>
+						<el-table-column label="服务方式">
+							<template slot-scope="scope">
+								<span>{{$field.findTypeName('serviceWorkWay',scope.row.workWay)}}</span>
+							</template>
+						</el-table-column>
+						<el-table-column label="状态">
+							<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" v-else-if="scope.row.status === 1">待处理</div>
+									<div class="hui-tag hui-tag-warning" v-else-if="scope.row.status === 2">处理中</div>
+									<div class="hui-tag hui-tag-success" v-else>已处理</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" v-if="!scope.row.status"
+										@click="updateItem(scope.row)">
+										编辑
+									</span>
+									<span class="table-operation" v-if="!scope.row.status"
+										@click="deleteItem(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-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<edit v-if="visible" @callback="callback" :isUpdate="isUpdate" :detailId="detailId" :type="type"></edit>
+		</el-dialog>
+		<el-drawer title="工单详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :detailId="detailId" @callback="callback"></detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	import edit from '@/components/work/order/edit'
+	import detail from '@/components/work/order/detail'
+	import listFilter from '@/components/common/listFilter'
+
+	import {
+		getOrderPageListByQuery,
+		deleteOrder
+	} from '@/httpApi/order'
+	export default {
+		data() {
+			return {
+				tableData: [],
+				currPage: 1,
+				pageSize: 10,
+				totalCount: 0,
+				detailId: '',
+				filterOption: {},
+				isUpdate: false,
+				visible: false,
+				type: 1,
+				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,
+					type: this.type
+				}
+				postData = Object.assign(postData, this.filterOption);
+				getOrderPageListByQuery(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();
+			},
+			insert() {
+				this.detailId = '';
+				this.isUpdate = false;
+				this.visible = true;
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			detailItem(item) {
+				this.detailId = item.id;
+				this.drawer = true;
+			},
+			updateItem(item) {
+				this.detailId = item.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			deleteItem(item) {
+				this.$confirm('确定要删除该工单?', () => {
+					deleteOrder(item.id).then(res => {
+						if (res.state) {
+							this.$message({
+								type: 'success',
+								message: '操作成功'
+							})
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				if (type === 'init') this.init();
+				this.visible = false;
+			}
+		},
+		components: {
+			edit,
+			detail,
+			listFilter
+		},
+	}
+</script>
+
+<style>
 </style>

+ 454 - 451
virgo.wzfrontend/console/src/views/work/space/set.vue

@@ -1,452 +1,455 @@
-<template>
-	<div class="space-index">
-		<div class="space-null" v-if="projectItemList.length ==0">
-			<img :src="nullImage" alt="" />
-			<div class="space-null-text">您还未添加楼宇信息,可新增楼宇,开启您的空间设置吧!</div>
-			<div class="flow-button">
-				<el-button size="medium" type="primary" @click="insert('projectItem')">
-					<i class="iconfont huifont-xinzeng"></i>新增楼宇
-				</el-button>
-			</div>
-		</div>
-		<div class="space-content" v-else>
-			<div class="space-content-item">
-				<div class="space-title">
-					<div class="space-title-label">楼宇</div>
-					<el-button size="medium" type="primary" @click="insert('projectItem')">
-						<i class="iconfont huifont-xinzeng"></i>新增
-					</el-button>
-				</div>
-				<div class="space-content-box">
-					<div class="space-room-list">
-						<el-row :gutter="10">
-							<el-col :span="12" v-for="item in projectItemList" :key="item.id">
-								<div :class="projectItem.id === item.id?'space-room-item active' : 'space-room-item'"
-									@click="selectTarget(item)">
-									<div class="space-room-image">
-										<img :src="returnImage(item)" alt="" />
-									</div>
-									<div class="space-room-text">
-										<div class="space-room-label">{{item.name}}</div>
-										<div class="space-room-sub">{{item.remark}}</div>
-									</div>
-									<div class="space-room-icon">
-										<el-dropdown trigger="click"
-											@command="command=>commandFunc(command,item,'projectItem')">
-											<div class="target-item-icon">
-												<i class="iconfont huifont-jinhangzhong"></i>
-											</div>
-											<el-dropdown-menu slot="dropdown">
-												<el-dropdown-item command="detail">详情</el-dropdown-item>
-												<el-dropdown-item command="update">编辑</el-dropdown-item>
-												<el-dropdown-item command="delete">删除</el-dropdown-item>
-											</el-dropdown-menu>
-										</el-dropdown>
-									</div>
-								</div>
-							</el-col>
-						</el-row>
-					</div>
-				</div>
-			</div>
-			<div class="space-line"></div>
-			<div class="space-content-item">
-				<div class="space-title">
-					<div class="space-title-label">楼层</div>
-					<el-button size="medium" type="primary" @click="insert('projectItemTarget')">
-						<i class="iconfont huifont-xinzeng"></i>新增
-					</el-button>
-				</div>
-				<div class="space-content-box">
-					<div class="space-undefined" v-if="projectItemTargetList.length === 0">
-						<img :src="undefinedImage" alt="" />
-						<div class="space-undefined-text">暂无数据</div>
-					</div>
-					<el-row class="project-item-traget" :gutter="10" v-else>
-						<el-col :span="8" v-for="(target,index) in projectItemTargetList" :key="target.id">
-							<div class="target-item">
-								<div class="target-item-num">
-									<i class="iconfont huifont-louceng"></i>
-								</div>
-								<div class="target-item-label">{{target.name}}</div>
-								<el-dropdown trigger="click"
-									@command="command=>commandFunc(command,target,'projectItemTarget')">
-									<div class="target-item-icon">
-										<i class="iconfont huifont-jinhangzhong"></i>
-									</div>
-									<el-dropdown-menu slot="dropdown">
-										<el-dropdown-item command="update">编辑</el-dropdown-item>
-										<el-dropdown-item command="delete">删除</el-dropdown-item>
-									</el-dropdown-menu>
-								</el-dropdown>
-							</div>
-						</el-col>
-					</el-row>
-				</div>
-			</div>
-		</div>
-		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px" :append-to-body="true">
-			<project-item-form v-if="visible && type === 'projectItem'" @callback="callback" :isUpdate="isUpdate"
-				:detailId="itemId">
-			</project-item-form>
-			<project-item-target-form v-if="visible && type === 'projectItemTarget'" @callback="callback"
-				:isUpdate="isUpdate" :detailId="itemId" :projectItemId="projectItem.id">
-			</project-item-target-form>
-		</el-dialog>
-		<el-drawer title="楼宇详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<project-item-detail v-if="drawer" :detailId="itemId"></project-item-detail>
-		</el-drawer>
-	</div>
-</template>
-
-<script>
-	import {
-		getProjectDetailById,
-		getProjectItemList,
-		deleteProjectItemById,
-		deleteProjectItemTarget,
-		deleteRoom
-	} from '@/httpApi/space';
-	import projectItemForm from '@/components/work/space/set/projectItemForm'
-	import projectItemDetail from '@/components/work/space/set/projectItemDetail'
-	import projectItemTargetForm from '@/components/work/space/set/projectItemTargetForm'
-	export default {
-		data() {
-			return {
-				nullImage: require('../../../assets/image/common/dataNull.png'),
-				undefinedImage: require('../../../assets/image/common/dataUndefined.png'),
-				projectItemList: [],
-				projectItemTargetList: [],
-				visible: false,
-				itemId: '',
-				isUpdate: false,
-				projectItem: {},
-				projectItemTarget: {},
-				drawer: false
-			}
-		},
-		created() {
-			this.getProjectItemList();
-		},
-		methods: {
-			getProjectItemList() {
-				getProjectDetailById(this.$store.getters.project.id).then(res => {
-					if (res.state) {
-						this.projectItemList = res.data.projectItemList || [];
-						if (this.projectItemList.length === 0) return;
-						if (this.projectItem.id) {
-							let item = this.projectItemList.filter(node => node.id === this.projectItem.id);
-							if (item.length === 0) return this.selectTarget(this.projectItemList[0]);
-							this.selectTarget(item[0]);
-						} else {
-							this.selectTarget(this.projectItemList[0]);
-						}
-					}
-				})
-			},
-			insert(type, projectItemId) {
-				this.type = type;
-				this.isUpdate = false;
-				this.visible = true;
-			},
-			selectTarget(item) {
-				this.projectItem = item;
-				this.projectItemTargetList = item.projectItemTargetList;
-			},
-			commandFunc(operationType, item, type) {
-				this.type = type;
-				this.itemId = item.id;
-				this[operationType]();
-			},
-			update() {
-				this.isUpdate = true;
-				this.visible = true;
-			},
-			detail() {
-				this.drawer = true;
-			},
-			delete() {
-				if (this.type === 'projectItem') {
-					this.$confirm('确定要删除该楼宇?', () => {
-						deleteProjectItemById(this.itemId).then(this.successFunc);
-					});
-				}
-				if (this.type === 'projectItemTarget') {
-					this.$confirm('确定要删除该楼层?', () => {
-						deleteProjectItemTarget(this.itemId).then(this.successFunc);
-					});
-				}
-			},
-			successFunc(res) {
-				if (res.state) {
-					this.getProjectItemList();
-					this.$message.success('操作成功');
-				}
-			},
-			returnImage(item) {
-				let imgUrl = 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/1da893e7d4264dc68ef43e00d5a708e9'
-				if (item.picture) {
-					let picture = JSON.parse(item.picture);
-					if (picture.length > 0) imgUrl = picture[0].url;
-				}
-				return imgUrl;
-			},
-			callback(type) {
-				this.visible = false;
-				if (type === 'init') this.getProjectItemList();
-			}
-		},
-		components: {
-			projectItemForm,
-			projectItemDetail,
-			projectItemTargetForm,
-		},
-	}
-</script>
-
-<style lang="scss">
-	.space-index {
-		width: 100%;
-		height: 100%;
-
-		.space-null {
-			width: 100%;
-			height: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-
-			img {
-				width: 420px;
-			}
-
-			.space-null-text {
-				padding: 30px 0 20px 0;
-			}
-
-			.el-button {
-				padding-left: 12px;
-
-				span {
-					display: flex;
-					align-items: center;
-				}
-
-				.huifont-xinzeng {
-					padding-right: 10px;
-				}
-			}
-		}
-
-		.space-undefined {
-			width: 100%;
-			height: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-
-			img {
-				width: 160px;
-			}
-
-			.space-undefined-text {
-				margin-top: 20px;
-				opacity: 0.6;
-			}
-		}
-
-		.space-content {
-			width: 100%;
-			height: 100%;
-			display: flex;
-
-			.space-title {
-				display: flex;
-				justify-content: space-between;
-				padding: 15px 20px;
-				align-items: center;
-
-				.space-title-label {
-					font-size: 16px;
-				}
-
-				.el-button {
-					padding: 8px 16px;
-				}
-			}
-
-			.space-line {
-				background: $--background;
-				width: 12px;
-				height: 100%;
-			}
-
-			.space-content-box {
-				flex: 1;
-				padding: 0 20px 15px 20px;
-				height: 0;
-				overflow-y: auto;
-
-				.space-project-item {
-					background: #242a36;
-					margin-bottom: 20px;
-					border-radius: 2px;
-				}
-			}
-
-			.space-content-item {
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-			}
-
-			.project-item-title {
-				height: 56px;
-				display: flex;
-				justify-content: space-between;
-				padding: 0 20px;
-				align-items: center;
-				border-bottom: 1px solid $--color-border;
-			}
-
-			.project-item-traget {
-				.target-item {
-					width: 100%;
-					background: #232A37;
-					padding: 15px;
-					border-radius: 8px;
-					display: flex;
-					align-items: center;
-					box-sizing: border-box;
-					box-sizing: border-box;
-					border: 1px solid #1f242f;
-				}
-
-				.target-item-insert {
-					width: 100%;
-					height: 70px;
-					border: 1px dashed $--color-border;
-					border-radius: 8px;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					cursor: pointer;
-
-					.huifont-xinzeng {
-						margin-right: 5px;
-					}
-				}
-
-				.target-item-insert:hover {
-					border-color: $--color-primary;
-					color: $--color-primary;
-
-					.huifont-xinzeng {
-						color: $--color-primary;
-					}
-				}
-
-				.target-item-num {
-					width: 38px;
-					height: 38px;
-					text-align: center;
-					line-height: 38px;
-					background: #31353f;
-					border-radius: 10px;
-					margin-right: 10px;
-
-					.iconfont {
-						font-size: 20px;
-					}
-				}
-
-				.target-item-label {
-					flex: 1;
-					width: 0;
-					overflow: hidden;
-				}
-			}
-
-			.target-item-icon {
-				transform: rotate(90deg);
-				cursor: pointer;
-
-				.huifont-jinhangzhong {
-					font-size: 20px;
-					color: $--color-common;
-				}
-			}
-
-			.el-col {
-				padding-top: 5px;
-				padding-bottom: 5px;
-			}
-
-			.space-room-list {
-				.space-room-image {
-					img {
-						width: 80px;
-						height: 80px;
-						object-fit: fill;
-						border-radius: 8px;
-					}
-
-					margin-right: 10px;
-				}
-
-				.space-room-item {
-					display: flex;
-					align-items: center;
-					padding: 0 15px;
-					height: 110px;
-					background: #232A37;
-					border-radius: 8px;
-					position: relative;
-					cursor: pointer;
-					border: 1px solid #1f242f;
-
-					.space-room-icon {
-						position: absolute;
-						top: 12px;
-						right: 12px;
-					}
-
-					.space-room-num {
-						width: 48px;
-						height: 48px;
-						background: rgba(255, 255, 255, 0.08);
-						border-radius: 10px;
-						margin-right: 12px;
-						text-align: center;
-						line-height: 48px;
-						font-size: 18px;
-					}
-
-					.space-room-text {
-						flex: 1;
-						width: 0;
-
-						.space-room-label {
-							font-size: 18px;
-							font-weight: 500;
-							margin-bottom: 4px;
-						}
-
-						.space-room-sub {
-							font-size: 12px;
-							opacity: 0.6;
-						}
-					}
-				}
-
-				.space-room-item.active,
-				.space-room-item:hover {
-					border-color: $--color-primary;
-					box-shadow: -1px -1px 10px 1px rgba(51, 133, 255, 0.2) inset;
-				}
-			}
-		}
-	}
+<template>
+	<div class="space-index">
+		<div class="space-null" v-if="projectItemList.length ==0">
+			<img :src="nullImage" alt="" />
+			<div class="space-null-text">您还未添加楼宇信息,可新增楼宇,开启您的空间设置吧!</div>
+			<div class="flow-button">
+				<el-button size="medium" type="primary" @click="insert('projectItem')">
+					<i class="iconfont huifont-xinzeng"></i>新增楼宇
+				</el-button>
+			</div>
+		</div>
+		<div class="space-content" v-else>
+			<div class="space-content-item">
+				<div class="space-title">
+					<div class="space-title-label">楼宇</div>
+					<el-button size="medium" type="primary" @click="insert('projectItem')">
+						<i class="iconfont huifont-xinzeng"></i>新增
+					</el-button>
+				</div>
+				<div class="space-content-box">
+					<div class="space-room-list">
+						<el-row :gutter="10">
+							<el-col :span="12" v-for="item in projectItemList" :key="item.id">
+								<div :class="projectItem.id === item.id?'space-room-item active' : 'space-room-item'"
+									@click="selectTarget(item)">
+									<div class="space-room-image">
+										<img :src="returnImage(item)" alt="" />
+									</div>
+									<div class="space-room-text">
+										<div class="space-room-label">{{item.name}}</div>
+										<div class="space-room-sub">{{item.remark}}</div>
+									</div>
+									<div class="space-room-icon">
+										<el-dropdown trigger="click"
+											@command="command=>commandFunc(command,item,'projectItem')">
+											<div class="target-item-icon">
+												<i class="iconfont huifont-jinhangzhong"></i>
+											</div>
+											<el-dropdown-menu slot="dropdown">
+												<el-dropdown-item command="detail">详情</el-dropdown-item>
+												<el-dropdown-item command="update">编辑</el-dropdown-item>
+												<el-dropdown-item command="delete">删除</el-dropdown-item>
+											</el-dropdown-menu>
+										</el-dropdown>
+									</div>
+								</div>
+							</el-col>
+						</el-row>
+					</div>
+				</div>
+			</div>
+			<div class="space-line"></div>
+			<div class="space-content-item">
+				<div class="space-title">
+					<div class="space-title-label">楼层</div>
+					<el-button size="medium" type="primary" @click="insert('projectItemTarget')">
+						<i class="iconfont huifont-xinzeng"></i>新增
+					</el-button>
+				</div>
+				<div class="space-content-box">
+					<div class="space-undefined" v-if="projectItemTargetList.length === 0">
+						<img :src="undefinedImage" alt="" />
+						<div class="space-undefined-text">暂无数据</div>
+					</div>
+					<el-row class="project-item-traget" :gutter="10" v-else>
+						<el-col :span="8" v-for="(target,index) in projectItemTargetList" :key="target.id">
+							<div class="target-item">
+								<div class="target-item-num">
+									<i class="iconfont huifont-louceng"></i>
+								</div>
+								<div class="target-item-label">{{target.name}}</div>
+								<el-dropdown trigger="click"
+									@command="command=>commandFunc(command,target,'projectItemTarget')">
+									<div class="target-item-icon">
+										<i class="iconfont huifont-jinhangzhong"></i>
+									</div>
+									<el-dropdown-menu slot="dropdown">
+										<el-dropdown-item command="update">编辑</el-dropdown-item>
+										<el-dropdown-item command="delete">删除</el-dropdown-item>
+									</el-dropdown-menu>
+								</el-dropdown>
+							</div>
+						</el-col>
+					</el-row>
+				</div>
+			</div>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<project-item-form v-if="visible && type === 'projectItem'" @callback="callback" :isUpdate="isUpdate"
+				:detailId="itemId">
+			</project-item-form>
+			<project-item-target-form v-if="visible && type === 'projectItemTarget'" @callback="callback"
+				:isUpdate="isUpdate" :detailId="itemId" :projectItemId="projectItem.id">
+			</project-item-target-form>
+		</el-dialog>
+		<el-drawer title="楼宇详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<project-item-detail v-if="drawer" :detailId="itemId"></project-item-detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	import {
+		getProjectDetailById,
+		getProjectItemList,
+		deleteProjectItemById,
+		deleteProjectItemTarget,
+		deleteRoom
+	} from '@/httpApi/space';
+	import projectItemForm from '@/components/work/space/set/projectItemForm'
+	import projectItemDetail from '@/components/work/space/set/projectItemDetail'
+	import projectItemTargetForm from '@/components/work/space/set/projectItemTargetForm'
+	export default {
+		data() {
+			return {
+				nullImage: require('../../../assets/image/common/dataNull.png'),
+				undefinedImage: require('../../../assets/image/common/dataUndefined.png'),
+				projectItemList: [],
+				projectItemTargetList: [],
+				visible: false,
+				itemId: '',
+				isUpdate: false,
+				projectItem: {},
+				projectItemTarget: {},
+				drawer: false
+			}
+		},
+		created() {
+			this.getProjectItemList();
+		},
+		methods: {
+			getProjectItemList() {
+				getProjectDetailById(this.$store.getters.project.id).then(res => {
+					if (res.state) {
+						this.projectItemList = res.data.projectItemList || [];
+						if (this.projectItemList.length === 0) return;
+						if (this.projectItem.id) {
+							let item = this.projectItemList.filter(node => node.id === this.projectItem.id);
+							if (item.length === 0) return this.selectTarget(this.projectItemList[0]);
+							this.selectTarget(item[0]);
+						} else {
+							this.selectTarget(this.projectItemList[0]);
+						}
+					}
+				})
+			},
+			insert(type, projectItemId) {
+				this.type = type;
+				this.isUpdate = false;
+				this.visible = true;
+			},
+			selectTarget(item) {
+				this.projectItem = item;
+				this.projectItemTargetList = item.projectItemTargetList;
+			},
+			commandFunc(operationType, item, type) {
+				this.type = type;
+				this.itemId = item.id;
+				this[operationType]();
+			},
+			update() {
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			detail() {
+				this.drawer = true;
+			},
+			delete() {
+				if (this.type === 'projectItem') {
+					this.$confirm('确定要删除该楼宇?', () => {
+						deleteProjectItemById(this.itemId).then(this.successFunc);
+					});
+				}
+				if (this.type === 'projectItemTarget') {
+					this.$confirm('确定要删除该楼层?', () => {
+						deleteProjectItemTarget(this.itemId).then(this.successFunc);
+					});
+				}
+			},
+			successFunc(res) {
+				if (res.state) {
+					this.getProjectItemList();
+					this.$message.success('操作成功');
+				}
+			},
+			returnImage(item) {
+				let imgUrl = 'https://file-node.oss-cn-shanghai.aliyuncs.com/youji/1da893e7d4264dc68ef43e00d5a708e9'
+				if (item.picture) {
+					let picture = JSON.parse(item.picture);
+					if (picture.length > 0) imgUrl = picture[0].url;
+				}
+				return imgUrl;
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.getProjectItemList();
+			}
+		},
+		components: {
+			projectItemForm,
+			projectItemDetail,
+			projectItemTargetForm,
+		},
+	}
+</script>
+
+<style lang="scss">
+	.space-index {
+		width: 100%;
+		height: 100%;
+
+		.space-null {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			flex-direction: column;
+
+			img {
+				width: 420px;
+			}
+
+			.space-null-text {
+				padding: 30px 0 20px 0;
+			}
+
+			.el-button {
+				padding-left: 12px;
+
+				span {
+					display: flex;
+					align-items: center;
+				}
+
+				.huifont-xinzeng {
+					padding-right: 10px;
+				}
+			}
+		}
+
+		.space-undefined {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			flex-direction: column;
+
+			img {
+				width: 160px;
+			}
+
+			.space-undefined-text {
+				margin-top: 20px;
+				opacity: 0.6;
+			}
+		}
+
+		.space-content {
+			width: 100%;
+			height: 100%;
+			display: flex;
+
+			.space-title {
+				display: flex;
+				justify-content: space-between;
+				padding: 15px 20px;
+				align-items: center;
+
+				.space-title-label {
+					font-size: 16px;
+				}
+
+				.el-button {
+					padding: 8px 16px;
+				}
+			}
+
+			.space-line {
+				background: $--background;
+				width: 12px;
+				height: 100%;
+			}
+
+			.space-content-box {
+				flex: 1;
+				padding: 0 20px 15px 20px;
+				height: 0;
+				overflow-y: auto;
+
+				.space-project-item {
+					background: #242a36;
+					margin-bottom: 20px;
+					border-radius: 2px;
+				}
+			}
+
+			.space-content-item {
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+			}
+
+			.project-item-title {
+				height: 56px;
+				display: flex;
+				justify-content: space-between;
+				padding: 0 20px;
+				align-items: center;
+				border-bottom: 1px solid $--color-border;
+			}
+
+			.project-item-traget {
+				.target-item {
+					width: 100%;
+					background: #232A37;
+					padding: 15px;
+					border-radius: 8px;
+					display: flex;
+					align-items: center;
+					box-sizing: border-box;
+					box-sizing: border-box;
+					border: 1px solid #1f242f;
+				}
+
+				.target-item-insert {
+					width: 100%;
+					height: 70px;
+					border: 1px dashed $--color-border;
+					border-radius: 8px;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					cursor: pointer;
+
+					.huifont-xinzeng {
+						margin-right: 5px;
+					}
+				}
+
+				.target-item-insert:hover {
+					border-color: $--color-primary;
+					color: $--color-primary;
+
+					.huifont-xinzeng {
+						color: $--color-primary;
+					}
+				}
+
+				.target-item-num {
+					width: 38px;
+					height: 38px;
+					text-align: center;
+					line-height: 38px;
+					background: #31353f;
+					border-radius: 10px;
+					margin-right: 10px;
+
+					.iconfont {
+						font-size: 20px;
+					}
+				}
+
+				.target-item-label {
+					flex: 1;
+					width: 0;
+					overflow: hidden;
+				}
+			}
+
+			.target-item-icon {
+				transform: rotate(90deg);
+				cursor: pointer;
+
+				.huifont-jinhangzhong {
+					font-size: 20px;
+					color: $--color-common;
+				}
+			}
+
+			.el-col {
+				padding-top: 5px;
+				padding-bottom: 5px;
+			}
+
+			.space-room-list {
+				.space-room-image {
+					border-radius: 8px;
+					margin-right: 10px;
+					overflow: hidden;
+
+					img {
+						width: 80px;
+						height: 80px;
+						object-fit: fill;
+					}
+
+				}
+
+				.space-room-item {
+					display: flex;
+					align-items: center;
+					padding: 0 15px;
+					height: 110px;
+					background: #232A37;
+					border-radius: 8px;
+					position: relative;
+					cursor: pointer;
+					border: 1px solid #1f242f;
+
+					.space-room-icon {
+						position: absolute;
+						top: 12px;
+						right: 12px;
+					}
+
+					.space-room-num {
+						width: 48px;
+						height: 48px;
+						background: rgba(255, 255, 255, 0.08);
+						border-radius: 10px;
+						margin-right: 12px;
+						text-align: center;
+						line-height: 48px;
+						font-size: 18px;
+					}
+
+					.space-room-text {
+						flex: 1;
+						width: 0;
+
+						.space-room-label {
+							font-size: 18px;
+							font-weight: 500;
+							margin-bottom: 4px;
+						}
+
+						.space-room-sub {
+							font-size: 12px;
+							opacity: 0.6;
+						}
+					}
+				}
+
+				.space-room-item.active,
+				.space-room-item:hover {
+					border-color: $--color-primary;
+					box-shadow: -1px -1px 10px 1px rgba(51, 133, 255, 0.2) inset;
+				}
+			}
+		}
+	}
 </style>

File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/index.html


virgo.wzfrontend/src/main/resources/static/console/static/css/1498.dc2bf83b.css → virgo.wzfrontend/src/main/resources/static/console/static/css/1041.dc2bf83b.css


virgo.wzfrontend/src/main/resources/static/console/static/css/1551.710489ee.css → virgo.wzfrontend/src/main/resources/static/console/static/css/109.710489ee.css


virgo.wzfrontend/src/main/resources/static/console/static/css/127.d878ce6b.css → virgo.wzfrontend/src/main/resources/static/console/static/css/1170.d878ce6b.css


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/1735.22d48ee0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/6508.d878ce6b.css → virgo.wzfrontend/src/main/resources/static/console/static/css/1520.d878ce6b.css


virgo.wzfrontend/src/main/resources/static/console/static/css/3355.f43f4c00.css → virgo.wzfrontend/src/main/resources/static/console/static/css/1618.f43f4c00.css


virgo.wzfrontend/src/main/resources/static/console/static/css/4940.b6c7aaf0.css → virgo.wzfrontend/src/main/resources/static/console/static/css/1821.b6c7aaf0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/4337.2afa4fbc.css → virgo.wzfrontend/src/main/resources/static/console/static/css/2038.2afa4fbc.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5802.b6c7aaf0.css → virgo.wzfrontend/src/main/resources/static/console/static/css/2059.b6c7aaf0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/1620.62c9bb7a.css → virgo.wzfrontend/src/main/resources/static/console/static/css/206.62c9bb7a.css


virgo.wzfrontend/src/main/resources/static/console/static/css/10.48fa06e5.css → virgo.wzfrontend/src/main/resources/static/console/static/css/2288.48fa06e5.css


virgo.wzfrontend/src/main/resources/static/console/static/css/1606.e193389d.css → virgo.wzfrontend/src/main/resources/static/console/static/css/2693.e193389d.css


virgo.wzfrontend/src/main/resources/static/console/static/css/678.f43f4c00.css → virgo.wzfrontend/src/main/resources/static/console/static/css/4388.f43f4c00.css


virgo.wzfrontend/src/main/resources/static/console/static/css/6533.b6c7aaf0.css → virgo.wzfrontend/src/main/resources/static/console/static/css/4643.b6c7aaf0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5629.62c9bb7a.css → virgo.wzfrontend/src/main/resources/static/console/static/css/4781.62c9bb7a.css


virgo.wzfrontend/src/main/resources/static/console/static/css/1100.7e28460d.css → virgo.wzfrontend/src/main/resources/static/console/static/css/5046.7e28460d.css


virgo.wzfrontend/src/main/resources/static/console/static/css/7730.7e28460d.css → virgo.wzfrontend/src/main/resources/static/console/static/css/5501.7e28460d.css


virgo.wzfrontend/src/main/resources/static/console/static/css/4831.863e2be4.css → virgo.wzfrontend/src/main/resources/static/console/static/css/5523.863e2be4.css


virgo.wzfrontend/src/main/resources/static/console/static/css/1429.48fa06e5.css → virgo.wzfrontend/src/main/resources/static/console/static/css/5679.48fa06e5.css


virgo.wzfrontend/src/main/resources/static/console/static/css/4180.f275a232.css → virgo.wzfrontend/src/main/resources/static/console/static/css/6116.f275a232.css


virgo.wzfrontend/src/main/resources/static/console/static/css/4193.e193389d.css → virgo.wzfrontend/src/main/resources/static/console/static/css/6355.e193389d.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5289.710489ee.css → virgo.wzfrontend/src/main/resources/static/console/static/css/6448.710489ee.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9662.dc2bf83b.css → virgo.wzfrontend/src/main/resources/static/console/static/css/7032.dc2bf83b.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5157.28d0077f.css → virgo.wzfrontend/src/main/resources/static/console/static/css/7204.28d0077f.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5774.28d0077f.css → virgo.wzfrontend/src/main/resources/static/console/static/css/7788.28d0077f.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9935.863e2be4.css → virgo.wzfrontend/src/main/resources/static/console/static/css/8187.863e2be4.css


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/css/973.22d48ee0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/7519.b6c7aaf0.css → virgo.wzfrontend/src/main/resources/static/console/static/css/8869.b6c7aaf0.css


virgo.wzfrontend/src/main/resources/static/console/static/css/5039.12d58e15.css → virgo.wzfrontend/src/main/resources/static/console/static/css/8954.12d58e15.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9334.f275a232.css → virgo.wzfrontend/src/main/resources/static/console/static/css/9104.f275a232.css


virgo.wzfrontend/src/main/resources/static/console/static/css/9818.12d58e15.css → virgo.wzfrontend/src/main/resources/static/console/static/css/9593.12d58e15.css


virgo.wzfrontend/src/main/resources/static/console/static/css/2199.b9bbdc53.css → virgo.wzfrontend/src/main/resources/static/console/static/css/9818.b9bbdc53.css


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/10.a4fe8103.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1041-legacy.6ad6ef3f.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/109-legacy.bfd6bd1b.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1100-legacy.d5f1c59c.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1170.5bed2788.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1204.7d59cb66.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1250-legacy.cc7b2a0c.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1250-legacy.f47cbfb0.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1250.0014d332.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1250.56f594a9.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1263-legacy.dc9fb2c6.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1263.e2513cb7.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/127.dd8f4f23.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1433-legacy.897c5b3b.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1433.42be6056.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1437-legacy.c6ba321a.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/251.3efb79fa.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1498.dda556b7.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1520-legacy.4ecce39b.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1551-legacy.561c4db6.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/1618.dde3ecab.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/1620.e3ed803d.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4940-legacy.ff271e93.js


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/4337-legacy.bfd17f9d.js


+ 0 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/4337.312cfa76.js


Some files were not shown because too many files changed in this diff