fix
This commit is contained in:
@@ -57,4 +57,4 @@ export function getCodeImg() {
|
||||
method: 'get',
|
||||
timeout: 20000
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ export function delUser(userId) {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 用户密码重置
|
||||
export function resetUserPwd(userId, password) {
|
||||
const data = {
|
||||
@@ -57,6 +58,17 @@ export function resetUserPwd(userId, password) {
|
||||
})
|
||||
}
|
||||
|
||||
export function checkWeakPwd(password) {
|
||||
const data = {
|
||||
password
|
||||
}
|
||||
return request({
|
||||
url: '/checkWeakPwd',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 用户状态修改
|
||||
export function changeUserStatus(userId, status) {
|
||||
const data = {
|
||||
|
||||
@@ -43,7 +43,7 @@ const user = {
|
||||
login(username, password, code, uuid).then(res => {
|
||||
setToken(res.token)
|
||||
commit('SET_TOKEN', res.token)
|
||||
resolve()
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
|
||||
@@ -55,6 +55,15 @@
|
||||
>{{ this.form.xzxfqk === '1' ? "改派" : "指派" }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="danger"-->
|
||||
<!-- plain-->
|
||||
<!-- size="mini"-->
|
||||
<!-- @click="handleExportGeoJson"-->
|
||||
<!-- >导出矢量-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
@@ -826,7 +835,13 @@ export default {
|
||||
} else {
|
||||
return "primary"
|
||||
}
|
||||
}
|
||||
},
|
||||
handleExportGeoJson() {
|
||||
const id = this.$route.query.id;
|
||||
this.download(`/cxxm/zftk/task/exportGeoJson/${id}`, {
|
||||
...this.queryParams
|
||||
},`执法踏勘_${this.form.xmmc}_${this.form.dkh}.json`)
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -112,6 +112,18 @@
|
||||
>导出全部
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="warning"-->
|
||||
<!-- plain-->
|
||||
<!-- icon="el-icon-download"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- :disabled="multiple"-->
|
||||
<!-- v-if="showXmmcCheck"-->
|
||||
<!-- @click="handleExportGeoJsonByXmmcs"-->
|
||||
<!-- >导出矢量-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getTaskXmmcList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
@@ -443,6 +455,16 @@ export default {
|
||||
...this.queryParams
|
||||
}, `执法踏勘_${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}.xlsx`)
|
||||
},
|
||||
handleExportGeoJsonByXmmcs(row) {
|
||||
const xmmcs = row.xmmc || this.xmmcs;
|
||||
if (!xmmcs || xmmcs.indexOf('') !== -1) {
|
||||
this.$modal.msgError("存在项目类型为空的选项,无法按项目名类型导出");
|
||||
return;
|
||||
}
|
||||
this.download(`/cxxm/zftk/task/exportGeoJsonByXmmcs/${xmmcs}`, {
|
||||
...this.queryParams
|
||||
}, `执法踏勘_${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}.json`)
|
||||
},
|
||||
handleExportAll() {
|
||||
this.download(`/cxxm/zftk/task/exportAll`, {
|
||||
...this.queryParams
|
||||
|
||||
@@ -55,6 +55,15 @@
|
||||
>{{ this.form.xzxfqk === '1' ? "改派" : "指派" }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="danger"-->
|
||||
<!-- plain-->
|
||||
<!-- size="mini"-->
|
||||
<!-- @click="handleExportGeoJson"-->
|
||||
<!-- >导出矢量-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
@@ -852,6 +861,12 @@ export default {
|
||||
return "primary"
|
||||
}
|
||||
},
|
||||
handleExportGeoJson() {
|
||||
const id = this.$route.query.id;
|
||||
this.download(`/cxxm/zt/task/exportGeoJson/${id}`, {
|
||||
...this.queryParams
|
||||
},`持续监管_${this.form.xmmc}_${this.form.tbbh}.json`)
|
||||
},
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
@@ -112,6 +112,18 @@
|
||||
>导出全部
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="warning"-->
|
||||
<!-- plain-->
|
||||
<!-- icon="el-icon-download"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- :disabled="multiple"-->
|
||||
<!-- v-if="showXmmcCheck"-->
|
||||
<!-- @click="handleExportGeoJsonByXmmcs"-->
|
||||
<!-- >导出矢量-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getTaskXmmcList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
@@ -444,6 +456,16 @@ export default {
|
||||
...this.queryParams
|
||||
}, `持续监管_${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}.xlsx`)
|
||||
},
|
||||
handleExportGeoJsonByXmmcs(row) {
|
||||
const xmmcs = row.xmmc || this.xmmcs;
|
||||
if (!xmmcs || xmmcs.indexOf('') !== -1) {
|
||||
this.$modal.msgError("存在项目类型为空的选项,无法按项目名类型导出");
|
||||
return;
|
||||
}
|
||||
this.download(`/cxxm/zt/task/exportGeoJsonByXmmcs/${xmmcs}`, {
|
||||
...this.queryParams
|
||||
}, `持续监管_${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}.json`)
|
||||
},
|
||||
handleExportAll() {
|
||||
this.download(`/cxxm/zt/task/exportAll`, {
|
||||
...this.queryParams
|
||||
|
||||
@@ -54,6 +54,15 @@
|
||||
>{{ this.form.xzxfqk === '1' ? "改派" : "指派" }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="danger"-->
|
||||
<!-- plain-->
|
||||
<!-- size="mini"-->
|
||||
<!-- @click="handleExportGeoJson"-->
|
||||
<!-- >导出矢量-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
@@ -813,7 +822,13 @@ export default {
|
||||
} else {
|
||||
return "primary"
|
||||
}
|
||||
}
|
||||
},
|
||||
handleExportGeoJson() {
|
||||
const id = this.$route.query.id;
|
||||
this.download(`/cxxm/zttb/task/exportGeoJson/${id}`, {
|
||||
...this.queryParams
|
||||
},`自提图斑_${this.form.xmmc}_${this.form.tbbh}.json`)
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -112,6 +112,18 @@
|
||||
>导出全部
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="warning"-->
|
||||
<!-- plain-->
|
||||
<!-- icon="el-icon-download"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- :disabled="multiple"-->
|
||||
<!-- v-if="showXmmcCheck"-->
|
||||
<!-- @click="handleExportGeoJsonByXmmcs"-->
|
||||
<!-- >导出矢量-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getTaskXmmcList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
@@ -451,6 +463,16 @@ export default {
|
||||
...this.queryParams
|
||||
}, `自提图斑_${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}.xlsx`)
|
||||
},
|
||||
handleExportGeoJsonByXmmcs(row) {
|
||||
const xmmcs = row.xmmc || this.xmmcs;
|
||||
if (!xmmcs || xmmcs.indexOf('') !== -1) {
|
||||
this.$modal.msgError("存在项目类型为空的选项,无法按项目名类型导出");
|
||||
return;
|
||||
}
|
||||
this.download(`/cxxm/zttb/task/exportGeoJsonByXmmcs/${xmmcs}`, {
|
||||
...this.queryParams
|
||||
}, `自提图斑_${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}.json`)
|
||||
},
|
||||
handleExportAll() {
|
||||
this.download(`/cxxm/zttb/task/exportAll`, {
|
||||
...this.queryParams
|
||||
|
||||
BIN
ruoyi-ui/src/views/getLastVersionApK.png
Normal file
BIN
ruoyi-ui/src/views/getLastVersionApK.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
@@ -16,7 +16,7 @@
|
||||
</el-col>
|
||||
<el-col :span="20" :xs="24">
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="部省监管" name="1" :lazy="true">
|
||||
<el-tab-pane label="持续监管" name="1" :lazy="true">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4" v-for="(value, key) in ztStatistics">
|
||||
<div style="text-align: center;margin: 5px;padding: 10px;border: 1px solid #1c6ec4">
|
||||
@@ -240,6 +240,24 @@
|
||||
<!-- </el-card>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
|
||||
|
||||
<el-dialog title="系统迁移提示!!!" :visible.sync="newVersion" width="1000px" append-to-body>
|
||||
<div style="color: red"><h3>本系统已迁移到正式服务器,请勿在当前测试环境进行操作!!!</h3></div>
|
||||
<div style="color: red"><h3>请按照下面操作切换至正式版本!!!</h3></div>
|
||||
<div><h3>1、点击下面链接跳转到正式服务器。</h3></div>
|
||||
<div><a style="margin-top: 50px;text-decoration: underline;color: #13ce66;font-size: larger;"
|
||||
href="http://1.95.66.168">http://1.95.66.168</a></div>
|
||||
<div><h3>2、下载正式版本app。</h3></div>
|
||||
<div>
|
||||
<img src="./getLastVersionApK.png" width="300" height="300"/>
|
||||
<a style="margin-top: 50px;text-decoration: underline;color: #13ce66;font-size: larger;"
|
||||
href="http://1.95.66.168/prod-api/cxxm/api/version/getLastVersionApK">http://1.95.66.168/prod-api/cxxm/api/version/getLastVersionApK</a>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="newVersion = false">我已知晓</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -251,6 +269,7 @@ export default {
|
||||
name: "Index",
|
||||
data() {
|
||||
return {
|
||||
newVersion: false,
|
||||
zftkStatistics: {
|
||||
"图斑总数": 0,
|
||||
"已巡查图斑": 0,
|
||||
|
||||
@@ -140,8 +140,12 @@ export default {
|
||||
Cookies.remove("password");
|
||||
Cookies.remove('rememberMe');
|
||||
}
|
||||
this.$store.dispatch("Login", this.loginForm).then(() => {
|
||||
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
|
||||
this.$store.dispatch("Login", this.loginForm).then((res) => {
|
||||
if (res.weakPwd){
|
||||
this.$router.push({ path: "/resetPwd" }).catch(()=>{});
|
||||
}else{
|
||||
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
if (this.captchaEnabled) {
|
||||
|
||||
@@ -414,7 +414,7 @@ import {
|
||||
updateUser,
|
||||
resetUserPwd,
|
||||
changeUserStatus,
|
||||
deptTreeSelect
|
||||
deptTreeSelect, checkWeakPwd
|
||||
} from "@/api/system/user";
|
||||
import {getToken} from "@/utils/auth";
|
||||
import Treeselect from "@riophae/vue-treeselect";
|
||||
@@ -426,6 +426,15 @@ export default {
|
||||
dicts: ['sys_normal_disable', 'sys_user_sex', 'task_lx'],
|
||||
components: {Treeselect},
|
||||
data() {
|
||||
const validatePassword = (rule, value, callback) => {
|
||||
checkWeakPwd(value).then(response => {
|
||||
if (response.code === 200) {
|
||||
callback();
|
||||
} else {
|
||||
callback(new Error(response.message));
|
||||
}
|
||||
})
|
||||
};
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
@@ -512,8 +521,8 @@ export default {
|
||||
],
|
||||
password: [
|
||||
{required: true, message: "用户密码不能为空", trigger: "blur"},
|
||||
{min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur'},
|
||||
{pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur"}
|
||||
{min: 8, max: 20, message: '用户密码长度必须介于 8 和 20 之间', trigger: 'blur'},
|
||||
{validator: validatePassword, trigger: "blur"},
|
||||
],
|
||||
email: [
|
||||
{
|
||||
@@ -657,10 +666,10 @@ export default {
|
||||
const userId = row.userId || this.ids;
|
||||
getUser(userId).then(response => {
|
||||
console.log(response.data.taskLx)
|
||||
if (response.data.taskLx==='') {
|
||||
if (response.data.taskLx === '') {
|
||||
response.data.taskLx = [];
|
||||
} else {
|
||||
response.data.taskLx= response.data.taskLx.split(",");
|
||||
response.data.taskLx = response.data.taskLx.split(",");
|
||||
}
|
||||
this.form = response.data;
|
||||
this.postOptions = response.posts;
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
<template>
|
||||
<el-form ref="form" :model="user" :rules="rules" label-width="80px">
|
||||
<div>
|
||||
<h3>密码组成要求:</h3>
|
||||
<ul style="color: green">
|
||||
<li>最小长度:不少于 8 个字符。</li>
|
||||
<li>字符种类:(密码必须包含以下至少三种不同类型字符)
|
||||
<ul>
|
||||
<li>大写英文字母(A-Z)</li>
|
||||
<li>小写英文字母(a-z)</li>
|
||||
<li>数字(0-9)</li>
|
||||
<li>特殊符号(如:!@#$%^&*()-_=+[]{}|;:,.<>/?)</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>禁止使用的内容:</h3>
|
||||
<ul style="color: red">
|
||||
<li>禁止使用与用户账号、姓名、工号、手机号、邮箱等明显相关的信息作为密码。</li>
|
||||
<li>禁止使用常见弱口令,如:“123456”、“password”、“admin”、“abc123”、“qwerty” 等。</li>
|
||||
<li>不允许使用重复字符或简单模式(如:“aaaaaa”、“111111”、“abcabc” 等)。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<el-form-item label="旧密码" prop="oldPassword">
|
||||
<el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/>
|
||||
</el-form-item>
|
||||
@@ -17,7 +37,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { updateUserPwd } from "@/api/system/user";
|
||||
import {updateUserPwd, checkWeakPwd} from "@/api/system/user";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -28,6 +48,15 @@ export default {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
const validatePassword = (rule, value, callback) => {
|
||||
checkWeakPwd(value).then(response => {
|
||||
if (response.code === 200) {
|
||||
callback();
|
||||
} else {
|
||||
callback(new Error(response.message));
|
||||
}
|
||||
})
|
||||
};
|
||||
return {
|
||||
user: {
|
||||
oldPassword: undefined,
|
||||
@@ -37,16 +66,16 @@ export default {
|
||||
// 表单校验
|
||||
rules: {
|
||||
oldPassword: [
|
||||
{ required: true, message: "旧密码不能为空", trigger: "blur" }
|
||||
{required: true, message: "旧密码不能为空", trigger: "blur"}
|
||||
],
|
||||
newPassword: [
|
||||
{ required: true, message: "新密码不能为空", trigger: "blur" },
|
||||
{ min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" },
|
||||
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
|
||||
{required: true, message: "新密码不能为空", trigger: "blur"},
|
||||
{min: 8, max: 20, message: "长度在 8 到 20 个字符", trigger: "blur"},
|
||||
{validator: validatePassword, trigger: "blur"},
|
||||
],
|
||||
confirmPassword: [
|
||||
{ required: true, message: "确认密码不能为空", trigger: "blur" },
|
||||
{ required: true, validator: equalToPassword, trigger: "blur" }
|
||||
{required: true, message: "确认密码不能为空", trigger: "blur"},
|
||||
{required: true, validator: equalToPassword, trigger: "blur"},
|
||||
]
|
||||
}
|
||||
};
|
||||
@@ -57,6 +86,7 @@ export default {
|
||||
if (valid) {
|
||||
updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.$tab.closePage();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
26
ruoyi-ui/src/views/system/user/resetPwd.vue
Normal file
26
ruoyi-ui/src/views/system/user/resetPwd.vue
Normal file
@@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div>
|
||||
<h1 style="color: red">当前密码强度较弱,请修改密码!!!</h1>
|
||||
</div>
|
||||
<div>
|
||||
<resetPwd/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import resetPwd from "./profile/resetPwd";
|
||||
|
||||
export default {
|
||||
name: "Profile",
|
||||
components: {resetPwd},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user