whx пре 2 месеци
родитељ
комит
b4f3df44d8

+ 11 - 0
virgo.wzfrontend/workark/src/api/system.js

@@ -97,4 +97,15 @@ export function deleteServeDepartment(id) {
 		url: `/api/workarkProductLevel/${id}`,
 		method: 'delete'
 	})
+}
+/* 
+ * 根据标识获取服务
+ * 
+ * 
+ */
+export function getServeDepartmentBySign(sign) {
+	return request({
+		url: `/api/workarkProductLevel/getSign/${sign}`,
+		method: 'get'
+	})
 }

+ 8 - 0
virgo.wzfrontend/workark/src/components/work/serve/content/edit.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 58 - 58
virgo.wzfrontend/workark/src/components/work/system/main/edit.vue

@@ -1,59 +1,59 @@
-<template>
-	<div class="hui-flex hui-dialog">
-		<div class="hui-flex-box hui-dialog-content">
-			<el-form ref="menuForm" :model="menuForm" label-position="top">
-				<el-form-item label="菜单名称">
-					<el-input v-model="menuForm.title"></el-input>
-				</el-form-item>
-				<el-form-item label="菜单URL">
-					<el-input v-model="menuForm.index"></el-input>
-				</el-form-item>
-				<el-form-item label="菜单图标">
-					<el-input v-model="menuForm.iconClass"></el-input>
-				</el-form-item>
-				<el-form-item label="是否菜单">
-					<el-radio v-model="menuForm.isMenu" label="1">是</el-radio>
-					<el-radio v-model="menuForm.isMenu" label="2">否</el-radio>
-				</el-form-item>
-			</el-form>
-		</div>
-		<div class="hui-dialog-submit">
-			<el-button size="small" @click="$emit('callback')">取 消</el-button>
-			<el-button size="small" type="primary" @click="submit">保 存</el-button>
-		</div>
-	</div>
-</template>
-
-<script>
-	export default {
-		props: ['updateData'],
-		data() {
-			return {
-				menuForm: {
-					title: '',
-					index: '',
-					iconClass: '',
-					isMenu: '1'
-				}
-			}
-		},
-		mounted() {
-			let _self = this;
-			if (_self.updateData.id) _self.menuForm = _self.updateData;
-		},
-		methods: {
-			sureIncrease() { //返回新增数据
-				let _self = this;
-				if (_self.menuForm.index == '') delete _self.menuForm.index;
-				return _self.menuForm;
-			},
-			submit() {
-				this.$emit('sure')
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-
+<template>
+	<div class="hui-flex hui-dialog">
+		<div class="hui-flex-box hui-dialog-content">
+			<el-form ref="menuForm" :model="menuForm" label-position="top">
+				<el-form-item label="菜单名称">
+					<el-input v-model="menuForm.title"></el-input>
+				</el-form-item>
+				<el-form-item label="菜单URL">
+					<el-input v-model="menuForm.index"></el-input>
+				</el-form-item>
+				<el-form-item label="菜单图标">
+					<el-input v-model="menuForm.iconClass"></el-input>
+				</el-form-item>
+				<el-form-item label="是否菜单">
+					<el-radio v-model="menuForm.isMenu" label="1">是</el-radio>
+					<el-radio v-model="menuForm.isMenu" label="2">否</el-radio>
+				</el-form-item>
+			</el-form>
+		</div>
+		<div class="hui-dialog-submit">
+			<el-button size="small" @click="$emit('callback')">取 消</el-button>
+			<el-button size="small" type="primary" @click="submit">保 存</el-button>
+		</div>
+	</div>
+</template>
+
+<script>
+	export default {
+		props: ['updateData'],
+		data() {
+			return {
+				menuForm: {
+					title: '',
+					index: '',
+					iconClass: '',
+					isMenu: '1'
+				}
+			}
+		},
+		mounted() {
+			let _self = this;
+			if (_self.updateData.id) _self.menuForm = _self.updateData;
+		},
+		methods: {
+			sureIncrease() { //返回新增数据
+				let _self = this;
+				if (_self.menuForm.index == '') delete _self.menuForm.index;
+				return _self.menuForm;
+			},
+			submit() {
+				this.$emit('sure')
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+
 </style>

+ 6 - 2
virgo.wzfrontend/workark/src/components/work/system/serveSet/departForm.vue

@@ -5,8 +5,11 @@
 				<el-form-item label="服务名称">
 					<el-input type="text" v-model="departmentForm.name" placeholder="请输入服务名称"></el-input>
 				</el-form-item>
-				<el-form-item label="服务描述">
-					<el-input type="text" v-model="departmentForm.remark" placeholder="请输入服务描述"></el-input>
+				<el-form-item label="服务标识">
+					<el-input type="text" v-model="departmentForm.sign" placeholder="请输入服务名称"></el-input>
+				</el-form-item>
+				<el-form-item label="服务描述" class="hui-textarea">
+					<el-input type="textarea" v-model="departmentForm.remark" placeholder="请输入服务描述" resize="none"></el-input>
 				</el-form-item>
 			</el-form>
 		</div>
@@ -28,6 +31,7 @@
 			return {
 				departmentForm: {
 					name: '',
+					sign: '',
 					remark: '',
 					parentId: -1
 				},

+ 3 - 2
virgo.wzfrontend/workark/src/layout/components/breadCrumb.vue

@@ -3,8 +3,9 @@
 		<div class="crumb-box">
 			<div class="crumb-item" v-for="(item,index) in levelList" :key="index">
 				<span>{{item}}</span>
-				<span class="tips" v-if="index !== levelList.length - 1"><i
-						class="iconfont huifont-xiala-right"></i></span>
+				<span class="tips" v-if="index !== levelList.length - 1">
+					<i class="iconfont huifont-xiala-right"></i>
+				</span>
 			</div>
 		</div>
 	</div>

+ 4 - 4
virgo.wzfrontend/workark/src/layout/components/subMenu.vue

@@ -1,17 +1,17 @@
 <template>
 	<div>
 		<template v-for="(item,index) in menuData">
-			<div v-if="item.isMenu === '1'" :class="'menu-index-'+menuIndex">
-				<el-submenu :index="item.title"
+			<div v-if="item.isMenu === '1'" :class="'menu-index-' + menuIndex">
+				<el-submenu :index="String(item.id)"
 					v-if="item.children && item.children.length > 0 && item.children.filter(node=>node.isMenu==='1').length > 0"
-					:key="index">
+					:key="item.id">
 					<template slot="title">
 						<i v-if="item.iconClass" :class="item.iconClass + ' icon iconfont'"></i>
 						<span slot="title" class="menu-title">{{item.title}}</span>
 					</template>
 					<sub-menu :menuData="item.children" :menuIndex="menuIndex+1"></sub-menu>
 				</el-submenu>
-				<el-menu-item :index="item.index" v-else :key="index" :name="item.index">
+				<el-menu-item :index="item.index" v-else :key="item.id" :name="item.index">
 					<i v-if="item.iconClass" :class="item.iconClass + ' icon'"></i>
 					<span slot="title" class="menu-title">{{item.title}}</span>
 				</el-menu-item>

+ 5 - 5
virgo.wzfrontend/workark/src/layout/workLayout.vue

@@ -3,7 +3,7 @@
 		<top-nav></top-nav>
 		<div :class="isCollapse ? 'small-main work-layout-main':'work-layout-main'">
 			<div class="app-main-box">
-				<el-menu router :default-active="$route.path" :collapse="isCollapse" :collapse-transition="false">
+				<el-menu router :default-active="key" :collapse="isCollapse" :collapse-transition="false">
 					<sub-menu :menuData="menuList" :menuIndex="1"></sub-menu>
 				</el-menu>
 			</div>
@@ -174,7 +174,7 @@
 
 					.el-menu-item,
 					.el-submenu__title {
-						padding-left: 50px !important;
+						padding-left: 45px !important;
 					}
 				}
 
@@ -182,7 +182,7 @@
 
 					.el-menu-item,
 					.el-submenu__title {
-						padding-left: 60px !important;
+						padding-left: 50px !important;
 					}
 				}
 
@@ -190,7 +190,7 @@
 
 					.el-menu-item,
 					.el-submenu__title {
-						padding-left: 70px !important;
+						padding-left: 55px !important;
 					}
 				}
 
@@ -198,7 +198,7 @@
 
 					.el-menu-item,
 					.el-submenu__title {
-						padding-left: 80px !important;
+						padding-left: 60px !important;
 					}
 				}
 			}

+ 8 - 1
virgo.wzfrontend/workark/src/router/modules/work/serve.js

@@ -1,9 +1,16 @@
 const serve = [{
-	path: 'serve/list',
+	path: 'serve/list/:type',
 	component: () => import('@/views/work/serve/list'),
 	name: '服务列表',
 	meta: {
 		title: '服务列表'
 	}
+},{
+	path: 'serve/content/:type',
+	component: () => import('@/views/work/serve/content'),
+	name: '服务商品',
+	meta: {
+		title: '服务商品'
+	}
 }]
 export default serve;

+ 1 - 72
virgo.wzfrontend/workark/src/uitls/index.js

@@ -301,7 +301,7 @@ export function findParentIds(dataSource, nodeId) {
 	return parentIds; // 返回所有父节点ID的数组
 }
 /**
- * 根据树子节点ID查找所有父节点ID
+ * 根据树子节点ID查找所有父节点Label
  * @param {array} dataSource 树形结构数据源
  * @param {number} nodeId 子节点ID
  * @returns {array} 包含所有父节点ID的数组,按照从根节点到直接父节点的顺序排序
@@ -384,77 +384,6 @@ export function findParent(dataSource, node) {
 	parent.push(node);
 	return parent; // 返回所有父节点ID的数组
 }
-/**
- * 返回项目单位建筑房间的层级关系
- * @param {array} data 树形结构数据源
- * @returns {array} 
- */
-export function roomList(data) {
-	let newArr = JSON.parse(JSON.stringify(data));
-	let index = 1;
-	newArr = newArr.map(item => {
-		item['projectItemId'] = item['id'];
-		item['id'] = index;
-		item['projectItem'] = item;
-		item['optionName'] = item['name'];
-		index++;
-		item['children'] = item.projectItemTargetList.map(target => {
-			target['projectItemTargetId'] = target['id'];
-			target['id'] = index;
-			target['projectItem'] = item;
-			target['optionName'] = target['name'];
-			index++;
-			if (target.projectItemTargetRoomList) target['children'] = target.projectItemTargetRoomList
-				.map(room => {
-					room['roomId'] = room['id'];
-					room['id'] = index;
-					room['projectItem'] = item;
-					room['projectItemTarget'] = target;
-					room['optionName'] = room['roomNumber'];
-					index++;
-					return room;
-				})
-			return target
-		})
-		return item;
-	})
-	return newArr;
-}
-/**
- * 返回项目单位建筑房间选择的层级关系
- * @param {array} data 树形结构数据源
- * @returns {array} 
- */
-export function roomCheckedList(data, roomIds) {
-	let newArr = JSON.parse(JSON.stringify(data));
-	let index = 1;
-	newArr = newArr.map(item => {
-		item['projectItemId'] = item['id'];
-		item['id'] = index;
-		item['projectItem'] = item;
-		item['optionName'] = item['name'];
-		index++;
-		item['children'] = item.projectItemTargetList.map(target => {
-			target['projectItemTargetId'] = target['id'];
-			target['id'] = index;
-			target['projectItem'] = item;
-			target['optionName'] = target['name'];
-			index++;
-			target['children'] = target.projectItemTargetRoomList.map(room => {
-				room['roomId'] = room['id'];
-				room['id'] = index;
-				room['projectItem'] = item;
-				room['projectItemTarget'] = target;
-				room['optionName'] = room['roomNumber'];
-				index++;
-				return room;
-			}).filter(room => roomIds.filter(node => node == room.roomId).length > 0);
-			return target
-		}).filter(target => target.children.length > 0);
-		return item;
-	}).filter(target => target.children.length > 0);
-	return newArr;
-}
 /**
  * 返回sheet去除data里null数据
  * @param {array} data 结构数据源

+ 0 - 2
virgo.wzfrontend/workark/src/views/work/property/change.vue

@@ -25,8 +25,6 @@
 								<el-table-column label="资产名称" prop="name"></el-table-column>
 								<el-table-column label="变更类型" prop="type"></el-table-column>
 								<el-table-column label="资产编码" prop="assetNumber"></el-table-column>
-								<el-table-column label="单位建筑" prop="projectItemName"></el-table-column>
-								<el-table-column label="具体位置" prop="projectItemTargetName"></el-table-column>
 								<el-table-column label="创建者" prop="createdByUserName"></el-table-column>
 								<el-table-column label="状态">
 									<template slot-scope="scope">

+ 0 - 2
virgo.wzfrontend/workark/src/views/work/property/register.vue

@@ -39,8 +39,6 @@
 									</template>
 								</el-table-column>
 								<el-table-column label="资产编码" prop="assetNumber"></el-table-column>
-								<el-table-column label="单位建筑" prop="projectItemName"></el-table-column>
-								<el-table-column label="具体位置" prop="projectItemTargetName"></el-table-column>
 								<el-table-column label="型号" prop="deviceModel"></el-table-column>
 								<el-table-column label="创建者" prop="createdByUserName"></el-table-column>
 								<el-table-column label="状态" sortable>

+ 159 - 0
virgo.wzfrontend/workark/src/views/work/serve/content.vue

@@ -0,0 +1,159 @@
+<template>
+	<div class="hui-flex hui-content border-box">
+		<div class="hui-content-title">
+			<div class="hui-title-item active">{{titleName}}</div>
+		</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>
+			</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="变更类型" prop="type"></el-table-column>
+					<el-table-column label="资产编码" prop="assetNumber"></el-table-column>
+					<el-table-column label="创建者" prop="createdByUserName"></el-table-column>
+					<el-table-column label="状态">
+						<template slot-scope="scope">
+							<div v-if="!scope.row.state" class="hui-state">
+								<span class="hui-state-bage hui-state-primary"></span>
+								<span class="hui-state-label">待生成</span>
+							</div>
+						</template>
+					</el-table-column>
+					<el-table-column label="操作" width="150">
+						<template slot-scope="scope">
+							<div class="hui-table-operation">
+								<span class="table-operation" v-permission="'/work/property/change/detail'"
+									@click="lookFlow(scope.row)">
+									详情
+								</span>
+								<span class="table-operation" v-permission="'/work/property/change/update'"
+									v-if="!scope.row.projectFlowId" @click="updateFlow(scope.row)">
+									编辑
+								</span>
+								<span class="table-operation" v-permission="'/work/property/change/delete'"
+									v-if="!scope.row.projectFlowId" @click="deleteFlow(scope.row)">
+									删除
+								</span>
+							</div>
+						</template>
+					</el-table-column>
+					<template slot="empty">
+						<el-empty description="暂无数据"></el-empty>
+					</template>
+				</el-table>
+			</div>
+			<div class="hui-content-pagination">
+				<el-pagination :pager-count="9" layout="prev, pager, next" :page-size="pageSize" :total="totalCount"
+					@current-change="currentChange" background>
+				</el-pagination>
+			</div>
+		</div>
+		<el-dialog :close-on-click-modal="false" :title="isUpdate?'编辑':'新增'" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<edit v-if="visible" :isUpdate="isUpdate" @callback="callback" :detailId="detailId">
+			</edit>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	const edit = () => import('@/components/work/serve/content/edit');
+	import {
+		getServeDepartmentBySign
+	} from '@/api/system'
+	export default {
+		data() {
+			return {
+				titleName: '',
+				tableData: [],
+				currPage: 1,
+				pageSize: 10,
+				totalCount: 0,
+				isUpdate: false,
+				visible: false,
+				detailId: '',
+				level: {}
+			}
+		},
+		mounted() {
+			let title = this.getTitleNameByPath() || {
+				title: '服务商品'
+			};
+			this.titleName = title.title;
+			getServeDepartmentBySign(this.$route.params.type).then(res => {
+				if (res.state && res.data) {
+					this.level = res.data;
+					this.init();
+				}
+			})
+
+		},
+		methods: {
+			init() {
+
+			},
+			currentChange(currPage) {
+				this.currPage = currPage;
+				this.init();
+			},
+			insert() {
+				this.visible = true;
+				this.isUpdate = false;
+			},
+			lookFlow(val) {
+				this.detailId = val.id;
+				this.drawer = true;
+			},
+			updateFlow(val) {
+				this.detailId = val.id;
+				this.isUpdate = true;
+				this.visible = true;
+			},
+			deleteFlow(val) {
+				this.$confirm('确定要删除该流程?', () => {
+					deleteFlow(val.id).then(res => {
+						if (res.state) {
+							this.$message.success('操作成功');
+							this.init();
+						}
+					})
+				});
+			},
+			callback(type) {
+				this.visible = false;
+				if (type === 'init') this.init();
+			},
+			getTitleNameByPath() {
+				function findNodeById(nodes, index) {
+					for (const node of nodes) {
+						if (node.index === index) {
+							return node; // 找到匹配的节点,直接返回
+						}
+						// 检查子节点是否存在且为数组
+						if (Array.isArray(node.children)) {
+							const found = findNodeById(node.children, index); // 递归查找子节点
+							if (found) return found;
+						}
+					}
+					return null; // 遍历结束未找到,返回 null
+				}
+				return findNodeById(this.$store.getters.menuData, this.$route.path);
+			}
+		},
+		components: {
+			edit
+		}
+	}
+</script>
+
+<style>
+</style>

+ 32 - 1
virgo.wzfrontend/workark/src/views/work/serve/list.vue

@@ -1,13 +1,44 @@
 <template>
 	<div class="hui-flex hui-content border-box">
 		<div class="hui-content-title">
-			<div class="hui-title-item active">服务列表</div>
+			<div class="hui-title-item active">{{titleName}}</div>
 		</div>
 		
 	</div>
 </template>
 
 <script>
+	export default {
+		data() {
+			return {
+				titleName: ''
+			}
+		},
+		mounted() {
+			let title = this.getTitleNameByPath() || {
+				title: '服务列表'
+			};
+			this.titleName = title.title;
+		},
+		methods: {
+			getTitleNameByPath() {
+				function findNodeById(nodes, index) {
+					for (const node of nodes) {
+						if (node.index === index) {
+							return node; // 找到匹配的节点,直接返回
+						}
+						// 检查子节点是否存在且为数组
+						if (Array.isArray(node.children)) {
+							const found = findNodeById(node.children, index); // 递归查找子节点
+							if (found) return found;
+						}
+					}
+					return null; // 遍历结束未找到,返回 null
+				}
+				return findNodeById(this.$store.getters.menuData, this.$route.path);
+			}
+		}
+	}
 </script>
 
 <style>

+ 2 - 0
virgo.wzfrontend/workark/src/views/work/system/main.vue

@@ -12,6 +12,8 @@
 					<el-table-column prop="title" label="菜单名称" width="180">
 					</el-table-column>
 					<el-table-column prop="iconClass" label="菜单图标" width="180">
+					</el-table-column>
+					<el-table-column prop="params" label="参数" width="180">
 					</el-table-column>
 					<el-table-column prop="index" label="菜单URL">
 					</el-table-column>

+ 2 - 0
virgo.wzfrontend/workark/src/views/work/system/serveSet.vue

@@ -11,7 +11,9 @@
 			</div>
 			<div class="hui-flex-box">
 				<el-table :data="treeData" row-key="id" height="100%" v-loading="loading">
+					<el-table-column label="" width="45"></el-table-column>
 					<el-table-column label="服务名称" prop="name"></el-table-column>
+					<el-table-column label="服务标识" prop="sign"></el-table-column>
 					<el-table-column label="服务描述" prop="remark"></el-table-column>
 					<el-table-column label="操作" width="240">
 						<template slot-scope="scope">