Browse Source

合并非现场

dev-v1.0.2
庄锐波 4 months ago
parent
commit
31dd527af8
  1. 11
      zdxt-web-client/zdxt-admin-plus-ui/src/views/login.vue
  2. 8
      zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js
  3. 10
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue
  4. 216
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByV1System.vue
  5. 11
      zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/loginByPassword.vue

11
zdxt-web-client/zdxt-admin-plus-ui/src/views/login.vue

@ -70,7 +70,7 @@
</div> </div>
</el-form-item> </el-form-item>
<!-- 测试用户快捷登录按钮(仅开发环境显示) --> <!-- 测试用户快捷登录按钮(仅开发环境显示) -->
<el-form-item style="width: 100%; margin-bottom: 0"> <el-form-item style="width: 100%; margin-bottom: 0;display: none">
<el-button size="large" type="danger" style="width: 100%" @click="showTestUserDialog = true"> <el-button size="large" type="danger" style="width: 100%" @click="showTestUserDialog = true">
选择测试用户 选择测试用户
</el-button> </el-button>
@ -152,14 +152,7 @@ interface TestUser {
} }
const testUsers = ref<TestUser[]>([ const testUsers = ref<TestUser[]>([
{ label: '超级管理员', tenantId: '000000', username: 'admin', password: 'szsf@zfjd' },
{ label: '深圳市司法局-刘倩琳', tenantId: '000000', username: 'liuqianlin', password: 'szsf@zfjd' },
{ label: '深圳市审计局-杜啟艺', tenantId: '000000', username: 'duqiyi', password: 'szsf@zfjd' },
{ label: '深圳市龙岗区司法局-黄占海', tenantId: '000000', username: 'huangzhanhai', password: 'szsf@zfjd' },
{ label: '深圳市南山区司法局-梁有志', tenantId: '000000', username: 'liangyouzhi', password: 'szsf@zfjd' },
{ label: '深圳市坪山区司法局-李旺', tenantId: '000000', username: 'liwang4', password: 'szsf@zfjd' },
{ label: '深圳市光明区司法局-李振禧', tenantId: '000000', username: 'lizhenxi', password: 'szsf@zfjd' },
{ label: '深圳市光明区司法局-王亚伟', tenantId: '000000', username: 'wangyawei3', password: 'szsf@zfjd' }
]); ]);
const selectTestUser = (user: TestUser) => { const selectTestUser = (user: TestUser) => {

8
zdxt-web-client/zdxt-efcode-enforcement-app/src/router/enforcement-app/enf-main-router.js

@ -17,6 +17,14 @@ const routes = [
isKeepAlive: false, isKeepAlive: false,
}, },
}, },
{
path: "/enforcement/loginByV1System",
name: "enforcementloginByV1System",
component: () => import("@/views/enforcement/loginByV1System.vue"),
meta: {
isKeepAlive: false,
},
},
// 执法端首页 // 执法端首页
{ {
path: "/enforcement/enforcementHome", path: "/enforcement/enforcementHome",

10
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue

@ -18,7 +18,7 @@
<van-button block type="primary" native-type="submit">登录</van-button> <van-button block type="primary" native-type="submit">登录</van-button>
</div> </div>
</van-form> </van-form>
<div style="margin: 0.42rem 0.42rem 0; text-align: center;"> <div style="margin: 0.42rem 0.42rem 0; text-align: center;display: none">
<van-button plain type="default" size="small" @click="showTestPicker = true" <van-button plain type="default" size="small" @click="showTestPicker = true"
style="background-color: darkred;color: white">选择测试用户 style="background-color: darkred;color: white">选择测试用户
</van-button> </van-button>
@ -87,14 +87,6 @@ const navigateTo = (target) => {
} }
}; };
const testUsers = [ const testUsers = [
{loginUserId:"0001002",account: 'cuifengyuan', name: '崔峰源', password: 'szsf@zfjd',bureauUnitName:"深圳市司法局"},
{loginUserId:"0001001",account: 'liuqianlin', name: '刘倩琳', password: 'szsf@zfjd',bureauUnitName:"深圳市司法局"},
{loginUserId:"0001003",account: 'baining', name: '白宁', password: 'szsf@zfjd',bureauUnitName:"深圳市坪山区司法局"},
{loginUserId:"0001004",account: 'caizifan', name: '蔡梓帆', password: 'szsf@zfjd',bureauUnitName:"深圳市福田区司法局"},
{loginUserId:"0001005",account: 'chenchong4', name: '陈冲', password: 'szsf@zfjd',bureauUnitName:"深圳市宝安区司法局"},
{loginUserId:"0001006",account: 'chenggaozhan', name: '程高展', password: 'szsf@zfjd',bureauUnitName:"深圳市南山区司法局"},
{loginUserId:"0001007",account: 'chenhaitao2', name: '陈海涛', password: 'szsf@zfjd',bureauUnitName:"深圳市南山区司法局"},
{loginUserId:"0001008",account: 'chenhanyu', name: '陈汉羽', password: 'szsf@zfjd',bureauUnitName:"深圳市坪山区司法局"}
]; ];
const selectTestUser = (item) => { const selectTestUser = (item) => {

216
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByV1System.vue

@ -0,0 +1,216 @@
<template>
<div class="login-page">
<div class="login-content">
<van-nav-bar>
<template #title>
<div class="title">
执法端登录
</div>
</template>
</van-nav-bar>
<van-form @submit="onSubmit">
<van-field v-model="loginParam.secretName" name="secretName" label="用户名" placeholder="用户名"
:rules="[{ required: true, message: '请填写用户名' }]"/>
<van-field v-model="loginParam.secretKey" type="password" name="secretKey" label="密码"
placeholder="密码"
:rules="[{ required: true, message: '请填写密码' }]"/>
<div style="margin: 0.42rem">
<van-button block type="primary" native-type="submit">登录</van-button>
</div>
</van-form>
<div style="margin: 0.42rem 0.42rem 0; text-align: center;display: none">
<van-button plain type="default" size="small" @click="showTestPicker = true"
style="background-color: darkred;color: white">选择测试用户
</van-button>
</div>
<van-action-sheet v-model:show="showTestPicker" title="选择测试用户">
<div class="test-enterprise-list">
<van-cell
v-for="(item, index) in testUsers"
:key="index"
:title="item.name+' / '+item.bureauUnitName"
:label="'账号:' + item.account"
is-link
@click="selectTestUser(item)"
/>
</div>
</van-action-sheet>
<van-popup v-model:show="showNavigatePicker" :close-on-click-overlay="false" round style="width: 80%; padding: 0.4rem;">
<div style="font-size: 0.5rem; font-weight: bold;" class="navigate-title">请选择进入系统</div>
<div class="navigate-list">
<van-cell
is-link
@click="navigateTo('enforcement')"
style="margin-bottom: 30px"
>
<template #title>
<span style="font-size: 0.5rem; font-weight: bold;">移动执法端</span>
</template>
</van-cell>
<van-cell
is-link
@click="navigateTo('supervision')"
>
<template #title>
<span style="font-size: 0.5rem; font-weight: bold;">移动监督端</span>
</template>
</van-cell>
</div>
</van-popup>
</div>
</div>
</template>
<script setup>
import {reactive, ref, onMounted} from 'vue';
import {enforcementLogin, enforcementLoginByPassword} from '../../api/enforcement';
import CryptoJS from "crypto-js";
import {showFailToast} from 'vant';
import 'vant/es/toast/style';
const {useCommon} = $globalStore;
const router = useRouter();
const route = useRoute();
const loginParam = reactive({
secretName: "",
secretKey: ""
})
const showTestPicker = ref(false);
const showNavigatePicker = ref(false);
const navigateTo = (target) => {
showNavigatePicker.value = false;
if (target === 'enforcement') {
router.push({name: "enforcementHome"});
} else if (target === 'supervision') {
router.push('/enforcement/enforcementRecord');
}
};
const testUsers = [
{loginUserId:"0001002",account: 'cuifengyuan', name: '', password: 'szsf@zfjd',bureauUnitName:""}
];
const selectTestUser = (item) => {
loginParam.secretName = item.account;
loginParam.secretKey = item.password;
showTestPicker.value = false;
// 直接触发登录
doLogin(item.account, item.password);
}
const doLogin = (secretName, secretKey) => {
const encryptedKey = Encrypt(secretKey);
enforcementLoginByPassword({"secretName": secretName, "secretKey": encryptedKey}, response => {
if (response.code === 200) {
// 验证关键组织信息
if (!response.data.deptId) {
showFailToast("该用户未关联部门,无法登录");
return;
}
if (!response.data.organId) {
showFailToast("该用户未关联认证机构,无法登录");
return;
}
if (!response.data.bureauUnitId) {
showFailToast("该用户未关联执法单位,无法登录");
return;
}
// 执法端登录成功 → 赋值用户基本信息
useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || "");
useCommon.SET_USER_ID(response.data.userId);
useCommon.SET_USER_NAME(response.data.userName || "");
useCommon.SET_NICK_NAME(response.data.nickName || "");
useCommon.SET_TOKEN(response.data.token);
useCommon.SET_DEPT_ID(response.data.deptId);
useCommon.SET_DEPT_NAME(response.data.deptName || "");
useCommon.SET_ORGAN_ID(response.data.organId);
useCommon.SET_ORGAN_NAME(response.data.organName || "");
useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId);
useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || "");
console.log("bureauUnitName", response.data.bureauUnitName);
console.log("enforcement login success", useCommon.userId);
showNavigatePicker.value = true;
} else {
showFailToast(response.msg || "登录失败");
}
}, error => {
showFailToast(error?.msg || "登录失败,请检查网络");
})
};
const onSubmit = async () => {
doLogin(loginParam.secretName, loginParam.secretKey);
};
// 检测URL中的loginUserId参数,自动登录对应测试用户
onMounted(() => {
const loginUserId = route.query.loginUserId;
if (loginUserId) {
const targetUser = testUsers.find(u => u.loginUserId === loginUserId);
if (targetUser) {
loginParam.secretName = targetUser.account;
loginParam.secretKey = targetUser.password;
doLogin(targetUser.account, targetUser.password);
} else {
showFailToast(`未找到loginUserId为${loginUserId}的测试用户`);
}
}
});
const Encrypt = (passWord) => {
var keyStr = '1234567898745621';
var ivStr = keyStr;
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var srcs = CryptoJS.enc.Utf8.parse(passWord);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
</script>
<style lang="less" scoped>
.login-page {
width: 100%;
height: 100%;
display: flex;
overflow: hidden;
background-image: url("~@/assets/images/login.jpg");
background-repeat: no-repeat;
background-size: cover;
opacity: 0.9;
.login-content {
margin: auto;
padding: 0.27rem 0.27rem 0.52rem 0.27rem;
background-color: #fff;
border-radius: 0.27rem;
box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2);
opacity: 0.9;
.title {
font-size: 0.52rem;
font-weight: 600;
}
}
}
.test-enterprise-list {
max-height: 60vh;
overflow-y: auto;
padding: 0.2rem;
}
.navigate-title {
text-align: center;
font-size: 0.4rem;
font-weight: 600;
padding: 0.2rem 0 0.3rem;
}
.navigate-list {
padding: 0.2rem;
}
</style>

11
zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/loginByPassword.vue

@ -17,8 +17,7 @@
<van-button block type="primary" native-type="submit">登录</van-button> <van-button block type="primary" native-type="submit">登录</van-button>
</div> </div>
</van-form> </van-form>
<router-link to="/enterprise/register" class="link">还没有账号,去注册</router-link> <div style="margin: 0.42rem 0.42rem 0; text-align: center;display: none">
<div style="margin: 0.42rem 0.42rem 0; text-align: center;">
<van-button plain type="default" size="small" @click="showTestPicker = true" style="background-color: darkred;color: white">选择测试企业</van-button> <van-button plain type="default" size="small" @click="showTestPicker = true" style="background-color: darkred;color: white">选择测试企业</van-button>
</div> </div>
<van-action-sheet v-model:show="showTestPicker" title="选择测试企业"> <van-action-sheet v-model:show="showTestPicker" title="选择测试企业">
@ -52,14 +51,6 @@
const showTestPicker = ref(false); const showTestPicker = ref(false);
const testEnterprises = [ const testEnterprises = [
{ account: 'free_kylin', name: '新粤云(深圳)信息技术有限公司', password: 'szsf@zfjd' },
{ account: 'weil45', name: '深圳农牧美益肉业有限公司', password: 'szsf@zfjd' },
{ account: 'DGD440881199506180622', name: '深圳市深水龙岗污水处理有限公司', password: 'szsf@zfjd' },
{ account: 'smiledzb1982', name: '深圳康泰生物制品股份有限公司', password: 'szsf@zfjd' },
{ account: 'A7271888', name: '深圳市里程食品有限公司', password: 'szsf@zfjd' },
{ account: 'qintongzhen138', name: '欧姆龙电子部件(深圳)有限公司', password: 'szsf@zfjd' },
{ account: 'XP073215', name: '深圳市强达电路股份有限公司', password: 'szsf@zfjd' },
{ account: '33ef1970fd449676fa4bc197', name: '吉田拉链(深圳)有限公司公明工厂', password: 'szsf@zfjd' }
]; ];
const selectTestEnterprise = (item) => { const selectTestEnterprise = (item) => {

Loading…
Cancel
Save