소스 검색

整理一半

chenyi406 3 년 전
부모
커밋
41eb681046
8개의 변경된 파일584개의 추가작업 그리고 443개의 파일을 삭제
  1. 7 7
      src/App.vue
  2. 42 35
      src/router/index.js
  3. 1 0
      src/static/js/axiosCfg.js
  4. 53 51
      src/static/js/global.js
  5. 120 0
      src/views/devices/lp.vue
  6. 122 132
      src/views/layout/layout.vue
  7. 222 188
      src/views/system/item.vue
  8. 17 30
      src/views/system/users.vue

+ 7 - 7
src/App.vue

@@ -1,12 +1,12 @@
 <template>
-	<div id="app">
-		<router-view />
-	</div>
+    <div id="app">
+        <router-view/>
+    </div>
 </template>
 
 <style lang="scss">
-	#app {
-		width: 100%;
-		height: 100%;
-	}
+    #app {
+        width: 100%;
+        height: 100%;
+    }
 </style>

+ 42 - 35
src/router/index.js

@@ -1,49 +1,56 @@
 import {
-	createRouter,
-	createWebHashHistory
+    createRouter,
+    createWebHashHistory
 } from 'vue-router'
 import Login from "../views/login/login";
 import Layout from "../views/layout/layout";
-import PrivApply from "../views/system/privApply";
 import Logs from "../views/monitor/logs";
 import Item from "../views/system/item";
 import Group from "../views/system/group";
+import Lps from "../views/devices/lp";
+import Users from "../views/system/users";
 
 const routes = [{
-		path: "/",
-		name: "Layout",
-		component: Layout,
-		children: [{
-				path: "/apply",
-				name: "PrivApply",
-				component: PrivApply
-			},
-			{
-				path: "/logs",
-				name: "Logs",
-				component: Logs
-			},
-			{
-				path: "/groups",
-				name: "Group",
-				component: Group
-			},
-			{
-				path: "/items",
-				name: "Item",
-				component: Item
-			}
-		]
-	},
-	{
-		path: "/login",
-		name: "Login",
-		component: Login,
-	}
+    path: "/",
+    name: "Layout",
+    component: Layout,
+    children: [
+        {
+            path: "/logs",
+            name: "Logs",
+            component: Logs
+        },
+        {
+            path: "/devices/lp",
+            name: "Lps",
+            component: Lps
+        },
+        {
+            path: "/groups",
+            name: "Group",
+            component: Group
+        },
+        {
+            path: "/users",
+            name: "Users",
+            component: Users
+        },
+        {
+            path: "/items",
+            name: "Item",
+            component: Item
+        }
+    ]
+},
+    {
+        path: "/login",
+        name: "Login",
+        component: Login,
+    }
 ];
 const router = createRouter({
-	history: createWebHashHistory(),
-	routes
+    history: createWebHashHistory(),
+    routes
 });
 
 export default router

+ 1 - 0
src/static/js/axiosCfg.js

@@ -28,6 +28,7 @@ Axios.interceptors.response.use(res => {
 				ElMessage.error(res.data.msg);
 				break;
 			case 400: //无权限
+				ElMessage.error("请先登录");
 				router.replace("/login");
 				break;
 			case 500: //服务器错误

+ 53 - 51
src/static/js/global.js

@@ -1,60 +1,62 @@
 const server = "http://localhost:8081/bms/api/operate/";
 
 const URL = {
-	//登录
-	login: server + "admin/login.do",
+    //登录
+    login: server + "admin/login.do",
+    //验证token
+    verify: server + "admin/verify.do",
 
-	//权限申请
-	privilegeApply: {
-		//列表
-		listPage: server + "privilegeApply/listPage.do",
-		//提交审核
-		audit: server + "privilegeApply/audit.do",
-		//获取某用户没有权限的设备组
-		getNoPrivGroups: server + "privilegeApply/getNoPrivGroups.do",
-	},
-	//mqtt日志
-	logs: {
-		//列表
-		listPage: server + "logs/listPage.do",
-		//全部指令
-		instructions: server + "logs/getAllInstruction.do",
-	},
-	//项目管理
-	item: {
-		//列表
-		listPage: server + "item/listPage.do",
-		//全部的项目列表
-		allList: server + "item/listAll.do",
-		//增
-		save: server + "item/save.do",
-		//禁用
-		forbidden: server + "item/forbidden.do",
-		//启用
-		permit: server + "item/permit.do",
-		//更新
-		update: server + "item/update.do",
-	},
-	//项目组管理
-	group: {
-		//列表
-		listPage: server + "group/listPage.do",
-		//增
-		save: server + "group/save.do",
-		//查重
-		isRepeat: server + "group/isRepeat.do",
-		//禁用
-		forbidden: server + "group/forbidden.do",
-		//启用
-		permit: server + "group/permit.do",
-		//更新
-		update: server + "group/update.do",
-	},
+    //用户
+    users: {
+        //列表
+        listPage: server + "user/listPage.do",
+        //提交审核
+        audit: server + "privilegeApply/audit.do",
+        //获取某用户没有权限的设备组
+        getNoPrivGroups: server + "privilegeApply/getNoPrivGroups.do",
+    },
+    //mqtt日志
+    logs: {
+        //列表
+        listPage: server + "logs/listPage.do",
+        //全部指令
+        instructions: server + "logs/getAllInstruction.do",
+    },
+    //项目管理
+    item: {
+        //列表
+        listPage: server + "item/listPage.do",
+        //全部的项目列表
+        allList: server + "item/listAll.do",
+        //增
+        save: server + "item/save.do",
+        //禁用
+        forbidden: server + "item/forbidden.do",
+        //启用
+        permit: server + "item/permit.do",
+        //更新
+        update: server + "item/update.do",
+    },
+    //项目组管理
+    group: {
+        //列表
+        listPage: server + "group/listPage.do",
+        //增
+        save: server + "group/save.do",
+        //查重
+        isRepeat: server + "group/isRepeat.do",
+        //禁用
+        forbidden: server + "group/forbidden.do",
+        //启用
+        permit: server + "group/permit.do",
+        //更新
+        update: server + "group/update.do",
+    },
 
-	//webSocket 地址
-	webSocket: "wss://www.mang406.top/webSocket/",
+    //webSocket 地址
+    webSocket: "wss://www.mang406.top/webSocket/",
 };
 
 export default {
-	URL
+    URL
 };

+ 120 - 0
src/views/devices/lp.vue

@@ -0,0 +1,120 @@
+<template>
+    <div class="zy-template">
+        <div class="zy-main-title">设备列表</div>
+        <div class="zy-module">
+            <el-form ref="form" :model="query" label-width="60px">
+                <el-form-item label="设备码:" class="zy-search-form-item">
+                    <el-input v-model="query.openNum" size="mini" clearable></el-input>
+                </el-form-item>
+
+                <el-form-item label="类型:" class="zy-search-form-item">
+                    <el-select v-model="query.type" size="mini" value="" placeholder=" " clearable>
+                        <el-option value="0" label="服务器接收"/>
+                        <el-option value="1" label="服务器发送"/>
+                    </el-select>
+                </el-form-item>
+
+                <el-form-item label="指令:" class="zy-search-form-item">
+                    <el-select v-model="query.m" size="mini" value="" placeholder=" " clearable>
+                        <el-option :value="item.code" :label="item.remark" v-for="item in mList"/>
+                    </el-select>
+                </el-form-item>
+
+                <el-button type="primary" size="mini" @click="submit">查询</el-button>
+            </el-form>
+        </div>
+
+        <div class="zy-module">
+            <el-table :data="page.records" header-cell-class-name="zy-table-header-cell" cell-class-name='zy-table-cell'
+                      stripe>
+                <el-table-column prop="openNum" label="设备ID" width="180"/>
+                <el-table-column label="类型" width="80">
+                    <template #default="scope">{{scope.row.type==0?'接收':'发送'}}</template>
+                </el-table-column>
+                <el-table-column label="类型" width="180">
+                    <template #default="scope">{{scope.row.m}} ({{scope.row.remark}})</template>
+                </el-table-column>
+                <el-table-column prop="content" label="内容" min-width="10%"/>
+                <el-table-column prop="createTime" label="时间" width="180"/>
+            </el-table>
+
+            <el-pagination class="zy-table-pagination" background layout="prev, pager, next"
+                           :current-page="page.current" :total="page.total" :page-size="page.size"
+                           @current-change="pagination"/>
+        </div>
+
+    </div>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                query: {
+                    openNum: "",
+                    type: null,
+                    m: null
+                },
+                mList: null, //指令列表
+                page: {
+                    current: 1,
+                    size: 20,
+                },
+            };
+        },
+        mounted() {
+            this.getAllInstruction();
+            this.getListPage();
+        },
+        methods: {
+            /**
+             * 提交查询条件
+             */
+            submit: function () {
+                const param = {
+                    current: 1,
+                    size: this.page.size,
+                    openNum: this.query.openNum,
+                    type: this.query.type,
+                    m: this.query.m,
+                };
+                this.getListPage(param);
+            },
+            /**
+             * 分页点击事件
+             */
+            pagination: function (current) {
+                const param = {
+                    current: current,
+                    size: this.page.size,
+                    openNum: this.query.openNum,
+                    type: this.query.type,
+                    m: this.query.m,
+                };
+                this.getListPage(param);
+            },
+
+            /**
+             * 获取日志列表
+             */
+            getListPage: function (params) {
+                this.$http.Post(this.$global.logs.listPage, params).then(res => {
+                    this.page = res.data;
+                    console.log(res.data)
+                })
+            },
+            /**
+             * 获取全部的指令
+             */
+            getAllInstruction() {
+                this.$http.Get(this.$global.logs.instructions, {}).then(res => {
+                    this.mList = res.data;
+                    console.log(res.data)
+                })
+            }
+        }
+    };
+</script>
+
+<style lang="scss">
+</style>

+ 122 - 132
src/views/layout/layout.vue

@@ -1,155 +1,145 @@
 <template>
-	<el-container class="container">
-		<el-aside width="200px">
-			<div class="logo">
-				<img src="./static/logo.png" alt="logo">
-			</div>
-			<el-menu default-active="1" background-color="#141B2E" text-color="#E4ECFF">
-				<!-- 				<el-submenu index="1">
-					<template #title><i class="el-icon-monitor"></i>设备管理</template>
-					<router-link to="/map">
-						<el-menu-item index="1-1">位置分布</el-menu-item>
-					</router-link>
-					<router-link to="/devices">
-						<el-menu-item index="1-2">设备列表</el-menu-item>
-					</router-link>
-					<router-link to="/logs">
-						<el-menu-item index="1-3">消息日志</el-menu-item>
-					</router-link>
-				</el-submenu> -->
+    <el-container class="container">
+        <el-aside width="200px">
+            <div class="logo">
+                <img src="./static/logo.png" alt="logo">
+            </div>
+            <el-menu default-active="1" background-color="#141B2E" text-color="#E4ECFF">
+                <el-submenu index="1">
+                    <template #title><i class="el-icon-monitor"></i>设备管理</template>
+                    <router-link to="/map">
+                        <el-menu-item index="1-1">位置分布</el-menu-item>
+                    </router-link>
+                    <router-link to="/devices/lp">
+                        <el-menu-item index="1-2">设备列表-路牌</el-menu-item>
+                    </router-link>
+                </el-submenu>
 
-				<el-submenu index="2">
-					<template #title><i class="el-icon-monitor"></i>设备监控</template>
-					<router-link to="/logs">
-						<el-menu-item index="2-1">MQTT消息日志</el-menu-item>
-					</router-link>
-				</el-submenu>
+                <el-submenu index="2">
+                    <template #title><i class="el-icon-monitor"></i>设备监控</template>
+                    <router-link to="/logs">
+                        <el-menu-item index="2-1">MQTT消息日志</el-menu-item>
+                    </router-link>
+                </el-submenu>
 
-				<el-submenu index="3">
-					<template #title><i class="el-icon-setting"></i>系统设置</template>
-					<router-link to="/apply">
-						<el-menu-item index="3-1">用户管理</el-menu-item>
-					</router-link>
-					<router-link to="/item">
-						<el-menu-item index="3-2">项目管理</el-menu-item>
-					</router-link>
-					<router-link to="/apply">
-						<el-menu-item index="3-3">设备组管理</el-menu-item>
-					</router-link>
-					<router-link to="/apply">
-						<el-menu-item index="3-4">权限申请记录</el-menu-item>
-					</router-link>
-				</el-submenu>
+                <el-submenu index="3">
+                    <template #title><i class="el-icon-setting"></i>系统设置</template>
+                    <router-link to="/apply">
+                        <el-menu-item index="3-1">用户管理</el-menu-item>
+                    </router-link>
+                    <router-link to="/item">
+                        <el-menu-item index="3-2">项目管理</el-menu-item>
+                    </router-link>
+                    <router-link to="/apply">
+                        <el-menu-item index="3-3">设备组管理</el-menu-item>
+                    </router-link>
+                    <router-link to="/apply">
+                        <el-menu-item index="3-4">权限申请记录</el-menu-item>
+                    </router-link>
+                </el-submenu>
 
-			</el-menu>
-		</el-aside>
-		<el-container>
-			<el-header class='header' style="height: 50px;">
-				<div class="dropdown">
-					<el-dropdown trigger="click">
+            </el-menu>
+        </el-aside>
+        <el-container>
+            <el-header class='header' style="height: 50px;">
+                <div class="dropdown">
+                    <el-dropdown trigger="click">
 						<span class="el-dropdown-link">
 							{{nickname}}<i class="el-icon-arrow-down el-icon--right"></i>
 						</span>
-						<template #dropdown>
-							<el-dropdown-menu>
-								<el-dropdown-item>退出登录</el-dropdown-item>
-							</el-dropdown-menu>
-						</template>
-					</el-dropdown>
-				</div>
-			</el-header>
-			<el-main>
-				<!-- vue3.0配置-->
-				<router-view v-slot="{Component}">
-					<keep-alive>
-						<component :is="Component" />
-					</keep-alive>
-				</router-view>
-			</el-main>
-		</el-container>
-	</el-container>
+                        <template #dropdown>
+                            <el-dropdown-menu>
+                                <el-dropdown-item>退出登录</el-dropdown-item>
+                            </el-dropdown-menu>
+                        </template>
+                    </el-dropdown>
+                </div>
+            </el-header>
+            <el-main>
+                <!-- vue3.0配置-->
+                <router-view v-slot="{Component}">
+                    <keep-alive>
+                        <component :is="Component"/>
+                    </keep-alive>
+                </router-view>
+            </el-main>
+        </el-container>
+    </el-container>
 </template>
 
 <script>
-	import TokenManager from '../../static/js/token.js'
-	export default {
-		data() {
-			return {
-				nickname: '管理员',
-			};
-		},
-		mounted() {
-			//this.initToken();
-		},
-		methods: {
-			/**
-			 * 查看token信息
-			 */
-			initToken: function() {
-				try {
-					const obj = JSON.parse(TokenManager.getToken());
-					if (TokenManager.getVerify() != null) {
-						this.nickname = obj.nickname;
-						return;
-					}
-					this.$http.Get(this.$global.verify, {}).then(res => {
-						TokenManager.setVerify();
-						this.nickname = obj.nickname;
-					})
-				} catch {
-					this.$router.replace("/login");
-				}
-			}
-		}
-	};
+    import TokenManager from '../../static/js/token.js'
+
+    export default {
+        data() {
+            return {
+                nickname: '管理员',
+            };
+        },
+        mounted() {
+            this.initToken();
+        },
+        methods: {
+            /**
+             * 查看token信息
+             */
+            initToken: function () {
+                this.$http.Get(this.$global.verify, {}).then(res => {
+                    const obj = JSON.parse(TokenManager.getToken());
+                    console.log(obj);
+                    this.nickname = obj.nickname;
+                })
+            }
+        }
+    };
 </script>
 
 <style scoped lang="scss">
-	.container {
-		height: 100%;
+    .container {
+        height: 100%;
 
-		& .logo {
-			box-sizing: border-box;
-			padding-top: 10px;
-			padding-left: 20px;
-			width: 100%;
-			height: 60px;
+        & .logo {
+            box-sizing: border-box;
+            padding-top: 10px;
+            padding-left: 20px;
+            width: 100%;
+            height: 60px;
 
-			& img {
-				width: 40px;
-				height: 40px;
-			}
+            & img {
+                width: 40px;
+                height: 40px;
+            }
 
-		}
+        }
 
-		& .header {
-			background: #f3f5f9;
+        & .header {
+            background: #f3f5f9;
 
-			& .dropdown {
-				float: right;
-				margin-right: 30px;
-				cursor: pointer;
-				line-height: 50px;
-			}
-		}
+            & .dropdown {
+                float: right;
+                margin-right: 30px;
+                cursor: pointer;
+                line-height: 50px;
+            }
+        }
 
-		& .el-main {
-			background: #f3f5f9;
-			height: 100%;
-			overflow-x: hidden;
-			overflow-y: scroll;
-			box-sizing: border-box;
-			padding: 0 15px 20px 20px;
+        & .el-main {
+            background: #f3f5f9;
+            height: 100%;
+            overflow-x: hidden;
+            overflow-y: scroll;
+            box-sizing: border-box;
+            padding: 0 15px 20px 20px;
 
-		}
+        }
 
-		& .el-aside {
-			height: 100%;
-			background: #141b2e;
+        & .el-aside {
+            height: 100%;
+            background: #141b2e;
 
-			& .el-menu {
-				border: none;
-			}
-		}
-	}
+            & .el-menu {
+                border: none;
+            }
+        }
+    }
 </style>

+ 222 - 188
src/views/system/item.vue

@@ -1,198 +1,232 @@
 <template>
-	<div class="zy-template">
-		<div class="zy-main-title">项目管理</div>
-		<div class="zy-module">
-			<el-form :model="query" label-width="80px">
-				<el-form-item label="关键字" class="zy-search-form-item">
-					<el-input v-model="query.name" size="mini" placeholder="项目名/项目编号" clearable></el-input>
-				</el-form-item>
-				<el-form-item label="状态" class="zy-search-form-item">
-					<el-select v-model="query.status" size="mini" clearable placeholder="不选默认全部">
-						<el-option label="禁用" value="0" />
-						<el-option label="启用" value="1" />
-					</el-select>
-				</el-form-item>
-				<el-button type="primary" size="mini" @click="submit">查询</el-button>
-			</el-form>
-		</div>
-
-		<div class="zy-module">
-			<el-button type="primary" size="small" style="margin-bottom: 20px;" @click="addDialog = true">增加</el-button>
-			<el-table :data="page.records" max-height="800" stripe size="small"
-				header-cell-class-name="zy-table-header-cell" cell-class-name='zy-table-cell'>
-				<el-table-column prop="name" label="项目名称" width="120" min-width="5%" />
-				<el-table-column label="项目备注" min-width="30%">
-					<template #default="scope">
-						<div style="height: 24px; overflow: hidden;">
-							{{scope.row.remark}}
-						</div>
-					</template>
-				</el-table-column>
-				<el-table-column label="状态" width="60">
-					<template #default="scope">
-						<el-tag type="danger" size="mini" v-if="scope.row.status==0">禁用</el-tag>
-						<el-tag type="success" size="mini" v-if="scope.row.status==1">启用</el-tag>
-					</template>
-				</el-table-column>
-				<el-table-column prop="createTime" label="创建时间" width="160" />
-				<el-table-column label="操作" width="100" min-width="10%">
-					<template #default="scope">
-						<el-button @click="handleDetail(scope.row)" type="text" size="small">修改</el-button>
-						<el-button @click="handlePass(scope.row.id)" type="text" size="small" style="color: #67c23a"
-							v-if="scope.row.status==0">启用</el-button>
-						<el-button @click="handleRefuse(scope.row.id)" type="text" size="small" style="color: #f56c6c;"
-							v-if="scope.row.status==1">禁用</el-button>
-					</template>
-				</el-table-column>
-			</el-table>
-			<el-pagination class="zy-table-pagination" background layout="prev, pager, next"
-				:current-page="page.current" :total="page.total" :page-size="page.size" @current-change="pagination" />
-		</div>
-
-		<el-dialog title="添加项目" v-model="addDialog" width="500px">
-			<el-form :model="addForm" label-width="100px">
-				<el-form-item label="项目名称:">
-					<el-input v-model="addForm.name" maxlength="30"></el-input>
-				</el-form-item>
-
-				<el-form-item label="备注:">
-					<el-input type="textarea" v-model="addForm.remark" maxlength="100"></el-input>
-				</el-form-item>
-			</el-form>
-			<template #footer>
+    <div class="zy-template">
+        <div class="zy-main-title">项目管理</div>
+        <div class="zy-module">
+            <el-form :model="query" label-width="80px">
+                <el-form-item label="关键字" class="zy-search-form-item">
+                    <el-input v-model="query.name" size="mini" placeholder="项目名/项目编号" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="状态" class="zy-search-form-item">
+                    <el-select v-model="query.status" size="mini" clearable placeholder="不选默认全部">
+                        <el-option label="禁用" value="0"/>
+                        <el-option label="启用" value="1"/>
+                    </el-select>
+                </el-form-item>
+                <el-button type="primary" size="mini" @click="submit">查询</el-button>
+            </el-form>
+        </div>
+
+        <div class="zy-module">
+            <el-button type="primary" size="small" style="margin-bottom: 20px;" @click="addDialog = true">增加</el-button>
+            <el-table :data="page.records" max-height="800" stripe size="small"
+                      header-cell-class-name="zy-table-header-cell" cell-class-name='zy-table-cell'>
+                <el-table-column prop="name" label="项目名称" width="120" min-width="5%"/>
+                <el-table-column label="项目备注" min-width="30%">
+                    <template #default="scope">
+                        <div style="height: 24px; overflow: hidden;">
+                            {{scope.row.remark}}
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column label="状态" width="60">
+                    <template #default="scope">
+                        <el-tag type="danger" size="mini" v-if="scope.row.status==0">禁用</el-tag>
+                        <el-tag type="success" size="mini" v-if="scope.row.status==1">启用</el-tag>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="createTime" label="创建时间" width="160"/>
+                <el-table-column label="操作" width="100" min-width="10%">
+                    <template #default="scope">
+                        <el-button @click="handleUpdate(scope.row)" type="text" size="small">修改</el-button>
+                        <el-button @click="handlePass(scope.row.id)" type="text" size="small" style="color: #67c23a"
+                                   v-if="scope.row.status==0">启用
+                        </el-button>
+                        <el-button @click="handleRefuse(scope.row.id)" type="text" size="small" style="color: #f56c6c;"
+                                   v-if="scope.row.status==1">禁用
+                        </el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination class="zy-table-pagination" background layout="prev, pager, next"
+                           :current-page="page.current" :total="page.total" :page-size="page.size"
+                           @current-change="pagination"/>
+        </div>
+
+        <el-dialog title="添加项目" v-model="addDialog" width="500px">
+            <el-form :model="addForm" label-width="100px" :rules="rules">
+                <el-form-item label="项目名称:" prop="name">
+                    <el-input v-model="addForm.name" maxlength="30"></el-input>
+                </el-form-item>
+
+                <el-form-item label="备注:">
+                    <el-input type="textarea" v-model="addForm.remark" maxlength="100"></el-input>
+                </el-form-item>
+            </el-form>
+            <template #footer>
 				<span class="dialog-footer">
 					<el-button @click="addDialog = false">取 消</el-button>
-					<el-button type="danger" @click="addSubmit">提 交</el-button>
+					<el-button type="primary" @click="addSubmit('addForm')">提 交</el-button>
 				</span>
-			</template>
-		</el-dialog>
-	</div>
+            </template>
+        </el-dialog>
+
+        <el-dialog title="修改项目" v-model="updateDialog" width="500px">
+            <el-form ref="updateForm" :model="updateForm" label-width="100px" :rules="rules">
+                <el-form-item label="项目名称:" prop="name">
+                    <el-input v-model="updateForm.name" maxlength="30"></el-input>
+                </el-form-item>
+
+                <el-form-item label="备注:">
+                    <el-input type="textarea" v-model="updateForm.remark" maxlength="100"></el-input>
+                </el-form-item>
+            </el-form>
+            <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="updateDialog = false">取 消</el-button>
+					<el-button type="primary" @click="updateSubmit('updateForm')">提 交</el-button>
+				</span>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				query: {
-					name: null,
-					status: null
-				},
-				page: {
-					current: 1,
-					size: 10,
-				},
-				addDialog: false, //增加表单
-				updateDialog: false, //更新表单
-				updateForm: null, //更新表单
-				addForm: null, //添加表单
-			};
-		},
-		mounted: function() {
-			this.getListPage(this.page);
-		},
-		methods: {
-			/**
-			 * 提交查询条件
-			 */
-			submit: function() {
-				const params = {
-					name: this.query.name,
-					status: this.query.status
-				};
-				this.getListPage(params);
-			},
-
-			/**
-			 * 分页点击事件
-			 */
-			pagination: function(current) {
-				const params = {
-					name: this.query.name,
-					status: this.query.status,
-					current: current,
-					size: this.page.size,
-				};
-				this.getListPage(params);
-			},
-
-			/**
-			 * 获取设备列表
-			 */
-			getListPage: function(params) {
-				this.$http.Get(this.$global.item.listPage, params).then(res => {
-					console.log(res.data);
-					this.page = res.data;
-				})
-			},
-
-			/**
-			 * 增加项目
-			 */
-			handleAdd: function(obj) {
-				this.addDialog = true;
-			},
-
-			/**
-			 * 更新项目
-			 */
-			handleUpdate: function(obj) {
-				this.updateDialog = true;
-			},
-
-			/**
-			 * 提交增加表单
-			 */
-			addSubmit: function() {
-				const param = {
-					name: this.query.name,
-					status: this.query.status
-				}
-				this.$http.Post(this.$global.item.save, param).then(res => {
-					this.$message.success("添加成功!");
-					this.refresh();
-				})
-			},
-
-			/**
-			 * 提交更新表单
-			 */
-			updateSubmit: function() {
-				const param = {
-					name: this.query.name,
-					status: this.query.status
-				}
-				this.$http.Post(this.$global.item.save, param).then(res => {
-					this.$message.success("添加成功!");
-					this.refresh();
-				})
-			},
-
-			/**
-			 * 禁用
-			 */
-			forbidden: function(id) {},
-
-			/**
-			 * 启用
-			 */
-			permit: function(id) {},
-
-
-			/**
-			 * 刷新列表
-			 */
-			refresh: function() {
-				this.addDialog = false;
-				const params = {
-					key: this.query.key,
-					status: this.query.status,
-					current: this.page.current,
-					size: this.page.size,
-				}
-				this.getListPage(params);
-			}
-		}
-	};
+    export default {
+        data() {
+            return {
+                query: {
+                    name: null,
+                    status: null
+                },
+                page: {
+                    current: 1,
+                    size: 10,
+                },
+                addDialog: false, //增加表单
+                updateDialog: false, //更新表单
+                addForm: {//添加表单
+                    name: null,
+                    remark: null
+                },
+                updateForm: {//更新表单
+                    id: null,
+                    name: null,
+                    remark: null
+                },
+                rules: {
+                    name: [{
+                        required: true,
+                        message: '项目名必填',
+                        trigger: 'blur'
+                    }],
+                }
+            };
+        },
+        mounted() {
+            this.getListPage(this.page);
+        },
+        methods: {
+            /**
+             * 提交查询条件
+             */
+            submit: function () {
+                const params = {
+                    name: this.query.name,
+                    status: this.query.status
+                };
+                this.getListPage(params);
+            },
+
+            /**
+             * 分页点击事件
+             */
+            pagination: function (current) {
+                const params = {
+                    name: this.query.name,
+                    status: this.query.status,
+                    current: current,
+                    size: this.page.size,
+                };
+                this.getListPage(params);
+            },
+
+            /**
+             * 获取设备列表
+             */
+            getListPage: function (params) {
+                this.$http.Get(this.$global.item.listPage, params).then(res => {
+                    console.log(res.data);
+                    this.page = res.data;
+                })
+            },
+
+            /**
+             * 更新项目
+             */
+            handleUpdate: function (obj) {
+                this.updateDialog = true;
+                this.updateForm = {
+                    id: obj.id,
+                    name: obj.name,
+                    remark: obj.remark
+                }
+            },
+
+            /**
+             * 提交增加表单
+             */
+            addSubmit: function (formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (!valid) return false;
+                    this.$http.Post(this.$global.item.save, this.addForm).then(res => {
+                        this.$message.success("添加成功!");
+                        this.refresh();
+                    })
+                });
+            },
+
+            /**
+             * 提交更新表单
+             */
+            updateSubmit: function (formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (!valid) return false;
+                    this.$http.Post(this.$global.item.update, this.updateForm).then(res => {
+                        this.$message.success("修改成功!");
+                        this.refresh();
+                    })
+                });
+            },
+
+            /**
+             * 禁用
+             */
+            forbidden: function (id) {
+            },
+
+            /**
+             * 启用
+             */
+            permit: function (id) {
+            },
+
+
+            /**
+             * 刷新列表
+             */
+            refresh: function () {
+                this.addDialog = false;
+                this.updateDialog = false;
+                const params = {
+                    key: this.query.key,
+                    status: this.query.status,
+                    current: this.page.current,
+                    size: this.page.size,
+                };
+                this.getListPage(params);
+            }
+        }
+    };
 </script>
 
 <style lang="scss" scoped>

+ 17 - 30
src/views/system/users.vue

@@ -3,13 +3,7 @@
         <div class="zy-module">
             <el-form ref="form" :model="query" label-width="60px">
                 <el-form-item label="关键字:" class="zy-search-form-item">
-                    <el-input v-model="query.key" size="mini" placeholder="用户名/昵称"></el-input>
-                </el-form-item>
-                <el-form-item label="性别:" class="zy-search-form-item">
-                    <el-select v-model="query.gender" size="mini" clearable>
-                        <el-option value="1" label="男"/>
-                        <el-option value="2" label="女"/>
-                    </el-select>
+                    <el-input v-model="query.key" size="mini" placeholder="用户名/昵称/手机号/随机码"></el-input>
                 </el-form-item>
                 <el-button type="primary" size="mini" @click="submit">查询</el-button>
             </el-form>
@@ -18,32 +12,29 @@
         <div class="zy-module">
             <el-table :data="page.records" stripe header-cell-class-name="zy-table-header-cell"
                       cell-class-name='zy-table-cell'>
-
-                <el-table-column prop="avatar" label="头像" width="100">
+                <el-table-column prop="openId" label="微信open-id" width="300"/>
+                <el-table-column prop="randomCode" label="随机码" width="180"/>
+                <el-table-column label="管理员权限" width="120">
                     <template #default="scope">
-                        <img :src="scope.row.avatar" width="50" height="50" style="border-radius: 100px;" alt="avatar"/>
+                        <el-tag type="success" v-if="scope.row.admin===1">是</el-tag>
+                        <el-tag v-if="scope.row.admin===0">否</el-tag>
                     </template>
                 </el-table-column>
-                <el-table-column prop="nickname" label="昵称" width="180"/>
-                <el-table-column label="性别" width="100">
+                <el-table-column prop="createTime" label="注册时间" min-width="10%"/>
+                <el-table-column label="操作" width="150" min-width="10%">
                     <template #default="scope">
-                        {{scope.row.gender===1?'男':'女'}}
-                    </template>
-                </el-table-column>
-                <el-table-column prop="openId" label="微信open-id" width="300" min-width="10%"/>
-                <el-table-column prop="createTime" label="注册时间" width="180" min-width="10%"/>
-                <el-table-column label="地区" min-width="20%">
-                    <template #default="scope">
-                        {{scope.row.country}}{{scope.row.province}}{{scope.row.city}}
+                        <el-button @click="setAdmin(scope.row)" type="text" size="small"
+                                   :class="scope.row.admin===0?'':'red'">
+                            {{scope.row.admin===0?'设为管理员':'取消管理员'}}
+                        </el-button>
                     </template>
                 </el-table-column>
             </el-table>
 
             <el-pagination class="zy-table-pagination" background layout="prev, pager, next"
-                           :current-page="page.current"
-                           :total="page.total" :page-size="page.size" @current-change="pagination"/>
+                           :total="page.total" :page-size="page.size" @current-change="pagination"
+                           :current-page="page.current"/>
         </div>
-
     </div>
 </template>
 
@@ -52,8 +43,7 @@
         data() {
             return {
                 query: {
-                    key: '',
-                    gender: ''
+                    key: ''
                 },
                 page: {
                     current: 1,
@@ -71,8 +61,7 @@
              */
             submit: function () {
                 const param = {
-                    key: this.query.key,
-                    gender: this.query.gender
+                    key: this.query.key
                 };
                 this.getUserList(param);
             },
@@ -82,7 +71,6 @@
             pagination: function (current) {
                 const param = {
                     key: this.query.key,
-                    gender: this.query.gender,
                     current: current,
                     size: this.page.size,
                 };
@@ -93,8 +81,7 @@
              */
             getUserList: function (params) {
                 const that = this;
-                this.$http.Post(this.$global.getUserList, params).then(res => {
-                    console.log(res.data)
+                this.$http.Get(this.$global.users.listPage, params).then(res => {
                     that.page = res.data;
                 })
             }