From 85a0bba3b54036fe0652d5188274cb1cf9000306 Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期五, 29 三月 2024 18:28:57 +0800
Subject: [PATCH] 1

---
 src/views/console/authority/role/save.vue       |  106 ++
 src/views/console/authority/role/index.vue      |  170 +++
 src/views/monitor/log/error.vue                 |  212 ++++
 src/views/master/person/main/personPost.vue     |   33 
 src/views/console/authority/role/permission.vue |  151 +++
 src/views/console/system/addUser.vue            |  188 ++++
 src/views/console/system/addMenu.vue            |  217 ++++
 src/views/console/system/user.vue               |  219 ++++
 src/views/console/soam/oss-system.vue           |  161 +++
 src/views/console/system/allocationDialog.vue   |  218 ++++
 src/views/console/system/menu.vue               |  217 ++++
 src/views/monitor/log/usual.vue                 |  212 ++++
 src/views/monitor/log/api.vue                   |  212 ++++
 src/views/console/system/SubitemAddDict.vue     |  179 +++
 src/views/console/system/addDict.vue            |   26 
 src/views/console/system/dict.vue               |  218 +---
 16 files changed, 2,547 insertions(+), 192 deletions(-)

diff --git a/src/views/console/authority/role/index.vue b/src/views/console/authority/role/index.vue
new file mode 100644
index 0000000..d987e5a
--- /dev/null
+++ b/src/views/console/authority/role/index.vue
@@ -0,0 +1,170 @@
+<template>
+	<el-container>
+		<el-header>
+			<div class="left-panel">
+				<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
+				<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
+				<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">鏉冮檺璁剧疆</el-button>
+			</div>
+			<div class="right-panel">
+				<div class="right-panel-search">
+					<el-input v-model="search.keyword" placeholder="瑙掕壊鍚嶇О" clearable></el-input>
+					<el-button type="primary" icon="el-icon-search" @click="upsearch"></el-button>
+				</div>
+			</div>
+		</el-header>
+		<el-main class="nopadding">
+			<scTable ref="table" :apiObj="apiObj" row-key="id" @selection-change="selectionChange" stripe>
+				<el-table-column type="selection" width="50"></el-table-column>
+				<el-table-column label="#" type="index" width="50"></el-table-column>
+				<el-table-column label="瑙掕壊鍚嶇О" prop="label" width="150"></el-table-column>
+				<el-table-column label="鎺掑簭" prop="sort" width="80"></el-table-column>
+				<el-table-column label="鎿嶄綔" fixed="right" align="right" width="170">
+					<template #default="scope">
+						<el-button-group>
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+							<el-button text type="primary" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+							<el-popconfirm title="纭畾鍒犻櫎鍚楋紵" @confirm="table_del(scope.row, scope.$index)">
+								<template #reference>
+									<el-button text type="primary" size="small">鍒犻櫎</el-button>
+								</template>
+							</el-popconfirm>
+						</el-button-group>
+					</template>
+				</el-table-column>
+
+			</scTable>
+		</el-main>
+	</el-container>
+
+	<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess" @closed="dialog.save=false"></save-dialog>
+
+	<permission-dialog v-if="dialog.permission" ref="permissionDialog" @closed="dialog.permission=false"></permission-dialog>
+
+</template>
+
+<script>
+	import saveDialog from './save'
+	import permissionDialog from './permission'
+
+	export default {
+		name: 'role',
+		components: {
+			saveDialog,
+			permissionDialog
+		},
+		data() {
+			return {
+				dialog: {
+					save: false,
+					permission: false
+				},
+				//apiObj: this.$API.system.role.list,
+				apiObj: "",
+				selection: [],
+				search: {
+					keyword: null
+				}
+			}
+		},
+		methods: {
+			//娣诲姞
+			add(){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open()
+				})
+			},
+			//缂栬緫
+			table_edit(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open('edit').setData(row)
+				})
+			},
+			//鏌ョ湅
+			table_show(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open('show').setData(row)
+				})
+			},
+			//鏉冮檺璁剧疆
+			permission(){
+				this.dialog.permission = true
+				this.$nextTick(() => {
+					this.$refs.permissionDialog.open()
+				})
+			},
+			//鍒犻櫎
+			async table_del(row){
+				var reqData = {id: row.id}
+				var res = await this.$API.demo.post.post(reqData);
+				if(res.code == 200){
+					this.$refs.table.refresh()
+					this.$message.success("鍒犻櫎鎴愬姛")
+				}else{
+					this.$alert(res.message, "鎻愮ず", {type: 'error'})
+				}
+			},
+			//鎵归噺鍒犻櫎
+			async batch_del(){
+				this.$confirm(`纭畾鍒犻櫎閫変腑鐨� ${this.selection.length} 椤瑰悧锛熷鏋滃垹闄ら」涓惈鏈夊瓙闆嗗皢浼氳涓�骞跺垹闄, '鎻愮ず', {
+					type: 'warning'
+				}).then(() => {
+					const loading = this.$loading();
+					this.$refs.table.refresh()
+					loading.close();
+					this.$message.success("鎿嶄綔鎴愬姛")
+				}).catch(() => {
+
+				})
+			},
+			//琛ㄦ牸閫夋嫨鍚庡洖璋冧簨浠�
+			selectionChange(selection){
+				this.selection = selection;
+			},
+			//琛ㄦ牸鍐呭紑鍏�
+			changeSwitch(val, row){
+				row.status = row.status == '1'?'0':'1'
+				row.$switch_status = true;
+				setTimeout(()=>{
+					delete row.$switch_status;
+					row.status = val;
+					this.$message.success("鎿嶄綔鎴愬姛")
+				}, 500)
+			},
+			//鎼滅储
+			upsearch(){
+
+			},
+			//鏍规嵁ID鑾峰彇鏍戠粨鏋�
+			filterTree(id){
+				var target = null;
+				function filter(tree){
+					tree.forEach(item => {
+						if(item.id == id){
+							target = item
+						}
+						if(item.children){
+							filter(item.children)
+						}
+					})
+				}
+				filter(this.$refs.table.tableData)
+				return target
+			},
+			//鏈湴鏇存柊鏁版嵁
+			handleSaveSuccess(data, mode){
+				if(mode=='add'){
+					this.$refs.table.refresh()
+				}else if(mode=='edit'){
+					this.$refs.table.refresh()
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+</style>
diff --git a/src/views/console/authority/role/permission.vue b/src/views/console/authority/role/permission.vue
new file mode 100644
index 0000000..0c6f51c
--- /dev/null
+++ b/src/views/console/authority/role/permission.vue
@@ -0,0 +1,151 @@
+<template>
+	<el-dialog title="瑙掕壊鏉冮檺璁剧疆" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
+		<el-tabs tab-position="top">
+			<el-tab-pane label="鑿滃崟">
+				<div class="treeMain">
+					<el-tree ref="menu" node-key="name" :data="menu.list" :props="menu.props" show-checkbox></el-tree>
+				</div>
+			</el-tab-pane>
+			<el-tab-pane label="鍗$墖">
+				<div class="treeMain">
+					<el-tree ref="grid" node-key="key" :data="grid.list" :props="grid.props" :default-checked-keys="grid.checked" show-checkbox></el-tree>
+				</div>
+			</el-tab-pane>
+		</el-tabs>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button type="primary" :loading="isSaveing" @click="submit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				visible: false,
+				isSaveing: false,
+				menu: {
+					list: [],
+					checked: [],
+					props: {
+						label: (data)=>{
+							return data.meta.title
+						}
+					}
+				},
+				grid: {
+					list: [],
+					checked: ["welcome", "ver", "time", "progress", "echarts", "about"],
+					props: {
+						label: (data)=>{
+							return data.title
+						},
+						disabled: (data)=>{
+							return data.isFixed
+						}
+					}
+				},
+				data: {
+					dataType :"1",
+					list: [],
+					checked: [],
+					props: {},
+					rule: ""
+				},
+				dashboard: "0",
+				dashboardOptions: [
+					{
+						value: '0',
+						label: '鏁版嵁缁熻',
+						views: 'stats'
+
+					},
+					{
+						value: '1',
+						label: '宸ヤ綔鍙�',
+						views: 'work'
+					},
+				]
+			}
+		},
+		mounted() {
+			// this.getMenu()
+			// this.getDept()
+			// this.getGrid()
+		},
+		methods: {
+			open(){
+				this.visible = true;
+			},
+			submit(){
+				this.isSaveing = true;
+
+				//閫変腑鐨勫拰鍗婇�夌殑鍚堝苟鍚庝紶鍊兼帴鍙�
+				var checkedKeys = this.$refs.menu.getCheckedKeys().concat(this.$refs.menu.getHalfCheckedKeys())
+				console.log(checkedKeys)
+
+				var checkedKeys_dept = this.$refs.dept.getCheckedKeys().concat(this.$refs.dept.getHalfCheckedKeys())
+				console.log(checkedKeys_dept)
+
+				setTimeout(()=>{
+					this.isSaveing = false;
+					this.visible = false;
+					this.$message.success("鎿嶄綔鎴愬姛")
+					this.$emit('success')
+				},1000)
+			},
+			async getMenu(){
+				var res = await this.$API.system.menu.list.get()
+				this.menu.list = res.data
+
+				//鑾峰彇鎺ュ彛杩斿洖鐨勪箣鍓嶉�変腑鐨勫拰鍗婇�夌殑鍚堝苟锛屽鐞嗚繃婊ゆ帀鏈夊彾瀛愯妭鐐圭殑key
+				this.menu.checked = ["system", "user", "user.add", "user.edit", "user.del", "directive.edit", "other", "directive"]
+				this.$nextTick(() => {
+					let filterKeys = this.menu.checked.filter(key => this.$refs.menu.getNode(key).isLeaf)
+					this.$refs.menu.setCheckedKeys(filterKeys, true)
+				})
+			},
+			async getDept(){
+				var res = await this.$API.system.dept.list.get();
+				this.data.list = res.data
+				this.data.checked = ["12", "2", "21", "22", "1"]
+				this.$nextTick(() => {
+					let filterKeys = this.data.checked.filter(key => this.$refs.dept.getNode(key).isLeaf)
+					this.$refs.dept.setCheckedKeys(filterKeys, true)
+				})
+			},
+			getGrid(){
+				this.grid.list = [
+					{
+						key: "welcome",
+						title: "涓绘暟鎹�",
+						isFixed: true
+					},
+					{
+						key: "ver",
+						title: "閲囬泦鍒嗘瀽",
+						isFixed: true
+					},
+					{
+						key: "time",
+						title: "鐢熶骇宸ヨ壓"
+					},
+					{
+						key: "progress",
+						title: "鏁板瓧鐪嬫澘"
+					},
+					{
+						key: "echarts",
+						title: "閰嶇疆涓績"
+					}
+				]
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
+</style>
diff --git a/src/views/console/authority/role/save.vue b/src/views/console/authority/role/save.vue
new file mode 100644
index 0000000..208dedd
--- /dev/null
+++ b/src/views/console/authority/role/save.vue
@@ -0,0 +1,106 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 16:39:16
+ * @FilePath: /smart-web/src/views/console/authority/role/save.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
+		<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="100px" label-position="left">
+			<el-form-item label="瑙掕壊鍚嶇О" prop="label">
+				<el-input v-model="form.label" clearable></el-input>
+			</el-form-item>
+			<el-form-item label="瑙掕壊鎺掑簭" prop="sort">
+				<el-input-number v-model="form.sort" controls-position="right" :min="1" style="width: 100%;"></el-input-number>
+			</el-form-item>
+		</el-form>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">纭� 瀹�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				mode: "add",
+				titleMap: {
+					add: '鏂板',
+					edit: '缂栬緫',
+					show: '鏌ョ湅'
+				},
+				visible: false,
+				isSaveing: false,
+				//琛ㄥ崟鏁版嵁
+				form: {
+					id:"",
+					label: "",
+					alias: "",
+					sort: 1,
+					status: 1,
+					remark: ""
+				},
+				//楠岃瘉瑙勫垯
+				rules: {
+					sort: [
+						{required: true, message: '璇疯緭鍏ユ帓搴�', trigger: 'change'}
+					],
+					label: [
+						{required: true, message: '璇疯緭鍏ヨ鑹插悕绉�'}
+					],
+					alias: [
+						{required: true, message: '璇疯緭鍏ヨ鑹插埆鍚�'}
+					]
+				}
+			}
+		},
+		mounted() {
+
+		},
+		methods: {
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			submit(){
+				this.$refs.dialogForm.validate(async (valid) => {
+					if (valid) {
+						this.isSaveing = true;
+						var res = await this.$API.demo.post.post(this.form);
+						this.isSaveing = false;
+						if(res.code == 200){
+							this.$emit('success', this.form, this.mode)
+							this.visible = false;
+							this.$message.success("鎿嶄綔鎴愬姛")
+						}else{
+							this.$alert(res.message, "鎻愮ず", {type: 'error'})
+						}
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				this.form.id = data.id
+				this.form.label = data.label
+				this.form.alias = data.alias
+				this.form.sort = data.sort
+				this.form.status = data.status
+				this.form.remark = data.remark
+
+				//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+				//Object.assign(this.form, data)
+			}
+		}
+	}
+</script>
+
+<style>
+</style>
diff --git a/src/views/console/soam/oss-system.vue b/src/views/console/soam/oss-system.vue
new file mode 100644
index 0000000..1120d5e
--- /dev/null
+++ b/src/views/console/soam/oss-system.vue
@@ -0,0 +1,161 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 18:27:53
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<div class="oss-main">
+		<el-tabs tab-position="left" style="height: 800px" class="demo-tabs">
+			<el-tab-pane label="鏂囦欢瀛樺偍">
+				<div class="tabTitle">鏂囦欢瀛樺偍</div>
+				<el-form :model="ossForm" ref="ossForm" label-width="120px">
+					<el-row>
+						<el-col :span="24">
+							<el-form-item label="endpoint" prop="endpoint">
+								<el-input v-model="ossForm.endpoint" clearable></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="24">
+							<el-form-item label="acceskey" prop="acceskey">
+								<el-input v-model="ossForm.acceskey" clearable></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="24">
+							<el-form-item label="secretkey" prop="secretkey">
+								<el-input v-model="ossForm.secretkey" clearable></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="24">
+							<el-form-item label="">
+								<el-button type="primary" @click="ossUpdata">鏇存柊</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+			</el-tab-pane>
+			<el-tab-pane label="搴旂敤璁剧疆">
+				<div class="tabTitle">搴旂敤璁剧疆</div>
+				<ul class="show-list">
+					<li class="active">
+						<div class="edit">缂栬緫</div>
+						<div class="logo">
+							<img src="http://116.63.155.153:83/api/static/images/cps.png">
+						</div>
+						<div class="content">
+							<div class="name">CPS</div>
+							<div class="domain">http://192.168.1.199</div>
+						</div>
+					</li>
+					<li>2</li>
+					<li>3</li>
+				</ul>
+				<el-form label-width="80px">
+					
+				</el-form>
+			</el-tab-pane>
+		</el-tabs>
+	</div>
+</template>
+
+<script>
+	export default {
+		name: "oss-main",
+		data(){
+			return {
+				ossForm: {
+					endpoint: "",
+					acceskey: "",
+					secretkey: ""
+				}
+			}
+		},
+		components: {},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		methods: {
+			ossUpdata(){
+				
+			}
+		}
+	}
+</script>
+
+<style scoped>
+.oss-main {
+	margin: 8px;
+	padding: 8px;
+	background-color: #fff;;
+}
+.tabTitle {
+	font-size: 14px;
+    border-bottom: 1px solid #ebebeb;
+    padding: 10px 0 20px 0;
+    margin-bottom: 20px;
+}
+.show-list {
+	display: flex;
+	justify-content: space-around;
+}
+.show-list li {
+	list-style: none;
+	margin-bottom: 10px;
+	float: left;
+	width: 30%;
+    height: 100px;
+    border-radius: 2px;
+    background: #fff;
+    margin-right: 24px;
+    border: 1px solid #d4d4d5;
+    cursor: pointer;
+    display: flex;
+    align-items: center;
+    padding: 0 16px;
+    position: relative;
+}
+.show-list li.active {
+	border: 1px solid #317d7b;
+}
+.show-list li .edit {
+	position: absolute;
+    top: 18px;
+    right: 16px;
+    font-size: 14px;
+    color: #3b8e8e;
+}
+.show-list li .logo {
+	width: 66px;
+    height: 66px;
+    margin-right: 14px;
+}
+.show-list li .logo img{
+	width: 66px;
+    height: 66px;
+}
+.show-list li .lcontent .name{
+	font-weight: 700;
+    font-size: 18px;
+    line-height: 23px;
+    color: #000;
+    width: 150px;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+.show-list li .lcontent .domain{
+    font-size: 14px;
+    margin-top: 16px;
+    font-weight: 400;
+    color: rgba(0, 0, 0, .8);
+    line-height: 18px;
+    width: 200px;
+    word-wrap: break-word;
+    word-break: break-all;
+}
+</style>
diff --git a/src/views/console/system/SubitemAddDict.vue b/src/views/console/system/SubitemAddDict.vue
new file mode 100644
index 0000000..eeb58e3
--- /dev/null
+++ b/src/views/console/system/SubitemAddDict.vue
@@ -0,0 +1,179 @@
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+		<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="瀛楀吀缂栧彿" prop="userName">
+						<el-input v-model="form.userName" placeholder="瀛楀吀缂栧彿" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="瀛楀吀鍚嶇О" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鍚嶇О" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="涓婄骇瀛楀吀" prop="name">
+						<el-input v-model="form.name" placeholder="涓婄骇瀛楀吀" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="瀛楀吀閿��" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀閿��" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="瀛楀吀鎺掑簭" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="灏佸瓨" prop="name">
+						<el-switch v-model="value1" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="瀛楀吀澶囨敞" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀澶囨敞" clearable></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				value1: true,
+				mode: "add",
+				titleMap: {
+					add: '鏂板',
+					edit: '淇敼',
+					show: '鏌ョ湅'
+				},
+				visible: false,
+				isSaveing: false,
+				//琛ㄥ崟鏁版嵁
+				form: {
+					id:"",
+					userName: "",
+					avatar: "",
+					name: "",
+					dept: "",
+					group: []
+				},
+				//楠岃瘉瑙勫垯
+				rules: {
+					avatar:[
+						{required: true, message: '璇蜂笂浼犲ご鍍�'}
+					],
+					userName: [
+						{required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�'}
+					],
+					name: [
+						{required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�'}
+					],
+					password: [
+						{required: true, message: '璇疯緭鍏ョ櫥褰曞瘑鐮�'},
+						{validator: (rule, value, callback) => {
+							if (this.form.password2 !== '') {
+								this.$refs.dialogForm.validateField('password2');
+							}
+							callback();
+						}}
+					],
+					password2: [
+						{required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮�'},
+						{validator: (rule, value, callback) => {
+							if (value !== this.form.password) {
+								callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+							}else{
+								callback();
+							}
+						}}
+					],
+					dept: [
+						{required: true, message: '璇烽�夋嫨鎵�灞為儴闂�'}
+					],
+					group: [
+						{required: true, message: '璇烽�夋嫨鎵�灞炶鑹�', trigger: 'change'}
+					]
+				},
+				//鎵�闇�鏁版嵁閫夐」
+				groups: [],
+				groupsProps: {
+					value: "id",
+					multiple: true,
+					checkStrictly: true
+				},
+				depts: [],
+				deptsProps: {
+					value: "id",
+					checkStrictly: true
+				}
+			}
+		},
+		mounted() {
+			// this.getGroup()
+			// this.getDept()
+		},
+		methods: {
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			//鍔犺浇鏍戞暟鎹�
+			async getGroup(){
+				var res = await this.$API.system.role.list.get();
+				this.groups = res.data.rows;
+			},
+			async getDept(){
+				var res = await this.$API.system.dept.list.get();
+				this.depts = res.data;
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			submit(){
+				this.$refs.dialogForm.validate(async (valid) => {
+					if (valid) {
+						this.isSaveing = true;
+						var res = await this.$API.demo.post.post(this.form);
+						this.isSaveing = false;
+						if(res.code == 200){
+							this.$emit('success', this.form, this.mode)
+							this.visible = false;
+							this.$message.success("鎿嶄綔鎴愬姛")
+						}else{
+							this.$alert(res.message, "鎻愮ず", {type: 'error'})
+						}
+					}else{
+						return false;
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				this.form.id = data.id
+				this.form.userName = data.userName
+				this.form.avatar = data.avatar
+				this.form.name = data.name
+				this.form.group = data.group
+				this.form.dept = data.dept
+
+				//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+				//Object.assign(this.form, data)
+			}
+		}
+	}
+</script>
+
+<style>
+</style>
diff --git a/src/views/console/system/addDict.vue b/src/views/console/system/addDict.vue
index 8620a9b..e37b9dc 100644
--- a/src/views/console/system/addDict.vue
+++ b/src/views/console/system/addDict.vue
@@ -2,19 +2,29 @@
 	<el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
 		<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
 			<el-row>
-				<el-col :span="12">
-					<el-form-item label="宀椾綅缂栧彿" prop="userName">
-						<el-input v-model="form.userName" placeholder="宀椾綅缂栧彿" clearable></el-input>
+				<el-col :span="24">
+					<el-form-item label="瀛楀吀缂栧彿" prop="userName">
+						<el-input v-model="form.userName" placeholder="瀛楀吀缂栧彿" clearable></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="宀椾綅" prop="name">
-						<el-input v-model="form.name" placeholder="宀椾綅" clearable></el-input>
+					<el-form-item label="瀛楀吀鍚嶇О" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鍚嶇О" clearable></el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="浣跨敤鐘舵��" prop="name">
+					<el-form-item label="瀛楀吀鎺掑簭" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="灏佸瓨" prop="name">
 						<el-switch v-model="value1" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="瀛楀吀澶囨敞" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀澶囨敞" clearable></el-input>
 					</el-form-item>
 				</el-col>
 			</el-row>
@@ -34,8 +44,8 @@
 				value1: true,
 				mode: "add",
 				titleMap: {
-					add: '娣诲姞宀椾綅',
-					edit: '淇敼宀椾綅',
+					add: '鏂板',
+					edit: '淇敼',
 					show: '鏌ョ湅'
 				},
 				visible: false,
diff --git a/src/views/console/system/addMenu.vue b/src/views/console/system/addMenu.vue
new file mode 100644
index 0000000..95b011e
--- /dev/null
+++ b/src/views/console/system/addMenu.vue
@@ -0,0 +1,217 @@
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="900" destroy-on-close @closed="$emit('closed')">
+		<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
+			<el-row>
+				<el-col :span="12">
+					<el-form-item label="鑿滃崟鍚嶇О" prop="userName">
+						<el-input v-model="form.userName" placeholder="瀛楀吀缂栧彿" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="璺敱鍦板潃" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鍚嶇О" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="涓婄骇鑿滃崟" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鑿滃崟鍥炬爣" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鑿滃崟缂栧彿" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鑿滃崟绫诲瀷" prop="name">
+						<el-radio-group v-model="form.name">
+							<el-radio :value="1">APP</el-radio>
+							<el-radio :value="2">鑿滃崟</el-radio>
+							<el-radio :value="3">鎸夐挳</el-radio>
+							<el-radio :value="4">鍗$墖</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鑿滃崟鍒悕" prop="name">
+						<el-input v-model="form.name" placeholder="瀛楀吀鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鏂扮獥鍙�" prop="name">
+						<el-radio-group v-model="form.name">
+							<el-radio :value="1">鏄�</el-radio>
+							<el-radio :value="2">鍚�</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鍚敤缂撳瓨" prop="name">
+						<el-radio-group v-model="form.name">
+							<el-radio :value="1">鏄�</el-radio>
+							<el-radio :value="2">鍚�</el-radio>
+						</el-radio-group>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鎵�灞炲簲鐢�" prop="name">
+						<el-select v-model="form.name" style="width: 100%">
+							<el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="鑿滃崟鎺掑簭" prop="name">
+						<el-input v-model="form.name" placeholder="鑿滃崟鎺掑簭" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="24">
+					<el-form-item label="鑿滃崟澶囨敞" prop="name">
+						<el-input v-model="form.name" type="textarea" placeholder="鑿滃崟澶囨敞" clearable></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				value1: true,
+				mode: "add",
+				titleMap: {
+					add: '鏂� 澧�',
+					edit: '缂� 杈�',
+					show: '鏌� 鐪�'
+				},
+				visible: false,
+				isSaveing: false,
+				//琛ㄥ崟鏁版嵁
+				form: {
+					id:"",
+					userName: "",
+					avatar: "",
+					name: "",
+					dept: "",
+					group: []
+				},
+				//楠岃瘉瑙勫垯
+				rules: {
+					avatar:[
+						{required: true, message: '璇蜂笂浼犲ご鍍�'}
+					],
+					userName: [
+						{required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�'}
+					],
+					name: [
+						{required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�'}
+					],
+					password: [
+						{required: true, message: '璇疯緭鍏ョ櫥褰曞瘑鐮�'},
+						{validator: (rule, value, callback) => {
+							if (this.form.password2 !== '') {
+								this.$refs.dialogForm.validateField('password2');
+							}
+							callback();
+						}}
+					],
+					password2: [
+						{required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮�'},
+						{validator: (rule, value, callback) => {
+							if (value !== this.form.password) {
+								callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+							}else{
+								callback();
+							}
+						}}
+					],
+					dept: [
+						{required: true, message: '璇烽�夋嫨鎵�灞為儴闂�'}
+					],
+					group: [
+						{required: true, message: '璇烽�夋嫨鎵�灞炶鑹�', trigger: 'change'}
+					]
+				},
+				//鎵�闇�鏁版嵁閫夐」
+				groups: [],
+				groupsProps: {
+					value: "id",
+					multiple: true,
+					checkStrictly: true
+				},
+				depts: [],
+				deptsProps: {
+					value: "id",
+					checkStrictly: true
+				}
+			}
+		},
+		mounted() {
+			// this.getGroup()
+			// this.getDept()
+		},
+		methods: {
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			//鍔犺浇鏍戞暟鎹�
+			async getGroup(){
+				var res = await this.$API.system.role.list.get();
+				this.groups = res.data.rows;
+			},
+			async getDept(){
+				var res = await this.$API.system.dept.list.get();
+				this.depts = res.data;
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			submit(){
+				this.$refs.dialogForm.validate(async (valid) => {
+					if (valid) {
+						this.isSaveing = true;
+						var res = await this.$API.demo.post.post(this.form);
+						this.isSaveing = false;
+						if(res.code == 200){
+							this.$emit('success', this.form, this.mode)
+							this.visible = false;
+							this.$message.success("鎿嶄綔鎴愬姛")
+						}else{
+							this.$alert(res.message, "鎻愮ず", {type: 'error'})
+						}
+					}else{
+						return false;
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				this.form.id = data.id
+				this.form.userName = data.userName
+				this.form.avatar = data.avatar
+				this.form.name = data.name
+				this.form.group = data.group
+				this.form.dept = data.dept
+
+				//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+				//Object.assign(this.form, data)
+			}
+		}
+	}
+</script>
+
+<style>
+</style>
diff --git a/src/views/console/system/addUser.vue b/src/views/console/system/addUser.vue
new file mode 100644
index 0000000..dd9b703
--- /dev/null
+++ b/src/views/console/system/addUser.vue
@@ -0,0 +1,188 @@
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+		<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
+			<el-row>
+				<el-col :span="12">
+					<el-form-item label="璐﹀彿" prop="userName">
+						<el-input v-model="form.userName" placeholder="宀椾綅缂栧彿" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="璐﹀彿鏄电О" prop="name">
+						<el-input v-model="form.name" placeholder="宀椾綅" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="瀵嗙爜" prop="name">
+						<el-input v-model="form.name" placeholder="宀椾綅" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鎵嬫満鍙�" prop="name">
+						<el-input v-model="form.name" placeholder="宀椾綅" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="閭" prop="name">
+						<el-input v-model="form.name" placeholder="宀椾綅" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鍏宠仈鍛樺伐" prop="name">
+						<el-input v-model="form.name" placeholder="宀椾綅" clearable></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鏁版嵁鏉冮檺" prop="name">
+						<el-select v-model="form.name" style="width: 100%">
+							<el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12">
+					<el-form-item label="鎵�灞炶鑹�" prop="name">
+						<el-select v-model="form.name" style="width: 100%">
+							<el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/>
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				value1: true,
+				mode: "add",
+				titleMap: {
+					add: '鏂板缓璐﹀彿',
+					edit: '缂栬緫璐﹀彿',
+					show: '鏌ョ湅'
+				},
+				visible: false,
+				isSaveing: false,
+				//琛ㄥ崟鏁版嵁
+				form: {
+					id:"",
+					userName: "",
+					avatar: "",
+					name: "",
+					dept: "",
+					group: []
+				},
+				//楠岃瘉瑙勫垯
+				rules: {
+					avatar:[
+						{required: true, message: '璇蜂笂浼犲ご鍍�'}
+					],
+					userName: [
+						{required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�'}
+					],
+					name: [
+						{required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�'}
+					],
+					password: [
+						{required: true, message: '璇疯緭鍏ョ櫥褰曞瘑鐮�'},
+						{validator: (rule, value, callback) => {
+							if (this.form.password2 !== '') {
+								this.$refs.dialogForm.validateField('password2');
+							}
+							callback();
+						}}
+					],
+					password2: [
+						{required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮�'},
+						{validator: (rule, value, callback) => {
+							if (value !== this.form.password) {
+								callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+							}else{
+								callback();
+							}
+						}}
+					],
+					dept: [
+						{required: true, message: '璇烽�夋嫨鎵�灞為儴闂�'}
+					],
+					group: [
+						{required: true, message: '璇烽�夋嫨鎵�灞炶鑹�', trigger: 'change'}
+					]
+				},
+				//鎵�闇�鏁版嵁閫夐」
+				groups: [],
+				groupsProps: {
+					value: "id",
+					multiple: true,
+					checkStrictly: true
+				},
+				depts: [],
+				deptsProps: {
+					value: "id",
+					checkStrictly: true
+				}
+			}
+		},
+		mounted() {
+			// this.getGroup()
+			// this.getDept()
+		},
+		methods: {
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			//鍔犺浇鏍戞暟鎹�
+			async getGroup(){
+				var res = await this.$API.system.role.list.get();
+				this.groups = res.data.rows;
+			},
+			async getDept(){
+				var res = await this.$API.system.dept.list.get();
+				this.depts = res.data;
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			submit(){
+				this.$refs.dialogForm.validate(async (valid) => {
+					if (valid) {
+						this.isSaveing = true;
+						var res = await this.$API.demo.post.post(this.form);
+						this.isSaveing = false;
+						if(res.code == 200){
+							this.$emit('success', this.form, this.mode)
+							this.visible = false;
+							this.$message.success("鎿嶄綔鎴愬姛")
+						}else{
+							this.$alert(res.message, "鎻愮ず", {type: 'error'})
+						}
+					}else{
+						return false;
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				this.form.id = data.id
+				this.form.userName = data.userName
+				this.form.avatar = data.avatar
+				this.form.name = data.name
+				this.form.group = data.group
+				this.form.dept = data.dept
+
+				//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+				//Object.assign(this.form, data)
+			}
+		}
+	}
+</script>
+
+<style>
+</style>
diff --git a/src/views/console/system/allocationDialog.vue b/src/views/console/system/allocationDialog.vue
new file mode 100644
index 0000000..50e8aeb
--- /dev/null
+++ b/src/views/console/system/allocationDialog.vue
@@ -0,0 +1,218 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 15:35:43
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<el-dialog title="瀛楀吀鍚嶇О瀛楀吀閰嶇疆" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+		<div class="dict-main">
+			<el-form :inline="true" :model="searchData" abel-width="120px">
+				<el-form-item label="瀛楀吀缂栧彿">
+					<el-input v-model="searchData.test" placeholder="瀛楀吀缂栧彿" clearable />
+				</el-form-item>
+				<el-form-item label="瀛楀吀鍚嶇О">
+					<el-select
+						v-model="searchData.test"
+						placeholder="瀛楀吀鍚嶇О"
+						clearable
+					>
+						<el-option label="Zone one" value="shanghai" />
+						<el-option label="Zone two" value="beijing" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" @click="searchBtn">鎼滅储</el-button>
+					<el-button @click="searchBtn">娓呯┖</el-button>
+				</el-form-item>
+			</el-form>
+			<div>
+				<div class="dict-Btn">
+					<div class="dict-btn-bottom"> 
+						<el-button type="primary" @click="addPerson">+ 鏂板</el-button>
+						<el-button type="danger" plain @click="delPerson">鍒犻櫎</el-button>
+					</div>
+				</div>
+				<div class="dict-table">
+					<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange">
+						<el-table-column type="selection" width="55" />
+						<el-table-column prop="date" label="瀛楀吀缂栧彿"></el-table-column>
+						<el-table-column prop="name" label="瀛楀吀鍚嶇О"></el-table-column>
+						<el-table-column prop="name" label="瀛楀吀鎺掑簭"></el-table-column>
+						<el-table-column prop="name" label="灏佸瓨"></el-table-column>
+						<el-table-column fixed="right" label="鎿嶄綔">
+							<template #default="scope">
+								<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+								<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+								<el-button text type="primary" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+								<el-button text type="primary" size="small" @click="table_allocation(scope.row, scope.$index)">鏂板瀛愰」</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<el-pagination
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+						:current-page="currentPage4"
+						:page-sizes="[100, 200, 300, 400]"
+						:page-size="100"
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="400">
+					</el-pagination>
+				</div>
+			</div>
+		</div>
+		<SubitemAdd-dict v-if="dialog.save" ref="SubitemAddDict" @success="handleSuccess" @closed="dialog.allocation=false"></SubitemAdd-dict>
+	</el-dialog>
+	
+</template>
+<script>
+	import SubitemAddDict from './SubitemAddDict'
+	export default {
+		emits: ['success', 'closed'],
+		data(){
+			return {
+				visible: false,
+				searchData: {
+					test: ""
+				},
+				dialog: {
+					save: false
+				},
+				leftActive: true,
+				input: '',
+				options: [{
+					value: '閫夐」1',
+					label: '榛勯噾绯�'
+				}],
+				input3: '',
+				tableData: [{
+					date: '2016-05-02',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-04',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-01',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-03',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�',
+					zip: 200333
+				}]
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		components: {
+			SubitemAddDict
+		},
+		methods: {
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			searchBtn() {},
+			//瀛楀吀閰嶇疆
+			table_allocation(row) {
+				this.addPerson();
+			},
+			//鍒犻櫎
+			table_del(row) {},
+			//娣诲姞
+			addPerson(){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.SubitemAddDict.open()
+				})
+			},
+			table_edit(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.SubitemAddDict.open('edit').setData(row)
+				})
+			},
+			//鏌ョ湅
+			table_show(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.SubitemAddDict.open('show').setData(row)
+				})
+			},
+			handleSelectionChange() {},
+			delPerson() {},
+			changeDepartment() {
+				this.departmentVisible = true;
+			},
+			changeTab(name) {
+				if(name == 1) {
+					this.leftActive = true;
+				}else {
+					this.leftActive = false;
+				}
+			},
+			handleSizeChange(val) {
+				console.log(`姣忛〉 ${val} 鏉);
+			},
+			handleCurrentChange(val) {
+				console.log(`褰撳墠椤�: ${val}`);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.dict-main {
+		background-color: #fff;
+		margin: 8px;
+		padding: 8px;
+	}
+	.dict-Btn {
+		display: flex;
+		justify-content: space-between;
+		border-bottom: 1px solid #dcdfe6;
+		margin-bottom: 8px;
+		padding-left: 8px;
+		padding-right: 8px;
+	}
+	.searchStatus {
+		margin-right: 6px;
+		width: 200px;
+	}
+	.dict-btn-bottom {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+	}
+	.dict-table {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+		
+	}
+	.multipleTableRef {
+		margin-bottom: 8px;
+	}
+</style>
\ No newline at end of file
diff --git a/src/views/console/system/dict.vue b/src/views/console/system/dict.vue
index 4c7ee4e..92e39e1 100644
--- a/src/views/console/system/dict.vue
+++ b/src/views/console/system/dict.vue
@@ -2,74 +2,52 @@
  * @Author: lzhe lzhe@example.com
  * @Date: 2024-03-26 10:28:33
  * @LastEditors: lzhe lzhe@example.com
- * @LastEditTime: 2024-03-28 18:25:55
+ * @LastEditTime: 2024-03-29 15:31:38
  * @FilePath: /smart-web/src/views/master/person/main/index.vue
  * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
 <template>
-	<div class="person-person">
-		<div class="person-person-right">
-			<div class="right-top">
-				<div class="right-bottom"> 
+	<div class="dict-main">
+		<el-form :inline="true" :model="searchData" abel-width="120px">
+			<el-form-item label="瀛楀吀缂栧彿">
+				<el-input v-model="searchData.test" placeholder="瀛楀吀缂栧彿" clearable />
+			</el-form-item>
+			<el-form-item label="瀛楀吀鍚嶇О">
+				<el-select
+					v-model="searchData.test"
+					placeholder="瀛楀吀鍚嶇О"
+					clearable
+				>
+					<el-option label="Zone one" value="shanghai" />
+					<el-option label="Zone two" value="beijing" />
+				</el-select>
+			</el-form-item>
+			<el-form-item>
+				<el-button type="primary" @click="searchBtn">鎼滅储</el-button>
+				<el-button @click="searchBtn">娓呯┖</el-button>
+			</el-form-item>
+		</el-form>
+		<div>
+			<div class="dict-Btn">
+				<div class="dict-btn-bottom"> 
 					<el-button type="primary" @click="addPerson">+ 鏂板</el-button>
 					<el-button type="danger" plain @click="delPerson">鍒犻櫎</el-button>
 				</div>
-				<div>
-					<el-select v-model="input3" placeholder="鐘舵��" class="searchStatus">
-						<el-option
-							v-for="item in options"
-							:key="item.value"
-							:label="item.label"
-							:value="item.value"
-							size="small"
-						/>
-					</el-select>
-					<el-input
-						v-model="input3"
-						style="width: 200px"
-						size="small"
-						placeholder="璇疯緭鍏ュ叧閿瓧杩涜杩囨护"
-						class="input-with-select"
-						>
-						<template #append>
-							<el-button :icon="Search" />
-						</template>
-					</el-input>
-				</div>
 			</div>
-			<div class="right-table">
-				<el-table
-					ref="multipleTableRef"
-					:data="tableData"
-					border
-					style="width: 100%"
-					class="multipleTableRef"
-					@selection-change="handleSelectionChange"
-				>
+			<div class="dict-table">
+				<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange">
 					<el-table-column type="selection" width="55" />
-					<el-table-column
-					prop="date"
-					label="瀛楀吀缂栧彿">
-					</el-table-column>
-					<el-table-column
-					prop="name"
-					label="瀛楀吀鍚嶇О">
-					</el-table-column>
-					<el-table-column
-					prop="name"
-					label="瀛楀吀鎺掑簭">
-					</el-table-column>
-					<el-table-column
-					prop="name"
-					label="灏佸瓨">
-					</el-table-column>
-					<el-table-column
-					fixed="right"
-					label="鎿嶄綔">
-					<template #default="scope">
-						<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
-						<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
-					</template>
+					<el-table-column prop="date" label="瀛楀吀缂栧彿"></el-table-column>
+					<el-table-column prop="name" label="瀛楀吀鍚嶇О"></el-table-column>
+					<el-table-column prop="name" label="瀛楀吀鎺掑簭"></el-table-column>
+					<el-table-column prop="name" label="灏佸瓨"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+							<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+							<el-button text type="primary" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+							<el-button text type="primary" size="small" @click="table_allocation(scope.row, scope.$index)">瀛楀吀閰嶇疆</el-button>
+						</template>
 					</el-table-column>
 				</el-table>
 				<el-pagination
@@ -84,46 +62,23 @@
 			</div>
 		</div>
 	</div>
-
-	<el-dialog title="閮ㄩ棬璋冩暣" v-model="departmentVisible" :width="400" destroy-on-close>
-		<el-form :model="departmentFrom" :rules="departmentVisibleRules" :disabled="mode=='show'" ref="dialogForm" label-width="80px" label-position="center">
-			<el-row>
-				<el-col :span="24">
-					<el-form-item label="閮ㄩ棬" prop="department">
-						<el-select v-model="departmentFrom.department" style="width: 100%">
-							<el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/>
-						</el-select>
-					</el-form-item>
-				</el-col>
-			</el-row>
-		</el-form>
-		<template #footer>
-			<el-button @click="departmentVisible=false" >鍙� 娑�</el-button>
-			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="departmentSubmit()">淇� 瀛�</el-button>
-		</template>
-	</el-dialog>
 	
 	<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSuccess" @closed="dialog.save=false"></save-dialog>
+	<allocation-dialog v-if="dialog.allocation" ref="allocationDialog" @success="handleSuccess" @closed="dialog.allocation=false"></allocation-dialog>
 </template>
 <script>
 	import saveDialog from './addDict'
+	import allocationDialog from './allocationDialog'
 	export default {
-		name: "bakalaka",
+		name: "allocation",
 		data(){
 			return {
-				isSaveing: false,
-				groups: [],
-				departmentFrom: {
-					department: ""
+				searchData: {
+					test: ""
 				},
-				departmentVisibleRules: {
-					department:[
-						{required: true, message: '璇烽�夋嫨閮ㄩ棬'}
-					]
-				},
-				departmentVisible: false,
 				dialog: {
-					save: false
+					save: false,
+					allocation: false
 				},
 				leftActive: true,
 				input: '',
@@ -170,12 +125,19 @@
 			
 		},
 		components: {
-			saveDialog
+			saveDialog,allocationDialog
 		},
 		methods: {
-			departmentSubmit() {
-				this.departmentVisible=false;  //閮ㄩ棬璋冩暣
+			searchBtn() {},
+			//瀛楀吀閰嶇疆
+			table_allocation(row) {
+				this.dialog.allocation = true;
+				this.$nextTick(() => {
+					this.$refs.allocationDialog.open()
+				})
 			},
+			//鍒犻櫎
+			table_del(row) {},
 			//娣诲姞
 			addPerson(){
 				this.dialog.save = true
@@ -219,70 +181,12 @@
 </script>
 
 <style scoped>
-	.person-person {
-		width: 100%;
-		background-color: #f9fafb;
-		border: 1px solid #dcdfe6;
-		box-shadow: 0 2px 4px 0 rgba(0,0,0,.12), 0 0 6px 0 rgba(0,0,0,.04);
-		display: flex;
-	}
-	.person-person-left {
+	.dict-main {
 		background-color: #fff;
-		width: 300px;
-		min-width: 300px;
 		margin: 8px;
-		overflow: hidden;
-		border-radius: 4px;
 		padding: 8px;
 	}
-	.person-person-right {
-		background-color: #fff;
-		flex: 1;
-		margin-top: 8px;
-		margin-bottom: 8px;
-		overflow: hidden;
-		border-radius: 4px;
-		padding-top: 8px;
-		padding-bottom: 8px;
-	}
-	.person-left-title {
-		text-align: center;
-		vertical-align: middle;
-		padding-left: 8px;
-	}
-	.person-left-title div {
-		display: inline-block;
-		width: 55px;
-		height: 28px;
-		line-height: 28px;
-		border: 1px solid #dcdfe6;
-		cursor: pointer;
-	}
-	.person-left-title div:nth-child(1) {
-		border-top-left-radius: 4px;
-		border-bottom-left-radius: 4px;
-		border-right: 0px;
-	}
-	.person-left-title div:nth-child(2) {
-		border-top-right-radius: 4px;
-		border-bottom-right-radius: 4px;
-		border-left: 0px;
-	}
-	.person-left-active {
-		background-color: #3b8e8e;
-		color: #fff;
-	}
-	.person-left-search {
-		padding-top: 8px;
-		padding-bottom: 8px;
-	}
-	.person-tree {
-		background-color: #d8e8e8;
-		padding: 4px 18px;
-		font-size: 14px;
-		font-weight: 400;
-	}
-	.right-top {
+	.dict-Btn {
 		display: flex;
 		justify-content: space-between;
 		border-bottom: 1px solid #dcdfe6;
@@ -290,22 +194,16 @@
 		padding-left: 8px;
 		padding-right: 8px;
 	}
-	.right-title {
-		font-size: 18px;
-		font-weight: bold;
-		padding-bottom: 12px;
-		margin-bottom: 8px;
-	}
 	.searchStatus {
 		margin-right: 6px;
 		width: 200px;
 	}
-	.right-bottom {
+	.dict-btn-bottom {
 		padding-left: 8px;
 		padding-right: 8px;
 		margin-bottom: 8px;
 	}
-	.right-table {
+	.dict-table {
 		padding-left: 8px;
 		padding-right: 8px;
 		margin-bottom: 8px;
diff --git a/src/views/console/system/menu.vue b/src/views/console/system/menu.vue
new file mode 100644
index 0000000..70d16c3
--- /dev/null
+++ b/src/views/console/system/menu.vue
@@ -0,0 +1,217 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 15:50:35
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<div class="dict-main">
+		<el-form :inline="true" :model="searchData" abel-width="120px">
+			<el-form-item label="鑿滃崟鍚嶇О">
+				<el-input v-model="searchData.test" placeholder="鑿滃崟鍚嶇О" clearable />
+			</el-form-item>
+			<el-form-item label="鑿滃崟缂栧彿">
+				<el-input v-model="searchData.test" placeholder="鑿滃崟缂栧彿" clearable />
+			</el-form-item>
+			<el-form-item label="鑿滃崟鍒悕">
+				<el-input v-model="searchData.test" placeholder="鑿滃崟鍒悕" clearable />
+			</el-form-item>
+			<el-form-item label="鎵�灞炲簲鐢�">
+				<el-input v-model="searchData.test" placeholder="鎵�灞炲簲鐢�" clearable />
+			</el-form-item>
+			<el-form-item>
+				<el-button type="primary" @click="searchBtn">鎼滅储</el-button>
+				<el-button @click="searchBtn">娓呯┖</el-button>
+			</el-form-item>
+		</el-form>
+		<div>
+			<div class="dict-Btn">
+				<div class="dict-btn-bottom"> 
+					<el-button type="primary" @click="addPerson">+ 鏂板</el-button>
+					<el-button type="danger" plain @click="delPerson">鍒犻櫎</el-button>
+				</div>
+			</div>
+			<div class="dict-table">
+				<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange">
+					<el-table-column type="selection" width="55" />
+					<el-table-column prop="date" label="鑿滃崟鍚嶇О"></el-table-column>
+					<el-table-column prop="name" label="璺敱鍦板潃"></el-table-column>
+					<el-table-column prop="name" label="鑿滃崟鍥炬爣"></el-table-column>
+					<el-table-column prop="name" label="鑿滃崟缂栧彿"></el-table-column>
+					<el-table-column prop="name" label="鑿滃崟鍒悕"></el-table-column>
+					<el-table-column prop="name" label="鏂扮獥鍙�"></el-table-column>
+					<el-table-column prop="name" label="鍚敤缂撳瓨"></el-table-column>
+					<el-table-column prop="name" label="鎵�灞炲簲鐢�"></el-table-column>
+					<el-table-column prop="name" label="鑿滃崟鎺掑簭"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔" width="200">
+						<template #default="scope">
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+							<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+							<el-button text type="primary" size="small" @click="table_del(scope.row, scope.$index)">鍒犻櫎</el-button>
+							<el-button text type="primary" size="small" @click="addPerson(scope.row, scope.$index)">鏂板瀛愰」</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+					:current-page="currentPage4"
+					:page-sizes="[100, 200, 300, 400]"
+					:page-size="100"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="400">
+				</el-pagination>
+			</div>
+		</div>
+	</div>
+	
+	<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSuccess" @closed="dialog.save=false"></save-dialog>
+</template>
+<script>
+	import saveDialog from './addMenu'
+	export default {
+		name: "allocation",
+		data(){
+			return {
+				searchData: {
+					test: ""
+				},
+				dialog: {
+					save: false,
+					allocation: false
+				},
+				leftActive: true,
+				input: '',
+				options: [{
+					value: '閫夐」1',
+					label: '榛勯噾绯�'
+				}],
+				input3: '',
+				tableData: [{
+					date: '2016-05-02',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-04',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-01',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-03',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�',
+					zip: 200333
+				}]
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		components: {
+			saveDialog
+		},
+		methods: {
+			searchBtn() {},
+			//瀛楀吀閰嶇疆
+			table_allocation(row) {
+				this.dialog.allocation = true;
+				this.$nextTick(() => {
+					this.$refs.allocationDialog.open()
+				})
+			},
+			//鍒犻櫎
+			table_del(row) {},
+			//娣诲姞
+			addPerson(){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open()
+				})
+			},
+			table_edit(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open('edit').setData(row)
+				})
+			},
+			//鏌ョ湅
+			table_show(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open('show').setData(row)
+				})
+			},
+			handleSelectionChange() {},
+			delPerson() {},
+			changeDepartment() {
+				this.departmentVisible = true;
+			},
+			changeTab(name) {
+				if(name == 1) {
+					this.leftActive = true;
+				}else {
+					this.leftActive = false;
+				}
+			},
+			handleSizeChange(val) {
+				console.log(`姣忛〉 ${val} 鏉);
+			},
+			handleCurrentChange(val) {
+				console.log(`褰撳墠椤�: ${val}`);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.dict-main {
+		background-color: #fff;
+		margin: 8px;
+		padding: 8px;
+	}
+	.dict-Btn {
+		display: flex;
+		justify-content: space-between;
+		border-bottom: 1px solid #dcdfe6;
+		margin-bottom: 8px;
+		padding-left: 8px;
+		padding-right: 8px;
+	}
+	.searchStatus {
+		margin-right: 6px;
+		width: 200px;
+	}
+	.dict-btn-bottom {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+	}
+	.dict-table {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+		
+	}
+	.multipleTableRef {
+		margin-bottom: 8px;
+	}
+</style>
diff --git a/src/views/console/system/user.vue b/src/views/console/system/user.vue
new file mode 100644
index 0000000..fa33479
--- /dev/null
+++ b/src/views/console/system/user.vue
@@ -0,0 +1,219 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 16:20:06
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<div class="user-main">
+		<div class="user-top">
+			<div class="right-bottom"> 
+				<el-button type="primary" @click="addPerson">鏂板缓</el-button>
+				<el-button type="danger" plain @click="delPerson">鍒犻櫎</el-button>
+			</div>
+			<div>
+				<el-input v-model="input" placeholder="璇疯緭鍏ュ唴瀹�" style="width: 180px;margin-right: 8px;"></el-input>
+				<el-input v-model="input" placeholder="璇疯緭鍏ュ唴瀹�" style="width: 180px;margin-right: 8px;"></el-input>
+				<el-button type="primary" @click="searchUser">鎼滅储</el-button>
+			</div>
+		</div>
+		<div class="user-table">
+			<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55" />
+				<el-table-column prop="date" label="璐﹀彿"></el-table-column>
+				<el-table-column prop="name" label="璐﹀彿鏄电О"></el-table-column>
+				<el-table-column prop="name" label="鎵�灞炶鑹�"></el-table-column>
+				<el-table-column prop="name" label="鏁版嵁鏉冮檺"></el-table-column>
+				<el-table-column prop="name" label="璐﹀彿鐘舵��"></el-table-column>
+				<el-table-column fixed="right" label="鎿嶄綔">
+					<template #default="scope">
+						<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+						<el-button text type="primary" size="small" @click="table_unlock(scope.row, scope.$index)">瑙i攣</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<el-pagination
+				@size-change="handleSizeChange"
+				@current-change="handleCurrentChange"
+				:current-page="currentPage4"
+				:page-sizes="[100, 200, 300, 400]"
+				:page-size="100"
+				layout="total, sizes, prev, pager, next, jumper"
+				:total="400">
+			</el-pagination>
+		</div>
+	</div>
+
+	<el-dialog title="閮ㄩ棬璋冩暣" v-model="departmentVisible" :width="400" destroy-on-close>
+		<el-form :model="departmentFrom" :rules="departmentVisibleRules" :disabled="mode=='show'" ref="dialogForm" label-width="80px" label-position="center">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="閮ㄩ棬" prop="department">
+						<el-select v-model="departmentFrom.department" style="width: 100%">
+							<el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id"/>
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<el-button @click="departmentVisible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="departmentSubmit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+
+	<el-dialog v-model="dialogVisible" width="500" :before-close="handleClose">
+		<span>纭畾灏嗛�夋嫨璐﹀彿瑙i攣?</span>
+		<template #footer>
+		<div class="dialog-footer">
+			<el-button @click="dialogVisible = false">鍙栨秷</el-button>
+			<el-button type="primary" @click="dialogVisible = false">纭畾</el-button>
+		</div>
+		</template>
+	</el-dialog>
+	<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSuccess" @closed="dialog.save=false"></save-dialog>
+</template>
+<script>
+	import saveDialog from './addUser'
+	export default {
+		name: "bakalaka",
+		data(){
+			return {
+				dialogVisible: false,
+				isSaveing: false,
+				groups: [],
+				departmentFrom: {
+					department: ""
+				},
+				departmentVisibleRules: {
+					department:[
+						{required: true, message: '璇烽�夋嫨閮ㄩ棬'}
+					]
+				},
+				departmentVisible: false,
+				dialog: {
+					save: false
+				},
+				leftActive: true,
+				input: '',
+				options: [{
+					value: '閫夐」1',
+					label: '榛勯噾绯�'
+				}],
+				input3: '',
+				tableData: [{
+					date: '2016-05-02',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-04',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-01',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-03',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�',
+					zip: 200333
+				}]
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		components: {
+			saveDialog
+		},
+		methods: {
+			table_unlock() {
+				this.dialogVisible = true;
+			},
+			searchUser() {},
+			departmentSubmit() {
+				this.departmentVisible=false;  //閮ㄩ棬璋冩暣
+			},
+			//娣诲姞
+			addPerson(){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open()
+				})
+			},
+			table_edit(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open('edit').setData(row)
+				})
+			},
+			//鏌ョ湅
+			table_show(row){
+				this.dialog.save = true
+				this.$nextTick(() => {
+					this.$refs.saveDialog.open('show').setData(row)
+				})
+			},
+			handleSelectionChange() {},
+			delPerson() {},
+			changeDepartment() {
+				this.departmentVisible = true;
+			},
+			changeTab(name) {
+				if(name == 1) {
+					this.leftActive = true;
+				}else {
+					this.leftActive = false;
+				}
+			},
+			handleSizeChange(val) {
+				console.log(`姣忛〉 ${val} 鏉);
+			},
+			handleCurrentChange(val) {
+				console.log(`褰撳墠椤�: ${val}`);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.user-main {
+		background-color: #f9fafb;
+		border: 1px solid #dcdfe6;
+		box-shadow: 0 2px 4px 0 rgba(0,0,0,.12), 0 0 6px 0 rgba(0,0,0,.04);
+		margin: 8px;
+		padding: 8px;
+		background-color: #fff;
+	}
+	.user-top {
+		width: 100%;
+		display: flex;
+		justify-content: space-between;
+		margin-bottom: 8px;
+	}
+	.user-table {
+		width: 100%;
+		margin-bottom: 8px;
+		
+	}
+	.multipleTableRef {
+		margin-bottom: 8px;
+	}
+</style>
diff --git a/src/views/master/person/main/personPost.vue b/src/views/master/person/main/personPost.vue
index 5b20d59..c5a6e5a 100644
--- a/src/views/master/person/main/personPost.vue
+++ b/src/views/master/person/main/personPost.vue
@@ -2,7 +2,7 @@
  * @Author: lzhe lzhe@example.com
  * @Date: 2024-03-26 10:28:33
  * @LastEditors: lzhe lzhe@example.com
- * @LastEditTime: 2024-03-28 18:25:55
+ * @LastEditTime: 2024-03-29 16:08:46
  * @FilePath: /smart-web/src/views/master/person/main/index.vue
  * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
@@ -38,30 +38,15 @@
 				</div>
 			</div>
 			<div class="right-table">
-				<el-table
-					ref="multipleTableRef"
-					:data="tableData"
-					border
-					style="width: 100%"
-					class="multipleTableRef"
-					@selection-change="handleSelectionChange"
-				>
+				<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange">
 					<el-table-column type="selection" width="55" />
-					<el-table-column
-					prop="date"
-					label="宀椾綅缂栧彿">
-					</el-table-column>
-					<el-table-column
-					prop="name"
-					label="宀椾綅">
-					</el-table-column>
-					<el-table-column
-					fixed="right"
-					label="鎿嶄綔">
-					<template #default="scope">
-						<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
-						<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
-					</template>
+					<el-table-column prop="date" label="宀椾綅缂栧彿"></el-table-column>
+					<el-table-column prop="name" label="宀椾綅"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+						</template>
 					</el-table-column>
 				</el-table>
 				<el-pagination
diff --git a/src/views/monitor/log/api.vue b/src/views/monitor/log/api.vue
new file mode 100644
index 0000000..0eea4a0
--- /dev/null
+++ b/src/views/monitor/log/api.vue
@@ -0,0 +1,212 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 17:38:39
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<div class="api-main">
+		<el-form :inline="true" :model="searchData" abel-width="120px">
+			<el-form-item label="鏈嶅姟id">
+				<el-input v-model="searchData.test" placeholder="鏈嶅姟id" clearable />
+			</el-form-item>
+			<el-form-item label="鏈嶅姟host">
+				<el-input v-model="searchData.test" placeholder="鏈嶅姟host" clearable />
+			</el-form-item>
+			<el-form-item>
+				<el-button type="primary" @click="searchBtn">鎼滅储</el-button>
+				<el-button @click="searchBtn">娓呯┖</el-button>
+			</el-form-item>
+		</el-form>
+		<div>
+			<div class="api-table">
+				<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef">
+					<el-table-column prop="date" label="鏈嶅姟id"></el-table-column>
+					<el-table-column prop="name" label="鏈嶅姟host"></el-table-column>
+					<el-table-column prop="name" label="杞欢鐜"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織绾у埆"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織id"></el-table-column>
+					<el-table-column prop="name" label="璇锋眰鎺ュ彛"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織鏃堕棿"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+					:current-page="currentPage4"
+					:page-sizes="[100, 200, 300, 400]"
+					:page-size="100"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="400">
+				</el-pagination>
+			</div>
+		</div>
+		<el-drawer v-model="drawer" title="鏌� 鐪�" direction="rtl" :before-close="handleClose" size="60%" modal-class="viewData">
+			<el-form :inline="true" :model="viewData" abel-width="120px" class="form-view-data">
+				<el-row>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟id" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟host" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟ip" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="杞欢鐜" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織绾у埆" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織id" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="璇锋眰鎺ュ彛" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織鏃堕棿" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="鐢ㄦ埛浠g悊" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="鏃ュ織绠$悊" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="璇锋眰鏁版嵁" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-drawer>
+	</div>
+</template>
+<script>
+	export default {
+		name: "allocation",
+		data(){
+			return {
+				viewData: {},
+				drawer: false,
+				searchData: {
+					test: ""
+				},
+				dialog: {
+					save: false,
+					allocation: false
+				},
+				leftActive: true,
+				input: '',
+				input3: '',
+				tableData: [{
+					date: '2016-05-02',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-04',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-01',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-03',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�',
+					zip: 200333
+				}]
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		methods: {
+			handleClose() {
+				this.drawer = false;
+			},
+			searchBtn() {},
+			//鏌ョ湅
+			table_show(row){
+				this.drawer = true;
+			},
+			handleSizeChange(val) {
+				console.log(`姣忛〉 ${val} 鏉);
+			},
+			handleCurrentChange(val) {
+				console.log(`褰撳墠椤�: ${val}`);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.api-main {
+		background-color: #fff;
+		margin: 8px;
+		padding: 8px;
+	}
+	.api-table {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+		
+	}
+	.multipleTableRef {
+		margin-bottom: 8px;
+	}
+	.form-view-data {
+		padding-left: 160px;
+		padding-right: 50px;
+	}
+</style>
+<style>
+	.viewData .el-drawer .el-drawer__header {
+		border-bottom: 1px solid #f0f0f0;
+		padding-bottom: 20px;
+		margin-bottom: 20px;
+	}
+</style>
diff --git a/src/views/monitor/log/error.vue b/src/views/monitor/log/error.vue
new file mode 100644
index 0000000..0eea4a0
--- /dev/null
+++ b/src/views/monitor/log/error.vue
@@ -0,0 +1,212 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 17:38:39
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<div class="api-main">
+		<el-form :inline="true" :model="searchData" abel-width="120px">
+			<el-form-item label="鏈嶅姟id">
+				<el-input v-model="searchData.test" placeholder="鏈嶅姟id" clearable />
+			</el-form-item>
+			<el-form-item label="鏈嶅姟host">
+				<el-input v-model="searchData.test" placeholder="鏈嶅姟host" clearable />
+			</el-form-item>
+			<el-form-item>
+				<el-button type="primary" @click="searchBtn">鎼滅储</el-button>
+				<el-button @click="searchBtn">娓呯┖</el-button>
+			</el-form-item>
+		</el-form>
+		<div>
+			<div class="api-table">
+				<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef">
+					<el-table-column prop="date" label="鏈嶅姟id"></el-table-column>
+					<el-table-column prop="name" label="鏈嶅姟host"></el-table-column>
+					<el-table-column prop="name" label="杞欢鐜"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織绾у埆"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織id"></el-table-column>
+					<el-table-column prop="name" label="璇锋眰鎺ュ彛"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織鏃堕棿"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+					:current-page="currentPage4"
+					:page-sizes="[100, 200, 300, 400]"
+					:page-size="100"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="400">
+				</el-pagination>
+			</div>
+		</div>
+		<el-drawer v-model="drawer" title="鏌� 鐪�" direction="rtl" :before-close="handleClose" size="60%" modal-class="viewData">
+			<el-form :inline="true" :model="viewData" abel-width="120px" class="form-view-data">
+				<el-row>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟id" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟host" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟ip" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="杞欢鐜" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織绾у埆" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織id" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="璇锋眰鎺ュ彛" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織鏃堕棿" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="鐢ㄦ埛浠g悊" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="鏃ュ織绠$悊" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="璇锋眰鏁版嵁" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-drawer>
+	</div>
+</template>
+<script>
+	export default {
+		name: "allocation",
+		data(){
+			return {
+				viewData: {},
+				drawer: false,
+				searchData: {
+					test: ""
+				},
+				dialog: {
+					save: false,
+					allocation: false
+				},
+				leftActive: true,
+				input: '',
+				input3: '',
+				tableData: [{
+					date: '2016-05-02',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-04',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-01',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-03',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�',
+					zip: 200333
+				}]
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		methods: {
+			handleClose() {
+				this.drawer = false;
+			},
+			searchBtn() {},
+			//鏌ョ湅
+			table_show(row){
+				this.drawer = true;
+			},
+			handleSizeChange(val) {
+				console.log(`姣忛〉 ${val} 鏉);
+			},
+			handleCurrentChange(val) {
+				console.log(`褰撳墠椤�: ${val}`);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.api-main {
+		background-color: #fff;
+		margin: 8px;
+		padding: 8px;
+	}
+	.api-table {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+		
+	}
+	.multipleTableRef {
+		margin-bottom: 8px;
+	}
+	.form-view-data {
+		padding-left: 160px;
+		padding-right: 50px;
+	}
+</style>
+<style>
+	.viewData .el-drawer .el-drawer__header {
+		border-bottom: 1px solid #f0f0f0;
+		padding-bottom: 20px;
+		margin-bottom: 20px;
+	}
+</style>
diff --git a/src/views/monitor/log/usual.vue b/src/views/monitor/log/usual.vue
new file mode 100644
index 0000000..0eea4a0
--- /dev/null
+++ b/src/views/monitor/log/usual.vue
@@ -0,0 +1,212 @@
+<!--
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-03-29 17:38:39
+ * @FilePath: /smart-web/src/views/master/person/main/index.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+	<div class="api-main">
+		<el-form :inline="true" :model="searchData" abel-width="120px">
+			<el-form-item label="鏈嶅姟id">
+				<el-input v-model="searchData.test" placeholder="鏈嶅姟id" clearable />
+			</el-form-item>
+			<el-form-item label="鏈嶅姟host">
+				<el-input v-model="searchData.test" placeholder="鏈嶅姟host" clearable />
+			</el-form-item>
+			<el-form-item>
+				<el-button type="primary" @click="searchBtn">鎼滅储</el-button>
+				<el-button @click="searchBtn">娓呯┖</el-button>
+			</el-form-item>
+		</el-form>
+		<div>
+			<div class="api-table">
+				<el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef">
+					<el-table-column prop="date" label="鏈嶅姟id"></el-table-column>
+					<el-table-column prop="name" label="鏈嶅姟host"></el-table-column>
+					<el-table-column prop="name" label="杞欢鐜"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織绾у埆"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織id"></el-table-column>
+					<el-table-column prop="name" label="璇锋眰鎺ュ彛"></el-table-column>
+					<el-table-column prop="name" label="鏃ュ織鏃堕棿"></el-table-column>
+					<el-table-column fixed="right" label="鎿嶄綔">
+						<template #default="scope">
+							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+					:current-page="currentPage4"
+					:page-sizes="[100, 200, 300, 400]"
+					:page-size="100"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="400">
+				</el-pagination>
+			</div>
+		</div>
+		<el-drawer v-model="drawer" title="鏌� 鐪�" direction="rtl" :before-close="handleClose" size="60%" modal-class="viewData">
+			<el-form :inline="true" :model="viewData" abel-width="120px" class="form-view-data">
+				<el-row>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟id" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟host" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏈嶅姟ip" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="杞欢鐜" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織绾у埆" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織id" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="璇锋眰鎺ュ彛" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="12">
+						<el-form-item label="鏃ュ織鏃堕棿" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="鐢ㄦ埛浠g悊" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="鏃ュ織绠$悊" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24">
+						<el-form-item label="璇锋眰鏁版嵁" center>
+							<span>aaa</span>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+		</el-drawer>
+	</div>
+</template>
+<script>
+	export default {
+		name: "allocation",
+		data(){
+			return {
+				viewData: {},
+				drawer: false,
+				searchData: {
+					test: ""
+				},
+				dialog: {
+					save: false,
+					allocation: false
+				},
+				leftActive: true,
+				input: '',
+				input3: '',
+				tableData: [{
+					date: '2016-05-02',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-04',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-01',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�',
+					zip: 200333
+					}, {
+					date: '2016-05-03',
+					name: '鐜嬪皬铏�',
+					province: '涓婃捣',
+					city: '鏅檧鍖�',
+					address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�',
+					zip: 200333
+				}]
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			
+		},
+		methods: {
+			handleClose() {
+				this.drawer = false;
+			},
+			searchBtn() {},
+			//鏌ョ湅
+			table_show(row){
+				this.drawer = true;
+			},
+			handleSizeChange(val) {
+				console.log(`姣忛〉 ${val} 鏉);
+			},
+			handleCurrentChange(val) {
+				console.log(`褰撳墠椤�: ${val}`);
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.api-main {
+		background-color: #fff;
+		margin: 8px;
+		padding: 8px;
+	}
+	.api-table {
+		padding-left: 8px;
+		padding-right: 8px;
+		margin-bottom: 8px;
+		
+	}
+	.multipleTableRef {
+		margin-bottom: 8px;
+	}
+	.form-view-data {
+		padding-left: 160px;
+		padding-right: 50px;
+	}
+</style>
+<style>
+	.viewData .el-drawer .el-drawer__header {
+		border-bottom: 1px solid #f0f0f0;
+		padding-bottom: 20px;
+		margin-bottom: 20px;
+	}
+</style>

--
Gitblit v1.9.3