Browse Source

执法端-计划

dev-V1.0.1
庄锐波 4 months ago
parent
commit
aec5ba381c
  1. 5
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java
  2. 6
      zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js
  3. 295
      zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue
  4. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/vite-config/index.js
  5. 2
      zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev

5
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/impl/EfcodeCpPlanServiceImpl.java

@ -134,9 +134,8 @@ public class EfcodeCpPlanServiceImpl implements IEfcodeCpPlanService {
return; return;
} }
for (EfcodeCpPlanVo vo : records) { for (EfcodeCpPlanVo vo : records) {
// 默认:待预约状态均可预约 // 只有联合执法的计划才可以预约
vo.setCanReserve(true); vo.setCanReserve(vo.getIsUnion() != null && vo.getIsUnion() == 1L);
// TODO 后续可扩展:例如判断当天计划已过期、人员已满等业务规则
} }
} }

6
zdxt-web-client/zdxt-efcode-enforcement-app/src/api/enforcement/index.js

@ -1,11 +1,11 @@
import { _get, _post } from "@/http/index"; import { _get, _post } from "@/http/index";
const baseUrl = "/api/app-enf"; const baseUrl = "/app-enf";
// region 认证模块 // region 认证模块
export const enforcementLogin = (params, success, error) => _post(baseUrl + "/login/szyptLogin", params, success, error); // export const enforcementLogin = (params, success, error) => _post(baseUrl + "/login/szyptLogin", params, success, error);
export const enforcementLogin = (params, success, error) => _post(baseUrl + "/login/do", params, success, error);
// endregion // endregion
// region 企业模块 // region 企业模块

295
zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue

@ -11,14 +11,17 @@
<van-form @submit="onSubmit"> <van-form @submit="onSubmit">
<van-field v-model="loginParam.secretName" name="secretName" label="用户名" placeholder="用户名" <van-field v-model="loginParam.secretName" name="secretName" label="用户名" placeholder="用户名"
:rules="[{ required: true, message: '请填写用户名' }]"/> :rules="[{ required: true, message: '请填写用户名' }]"/>
<van-field v-model="loginParam.secretKey" type="password" name="secretKey" label="密码" placeholder="密码" <van-field v-model="loginParam.secretKey" type="password" name="secretKey" label="密码"
placeholder="密码"
:rules="[{ required: true, message: '请填写密码' }]"/> :rules="[{ required: true, message: '请填写密码' }]"/>
<div style="margin: 0.42rem"> <div style="margin: 0.42rem">
<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;">
<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="选择测试用户">
<div class="test-enterprise-list"> <div class="test-enterprise-list">
@ -36,163 +39,163 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import {reactive, ref} from 'vue'; import {reactive, ref} from 'vue';
import {enforcementLogin} from '../../api/enforcement'; import {enforcementLogin} from '../../api/enforcement';
import CryptoJS from "crypto-js"; import CryptoJS from "crypto-js";
import {showFailToast} from 'vant'; import {showFailToast} from 'vant';
import 'vant/es/toast/style'; import 'vant/es/toast/style';
const {useCommon} = $globalStore; const {useCommon} = $globalStore;
const router = useRouter(); const router = useRouter();
const loginParam = reactive({ const loginParam = reactive({
secretName: "", secretName: "",
secretKey: "" secretKey: ""
}) })
const showTestPicker = ref(false); const showTestPicker = ref(false);
const testUsers = [ const testUsers = [
{ account: 'liuqianlin', name: '刘倩琳', password: 'szsf@zfjd' }, {account: 'liuqianlin', name: '刘倩琳', password: 'szsf@zfjd'},
{ account: 'baining', name: '白宁', password: 'szsf@zfjd' }, {account: 'baining', name: '白宁', password: 'szsf@zfjd'},
{ account: 'caizifan', name: '蔡梓帆', password: 'szsf@zfjd' }, {account: 'caizifan', name: '蔡梓帆', password: 'szsf@zfjd'},
{ account: 'chenchong4', name: '陈冲', password: 'szsf@zfjd' }, {account: 'chenchong4', name: '陈冲', password: 'szsf@zfjd'},
{ account: 'chenggaozhan', name: '程高展', password: 'szsf@zfjd' }, {account: 'chenggaozhan', name: '程高展', password: 'szsf@zfjd'},
{ account: 'chenhaitao2', name: '陈海涛', password: 'szsf@zfjd' }, {account: 'chenhaitao2', name: '陈海涛', password: 'szsf@zfjd'},
{ account: 'chenhanyu', name: '陈汉羽', password: 'szsf@zfjd' } {account: 'chenhanyu', name: '陈汉羽', password: 'szsf@zfjd'}
]; ];
const selectTestUser = (item) => { const selectTestUser = (item) => {
loginParam.secretName = item.account; loginParam.secretName = item.account;
loginParam.secretKey = item.password; loginParam.secretKey = item.password;
showTestPicker.value = false; showTestPicker.value = false;
// //
doLogin(item.account, item.password); doLogin(item.account, item.password);
} }
const doLogin = (secretName, secretKey) => { // const doLogin = (secretName, secretKey) => {
const encryptedKey = Encrypt(secretKey); // const encryptedKey = Encrypt(secretKey);
enforcementLogin({code: '12346678985288799'}, response => { // enforcementLogin({code: '12346678985288799'}, response => {
if (response.code === 200) { // if (response.code === 200) {
// // // // //
// if (!response.data.deptId) { // // if (!response.data.deptId) {
// showFailToast(""); // // showFailToast("");
// return; // // return;
// } // // }
// if (!response.data.organId) { // // if (!response.data.organId) {
// showFailToast(""); // // showFailToast("");
// return; // // return;
// } // // }
// if (!response.data.bureauUnitId) { // // if (!response.data.bureauUnitId) {
// showFailToast(""); // // showFailToast("");
// return; // // return;
// } // // }
// // //
useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || ""); // useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || "");
useCommon.SET_USER_ID(response.data.userId); // useCommon.SET_USER_ID(response.data.userId);
useCommon.SET_USER_NAME(response.data.userName || ""); // useCommon.SET_USER_NAME(response.data.userName || "");
useCommon.SET_NICK_NAME(response.data.nickName || ""); // useCommon.SET_NICK_NAME(response.data.nickName || "");
useCommon.SET_TOKEN(response.data.token); // useCommon.SET_TOKEN(response.data.token);
useCommon.SET_DEPT_ID(response.data.deptId); // useCommon.SET_DEPT_ID(response.data.deptId);
useCommon.SET_DEPT_NAME(response.data.deptName || ""); // useCommon.SET_DEPT_NAME(response.data.deptName || "");
useCommon.SET_ORGAN_ID(response.data.organId); // useCommon.SET_ORGAN_ID(response.data.organId);
useCommon.SET_ORGAN_NAME(response.data.organName || ""); // useCommon.SET_ORGAN_NAME(response.data.organName || "");
useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId); // useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId);
useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || ""); // useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || "");
console.log("enforcement login success", useCommon.userId); // console.log("enforcement login success", useCommon.userId);
router.push({name: "enforcementHome"}); // router.push({name: "enforcementHome"});
} else { // } else {
showFailToast(response.msg || "登录失败"); // showFailToast(response.msg || "");
// }
// }, error => {
// showFailToast(error?.msg || "");
// })
// };
const doLogin = (secretName, secretKey) => {
const encryptedKey = Encrypt(secretKey);
enforcementLogin({"secretName": secretName, "secretKey": encryptedKey}, response => {
if (response.code === 200) {
//
if (!response.data.deptId) {
showFailToast("该用户未关联部门,无法登录");
return;
}
if (!response.data.organId) {
showFailToast("该用户未关联认证机构,无法登录");
return;
} }
}, error => { if (!response.data.bureauUnitId) {
showFailToast(error?.msg || "登录失败,请检查网络"); showFailToast("该用户未关联执法单位,无法登录");
}) return;
}; }
// const doLogin = (secretName, secretKey) => { //
// const encryptedKey = Encrypt(secretKey); useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || "");
// enforcementLogin({"secretName": secretName, "secretKey": encryptedKey}, response => { useCommon.SET_USER_ID(response.data.userId);
// if (response.code === 200) { useCommon.SET_USER_NAME(response.data.userName || "");
// // useCommon.SET_NICK_NAME(response.data.nickName || "");
// if (!response.data.deptId) { useCommon.SET_TOKEN(response.data.token);
// showFailToast(""); useCommon.SET_DEPT_ID(response.data.deptId);
// return; useCommon.SET_DEPT_NAME(response.data.deptName || "");
// } useCommon.SET_ORGAN_ID(response.data.organId);
// if (!response.data.organId) { useCommon.SET_ORGAN_NAME(response.data.organName || "");
// showFailToast(""); useCommon.SET_BUREAU_UNIT_ID(response.data.bureauUnitId);
// return; useCommon.SET_BUREAU_UNIT_NAME(response.data.bureauUnitName || "");
// } console.log("enforcement login success", useCommon.userId);
// if (!response.data.bureauUnitId) { router.push({name: "enforcementHome"});
// showFailToast(""); } else {
// return; showFailToast(response.msg || "登录失败");
// } }
// // }, error => {
// useCommon.SET_USER_PHONENUMBER(response.data.phonenumber || ""); showFailToast(error?.msg || "登录失败,请检查网络");
// 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("enforcement login success", useCommon.userId);
// router.push({name: "enforcementHome"});
// } else {
// showFailToast(response.msg || "");
// }
// }, error => {
// showFailToast(error?.msg || "");
// })
// };
const onSubmit = async () => { const onSubmit = async () => {
doLogin(loginParam.secretName, loginParam.secretKey); doLogin(loginParam.secretName, loginParam.secretKey);
}; };
const Encrypt = (passWord) => { const Encrypt = (passWord) => {
var keyStr = '1234567898745621'; var keyStr = '1234567898745621';
var ivStr = keyStr; var ivStr = keyStr;
var key = CryptoJS.enc.Utf8.parse(keyStr); var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr); var iv = CryptoJS.enc.Utf8.parse(ivStr);
var srcs = CryptoJS.enc.Utf8.parse(passWord); var srcs = CryptoJS.enc.Utf8.parse(passWord);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv, iv: iv,
mode: CryptoJS.mode.CBC, mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding padding: CryptoJS.pad.ZeroPadding
}); });
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.login-page { .login-page {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
overflow: hidden; overflow: hidden;
background-image: url("~@/assets/images/login.jpg"); background-image: url("~@/assets/images/login.jpg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
opacity: 0.9; opacity: 0.9;
.login-content { .login-content {
margin: auto; margin: auto;
padding: 0.27rem 0.27rem 0.52rem 0.27rem; padding: 0.27rem 0.27rem 0.52rem 0.27rem;
background-color: #fff; background-color: #fff;
border-radius: 0.27rem; border-radius: 0.27rem;
box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2); box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2);
opacity: 0.9; opacity: 0.9;
.title { .title {
font-size: 0.52rem; font-size: 0.52rem;
font-weight: 600; font-weight: 600;
}
} }
} }
}
.test-enterprise-list { .test-enterprise-list {
max-height: 60vh; max-height: 60vh;
overflow-y: auto; overflow-y: auto;
padding: 0.2rem; padding: 0.2rem;
} }
</style> </style>

2
zdxt-web-client/zdxt-efcode-enforcement-app/vite-config/index.js

@ -43,7 +43,7 @@ const baseCfg = (viteEnv = {}) => {
cors: true, cors: true,
proxy: { proxy: {
'/api': { '/api': {
target: 'http://139.186.148.21:8080', target: 'http://localhost:17000',
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '') rewrite: (path) => path.replace(/^\/api/, '')
}, },

2
zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev

@ -1,5 +1,5 @@
# 执法端开发环境 # 执法端开发环境
VITE_PORT = 12002 VITE_PORT = 12002
VITE_BASE_URL = '/' VITE_BASE_URL = '/api/enf-ep'
VITE_DEFAULT_LOGIN = '/enforcement/login' VITE_DEFAULT_LOGIN = '/enforcement/login'
VITE_APP_ENV = 'dev' VITE_APP_ENV = 'dev'

Loading…
Cancel
Save