政务管理

This commit is contained in:
于晏彭 2023-03-15 09:50:55 +08:00
parent c5383269ee
commit da6f266b45
6 changed files with 314 additions and 86 deletions

View File

@ -23,7 +23,7 @@ export const editUser = (params: { id: string }) => {
};
// * 删除用户
export const deleteUser = (params: { id: string }) => {
export const deleteUser = (params: { configId: string }) => {
return http.post(PORT1 + `/xmgl/systemConfig/delete`, params);
};
@ -31,16 +31,30 @@ export const deleteUser = (params: { id: string }) => {
export const getGovermentList = (params: User.ReqUserParams) => {
return http.post<ResPage<User.ResUserList>>(PORT1 + `/xmgl/government/page`, params);
};
// * 新增用户
export const addGovernment = (params: FormData) => {
return http.post(PORT1 + `/xmgl/government/add`, params);
};
// * 编辑用户
export const editGovernment = (params: { id: string }) => {
return http.post(PORT1 + `/xmgl/government/edit`, params);
};
export const editGoverCheck = (params: { id: string }) => {
return http.post(PORT1 + `/xmgl/moduleTemplate/saveOrUpdate`, params);
};
//权限配置多选编辑
// 通过id查询政务以及账号信息
export const getGoverDetail = (params: User.ReqUserParams) => {
return http.post<ResPage<User.ResUserList>>(PORT1 + `/xmgl/government/queryDetailById`, params);
};
// 列表查询(按模块类型分组)
export const getGoverType = (params: User.ReqUserParams) => {
return http.post<ResPage<User.ResUserList>>(PORT1 + `/xmgl/baseModule/listByType`, params);
};
// 查询政务下的模块模板信息
export const getGoverForm = (params: User.ReqUserParams) => {
return http.post<ResPage<User.ResUserList>>(PORT1 + `/xmgl/baseModule/listByGovernment`, params);
};
// 字典
// 查询

View File

@ -22,7 +22,7 @@
<el-form-item
:label="item.label + ''"
:style="{ display: item.hidden == true ? 'none' : '' }"
style="width: 600px"
style="width: 90%"
:prop="item.prop"
>
<!-- 输入框 -->
@ -252,5 +252,8 @@ onMounted(() => {
:deep(.el-dialog__body) {
border-top: 1px solid #eee;
}
:deep(.el-select--large) {
width: 100%;
}
}
</style>

View File

@ -14,7 +14,7 @@
<!-- 表格操作 -->
<template #downloadPath="scope">
<el-button type="primary" link @click="handleEditItem(scope.row)">下载</el-button>
<el-button type="primary" link v-copy="scope.row.downloadPath">复制apk地址</el-button>
<el-button type="primary" link v-copy="`${fileUrl + scope.row.downloadPath}`">复制apk地址</el-button>
</template>
<template #operation="{ row }">
<el-button type="primary" link @click="onUpload(row)"
@ -72,9 +72,11 @@ import { useDownload } from "@/hooks/useDownload";
import ProTable from "@/components/ProTable/index.vue";
import { CirclePlus, Delete, EditPen, Download, Upload, View, Refresh } from "@element-plus/icons-vue";
import { getAppList, editApp, addApp, exportApp } from "@/api/modules/jxjview";
import { fa } from "element-plus/es/locale";
const router = useRouter();
const globalStore = GlobalStore();
const fileUrl = ref("http://192.168.34.122:6688/xmgl/file/preview?fileUrl=");
const data = ref<string>("复制成功");
const headers = ref({ Authorization: "Bearer " + globalStore.token });
const fileList = ref([]);
@ -144,17 +146,26 @@ const getTableList = (params: any) => {
const onUpload = (row: any) => {
visible.value = true;
formData.value.versionId = row.versionId;
console.log(row);
fileList.value = [{ name: row.fileName, url: row.downloadPath }];
formData.value = reactive(row);
// if (row.downloadPath) {
// fileList.value.push({ name: row.versionName, url: row.downloadPath });
// }
// formData.value?.resetFields();
};
const onSave = async (params: any) => {
const res = await editApp(params);
proTable.value.getAppList();
visible.value = false;
proTable.value.getTableList();
};
const uploadSuccess = (response: any) => {
console.log(response);
ElMessage.success("上传成功");
formData.value.fileName = response.result.filename;
formData.value.fileName = response.result.originalFilename;
formData.value.downloadPath = response.result.url;
// fileList.value = [{ name: response.result.originalFilename, url: response.result.downloadPath }];
};
</script>

View File

@ -11,40 +11,129 @@
:pagination="true"
background
>
<!-- 表格 header 按钮 -->
<!-- <template #tableHeader="scope">
<el-button type="primary" :icon="CirclePlus" @click="handleAddItem()">新增用户</el-button>
</template> -->
<template #formButton="scope">
<el-button type="primary" @click="handleAddItem()">新增</el-button>
</template>
<!-- 表格操作 -->
<template #operation="scope">
<el-button type="primary" link :icon="EditPen" @click="handleEditItem('edit', scope.row)">编辑</el-button>
<el-button type="primary" link :icon="Delete" @click="deleteAccount(scope.row)">删除</el-button>
<el-button type="primary" link :icon="Delete" @click="onConfiguration(scope.row)">授权配置</el-button>
</template>
</ProTable>
<el-dialog v-model="configureDialogVisible" title="授权配置" show-close>
<div>
<div>
<el-form :model="form" label-width="155px">
<el-row>
<el-col :span="12">
<el-form-item label="名称:">
<el-input v-model="form.governmentName" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号码:">
<el-input v-model="form.governmentTel" placeholder="请输入" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="账号:">
<el-input v-model="form.account" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="密码:">
<el-input v-model="form.password" placeholder="请输入" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="授权状态:">
<el-radio-group v-model="form.state">
<el-radio :label="1">启用</el-radio>
<el-radio :label="0">禁用</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="到期日期:">
<el-date-picker type="date" v-model="form.expireTime" format="YYYY/MM/DD" placeholder="请选择" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否显示未解锁模块:">
<el-radio-group v-model="form.isShowLockModule">
<el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="授权项目数:">
<el-input-number v-model="form.authProject" :min="1" :max="10" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="选择系统版本:">
<el-radio-group @change="onRadio" v-model="form.moduleStyle">
<el-radio :label="1">标准版</el-radio>
<el-radio :label="2">星璇版</el-radio>
<el-radio :label="3">衢州版</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div>
<div class="littleTitle">请勾选功能权限</div>
<div class="allModular">
<el-checkbox v-model="checkAll" @change="checkedState" label="全选" size="large" />
</div>
<div class="littleTitle">政务模块</div>
<div class="allModular">
<div v-for="(item, index) in governmentSelectList" :key="index" class="modularItem">
<el-checkbox v-model="item.select" :label="item.labelName" size="large" />
</div>
</div>
<div class="littleTitle">项目模块</div>
<div class="allModular">
<div v-for="(item, index) in projectSelectList" :key="index" class="modularItem">
<el-checkbox v-model="item.select" :label="item.labelName" size="large" />
</div>
</div>
<div class="littleTitle">企业模块</div>
<div class="allModular">
<div v-for="(item, index) in companySelectList" :key="index" class="modularItem">
<el-checkbox v-model="item.select" :label="item.labelName" size="large" />
</div>
</div>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="configureDialogVisible = false">取消</el-button>
<el-button type="primary" @click="onSubmitConfig">保存</el-button>
</span>
</template>
</el-dialog>
<DialogForm
:title="title"
:formConfig="formConfig"
:formData="formData"
v-model:visible="visible"
append-to-body
width="700px"
width="36%"
@confirm="saveItem"
>
</DialogForm>
</div>
</template>
<style lang="scss" scoped>
.my-header {
display: flex;
flex-direction: row;
justify-content: space-between;
background-color: pink;
// height: 25px;
}
</style>
<script setup lang="tsx" name="jxjSystem">
import { ref, reactive } from "vue";
@ -52,90 +141,114 @@ import { ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router";
import { User } from "@/api/interface";
import { ColumnProps } from "@/components/ProTable/interface";
import { useHandleData } from "@/hooks/useHandleData";
import { useDownload } from "@/hooks/useDownload";
import ProTable from "@/components/ProTable/index.vue";
import DialogForm from "@/components/DialogForm/index.vue";
import { CirclePlus, Delete, EditPen, Download, Upload, View, Refresh, CircleCloseFilled } from "@element-plus/icons-vue";
import { getUserList, deleteUser, editUser, addUser } from "@/api/modules/jxjview";
import {
getGovermentList,
addGovernment,
editGovernment,
getGoverDetail,
getGoverType,
getGoverForm,
editGoverCheck
} from "@/api/modules/jxjview";
const router = useRouter();
const visible = ref(false);
const title = ref("");
const formData = ref({});
const mode = ref("");
// ProTable 便
const proTable = ref();
const title = ref("");
// const ridioValue = ref(1);
const visible = ref(false);
const configureDialogVisible = ref(false);
const checkAll = ref(false);
// const isIndeterminate = ref(true);
const formData = ref({});
const governmentSelectList = ref([]);
const projectSelectList = ref([]);
const companySelectList = ref([]);
// const government = ref([]);
//
const handleAddItem = () => {
mode.value = "add";
visible.value = true;
title.value = "新增";
formData.value = reactive({});
title.value = "新增政务";
};
//
function handleEditItem(index: string, row: any) {
mode.value = "edit";
visible.value = true;
title.value = "编辑";
formData.value = reactive(row);
}
function handleEditItem(index: string, row: any) {}
//
const columns: ColumnProps[] = [
{
prop: "configId",
prop: "governmentId",
label: "序号"
},
{
prop: "configKey",
label: "配置名称",
prop: "governmentName",
label: "政务名称",
search: { el: "input" }
},
// prop
{ prop: "configName", label: "配置键名" },
{ prop: "configValue", label: "配置键值" },
{ prop: "remark", label: "备注" },
{ prop: "operation", label: "操作", fixed: "right", width: 330 }
{ prop: "createTime", label: "注册时间" },
{ prop: "governmentTel", label: "手机号码" },
{ prop: "state", label: "使用状态" },
{ prop: "diffDay", label: "剩余天数" },
{ prop: "authProject", label: "项目数量" },
{ prop: "operation", label: "操作", fixed: "right" }
];
//
const formConfig = {
formItemConfig: [
{
label: "配置名称",
prop: "configKey",
label: "政务名称",
prop: "governmentName",
type: "input"
},
{
label: "配置键名",
prop: "configName",
label: "手机号码",
prop: "governmentTel",
type: "input"
},
{
label: "配置键值",
prop: "configValue",
label: "账户",
prop: "account",
type: "input"
},
{
label: "备注",
prop: "remark",
label: "密码",
prop: "password",
type: "input"
}
],
rules: {
configKey: [
governmentName: [
{
required: true,
message: "请输入类型名",
message: "请输入",
trigger: "blur"
}
]
}
};
const form = ref({
authProject: 1,
expireTime: "",
governmentName: "",
governmentTel: "",
account: "",
password: "",
state: "",
moduleStyle: "",
isShowLockModule: "",
governmentSn: ""
});
const AuthIdData = ref([]);
// ProTable()
const initParam = reactive({
type: 1
@ -157,27 +270,93 @@ const dataCallback = (data: any) => {
// ProTable :requestApi="getUserList"
const getTableList = (params: any) => {
let newParams = JSON.parse(JSON.stringify(params));
return getUserList(newParams);
return getGovermentList(newParams);
};
//
const saveItem = async (form: any) => {
if (form.configId) {
console.log(form.configId);
const res = await editUser(form);
proTable.value.getTableList();
ElMessage.success("编辑成功");
} else {
const res = await addUser(form);
ElMessage.success("新增成功");
proTable.value.getTableList();
}
const res = await addGovernment(form);
ElMessage.success("新增成功");
visible.value = false;
};
//
const deleteAccount = async (params: User.ResUserList) => {
await useHandleData(deleteUser, { id: params.configId }, `删除【${params.username}】用户`);
proTable.value.getTableList();
};
const onRadio = async (val: number) => {
// console.log(val);
const res1 = await getGoverType({ styleType: val });
governmentSelectList.value = res1.result.government;
projectSelectList.value = res1.result.project;
companySelectList.value = res1.result.enterprise;
};
const checkedState = () => {
// console.log("");
if (checkAll.value) {
governmentSelectList.value.concat(projectSelectList.value, companySelectList.value).forEach((item, index, array) => {
item.select = true;
// isIndeterminate.value = false;
});
} else if (checkAll.value == false) {
governmentSelectList.value.concat(projectSelectList.value, companySelectList.value).forEach((item, index, array) => {
item.select = false;
});
}
};
const onSubmitConfig = async () => {
let checkItem = ref([]);
governmentSelectList.value.concat(projectSelectList.value, companySelectList.value).forEach(item => {
if (item.select == true) {
checkItem.value.push({
moduleId: item.moduleId,
moduleType: item.moduleType,
governmentSn: form.value.governmentSn
});
}
});
await editGovernment(form.value).then(res => {
editGoverCheck(checkItem.value);
ElMessage.success("保存成功");
configureDialogVisible.value = false;
});
};
// btn
const onConfiguration = async (row: any) => {
configureDialogVisible.value = true;
form.value = reactive({ ...row });
// console.log(row.moduleStyle);
const res = await getGoverDetail({ governmentId: row.governmentId });
form.value.account = res.result.account;
form.value.password = res.result.password;
form.value.governmentSn = res.result.governmentSn;
const res1 = await getGoverType({ styleType: row.moduleStyle });
governmentSelectList.value = res1.result.government;
projectSelectList.value = res1.result.project;
companySelectList.value = res1.result.enterprise;
const res2 = await getGoverForm({ governmentSn: row.governmentSn });
governmentSelectList.value.concat(projectSelectList.value, companySelectList.value).forEach((itemA, indexA) => {
res2.result.forEach((itemB, indexB) => {
if (itemA.moduleId == itemB) {
// governmentSelectList.value[indexA].select = true;
itemA.select = true;
}
});
});
};
</script>
<style scoped lang="scss">
.littleTitle {
border-left: 3px solid #008bff;
padding-left: 6px;
}
.allModular {
width: 100%;
margin: 10px;
display: flex;
flex-wrap: wrap;
.modularItem {
padding-right: 50px;
}
}
</style>

View File

@ -272,7 +272,16 @@ function handleEditItem(index: string, row: any) {
mode.value = "edit";
visible.value = true;
title.value = "编辑模块";
formData.value = reactive(row);
// if (row.styleType === 1) {
// formData.value.styleType == "";
// }
// row.styleType == 1
// ? formData.value.styleType == ""
// : row.styleType == 2
// ? formData.value.styleType == ""
// : "";
}
//
@ -349,7 +358,7 @@ const columns: ColumnProps[] = [
];
//
const formConfig = {
const formConfig = reactive({
formItemConfig: [
{
label: "标签名称",
@ -366,6 +375,18 @@ const formConfig = {
prop: "moduleName",
type: "input"
},
{
label: "模块类型",
prop: "moduleType",
type: "select",
data: []
},
{
label: "模块风格",
prop: "styleType",
type: "select",
data: []
},
{
label: "解锁模块图标",
prop: "moduleIconChecked",
@ -403,7 +424,11 @@ const formConfig = {
{
label: "是否是重要模块",
prop: "isImportantModule",
type: "input"
type: "radio",
data: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
}
],
rules: {
@ -415,7 +440,7 @@ const formConfig = {
}
]
}
};
});
//
const formbtnConfig = {
@ -523,12 +548,6 @@ const onSubmitMenu = async (form: any) => {
getMenuTabList({ moduleId: form.moduleId });
};
//
const getDiaTabList = async (params: any) => {
await getDicList(params);
return getDicList(params);
};
const getBtnTabList = async (params: any) => {
const res = await btnList(params);
buttonData.value = res.result;
@ -568,19 +587,21 @@ const onChangeType = async (val: number) => {
};
onMounted(async () => {
const res = await getDiaTabList(diaTableData);
const res = await getDicList(diaTableData);
optionStyle.value = res.result.map(i => {
return {
label: i.dictValue,
value: i.dictLabel
};
});
const res1 = await getDiaTabList(diaTableType);
formConfig.formItemConfig[3].data = optionStyle.value;
const res1 = await getDicList(diaTableType);
optionType.value = res1.result.map(i => {
return {
label: i.dictValue,
value: i.dictLabel
};
});
formConfig.formItemConfig[4].data = optionType.value;
});
</script>

View File

@ -170,7 +170,7 @@ const saveItem = async (form: any) => {
//
const deleteAccount = async (params: User.ResUserList) => {
await useHandleData(deleteUser, { id: params.configId }, `删除【${params.username}】用户`);
await useHandleData(deleteUser, { configId: params.configId }, `删除【${params.username}】用户`);
proTable.value.getTableList();
};
</script>