whx 1 kuukausi sitten
vanhempi
commit
1d443ed2ba
57 muutettua tiedostoa jossa 561 lisäystä ja 374 poistoa
  1. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/index.html
  2. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/2795.b3b650e1.css
  3. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/3640.ddc2cd9f.css
  4. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/3756.09118e5c.css
  5. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/5321.40e63305.css
  6. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/5561.1d4254f7.css
  7. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/7197.78516da8.css
  8. 0 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/7264.47dc317f.css
  9. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/8102.71cf4f4d.css
  10. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/8178.2b4bf449.css
  11. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.592c0802.css
  12. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/css/app.b1b18ff5.css
  13. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1031.0de8f170.js
  14. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1096.0ce094d6.js
  15. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1764.62ef9fa3.js
  16. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1805.3640332f.js
  17. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/1909.da644a5d.js
  18. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2584.a3fef0af.js
  19. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/2795.95b8fdf8.js
  20. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3087.db2d5e78.js
  21. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3640.61ade7d1.js
  22. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3756.520b86ab.js
  23. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/3801.a1ee60f8.js
  24. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.d7995d38.js
  25. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/437.ada3d8cc.js
  26. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.873a08bb.js
  27. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5073.bd8cbc75.js
  28. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5211.be737c41.js
  29. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5321.83b3ead2.js
  30. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/5561.93878438.js
  31. 1 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/6271.e22f4ce3.js
  32. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7197.b1a35a32.js
  33. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/7264.e779c796.js
  34. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8102.a1b01d53.js
  35. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8178.4c56e1f4.js
  36. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8757.7a95df1b.js
  37. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/8866.fc02c57b.js
  38. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/90.878dd5e8.js
  39. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/923.8e000151.js
  40. 1 0
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9243.93dfa75c.js
  41. 0 1
      virgo.wzfrontend/src/main/resources/static/workark/static/js/9396.6f7d8700.js
  42. 2 2
      virgo.wzfrontend/src/main/resources/static/workark/static/js/app.43cd7282.js
  43. 21 0
      virgo.wzfrontend/workark/src/api/loginRegister.js
  44. 1 1
      virgo.wzfrontend/workark/src/components/website/productItem.vue
  45. 3 3
      virgo.wzfrontend/workark/src/components/work/organization/user/role.vue
  46. 92 0
      virgo.wzfrontend/workark/src/layout/components/selectOrganization.vue
  47. 47 6
      virgo.wzfrontend/workark/src/layout/components/topNav.vue
  48. 2 0
      virgo.wzfrontend/workark/src/layout/indexLayout.vue
  49. 2 3
      virgo.wzfrontend/workark/src/views/login/login.vue
  50. 7 4
      virgo.wzfrontend/workark/src/views/website/serveDetail.vue
  51. 7 5
      virgo.wzfrontend/workark/src/views/work/organization/announcement.vue
  52. 4 3
      virgo.wzfrontend/workark/src/views/work/organization/customerServe.vue
  53. 3 1
      virgo.wzfrontend/workark/src/views/work/organization/depart.vue
  54. 201 198
      virgo.wzfrontend/workark/src/views/work/organization/manager.vue
  55. 123 122
      virgo.wzfrontend/workark/src/views/work/organization/seal.vue
  56. 21 3
      virgo.wzfrontend/workark/src/views/work/organization/user.vue
  57. 4 3
      virgo.wzfrontend/workark/src/views/work/serve/list.vue

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/index.html


virgo.wzfrontend/src/main/resources/static/workark/static/css/923.b3b650e1.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/2795.b3b650e1.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/3640.ddc2cd9f.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/4264.09118e5c.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/3756.09118e5c.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/8757.40e63305.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/5321.40e63305.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/1764.1d4254f7.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/5561.1d4254f7.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/7197.78516da8.css


virgo.wzfrontend/src/main/resources/static/workark/static/css/90.47dc317f.css → virgo.wzfrontend/src/main/resources/static/workark/static/css/7264.47dc317f.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/8102.71cf4f4d.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/8178.2b4bf449.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.592c0802.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/css/app.b1b18ff5.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1031.0de8f170.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/1096.0ce094d6.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1764.62ef9fa3.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1805.3640332f.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/1909.da644a5d.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2584.a3fef0af.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/2795.95b8fdf8.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3087.db2d5e78.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/3640.61ade7d1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/3756.520b86ab.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/3801.a1ee60f8.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4264.d7995d38.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/437.ada3d8cc.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/4951.873a08bb.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/5073.bd8cbc75.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/5211.be737c41.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/5321.83b3ead2.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/5561.93878438.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/6271.e22f4ce3.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/7197.b1a35a32.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/7264.e779c796.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8102.a1b01d53.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8178.4c56e1f4.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/8757.7a95df1b.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/8866.fc02c57b.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/90.878dd5e8.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/923.8e000151.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/workark/static/js/9243.93dfa75c.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/workark/static/js/9396.6f7d8700.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 2 - 2
virgo.wzfrontend/src/main/resources/static/workark/static/js/app.43cd7282.js


+ 21 - 0
virgo.wzfrontend/workark/src/api/loginRegister.js

@@ -151,4 +151,25 @@ export function updateOperationUserInfo(data) {
 		method: 'put',
 		data: data
 	})
+}
+/* 
+ * 切换work组织
+ * @param null 
+ */
+export function selectWorkarkOrangaized(data) {
+	return request({
+		url: `/manager/userContext/workark/organization`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 获取work组织
+ * @param null 
+ */
+export function getWorkarkOrangaized(data) {
+	return request({
+		url: `/manager/userContext/workark/organization`,
+		method: 'get'
+	})
 }

+ 1 - 1
virgo.wzfrontend/workark/src/components/website/productItem.vue

@@ -25,7 +25,7 @@
 			},
 			clickItem() {
 				let id = Crypto.AES.encrypt(String(this.item.id), 'bosshand');
-				this.$router.push('/website/serveDetail?type=' + encodeURIComponent(id));
+				this.$router.push('/website/serveDetail?type=' + encodeURIComponent(id)	 + '&sign=' + this.item.sign);
 			}
 		}
 	}

+ 3 - 3
virgo.wzfrontend/workark/src/components/work/organization/user/role.vue

@@ -39,7 +39,7 @@
 			})
 			if (this.user.id) {
 				this.checkedKeys = [];
-				this.testCheck(this.user.workResources ? JSON.parse(this.user.workResources) : []);
+				this.testCheck(this.user.workarkResources ? JSON.parse(this.user.workarkResources) : []);
 			}
 		},
 		methods: {
@@ -90,9 +90,9 @@
 					comment: JSON.stringify(data.filter(item => !!item.index).map(item => item.index))
 				}
 				updateUserRole({
-					workMenus: obj.comment,
+					workarkMenus: obj.comment,
 					organizationId: this.$store.getters.organization.id,
-					workResources: obj.resource,
+					workarkResources: obj.resource,
 					userId: this.user.id,
 					projectId: this.$store.getters.project.id
 				}).then(res => {

+ 92 - 0
virgo.wzfrontend/workark/src/layout/components/selectOrganization.vue

@@ -0,0 +1,92 @@
+<template>
+	<div class="hui-flex hui-dialog  hui-content">
+		<div class="hui-flex-box hui-table">
+			<el-table :data="tableData" row-key="id" height="100%" v-loading="loading">
+				<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="企业代码" width="130" prop="organizationCode"></el-table-column>
+				<el-table-column label="企业名称" prop="name"></el-table-column>
+				<el-table-column label="联系人" prop="contact"></el-table-column>
+				<el-table-column label="联系方式" width="120" prop="contactTel"></el-table-column>
+				<el-table-column label="操作" width="150" align="center">
+					<template slot-scope="scope">
+						<div class="hui-table-operation">
+							<span class="table-operation" @click="changeOrganization(scope.row)"
+								v-if="$store.getters.organization.id !== scope.row.id">
+								切换组织
+							</span>
+						</div>
+					</template>
+				</el-table-column>
+				<template slot="empty">
+					<el-empty description="暂无数据"></el-empty>
+				</template>
+			</el-table>
+		</div>
+	</div>
+</template>
+
+<script>
+	import {
+		selectWorkarkOrangaized,
+		getWorkarkOrangaized,
+		getUserInfo
+	} from '@/api/loginRegister'
+	import {
+		setComment
+	} from '@/uitls/auth';
+	export default {
+		data() {
+			return {
+				tableData: [],
+				loading: false
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				this.loading = true;
+				getWorkarkOrangaized().then(res => {
+					this.loading = false;
+					if (res.state) {
+						this.tableData = res.data;
+					}
+				})
+			},
+			changeOrganization(item) {
+				this.$confirm('是否切换该组织?', () => {
+					this.$loading();
+					selectWorkarkOrangaized(item).then(res => {
+						if (res.state) {
+							getUserInfo().then(res => {
+								if (res.state) {
+									let user = res.data;
+									this.$store.dispatch('app/resetState');
+									this.$store.dispatch('app/changeOrganization', item);
+									this.$store.dispatch('app/changeUser', user);
+									this.$store.dispatch('app/changeMenuData', user
+										.workarkResource ? JSON.parse(user.workarkResource) :
+										[]);
+									setComment(user.workarkMenu ? user.workarkMenu : JSON
+										.stringify([]));
+									this.$router.go(0);
+								}
+								this.$loading.close();
+							})
+						}else{
+							this.$loading.close();
+						}
+					})
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+</style>

+ 47 - 6
virgo.wzfrontend/workark/src/layout/components/topNav.vue

@@ -9,6 +9,11 @@
 			<div class="work-layout-button" @click="$router.push('/work')">
 				<i class="iconfont huifont-yunweiguanli"></i><span>工作台</span>
 			</div>
+			<div class="work-layout-line"></div>
+			<div class="work-layout-project" @click="userCommand('changeOrganization')">
+				<span>{{organization.name}}</span>
+				<i class="iconfont huifont-xiala-top"></i>
+			</div>
 		</div>
 		<div class="work-layout-right">
 			<div class="work-layout-badge" @click="$router.push('/work/message')">
@@ -50,11 +55,11 @@
 			: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">
-			<change-password v-if="visible"></change-password>
+		<el-dialog :close-on-click-modal="false" :title="logType === 1?'切换组织':'修改密码'" :visible.sync="visible"
+			width="900px" :append-to-body="true">
+			<select-organization v-if="visible && logType === 1"></select-organization>
+			<change-password v-if="visible && logType === 2"></change-password>
 		</el-dialog>
-
 	</div>
 </template>
 
@@ -70,6 +75,7 @@
 	} from 'vuex';
 	const userDetail = () => import('./userDetail');
 	const changePassword = () => import('./changePassword');
+	const selectOrganization = () => import('./selectOrganization');
 	export default {
 		data() {
 			return {
@@ -77,7 +83,9 @@
 				userDropdown: false,
 				systemCountStatus: false,
 				drawer: false,
-				visible: false
+				visible: false,
+				organization: {},
+				logType: 1
 			}
 		},
 		mounted() {
@@ -87,6 +95,7 @@
 		methods: {
 			init() {
 				this.users = this.$store.getters.user;
+				this.organization = this.$store.getters.organization;
 			},
 			initMessage() {
 				if (!this.$store.getters.user.userId) return;
@@ -106,6 +115,7 @@
 						this.drawer = true;
 						break;
 					case 'changePassword':
+						this.logType = 2;
 						this.visible = true;
 						break;
 					case 'logout':
@@ -114,6 +124,10 @@
 					case 'conpon':
 						this.$router.push('/work/discount/userCoupon');
 						break;
+					case 'changeOrganization':
+						this.logType = 1;
+						this.visible = true;
+						break;
 					default:
 						break;
 				}
@@ -145,7 +159,8 @@
 		},
 		components: {
 			userDetail,
-			changePassword
+			changePassword,
+			selectOrganization
 		}
 	}
 </script>
@@ -163,6 +178,32 @@
 		border-bottom: 1px solid $--border-color-lighter;
 	}
 
+	.work-layout-line {
+		background: $--border-color-light;
+		width: 1px;
+		height: 20px;
+		margin: 0 23px;
+	}
+
+	.work-layout-project {
+		display: flex;
+		align-items: center;
+		cursor: pointer;
+
+		span {
+			font-size: 13px;
+			margin-right: 5px;
+		}
+
+		.iconfont {
+			transition: all 300ms;
+		}
+
+		.dropdown-icon {
+			transform: rotate(180deg);
+		}
+	}
+
 	.work-layout-button {
 		width: 88px;
 		height: 36px;

+ 2 - 0
virgo.wzfrontend/workark/src/layout/indexLayout.vue

@@ -28,6 +28,8 @@
 <style lang="scss">
 	.website-layout {
 		width: 100%;
+		height: 100%;
+		overflow: auto;
 		position: relative;
 	}
 </style>

+ 2 - 3
virgo.wzfrontend/workark/src/views/login/login.vue

@@ -185,9 +185,8 @@
 						getUserInfo().then(res => {
 							if (res.state) {
 								let user = res.data;
-								let organization = user.organizationList.find(node => node.contactTel ===
-									user.phone);
-								if (!organization) organization = user.organizationList[0];
+								let organization = user.workarkOrganization;
+								if (!organization) organization = user.workarkOrganizationList[0];
 								this.$store.dispatch('app/changeOrganization', organization);
 								this.$store.dispatch('app/changeUser', user);
 								this.$store.dispatch('app/changeMenuData', user.workarkResource ? JSON

+ 7 - 4
virgo.wzfrontend/workark/src/views/website/serveDetail.vue

@@ -22,7 +22,10 @@
 								<span class="average alibaba">{{detail.price}}</span><span class="unit">元/次</span>
 							</div>
 							<div class="button-box">
-								<el-button type="primary" size="small" @click="payItem">购买</el-button>
+								<el-button type="primary" size="small" @click="payItem"
+									v-permission="`/work/serve/list/${$route.query.sign}/pay`">
+									购买
+								</el-button>
 								<el-button type="primary" size="small" @click="chatItem">联系客服</el-button>
 							</div>
 						</div>
@@ -88,8 +91,8 @@
 				dialogVisible: false,
 				dialogType: '',
 				chatVisible: false,
-				customerId: '',
-				customerTitle:''
+				customerId: '',
+				customerTitle: ''
 			};
 		},
 		mounted() {
@@ -160,7 +163,7 @@
 				getCustomerServeDetail(this.detail.customerId).then(res => {
 					if (res.state) {
 						if (!res.data) return this.$message.warning('该产品暂未设置客服');
-						this.customerId = res.data.customerId;
+						this.customerId = res.data.customerId;
 						this.customerTitle = res.data.nickName;
 						this.chatVisible = true;
 					}

+ 7 - 5
virgo.wzfrontend/workark/src/views/work/organization/announcement.vue

@@ -5,7 +5,8 @@
 		</div>
 		<div class="hui-flex-box hui-flex hui-table">
 			<div class="hui-content-insert">
-				<el-button type="primary" size="small" @click="insert">
+				<el-button v-permission="'/work/organization/announcement/add'" type="primary" size="small"
+					@click="insert">
 					新增公告
 				</el-button>
 			</div>
@@ -47,13 +48,13 @@
 					<el-table-column label="操作" width="150">
 						<template slot-scope="scope">
 							<div class="hui-table-operation">
-								<span class="table-operation" @click="lookItem(scope.row)">
+								<span class="table-operation" @click="lookItem(scope.row)"  v-permission="'/work/organization/announcement/detail'">
 									详情
 								</span>
-								<span class="table-operation" v-if="!scope.row.status" @click="updateItem(scope.row)">
+								<span class="table-operation" v-if="!scope.row.status" @click="updateItem(scope.row)"  v-permission="'/work/organization/announcement/update'">
 									编辑
 								</span>
-								<span class="table-operation" @click="deleteItem(scope.row)">
+								<span class="table-operation" @click="deleteItem(scope.row)"  v-permission="'/work/organization/announcement/delete'">
 									删除
 								</span>
 							</div>
@@ -109,7 +110,8 @@
 			this.init();
 		},
 		methods: {
-			init() {
+			init() {
+				if (!this.auth('/work/organization/announcement/list')) return;
 				let filterOption = {
 					organizationId: this.$store.getters.organization.id,
 					projectId: this.$store.getters.id

+ 4 - 3
virgo.wzfrontend/workark/src/views/work/organization/customerServe.vue

@@ -5,7 +5,7 @@
 		</div>
 		<div class="hui-flex-box hui-flex hui-table">
 			<div class="hui-content-insert">
-				<el-button type="primary" size="small" @click="insert">
+				<el-button v-permission="'/work/organization/customerServe/add'" type="primary" size="small" @click="insert">
 					新增客服
 				</el-button>
 			</div>
@@ -42,7 +42,7 @@
 					<el-table-column label="操作" width="150">
 						<template slot-scope="scope">
 							<div class="hui-table-operation">
-								<span class="table-operation" v-if="!scope.row.status" @click="updateItem(scope.row)">
+								<span class="table-operation" v-if="!scope.row.status" v-permission="'/work/organization/customerServe/update'" @click="updateItem(scope.row)">
 									编辑
 								</span>
 							</div>
@@ -93,7 +93,8 @@
 			this.init();
 		},
 		methods: {
-			init() {
+			init() {
+				if (!this.auth('/work/organization/customerServe/list')) return;
 				let filterOption = {
 					organizationId: this.$store.getters.organization.id
 				};

+ 3 - 1
virgo.wzfrontend/workark/src/views/work/organization/depart.vue

@@ -6,7 +6,9 @@
 		<div class="hui-flex-box hui-flex hui-table">
 			<div class="hui-content-insert">
 				<el-button v-permission="'/work/organization/depart/add'" type="primary" size="small"
-					@click="insertDepartment({})">新建部门</el-button>
+					@click="insertDepartment({})">
+					新建部门
+				</el-button>
 			</div>
 			<div class="hui-flex-box">
 				<el-table :data="treeData" row-key="id" height="100%">

+ 201 - 198
virgo.wzfrontend/workark/src/views/work/organization/manager.vue

@@ -1,199 +1,202 @@
-<template>
-	<div class="hui-flex hui-content border-box">
-		<div class="hui-content-title">
-			<div class="hui-title-item active">公司管理</div>
-		</div>
-		<div class="hui-flex-box">
-			<div class="manager-index hui-flex hui-table">
-				<div class="hui-content-insert" style="text-align: right;">
-					<el-button v-permission="'/work/organization/manager/update'" type="primary" size="small" @click="visible = true">修改</el-button>
-				</div>
-				<div class="hui-flex-box">
-					<div class="manager-content">
-						<div class="manager-title">
-							<div class="manager-logo">
-								<el-image v-if="logoUrl" :src="logoUrl" fit="cover"></el-image>
-								<div class="el-image" v-else>
-									<div class="image-slot"><i class="el-icon-picture-outline"></i></div>
-								</div>
-							</div>
-							<div class="manager-name">{{organization.name}}</div>
-						</div>
-						<div class="manager-box">
-							<div class="manager-item">
-								<div class="manager-label">公司代码</div>
-								<div class="manager-value">
-									{{organization.organizationCode}}
-									<i class="el-icon-copy-document color-primary" title="点击复制"
-										@click="copyText(organization.organizationCode)"></i>
-								</div>
-							</div>
-							<div class="manager-item">
-								<div class="manager-label">联系人</div>
-								<div class="manager-value">{{organization.contact}}</div>
-							</div>
-							<div class="manager-item">
-								<div class="manager-label">公司地址</div>
-								<div class="manager-value">{{address}}</div>
-							</div>
-							<div class="manager-item">
-								<div class="manager-label">联系方式</div>
-								<div class="manager-value">{{organization.contactTel}}</div>
-							</div>
-							<div class="manager-item" style="width: 100%;">
-								<div class="manager-label">公司简介</div>
-								<div class="manager-value">{{organization.introduction}}</div>
-							</div>
-							<div class="manager-item" style="width: 100%;">
-								<div class="manager-label">附件</div>
-								<div class="manager-value">
-									<upload
-										:list="organization.businessLicense ? JSON.parse(organization.businessLicense):[]">
-									</upload>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-		<el-dialog :close-on-click-modal="false" title="编辑" :visible.sync="visible" width="900px"
-			:append-to-body="true">
-			<edit v-if="visible" @callback="callback"></edit>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	const upload = () => import('@/components/common/upload');
-	const edit = () => import('@/components/work/organization/manager/edit');
-	export default {
-		data() {
-			return {
-				organization: {},
-				logoUrl: '',
-				address: '',
-				visible: false
-			}
-		},
-		mounted() {
-			this.init();
-		},
-		methods: {
-			init() {
-				if (!this.auth('/work/organization/manager/information')) return;
-				this.organization = this.$store.getters.organization;
-				if (this.organization.address) {
-					let address = JSON.parse(this.organization.address);
-					this.address = address.join('-') + '-' + (this.organization.detailAddress || '');
-				}
-				let logo = !this.organization.logo ? {} : JSON.parse(this.organization.logo);
-				this.logoUrl = logo.url;
-
-			},
-			async copyText(code) {
-				try {
-					await navigator.clipboard.writeText(code);
-					this.$message.success('复制成功')
-				} catch (error) {
-					this.$message.success('复制失败')
-				}
-			},
-			callback(type) {
-				this.visible = false;
-				if (type === 'init') this.init();
-			}
-		},
-		components: {
-			upload,
-			edit
-		},
-	}
-</script>
-
-<style lang="scss">
-	.manager-index {
-		width: 70%;
-		max-width: 1200px;
-		margin: 0 auto;
-
-		.manager-update {
-			padding: 12px 0;
-			text-align: right;
-		}
-
-		.manager-content {
-			background: $--background-color-base;
-			border-radius: 2px;
-			height: auto;
-		}
-
-		.manager-title {
-			display: flex;
-			align-items: center;
-			padding: 32px;
-			position: relative;
-		}
-
-		.manager-title::before {
-			content: '';
-			position: absolute;
-			left: 32px;
-			right: 32px;
-			bottom: 0;
-			height: 1px;
-			background-color: $--border-color-light;
-		}
-
-		.manager-logo {
-			width: 48px;
-			height: 48px;
-			border-radius: 4px;
-			overflow: hidden;
-			margin-right: 18px;
-			border: 1px solid $--border-color-light;
-
-			.el-image {
-				width: 100%;
-				height: 100%;
-
-				.image-slot {
-					width: 100%;
-					height: 100%;
-					text-align: center;
-					line-height: 48px;
-				}
-			}
-		}
-
-		.manager-name {
-			font-size: 18px;
-		}
-
-		.manager-box {
-			padding: 32px 32px 16px 32px;
-			display: flex;
-			flex-wrap: wrap;
-
-			.manager-item {
-				width: 50%;
-				margin-bottom: 32px;
-
-				.manager-label {
-					opacity: 0.6;
-					line-height: 20px;
-					margin-bottom: 8px;
-				}
-
-				.manager-value {
-					line-height: 20px;
-				}
-
-				.el-icon-copy-document {
-					margin-left: 5px;
-					cursor: pointer;
-				}
-			}
-		}
-	}
+<template>
+	<div class="hui-flex hui-content border-box">
+		<div class="hui-content-title">
+			<div class="hui-title-item active">公司管理</div>
+		</div>
+		<div class="hui-flex-box">
+			<div class="manager-index hui-flex hui-table">
+				<div class="hui-content-insert" style="text-align: right;">
+					<el-button v-permission="'/work/organization/manager/update'" type="primary" size="small"
+						@click="visible = true">
+						修改
+					</el-button>
+				</div>
+				<div class="hui-flex-box">
+					<div class="manager-content">
+						<div class="manager-title">
+							<div class="manager-logo">
+								<el-image v-if="logoUrl" :src="logoUrl" fit="cover"></el-image>
+								<div class="el-image" v-else>
+									<div class="image-slot"><i class="el-icon-picture-outline"></i></div>
+								</div>
+							</div>
+							<div class="manager-name">{{organization.name}}</div>
+						</div>
+						<div class="manager-box">
+							<div class="manager-item">
+								<div class="manager-label">公司代码</div>
+								<div class="manager-value">
+									{{organization.organizationCode}}
+									<i class="el-icon-copy-document color-primary" title="点击复制"
+										@click="copyText(organization.organizationCode)"></i>
+								</div>
+							</div>
+							<div class="manager-item">
+								<div class="manager-label">联系人</div>
+								<div class="manager-value">{{organization.contact}}</div>
+							</div>
+							<div class="manager-item">
+								<div class="manager-label">公司地址</div>
+								<div class="manager-value">{{address}}</div>
+							</div>
+							<div class="manager-item">
+								<div class="manager-label">联系方式</div>
+								<div class="manager-value">{{organization.contactTel}}</div>
+							</div>
+							<div class="manager-item" style="width: 100%;">
+								<div class="manager-label">公司简介</div>
+								<div class="manager-value">{{organization.introduction}}</div>
+							</div>
+							<div class="manager-item" style="width: 100%;">
+								<div class="manager-label">附件</div>
+								<div class="manager-value">
+									<upload
+										:list="organization.businessLicense ? JSON.parse(organization.businessLicense):[]">
+									</upload>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<el-dialog :close-on-click-modal="false" title="编辑" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<edit v-if="visible" @callback="callback"></edit>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	const upload = () => import('@/components/common/upload');
+	const edit = () => import('@/components/work/organization/manager/edit');
+	export default {
+		data() {
+			return {
+				organization: {},
+				logoUrl: '',
+				address: '',
+				visible: false
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				if (!this.auth('/work/organization/manager/information')) return;
+				this.organization = this.$store.getters.organization;
+				if (this.organization.address) {
+					let address = JSON.parse(this.organization.address);
+					this.address = address.join('-') + '-' + (this.organization.detailAddress || '');
+				}
+				let logo = !this.organization.logo ? {} : JSON.parse(this.organization.logo);
+				this.logoUrl = logo.url;
+
+			},
+			async copyText(code) {
+				try {
+					await navigator.clipboard.writeText(code);
+					this.$message.success('复制成功')
+				} catch (error) {
+					this.$message.success('复制失败')
+				}
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			}
+		},
+		components: {
+			upload,
+			edit
+		},
+	}
+</script>
+
+<style lang="scss">
+	.manager-index {
+		width: 70%;
+		max-width: 1200px;
+		margin: 0 auto;
+
+		.manager-update {
+			padding: 12px 0;
+			text-align: right;
+		}
+
+		.manager-content {
+			background: $--background-color-base;
+			border-radius: 2px;
+			height: auto;
+		}
+
+		.manager-title {
+			display: flex;
+			align-items: center;
+			padding: 32px;
+			position: relative;
+		}
+
+		.manager-title::before {
+			content: '';
+			position: absolute;
+			left: 32px;
+			right: 32px;
+			bottom: 0;
+			height: 1px;
+			background-color: $--border-color-light;
+		}
+
+		.manager-logo {
+			width: 48px;
+			height: 48px;
+			border-radius: 4px;
+			overflow: hidden;
+			margin-right: 18px;
+			border: 1px solid $--border-color-light;
+
+			.el-image {
+				width: 100%;
+				height: 100%;
+
+				.image-slot {
+					width: 100%;
+					height: 100%;
+					text-align: center;
+					line-height: 48px;
+				}
+			}
+		}
+
+		.manager-name {
+			font-size: 18px;
+		}
+
+		.manager-box {
+			padding: 32px 32px 16px 32px;
+			display: flex;
+			flex-wrap: wrap;
+
+			.manager-item {
+				width: 50%;
+				margin-bottom: 32px;
+
+				.manager-label {
+					opacity: 0.6;
+					line-height: 20px;
+					margin-bottom: 8px;
+				}
+
+				.manager-value {
+					line-height: 20px;
+				}
+
+				.el-icon-copy-document {
+					margin-left: 5px;
+					cursor: pointer;
+				}
+			}
+		}
+	}
 </style>

+ 123 - 122
virgo.wzfrontend/workark/src/views/work/organization/seal.vue

@@ -1,123 +1,124 @@
-<template>
-	<div class="hui-flex hui-content border-box">
-		<div class="hui-content-title">
-			<div class="hui-title-item active">印章列表</div>
-		</div>
-		<div class="hui-flex-box hui-flex hui-table">
-			<div class="hui-content-insert">
-				<el-button v-permission="'/work/organization/seal/add'" type="primary" size="small"
-					@click="insertSeal">新增印章</el-button>
-			</div>
-			<div class="hui-flex-box">
-				<el-table :data="tableData" row-key="id" 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="印章类型">
-						<template slot-scope="scope">
-							<span>{{$field.findTypeName('sealType',scope.row.type)}}</span>
-						</template>
-					</el-table-column>
-					<el-table-column label="印章描述" prop="comment"></el-table-column>
-					<el-table-column label="操作" width="150" align="center">
-						<template slot-scope="scope">
-							<div class="hui-table-operation">
-								<span class="table-operation" v-permission="'/work/organization/seal/detail'"
-									@click="lookSeal(scope.row)">
-									详情
-								</span>
-								<span class="table-operation" v-permission="'/work/organization/seal/update'"
-									@click="updateSeal(scope.row)">
-									编辑
-								</span>
-								<span class="table-operation" v-permission="'/work/organization/seal/delete'"
-									@click="deleteSeal(scope.row)">
-									删除
-								</span>
-							</div>
-						</template>
-					</el-table-column>
-					<template slot="empty">
-						<el-empty description="暂无数据"></el-empty>
-					</template>
-				</el-table>
-			</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"></edit>
-		</el-dialog>
-		<el-drawer title="项目详情" :visible.sync="drawer" :size="400" :append-to-body="true">
-			<detail v-if="drawer" :detailId="detailId"></detail>
-		</el-drawer>
-	</div>
-</template>
-
-<script>
-	import {
-		getSealList,
-		deleteSeal
-	} from '@/api/organization'
-	const edit = () => import('@/components/work/organization/seal/edit');
-	const detail = () => import('@/components/work/organization/seal/detail');
-	export default {
-		data() {
-			return {
-				tableData: [],
-				visible: false,
-				detailId: '',
-				isUpdate: false,
-				drawer: false
-			}
-		},
-		mounted() {
-			this.init();
-		},
-		methods: {
-			init() {
-				if (!this.auth('/work/organization/seal/list')) return;
-				getSealList(this.$store.getters.organization.id).then(res => {
-					if (res.state) {
-						this.tableData = res.data;
-					}
-				})
-			},
-			insertSeal() {
-				this.isUpdate = false;
-				this.visible = true;
-			},
-			updateSeal(item) {
-				this.detailId = item.id;
-				this.isUpdate = true;
-				this.visible = true;
-			},
-			lookSeal(item) {
-				this.detailId = item.id;
-				this.drawer = true;
-			},
-			deleteSeal(item) {
-				this.$confirm('确定要删除该印章?', () => {
-					deleteSeal(item.id).then(res => {
-						if (res.state) {
-							this.init();
-							this.$message.success('操作成功');
-						}
-					})
-				});
-			},
-			callback(type) {
-				if (type === 'init') this.init();
-				this.visible = false;
-			}
-		},
-		components: {
-			edit,
-			detail
-		},
-	}
-</script>
-
+<template>
+	<div class="hui-flex hui-content border-box">
+		<div class="hui-content-title">
+			<div class="hui-title-item active">印章列表</div>
+		</div>
+		<div class="hui-flex-box hui-flex hui-table">
+			<div class="hui-content-insert">
+				<el-button v-permission="'/work/organization/seal/add'" type="primary" size="small" @click="insertSeal">
+					新增印章
+				</el-button>
+			</div>
+			<div class="hui-flex-box">
+				<el-table :data="tableData" row-key="id" 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="印章类型">
+						<template slot-scope="scope">
+							<span>{{$field.findTypeName('sealType',scope.row.type)}}</span>
+						</template>
+					</el-table-column>
+					<el-table-column label="印章描述" prop="comment"></el-table-column>
+					<el-table-column label="操作" width="150" align="center">
+						<template slot-scope="scope">
+							<div class="hui-table-operation">
+								<span class="table-operation" v-permission="'/work/organization/seal/detail'"
+									@click="lookSeal(scope.row)">
+									详情
+								</span>
+								<span class="table-operation" v-permission="'/work/organization/seal/update'"
+									@click="updateSeal(scope.row)">
+									编辑
+								</span>
+								<span class="table-operation" v-permission="'/work/organization/seal/delete'"
+									@click="deleteSeal(scope.row)">
+									删除
+								</span>
+							</div>
+						</template>
+					</el-table-column>
+					<template slot="empty">
+						<el-empty description="暂无数据"></el-empty>
+					</template>
+				</el-table>
+			</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"></edit>
+		</el-dialog>
+		<el-drawer title="项目详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :detailId="detailId"></detail>
+		</el-drawer>
+	</div>
+</template>
+
+<script>
+	import {
+		getSealList,
+		deleteSeal
+	} from '@/api/organization'
+	const edit = () => import('@/components/work/organization/seal/edit');
+	const detail = () => import('@/components/work/organization/seal/detail');
+	export default {
+		data() {
+			return {
+				tableData: [],
+				visible: false,
+				detailId: '',
+				isUpdate: false,
+				drawer: false
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		methods: {
+			init() {
+				if (!this.auth('/work/organization/seal/list')) return;
+				getSealList(this.$store.getters.organization.id).then(res => {
+					if (res.state) {
+						this.tableData = res.data;
+					}
+				})
+			},
+			insertSeal() {
+				this.isUpdate = false;
+				this.visible = true;
+			},
+			updateSeal(item) {
+				this.detailId = item.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			lookSeal(item) {
+				this.detailId = item.id;
+				this.drawer = true;
+			},
+			deleteSeal(item) {
+				this.$confirm('确定要删除该印章?', () => {
+					deleteSeal(item.id).then(res => {
+						if (res.state) {
+							this.init();
+							this.$message.success('操作成功');
+						}
+					})
+				});
+			},
+			callback(type) {
+				if (type === 'init') this.init();
+				this.visible = false;
+			}
+		},
+		components: {
+			edit,
+			detail
+		},
+	}
+</script>
+
 <style lang="scss"></style>

+ 21 - 3
virgo.wzfrontend/workark/src/views/work/organization/user.vue

@@ -39,6 +39,7 @@
 							@click="insertUser" :disabled="!part.id">
 							新增成员
 						</el-button>
+						<div class="part-parent-node" style="margin-top: 10px;">部门:{{part.parentName.join('-')}}</div>
 					</div>
 					<div class="hui-flex-box">
 						<el-table :data="tableData" row-key="id" height="100%">
@@ -112,8 +113,8 @@
 	} from '@/api/organization'
 	const role = () => import('@/components/work/organization/user/role');
 	const edit = () => import('@/components/work/organization/user/edit');
-	const detail = () => import('@/components/work/organization/user/detail');
-	
+	const detail = () => import('@/components/work/organization/user/detail');
+
 	export default {
 		data() {
 			return {
@@ -125,7 +126,9 @@
 					children: 'children',
 					label: 'name'
 				},
-				part: {},
+				part: {
+					parentName: []
+				},
 				visible: false,
 				user: {},
 				drawer: false,
@@ -147,9 +150,24 @@
 				getPartList(this.organization.id, this.project.id).then(res => {
 					if (res.state) {
 						this.treeData = res.data;
+						this.returnNode(this.treeData);
 					}
 				})
 			},
+			returnNode(data, parentName) {
+				for (let i = 0; i < data.length; i++) {
+					if (!parentName) {
+						data[i]['parentName'] = [data[i].name];
+					} else {
+						let arr = JSON.parse(JSON.stringify(parentName));
+						arr.push(data[i].name)
+						data[i]['parentName'] = arr;
+					}
+					if (data[i].children && data[i].children.length > 0) {
+						this.returnNode(data[i].children, data[i]['parentName'])
+					}
+				}
+			},
 			changeCollapse(part) {
 				setTimeout(() => {
 					this.selectPart(part)

+ 4 - 3
virgo.wzfrontend/workark/src/views/work/serve/list.vue

@@ -50,12 +50,12 @@
 							<div class="hui-table-operation">
 								<span v-if="nowTitle.id === 1 && scope.row.orderStatus === '支付成功'">
 									<span class="table-operation" v-if="!scope.row.invoice"
-										@click="applyInvoice(scope.row)">
+										@click="applyInvoice(scope.row)" v-permission="'/work/serve/list/hightech/openInvoice'">
 										开具发票
 									</span>
 									<span class="color-warning" v-else-if="!scope.row.invoice.state">开具中</span>
 									<span class="color-success" style="cursor: pointer;" v-else
-										@click="lookOrder(scope.row,2)">
+										@click="lookOrder(scope.row,2)" v-permission="'/work/serve/list/hightech/lookInvoice'">
 										查看发票
 									</span>
 								</span>
@@ -65,7 +65,7 @@
 					<el-table-column label="操作" align="center" width="100">
 						<template slot-scope="scope">
 							<div class="hui-table-operation">
-								<span class="table-operation" v-permission="'/work/property/change/detail'"
+								<span class="table-operation" v-permission="'/work/serve/list/hightech/detail'"
 									@click="lookItem(scope.row,1)">
 									详情
 								</span>
@@ -151,6 +151,7 @@
 		},
 		methods: {
 			init() {
+				if (!this.auth(`/work/serve/list/${this.$route.params.type}/list`)) return;
 				let filterOption = {
 					productLevelId: this.level.id
 				};