Commit cf09ebad760e809edb13df025f63816446580846

Authored by youxiw2000
1 parent fdd3fe73

m

Showing 36 changed files with 380 additions and 176 deletions
trash-admin/bin/src/main/java/com/trash/Application.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/ServletInitializer.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/common/CaptchaController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/common/CommonController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/monitor/ServerController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/monitor/SysLogininforController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/monitor/SysOperlogController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/monitor/SysUserOnlineController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysConfigController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysDeptController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysDictDataController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysDictTypeController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysMenuController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysNoticeController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysPostController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysProfileController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysRoleController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/system/SysUserController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/tool/SwaggerController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/tool/TestController.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/controller/tool/UserEntity.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/java/com/trash/web/core/config/SwaggerConfig.class 0 → 100644
No preview for this file type
trash-admin/bin/src/main/resources/META-INF/spring-devtools.properties 0 → 100644
  1 +restart.include.json=/com.alibaba.fastjson.*.jar
0 \ No newline at end of file 2 \ No newline at end of file
trash-admin/bin/src/main/resources/i18n/messages.properties 0 → 100644
  1 +#错误消息
  2 +not.null=* 必须填写
  3 +user.jcaptcha.error=验证码错误
  4 +user.jcaptcha.expire=验证码已失效
  5 +user.not.exists=用户不存在/密码错误
  6 +user.password.not.match=用户不存在/密码错误
  7 +user.password.retry.limit.count=密码输入错误{0}次
  8 +user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定10分钟
  9 +user.password.delete=对不起,您的账号已被删除
  10 +user.blocked=用户已封禁,请联系管理员
  11 +role.blocked=角色已封禁,请联系管理员
  12 +user.logout.success=退出成功
  13 +
  14 +length.not.valid=长度必须在{min}到{max}个字符之间
  15 +
  16 +user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
  17 +user.password.not.valid=* 5-50个字符
  18 +
  19 +user.email.not.valid=邮箱格式错误
  20 +user.mobile.phone.number.not.valid=手机号格式错误
  21 +user.login.success=登录成功
  22 +user.notfound=请重新登录
  23 +user.forcelogout=管理员强制退出,请重新登录
  24 +user.unknown.error=未知错误,请重新登录
  25 +
  26 +##文件上传消息
  27 +upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB!
  28 +upload.filename.exceed.length=上传的文件名最长{0}个字符
  29 +
  30 +##权限
  31 +no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
  32 +no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
  33 +no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
  34 +no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
  35 +no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
  36 +no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
trash-admin/bin/src/main/resources/mybatis/mybatis-config.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8" ?>
  2 +<!DOCTYPE configuration
  3 +PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4 +"http://mybatis.org/dtd/mybatis-3-config.dtd">
  5 +<configuration>
  6 +
  7 + <settings>
  8 + <setting name="cacheEnabled" value="true" /> <!-- 全局映射器启用缓存 -->
  9 + <setting name="useGeneratedKeys" value="true" /> <!-- 允许 JDBC 支持自动生成主键 -->
  10 + <setting name="defaultExecutorType" value="REUSE" /> <!-- 配置默认的执行器 -->
  11 + <setting name="logImpl" value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 -->
  12 + <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
  13 + </settings>
  14 +
  15 +</configuration>
trash-admin/src/main/java/com/trash/web/controller/system/SysLoginController.java
@@ -2,6 +2,7 @@ package com.trash.web.controller.system; @@ -2,6 +2,7 @@ package com.trash.web.controller.system;
2 2
3 import java.util.HashSet; 3 import java.util.HashSet;
4 import java.util.List; 4 import java.util.List;
  5 +import java.util.Map;
5 import java.util.Set; 6 import java.util.Set;
6 7
7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletRequest;
@@ -9,9 +10,13 @@ import javax.servlet.http.HttpServletRequest; @@ -9,9 +10,13 @@ import javax.servlet.http.HttpServletRequest;
9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.web.bind.annotation.GetMapping; 11 import org.springframework.web.bind.annotation.GetMapping;
11 import org.springframework.web.bind.annotation.PostMapping; 12 import org.springframework.web.bind.annotation.PostMapping;
  13 +import org.springframework.web.bind.annotation.RequestAttribute;
12 import org.springframework.web.bind.annotation.RequestBody; 14 import org.springframework.web.bind.annotation.RequestBody;
  15 +import org.springframework.web.bind.annotation.RequestMapping;
  16 +import org.springframework.web.bind.annotation.RequestParam;
13 import org.springframework.web.bind.annotation.RestController; 17 import org.springframework.web.bind.annotation.RestController;
14 18
  19 +import com.alibaba.fastjson.JSONObject;
15 import com.trash.common.constant.Constants; 20 import com.trash.common.constant.Constants;
16 import com.trash.common.core.domain.AjaxResult; 21 import com.trash.common.core.domain.AjaxResult;
17 import com.trash.common.core.domain.entity.SysMenu; 22 import com.trash.common.core.domain.entity.SysMenu;
@@ -62,6 +67,43 @@ public class SysLoginController @@ -62,6 +67,43 @@ public class SysLoginController
62 return ajax; 67 return ajax;
63 } 68 }
64 69
  70 +
  71 + @RequestMapping("loginByToken")
  72 + public AjaxResult loginByToken(@RequestBody String token){
  73 +
  74 + JSONObject jsonObject = JSONObject.parseObject(token);
  75 +
  76 + LoginUser loginUser = loginService.loginByRemote(jsonObject.getString("token"));
  77 +
  78 + if(loginUser == null){
  79 + return AjaxResult.error();
  80 + }
  81 +
  82 + SysUser user = loginUser.getUser();
  83 +
  84 +// Set<String> roles = new HashSet<String>();
  85 +// roles.add("admin");
  86 +
  87 + Set<String> permissions = loginUser.getPermissions();
  88 +
  89 + Set<String> roles = new HashSet<String>();
  90 +
  91 + if(user.getRoles() != null){
  92 + for(SysRole role : user.getRoles()){
  93 + roles.add(role.getRoleKey());
  94 + }
  95 + }
  96 +
  97 +// // 权限集合
  98 +// Set<String> permissions = permissionService.getMenuPermission(user);
  99 + AjaxResult ajax = AjaxResult.success();
  100 + ajax.put("user", user);
  101 + ajax.put("roles", roles);
  102 + ajax.put("permissions", permissions);
  103 + ajax.put("token", loginUser.getToken());
  104 + return ajax;
  105 + }
  106 +
65 /** 107 /**
66 * 获取用户信息 108 * 获取用户信息
67 * 109 *
trash-framework/src/main/java/com/trash/framework/config/SecurityConfig.java
@@ -98,7 +98,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter @@ -98,7 +98,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
98 // 过滤请求 98 // 过滤请求
99 .authorizeRequests() 99 .authorizeRequests()
100 // 对于登录login 验证码captchaImage 允许匿名访问 100 // 对于登录login 验证码captchaImage 允许匿名访问
101 - .antMatchers("/login", "/captchaImage").anonymous() 101 + .antMatchers("/login", "/captchaImage","/loginByToken").anonymous()
102 .antMatchers( 102 .antMatchers(
103 HttpMethod.GET, 103 HttpMethod.GET,
104 "/*.html", 104 "/*.html",
trash-framework/src/main/java/com/trash/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -45,7 +45,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter @@ -45,7 +45,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
45 String token = request.getHeader("Authorization"); 45 String token = request.getHeader("Authorization");
46 46
47 if(token == null){ 47 if(token == null){
48 - token = tokenService.getTokenFromCookies(request); 48 + token = tokenService.getTokenFromCookies(request);
49 } 49 }
50 50
51 if(token!= null && !token.equals("undefined")){ 51 if(token!= null && !token.equals("undefined")){
trash-framework/src/main/java/com/trash/framework/web/service/TokenService.java
@@ -94,7 +94,7 @@ public class TokenService @@ -94,7 +94,7 @@ public class TokenService
94 94
95 public String getTokenFromCookies(HttpServletRequest request) { 95 public String getTokenFromCookies(HttpServletRequest request) {
96 try { 96 try {
97 - for(Cookie cookie : request.getCookies()){ 97 + for(Cookie cookie : request.getCookies()){
98 if(("token").equals(cookie.getName())){ 98 if(("token").equals(cookie.getName())){
99 return cookie.getValue(); 99 return cookie.getValue();
100 } 100 }
@@ -102,6 +102,9 @@ public class TokenService @@ -102,6 +102,9 @@ public class TokenService
102 } catch (Exception e) { 102 } catch (Exception e) {
103 // e.printStackTrace(); 103 // e.printStackTrace();
104 } 104 }
  105 +
  106 + String token = request.getParameter("token");
  107 +
105 return null; 108 return null;
106 } 109 }
107 110
trash-system/src/main/java/com/trash/system/service/impl/SysUserOnlineServiceImpl.java
@@ -7,6 +7,7 @@ import com.trash.common.utils.StringUtils; @@ -7,6 +7,7 @@ import com.trash.common.utils.StringUtils;
7 import com.trash.system.domain.SysUserOnline; 7 import com.trash.system.domain.SysUserOnline;
8 import com.trash.system.service.ISysUserOnlineService; 8 import com.trash.system.service.ISysUserOnlineService;
9 9
  10 +
10 /** 11 /**
11 * 在线用户 服务层处理 12 * 在线用户 服务层处理
12 * 13 *
trash-ui/src/api/dict.js
1 import requestRemote from '@/utils/requestRemote' 1 import requestRemote from '@/utils/requestRemote'
2 2
3 export function constructionsitesList(data) { 3 export function constructionsitesList(data) {
4 - const req = requestRemote({ 4 + return requestRemote({
5 url: '/api/siteservice/cs/constructionsites/search', 5 url: '/api/siteservice/cs/constructionsites/search',
6 method: 'post', 6 method: 'post',
7 data: data 7 data: data
8 }); 8 });
  9 +}
9 10
10 - return req; 11 +export function earthsitesList(data) {
  12 + return requestRemote({
  13 + url: '/api/siteservice/cs/earthsites/list',
  14 + method: 'post',
  15 + data: data
  16 + });
11 } 17 }
12 18
  19 +export function getArea(data) {
  20 + return requestRemote({
  21 + url: '/api/gpsservice/cs/area',
  22 + method: 'get',
  23 + param: data
  24 + });
  25 +}
  26 +
  27 +
13 export function getDict(param) { 28 export function getDict(param) {
14 - const req = requestRemote({ 29 + return requestRemote({
15 url: '/api/gpsservice/cs/dataDict', 30 url: '/api/gpsservice/cs/dataDict',
16 method: 'get', 31 method: 'get',
17 - param: param 32 + params: param
18 }); 33 });
19 -  
20 - return req;  
21 } 34 }
22 -  
trash-ui/src/api/login.js
@@ -19,8 +19,18 @@ export function login(username, password, code, uuid) { @@ -19,8 +19,18 @@ export function login(username, password, code, uuid) {
19 export function getInfo() { 19 export function getInfo() {
20 return request({ 20 return request({
21 url: '/getInfo', 21 url: '/getInfo',
22 - method: 'get'  
23 - }) 22 + method: 'get',
  23 + param:{'token':"123"}
  24 + });
  25 +}
  26 +
  27 +// 获取用户详细信息
  28 +export function loginByToken(token) {
  29 + return request({
  30 + url: '/loginByToken',
  31 + method: 'post',
  32 + data:{'token':token}
  33 + });
24 } 34 }
25 35
26 // 退出方法 36 // 退出方法
@@ -37,4 +47,4 @@ export function getCodeImg() { @@ -37,4 +47,4 @@ export function getCodeImg() {
37 url: '/captchaImage', 47 url: '/captchaImage',
38 method: 'get' 48 method: 'get'
39 }) 49 })
40 -}  
41 \ No newline at end of file 50 \ No newline at end of file
  51 +}
trash-ui/src/permission.js
@@ -5,6 +5,7 @@ import NProgress from &#39;nprogress&#39; @@ -5,6 +5,7 @@ import NProgress from &#39;nprogress&#39;
5 import 'nprogress/nprogress.css' 5 import 'nprogress/nprogress.css'
6 import { getToken,setToken } from '@/utils/auth' 6 import { getToken,setToken } from '@/utils/auth'
7 import Cookies from "js-cookie"; 7 import Cookies from "js-cookie";
  8 +import { loginByToken } from '@/api/login'
8 9
9 NProgress.configure({ showSpinner: false }) 10 NProgress.configure({ showSpinner: false })
10 11
@@ -13,18 +14,50 @@ const whiteList = [&#39;/login&#39;, &#39;/auth-redirect&#39;, &#39;/bind&#39;, &#39;/register&#39;] @@ -13,18 +14,50 @@ const whiteList = [&#39;/login&#39;, &#39;/auth-redirect&#39;, &#39;/bind&#39;, &#39;/register&#39;]
13 // const whiteList = ['/*'] 14 // const whiteList = ['/*']
14 15
15 router.beforeEach((to, from, next) => { 16 router.beforeEach((to, from, next) => {
  17 + debugger;
16 NProgress.start() 18 NProgress.start()
17 var token = getToken(); 19 var token = getToken();
18 if(!token){ 20 if(!token){
19 if( to.query.token ){ 21 if( to.query.token ){
20 - token = to.query.token;  
21 - Cookies.set("token", token, { expires: 30 }); 22 + loginByToken(to.query.token).then(res=>{
  23 + setToken(res.token);
  24 + if (store.getters.roles.length === 0) {
  25 +
  26 + const user = res.user;
  27 + const roles = res.roles;
  28 + const avatar = require("@/assets/image/profile.jpg");
  29 + if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
  30 + store.commit('SET_ROLES', res.roles);
  31 + store.commit('SET_PERMISSIONS', res.permissions);
  32 + } else {
  33 + store.commit('SET_ROLES', ['ROLE_DEFAULT']);
  34 + }
  35 + store.commit('SET_NAME', user.userName);
  36 + store.commit('SET_NICK_NAME', user.nickName);
  37 + store.commit('SET_AVATAR', avatar);
  38 +
  39 + store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => {
  40 + // 测试 默认静态页面
  41 + // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => {
  42 + // 根据roles权限生成可访问的路由表
  43 + router.addRoutes(accessRoutes) // 动态添加可访问路由表
  44 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
  45 + })
  46 + } else {
  47 + next()
  48 + }
  49 + });
22 }else{ 50 }else{
23 Cookies.remove("token"); 51 Cookies.remove("token");
  52 + if (whiteList.indexOf(to.path) !== -1) {
  53 + // 在免登录白名单,直接进入
  54 + next()
  55 + } else {
  56 + next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
  57 + NProgress.done()
  58 + }
24 } 59 }
25 - }  
26 -  
27 - if (token) { 60 + }else{
28 /* has token*/ 61 /* has token*/
29 if (to.path === '/login') { 62 if (to.path === '/login') {
30 next({ path: '/' }) 63 next({ path: '/' })
@@ -34,9 +67,9 @@ router.beforeEach((to, from, next) =&gt; { @@ -34,9 +67,9 @@ router.beforeEach((to, from, next) =&gt; {
34 store.dispatch('GetInfo').then(res => { 67 store.dispatch('GetInfo').then(res => {
35 // 拉取user_info 68 // 拉取user_info
36 const roles = res.roles 69 const roles = res.roles
37 - 70 +
38 setToken(res.token) 71 setToken(res.token)
39 - 72 +
40 store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => { 73 store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => {
41 // 测试 默认静态页面 74 // 测试 默认静态页面
42 // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { 75 // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => {
@@ -61,16 +94,7 @@ router.beforeEach((to, from, next) =&gt; { @@ -61,16 +94,7 @@ router.beforeEach((to, from, next) =&gt; {
61 // } 94 // }
62 // 可删 ↑ 95 // 可删 ↑
63 } 96 }
64 - }  
65 - } else {  
66 - // 没有token  
67 - if (whiteList.indexOf(to.path) !== -1) {  
68 - // 在免登录白名单,直接进入  
69 - next()  
70 - } else {  
71 - next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页  
72 - NProgress.done()  
73 - } 97 + }
74 } 98 }
75 }) 99 })
76 100
trash-ui/src/store/modules/user.js
1 import { login, logout, getInfo } from '@/api/login' 1 import { login, logout, getInfo } from '@/api/login'
2 import { getToken, setToken, removeToken } from '@/utils/auth' 2 import { getToken, setToken, removeToken } from '@/utils/auth'
  3 +import Cookies from "js-cookie";
3 4
4 const user = { 5 const user = {
5 state: { 6 state: {
@@ -53,22 +54,22 @@ const user = { @@ -53,22 +54,22 @@ const user = {
53 // 获取用户信息 54 // 获取用户信息
54 GetInfo({ commit, state }) { 55 GetInfo({ commit, state }) {
55 return new Promise((resolve, reject) => { 56 return new Promise((resolve, reject) => {
56 - getInfo(state.token).then(res => {  
57 - const user = res.user  
58 - const avatar = require("@/assets/image/profile.jpg");  
59 - if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组  
60 - commit('SET_ROLES', res.roles)  
61 - commit('SET_PERMISSIONS', res.permissions)  
62 - } else {  
63 - commit('SET_ROLES', ['ROLE_DEFAULT'])  
64 - }  
65 - commit('SET_NAME', user.userName)  
66 - commit('SET_NICK_NAME', user.nickName)  
67 - commit('SET_AVATAR', avatar)  
68 - resolve(res)  
69 - }).catch(error => {  
70 - reject(error)  
71 - }) 57 + getInfo(state.token).then(res => {
  58 + const user = res.user
  59 + const avatar = require("@/assets/image/profile.jpg");
  60 + if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
  61 + commit('SET_ROLES', res.roles)
  62 + commit('SET_PERMISSIONS', res.permissions)
  63 + } else {
  64 + commit('SET_ROLES', ['ROLE_DEFAULT'])
  65 + }
  66 + commit('SET_NAME', user.userName)
  67 + commit('SET_NICK_NAME', user.nickName)
  68 + commit('SET_AVATAR', avatar)
  69 + resolve(res)
  70 + }).catch(error => {
  71 + reject(error)
  72 + })
72 }) 73 })
73 }, 74 },
74 75
trash-ui/src/utils/auth.js
@@ -3,13 +3,19 @@ import Cookies from &#39;js-cookie&#39; @@ -3,13 +3,19 @@ import Cookies from &#39;js-cookie&#39;
3 const TokenKey = 'Admin-Token' 3 const TokenKey = 'Admin-Token'
4 4
5 export function getToken() { 5 export function getToken() {
6 - return Cookies.get(TokenKey) 6 + let token = Cookies.get('Admin-Token');
  7 + if(!token){
  8 + token = sessionStorage.getItem('Admin-Token');
  9 + }
  10 + return token
7 } 11 }
8 12
9 export function setToken(token) { 13 export function setToken(token) {
  14 +
  15 + sessionStorage.setItem(TokenKey, token)
10 return Cookies.set(TokenKey, token) 16 return Cookies.set(TokenKey, token)
11 } 17 }
12 18
13 export function removeToken() { 19 export function removeToken() {
14 return Cookies.remove(TokenKey) 20 return Cookies.remove(TokenKey)
15 -}  
16 \ No newline at end of file 21 \ No newline at end of file
  22 +}
trash-ui/src/views/business/threestep/index.vue
@@ -77,9 +77,11 @@ @@ -77,9 +77,11 @@
77 </el-col> 77 </el-col>
78 <el-col :span="12"> 78 <el-col :span="12">
79 <el-form-item label="所属区域" prop="place"> 79 <el-form-item label="所属区域" prop="place">
80 - <el-select v-model="form.place" placeholder="请选择所属区域">  
81 - <el-option label="A区" value="A区" />  
82 - <el-option label="B区" value="B区" /> 80 + <el-select v-model="form.place" placeholder="请选择所属区域" filterable clearable reserve-keyword
  81 + @clear="areaClear">
  82 + <el-option @click.native="selectArea(item.code)" v-for="item in areas" :label="item.name"
  83 + :value="item.code" :key="item.code">
  84 + </el-option>
83 </el-select> 85 </el-select>
84 </el-form-item> 86 </el-form-item>
85 </el-col> 87 </el-col>
@@ -88,16 +90,18 @@ @@ -88,16 +90,18 @@
88 <el-col :span="12"> 90 <el-col :span="12">
89 <el-form-item :label="labelName" prop="name"> 91 <el-form-item :label="labelName" prop="name">
90 <el-select v-model="form.name" filterable clearable reserve-keyword> 92 <el-select v-model="form.name" filterable clearable reserve-keyword>
91 - <el-option label="A区" value="A区" />  
92 - <el-option label="B区" value="B区" /> 93 + <el-option @click.native="getObjId(item)" v-for="item in remoteData" :label="item.name"
  94 + :value="item.name" :key="item.id" v-if="areaCode == null || item.areaCode == areaCode">
  95 + </el-option>
93 </el-select> 96 </el-select>
94 </el-form-item> 97 </el-form-item>
95 </el-col> 98 </el-col>
96 <el-col :span="12"> 99 <el-col :span="12">
97 <el-form-item :label="labelName2" prop="place"> 100 <el-form-item :label="labelName2" prop="place">
98 - <el-select v-model="form.objectId">  
99 - <el-option label="A区" value="A区" />  
100 - <el-option label="B区" value="A区" /> 101 + <el-select v-model="bindname">
  102 + <el-option @click.native="getEarthsiteId(item)" v-for="item in bindData" :label="item.name"
  103 + :value="item.name" :key="item.id">
  104 + </el-option>
101 </el-select> 105 </el-select>
102 </el-form-item> 106 </el-form-item>
103 </el-col> 107 </el-col>
@@ -222,6 +226,9 @@ @@ -222,6 +226,9 @@
222 </p> 226 </p>
223 </el-col> 227 </el-col>
224 </el-row> 228 </el-row>
  229 +
  230 + <el-input v-model="form.earthsitesId" type="hidden" />
  231 + <el-input v-model="form.objectId" type="hidden" />
225 </el-form> 232 </el-form>
226 233
227 <div slot="footer" class="dialog-footer"> 234 <div slot="footer" class="dialog-footer">
@@ -243,7 +250,7 @@ @@ -243,7 +250,7 @@
243 </el-form-item> 250 </el-form-item>
244 </el-col> 251 </el-col>
245 <el-col :span="12"> 252 <el-col :span="12">
246 - <el-form-item label="所属区域" > 253 + <el-form-item label="所属区域">
247 <el-select v-model="infoData.place" disabled> 254 <el-select v-model="infoData.place" disabled>
248 <el-option label="A区" value="A区" /> 255 <el-option label="A区" value="A区" />
249 <el-option label="B区" value="B区" /> 256 <el-option label="B区" value="B区" />
@@ -314,7 +321,7 @@ @@ -314,7 +321,7 @@
314 </el-col> 321 </el-col>
315 </el-row> 322 </el-row>
316 323
317 - <el-row v-if="infoData.img0" > 324 + <el-row v-if="infoData.img0">
318 <el-col :span="4"> 325 <el-col :span="4">
319 过水槽照片 326 过水槽照片
320 </el-col> 327 </el-col>
@@ -324,7 +331,7 @@ @@ -324,7 +331,7 @@
324 </el-row> 331 </el-row>
325 </el-col> 332 </el-col>
326 </el-row> 333 </el-row>
327 - <el-row v-if="infoData.img1" > 334 + <el-row v-if="infoData.img1">
328 <el-col :span="4"> 335 <el-col :span="4">
329 洗车平台照片 336 洗车平台照片
330 </el-col> 337 </el-col>
@@ -334,7 +341,7 @@ @@ -334,7 +341,7 @@
334 </el-row> 341 </el-row>
335 </el-col> 342 </el-col>
336 </el-row> 343 </el-row>
337 - <el-row v-if="infoData.img2" > 344 + <el-row v-if="infoData.img2">
338 <el-col :span="4"> 345 <el-col :span="4">
339 出入口照片 346 出入口照片
340 </el-col> 347 </el-col>
@@ -344,106 +351,106 @@ @@ -344,106 +351,106 @@
344 </el-row> 351 </el-row>
345 </el-col> 352 </el-col>
346 </el-row> 353 </el-row>
347 - <el-row v-if="infoData.img3" >  
348 - <el-col :span="4">  
349 - 沉淀池照片  
350 - </el-col>  
351 - <el-col :span="20">  
352 - <el-row v-for="img in infoData.img3.split(',')" style="margin-bottom:10px;">  
353 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
354 - </el-row>  
355 - </el-col>  
356 - </el-row>  
357 - <el-row v-if="infoData.img4" >  
358 - <el-col :span="4">  
359 - 硬质路面照片  
360 - </el-col>  
361 - <el-col :span="20">  
362 - <el-row v-for="img in infoData.img4.split(',')" style="margin-bottom:10px;">  
363 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
364 - </el-row>  
365 - </el-col> 354 + <el-row v-if="infoData.img3">
  355 + <el-col :span="4">
  356 + 沉淀池照片
  357 + </el-col>
  358 + <el-col :span="20">
  359 + <el-row v-for="img in infoData.img3.split(',')" style="margin-bottom:10px;">
  360 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  361 + </el-row>
  362 + </el-col>
  363 + </el-row>
  364 + <el-row v-if="infoData.img4">
  365 + <el-col :span="4">
  366 + 硬质路面照片
  367 + </el-col>
  368 + <el-col :span="20">
  369 + <el-row v-for="img in infoData.img4.split(',')" style="margin-bottom:10px;">
  370 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  371 + </el-row>
  372 + </el-col>
  373 + </el-row>
  374 + <el-row v-if="infoData.img5">
  375 + <el-col :span="4">
  376 + 摄像头视频截图1
  377 + </el-col>
  378 + <el-col :span="20">
  379 + <el-row v-for="img in infoData.img5.split(',')" style="margin-bottom:10px;">
  380 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  381 + </el-row>
  382 + </el-col>
  383 + </el-row>
  384 + <el-row v-if="infoData.img6">
  385 + <el-col :span="4">
  386 + 摄像头视频截图2
  387 + </el-col>
  388 + <el-col :span="20">
  389 + <el-row v-for="img in infoData.img6.split(',')" style="margin-bottom:10px;">
  390 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  391 + </el-row>
  392 + </el-col>
  393 + </el-row>
  394 + <el-row v-if="infoData.img7">
  395 + <el-col :span="4">
  396 + 摄像头视频截图3
  397 + </el-col>
  398 + <el-col :span="20">
  399 + <el-row v-for="img in infoData.img7.split(',')" style="margin-bottom:10px;">
  400 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  401 + </el-row>
  402 + </el-col>
  403 + </el-row>
  404 + <el-row v-if="infoData.img8">
  405 + <el-col :span="4">
  406 + 其他1
  407 + </el-col>
  408 + <el-col :span="20">
  409 + <el-row v-for="img in infoData.img8.split(',')" style="margin-bottom:10px;">
  410 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  411 + </el-row>
  412 + </el-col>
  413 + </el-row>
  414 + <el-row v-if="infoData.img9">
  415 + <el-col :span="4">
  416 + 其他2
  417 + </el-col>
  418 + <el-col :span="20">
  419 + <el-row v-for="img in infoData.img9.split(',')" style="margin-bottom:10px;">
  420 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  421 + </el-row>
  422 + </el-col>
  423 + </el-row>
  424 + <el-row v-if="infoData.img10">
  425 + <el-col :span="4">
  426 + 其他3
  427 + </el-col>
  428 + <el-col :span="20">
  429 + <el-row v-for="img in infoData.img10.split(',')" style="margin-bottom:10px;">
  430 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  431 + </el-row>
  432 + </el-col>
  433 + </el-row>
  434 + <el-row v-if="infoData.img11">
  435 + <el-col :span="4">
  436 + 其他4
  437 + </el-col>
  438 + <el-col :span="20">
  439 + <el-row v-for="img in infoData.img11.split(',')" style="margin-bottom:10px;">
  440 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
  441 + </el-row>
  442 + </el-col>
  443 + </el-row>
  444 + <el-row v-if="infoData.img12">
  445 + <el-col :span="4">
  446 + 其他5
  447 + </el-col>
  448 + <el-col :span="20">
  449 + <el-row v-for="img in infoData.img12.split(',')" style="margin-bottom:10px;">
  450 + <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>
366 </el-row> 451 </el-row>
367 - <el-row v-if="infoData.img5" >  
368 - <el-col :span="4">  
369 - 摄像头视频截图1  
370 - </el-col>  
371 - <el-col :span="20">  
372 - <el-row v-for="img in infoData.img5.split(',')" style="margin-bottom:10px;">  
373 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
374 - </el-row>  
375 - </el-col>  
376 - </el-row>  
377 - <el-row v-if="infoData.img6" >  
378 - <el-col :span="4">  
379 - 摄像头视频截图2  
380 - </el-col>  
381 - <el-col :span="20">  
382 - <el-row v-for="img in infoData.img6.split(',')" style="margin-bottom:10px;">  
383 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
384 - </el-row>  
385 - </el-col>  
386 - </el-row>  
387 - <el-row v-if="infoData.img7" >  
388 - <el-col :span="4">  
389 - 摄像头视频截图3  
390 - </el-col>  
391 - <el-col :span="20">  
392 - <el-row v-for="img in infoData.img7.split(',')" style="margin-bottom:10px;">  
393 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
394 - </el-row>  
395 - </el-col>  
396 - </el-row>  
397 - <el-row v-if="infoData.img8" >  
398 - <el-col :span="4">  
399 - 其他1  
400 - </el-col>  
401 - <el-col :span="20">  
402 - <el-row v-for="img in infoData.img8.split(',')" style="margin-bottom:10px;">  
403 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
404 - </el-row>  
405 - </el-col>  
406 - </el-row>  
407 - <el-row v-if="infoData.img9" >  
408 - <el-col :span="4">  
409 - 其他2  
410 - </el-col>  
411 - <el-col :span="20">  
412 - <el-row v-for="img in infoData.img9.split(',')" style="margin-bottom:10px;">  
413 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
414 - </el-row>  
415 - </el-col>  
416 - </el-row>  
417 - <el-row v-if="infoData.img10" >  
418 - <el-col :span="4">  
419 - 其他3  
420 - </el-col>  
421 - <el-col :span="20">  
422 - <el-row v-for="img in infoData.img10.split(',')" style="margin-bottom:10px;">  
423 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
424 - </el-row>  
425 - </el-col>  
426 - </el-row>  
427 - <el-row v-if="infoData.img11" >  
428 - <el-col :span="4">  
429 - 其他4  
430 - </el-col>  
431 - <el-col :span="20">  
432 - <el-row v-for="img in infoData.img11.split(',')" style="margin-bottom:10px;">  
433 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
434 - </el-row>  
435 - </el-col>  
436 - </el-row>  
437 - <el-row v-if="infoData.img12" >  
438 - <el-col :span="4">  
439 - 其他5  
440 - </el-col>  
441 - <el-col :span="20">  
442 - <el-row v-for="img in infoData.img12.split(',')" style="margin-bottom:10px;">  
443 - <a @click="downloadFile(img);" style="color: blue;">{{img.split("/")[img.split("/").length -1]}}</a>  
444 - </el-row>  
445 - </el-col>  
446 - </el-row> 452 + </el-col>
  453 + </el-row>
447 </el-form> 454 </el-form>
448 455
449 <div slot="footer" class="dialog-footer"> 456 <div slot="footer" class="dialog-footer">
@@ -486,8 +493,10 @@ @@ -486,8 +493,10 @@
486 } from "@/utils/auth"; 493 } from "@/utils/auth";
487 494
488 import { 495 import {
  496 + earthsitesList,
489 constructionsitesList, 497 constructionsitesList,
490 - getDict 498 + getDict,
  499 + getArea
491 } from "@/api/dict"; 500 } from "@/api/dict";
492 501
493 export default { 502 export default {
@@ -518,8 +527,8 @@ @@ -518,8 +527,8 @@
518 fileList: [], 527 fileList: [],
519 // 弹出层标题 528 // 弹出层标题
520 title: "", 529 title: "",
521 - labelName: "",  
522 - labelName2: "", 530 + labelName: "工地名称",
  531 + labelName2: "绑定消纳场",
523 upload: { 532 upload: {
524 // 是否显示弹出层(用户导入) 533 // 是否显示弹出层(用户导入)
525 open: false, 534 open: false,
@@ -553,7 +562,8 @@ @@ -553,7 +562,8 @@
553 companyTrucks: null 562 companyTrucks: null
554 }, 563 },
555 // 表单参数 564 // 表单参数
556 - form: {}, 565 + form: {
  566 + },
557 picIndex: null, 567 picIndex: null,
558 // 表单校验 568 // 表单校验
559 rules: { 569 rules: {
@@ -592,7 +602,6 @@ @@ -592,7 +602,6 @@
592 message: '请填写完整', 602 message: '请填写完整',
593 trigger: 'blur' 603 trigger: 'blur'
594 }, ], 604 }, ],
595 -  
596 phone: [{ 605 phone: [{
597 required: true, 606 required: true,
598 message: '请填写完整', 607 message: '请填写完整',
@@ -603,25 +612,49 @@ @@ -603,25 +612,49 @@
603 message: '手机号格式错误', 612 message: '手机号格式错误',
604 trigger: 'blur' 613 trigger: 'blur'
605 }, 614 },
606 - ],  
607 -  
608 - } 615 + ]
  616 + },
  617 + SiteWorkAreaCodeType: [],
  618 + remoteData: [],
  619 + remoteQueryData: {
  620 + "page": 1,
  621 + "size": 9999
  622 + },
  623 + areas: [],
  624 + areaCode: null,
  625 + bindData: [],
  626 + bindname:null,
609 }; 627 };
610 }, 628 },
611 created() { 629 created() {
612 -  
613 - let data = {  
614 - page:1,  
615 - size:9999  
616 - }  
617 -  
618 - constructionsitesList(data).then(response=>{  
619 - console.log(response); 630 + getArea().then(res => {
  631 + this.areas = res.result;
620 }); 632 });
621 -  
622 this.getList(); 633 this.getList();
623 }, 634 },
624 methods: { 635 methods: {
  636 + areaClear() {
  637 + this.areaCode = null;
  638 + },
  639 + selectArea(a) {
  640 + this.areaCode = a;
  641 + },
  642 + getObjId(item) {
  643 + if (this.form.type == 0) {
  644 + this.form.objectId = item.id;
  645 + this.form.place = Number(item.areaCode);
  646 + } else {
  647 + this.form.earthsitesId = item.id;
  648 + this.form.place = Number(item.areaCode);
  649 + }
  650 + },
  651 + getEarthsiteId(item) {
  652 + if (this.form.type == 0) {
  653 + this.form.objectId = item.id;
  654 + } else {
  655 + this.form.earthsitesId = item.id;
  656 + }
  657 + },
625 downloadFile(path) { 658 downloadFile(path) {
626 window.location.href = process.env.VUE_APP_BASE_API + "/business/threestep/download?path=" + encodeURI(path); 659 window.location.href = process.env.VUE_APP_BASE_API + "/business/threestep/download?path=" + encodeURI(path);
627 }, 660 },
@@ -669,10 +702,30 @@ @@ -669,10 +702,30 @@
669 if (value == "0") { 702 if (value == "0") {
670 this.labelName = "工地名称"; 703 this.labelName = "工地名称";
671 this.labelName2 = "绑定消纳场"; 704 this.labelName2 = "绑定消纳场";
  705 +
672 } else { 706 } else {
673 this.labelName = "消纳场名称"; 707 this.labelName = "消纳场名称";
674 this.labelName2 = "绑定工地"; 708 this.labelName2 = "绑定工地";
675 } 709 }
  710 +
  711 + this.form.name = null;
  712 + this.bindname = null;
  713 + constructionsitesList(this.remoteQueryData).then(res => {
  714 + if (value == 0) {
  715 + this.remoteData = res.result.list;
  716 + } else {
  717 + this.bindData = res.result.list;
  718 + }
  719 + });
  720 +
  721 + earthsitesList(this.remoteQueryData).then(res => {
  722 + if (value == 0) {
  723 + this.bindData = res.result.list;
  724 + } else {
  725 + this.remoteData = res.result.list;
  726 + }
  727 + });
  728 +
676 }, 729 },
677 /** 查询【请填写功能名称】列表 */ 730 /** 查询【请填写功能名称】列表 */
678 getList() { 731 getList() {