| | |
| | | import { EnumMenuScene } from './module'; |
| | | |
| | | export const AppType = import.meta.env.VITE_AppType || 'one'; |
| | | |
| | | export const AppLocalConfig = { |
| | | menuScene: EnumMenuScene.Goverment, |
| | | }; |
| | |
| | | }; |
| | | |
| | | export const TempFolderPath = 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/temp'; |
| | | |
| | | export enum DepartmentType { |
| | | /** |
| | | * 市场部 |
| | | */ |
| | | Market = 1, |
| | | /** |
| | | * 销售部 |
| | | */ |
| | | Sale, |
| | | /** |
| | | * 客户部 |
| | | */ |
| | | Customer, |
| | | /** |
| | | * 招商部 |
| | | */ |
| | | Merchants, |
| | | } |
| | | |
| | | export const DepartmentTypeText = { |
| | | [DepartmentType.Market]: '市场部', |
| | | [DepartmentType.Sale]: '销售部', |
| | | [DepartmentType.Customer]: '客户部', |
| | | [DepartmentType.Merchants]: '招商部', |
| | | }; |
| | | |
| | | export enum ExternalSystem { |
| | | /** |
| | | * 四流政务端 |
| | | */ |
| | | Goverend = 'goverend-admin-app-client', |
| | | /** |
| | | * 江佑共保运营端 |
| | | */ |
| | | JYB = 'jyb-admin-app-client', |
| | | /** |
| | | * 灵工系统运营端 |
| | | */ |
| | | flexjob = 'flexjob-admin-app-client', |
| | | } |
| | | |
| | | export const ExternalSystemText = { |
| | | [ExternalSystem.Goverend]: '四流政务端', |
| | | [ExternalSystem.JYB]: '江佑共保运营端', |
| | | [ExternalSystem.flexjob]: '灵工系统运营端', |
| | | }; |
| | |
| | | static PasswordRegexNoSymbol = |
| | | // eslint-disable-next-line no-useless-escape |
| | | /^(?![\d]+$)(?![a-z]+$)(?![A-Z]+$)[a-zA-Z\d]{6,16}$/; |
| | | static PasswordRegexOnlyLetterNumber = |
| | | // eslint-disable-next-line no-useless-escape |
| | | /^[a-zA-Z0-9]+$/; |
| | | } |
| | |
| | | import { useUserStore } from '@/store/modules/user'; |
| | | import { UserUtils } from '@bole-core/core'; |
| | | // import * as userRoleServices from '@/services/api/UserRole'; |
| | | import * as userRoleServices from '@/services/api/UserRole'; |
| | | import * as userServices from '@/services/api/User'; |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | import { formatRoleName } from '@/utils'; |
| | | import { EnumMenuScene } from '@/constants'; |
| | | |
| | | export function useIsSystemAdmin() { |
| | | const userStore = useUserStore(); |
| | |
| | | }; |
| | | } |
| | | |
| | | export function useAllRoleList() { |
| | | const { data: allRoleList, refetch } = useQuery({ |
| | | queryKey: ['userServices/getAllRoles'], |
| | | type UseAllRoleListOptions = { |
| | | menuScene?: EnumMenuScene; |
| | | }; |
| | | |
| | | export function useAllRoleList(options: UseAllRoleListOptions = {}) { |
| | | const { menuScene = EnumMenuScene.Goverment } = options; |
| | | const { data: allRoleList } = useQuery({ |
| | | queryKey: ['userRoleServices/getRoles', menuScene], |
| | | queryFn: async () => { |
| | | let res = await userServices.getAllRoles({ showLoading: false }); |
| | | return res; |
| | | let res = await userRoleServices.getRoles({ menuScene }, { showLoading: false }); |
| | | return res.data; |
| | | }, |
| | | placeholderData: () => [] as API.RoleInfo[], |
| | | select(data) { |
| | | return data.map((x) => ({ |
| | | ...x, |
| | |
| | | }, |
| | | }); |
| | | |
| | | const enableRoleList = computed(() => { |
| | | return allRoleList.value.filter((x) => x.isEnable); |
| | | }); |
| | | |
| | | return { |
| | | allRoleList, |
| | | refetch, |
| | | enableRoleList, |
| | | }; |
| | | } |
| | |
| | | rootMenu: true, |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EnterpriseInfo', |
| | | redirect: 'noRedirect', |
| | | component: Layout, |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | meta: { |
| | | rank: 10010, |
| | | title: '企业信息', |
| | | rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/EnterpriseInfoList', |
| | | name: 'EnterpriseInfoList', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/EnterpriseInfo/EnterpriseInfo.vue'), |
| | | meta: { |
| | | rank: 10011, |
| | | title: '企业信息', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/EnterpriseInfoDetail/:id', |
| | | name: 'EnterpriseInfoDetail', |
| | | hidden: true, |
| | | component: () => import('@/views/EnterpriseInfo/EnterpriseInfoDetail.vue'), |
| | | meta: { |
| | | rank: 10012, |
| | | title: '企业信息详情', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | // { |
| | | // path: '/MaterialReview', |
| | | // redirect: 'noRedirect', |
| | |
| | | // ], |
| | | // }, |
| | | |
| | | { |
| | | path: '/Reward', |
| | | redirect: 'noRedirect', |
| | | component: Layout, |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | meta: { |
| | | rank: 10030, |
| | | title: '平台奖励', |
| | | rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/RewardGrant', |
| | | name: 'RewardGrant', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/Reward/RewardGrant.vue'), |
| | | meta: { |
| | | rank: 10031, |
| | | title: '奖励发放登记', |
| | | // { |
| | | // path: '/Reward', |
| | | // redirect: 'noRedirect', |
| | | // component: Layout, |
| | | // hidden: false, |
| | | // alwaysShow: true, |
| | | // meta: { |
| | | // rank: 10030, |
| | | // title: '平台奖励', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/RewardDeclareDetail/:id', |
| | | name: 'RewardDeclareDetail', |
| | | hidden: true, |
| | | component: () => import('@/views/Reward/RewardDeclareDetail.vue'), |
| | | meta: { |
| | | rank: 10032, |
| | | title: '申报详情', |
| | | rootMenu: false, |
| | | }, |
| | | }, |
| | | { |
| | | path: '/RewardGrantRegister/:id', |
| | | name: 'RewardGrantRegister', |
| | | hidden: true, |
| | | component: () => import('@/views/Reward/RewardGrantRegister.vue'), |
| | | meta: { |
| | | rank: 10033, |
| | | title: '奖励金登记', |
| | | rootMenu: false, |
| | | }, |
| | | }, |
| | | { |
| | | path: '/WithdrawalApproval', |
| | | name: 'WithdrawalApproval', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/Reward/WithdrawalApproval.vue'), |
| | | meta: { |
| | | rank: 10040, |
| | | title: '提现审批', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/RewardApplyTradeCheck', |
| | | name: 'RewardApplyTradeCheck', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/Reward/RewardApplyTradeCheck.vue'), |
| | | meta: { |
| | | rank: 10050, |
| | | title: '出账审批', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | { |
| | | path: '/FinancialApproval', |
| | | name: 'FinancialApproval', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/Reward/FinancialApproval.vue'), |
| | | meta: { |
| | | rank: 10060, |
| | | title: '财务审批', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | path: '/StatisticalReport', |
| | | redirect: 'noRedirect', |
| | | component: Layout, |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | meta: { |
| | | rank: 10040, |
| | | title: '统计报表', |
| | | rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/RewardStatistics', |
| | | name: 'RewardStatistics', |
| | | hidden: false, |
| | | alwaysShow: true, |
| | | component: () => import('@/views/StatisticalReport/RewardStatistics.vue'), |
| | | meta: { |
| | | rank: 10041, |
| | | title: '奖励金统计', |
| | | // rootMenu: true, |
| | | icon: 'home', |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | // icon: 'home', |
| | | // }, |
| | | // children: [ |
| | | // { |
| | | // path: '/RewardGrant', |
| | | // name: 'RewardGrant', |
| | | // hidden: false, |
| | | // alwaysShow: true, |
| | | // component: () => import('@/views/Reward/RewardGrant.vue'), |
| | | // meta: { |
| | | // rank: 10031, |
| | | // title: '奖励发放登记', |
| | | // // rootMenu: true, |
| | | // icon: 'home', |
| | | // }, |
| | | // }, |
| | | // { |
| | | // path: '/RewardDeclareDetail/:id', |
| | | // name: 'RewardDeclareDetail', |
| | | // hidden: true, |
| | | // component: () => import('@/views/Reward/RewardDeclareDetail.vue'), |
| | | // meta: { |
| | | // rank: 10032, |
| | | // title: '申报详情', |
| | | // rootMenu: false, |
| | | // }, |
| | | // }, |
| | | // { |
| | | // path: '/RewardGrantRegister/:id', |
| | | // name: 'RewardGrantRegister', |
| | | // hidden: true, |
| | | // component: () => import('@/views/Reward/RewardGrantRegister.vue'), |
| | | // meta: { |
| | | // rank: 10033, |
| | | // title: '奖励金登记', |
| | | // rootMenu: false, |
| | | // }, |
| | | // }, |
| | | // { |
| | | // path: '/WithdrawalApproval', |
| | | // name: 'WithdrawalApproval', |
| | | // hidden: false, |
| | | // alwaysShow: true, |
| | | // component: () => import('@/views/Reward/WithdrawalApproval.vue'), |
| | | // meta: { |
| | | // rank: 10040, |
| | | // title: '提现审批', |
| | | // // rootMenu: true, |
| | | // icon: 'home', |
| | | // }, |
| | | // }, |
| | | // { |
| | | // path: '/RewardApplyTradeCheck', |
| | | // name: 'RewardApplyTradeCheck', |
| | | // hidden: false, |
| | | // alwaysShow: true, |
| | | // component: () => import('@/views/Reward/RewardApplyTradeCheck.vue'), |
| | | // meta: { |
| | | // rank: 10050, |
| | | // title: '出账审批', |
| | | // // rootMenu: true, |
| | | // icon: 'home', |
| | | // }, |
| | | // }, |
| | | // { |
| | | // path: '/FinancialApproval', |
| | | // name: 'FinancialApproval', |
| | | // hidden: false, |
| | | // alwaysShow: true, |
| | | // component: () => import('@/views/Reward/FinancialApproval.vue'), |
| | | // meta: { |
| | | // rank: 10060, |
| | | // title: '财务审批', |
| | | // // rootMenu: true, |
| | | // icon: 'home', |
| | | // }, |
| | | // }, |
| | | // ], |
| | | // }, |
| | | // { |
| | | // path: '/Syatem', |
| | | // redirect: 'noRedirect', |
| | |
| | | // @ts-ignore |
| | | import { request } from '@/utils/request'; |
| | | |
| | | /** 此处后端没有提供注释 POST /api/BaseModuleNew/AddOrEditModuleV2 */ |
| | | export async function addOrEditModuleV2(body: API.ModuleDtoV2, options?: API.RequestConfig) { |
| | | return request<string>('/api/BaseModuleNew/AddOrEditModuleV2', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 查询所有模块 GET /api/BaseModuleNew/GetAllModuleList */ |
| | | export async function getAllModuleList( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/BaseModuleNew/GetCurrentUserModuleListV2 */ |
| | | export async function getCurrentUserModuleListV2( |
| | | body: API.ModuleDtoV2, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<number>('/api/BaseModuleNew/GetCurrentUserModuleListV2', { |
| | | method: 'GET', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/BaseModuleNew/GetUserOrRoleModuleList */ |
| | | export async function getUserOrRoleModuleList( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 批量更新客户合同参数状态 POST /api/ElectronSign/BatchUpdateCustomContractParamterStatus */ |
| | | export async function batchUpdateCustomContractParamterStatus( |
| | | body: API.BatchUpdateCustomContractParamterStatusInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<number>('/api/ElectronSign/BatchUpdateCustomContractParamterStatus', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 创建或更新模板 POST /api/ElectronSign/CreateOrUpdateContractTemplate */ |
| | | export async function createOrUpdateContractTemplate( |
| | | body: API.CreateOrUpdateContractTemplateInput, |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 获取客户合同参数列表 POST /api/ElectronSign/GetCustomContractParamterList */ |
| | | export async function getCustomContractParamterList( |
| | | body: API.GetCustomContractParamterListInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetCustomContractParamterListItemPageOutput>( |
| | | '/api/ElectronSign/GetCustomContractParamterList', |
| | | { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** 获取客户合同参数选择器 GET /api/ElectronSign/GetCustomContractParamterSelect */ |
| | | export async function getCustomContractParamterSelect( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | | params: API.APIgetCustomContractParamterSelectParams, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetCustomContractParamterListItem[]>( |
| | | '/api/ElectronSign/GetCustomContractParamterSelect', |
| | | { |
| | | method: 'GET', |
| | | params: { |
| | | ...params, |
| | | }, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** 获取客户列表 POST /api/ElectronSign/GetCustomerList */ |
| | | export async function getCustomerList(body: API.GetCustomerInput, options?: API.RequestConfig) { |
| | | return request<API.GetCustomerDtoPageOutput>('/api/ElectronSign/GetCustomerList', { |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 保存客户合同参数 POST /api/ElectronSign/SaveCustomContractParamter */ |
| | | export async function saveCustomContractParamter( |
| | | body: API.SaveCustomContractTemplateParamterInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<string>('/api/ElectronSign/SaveCustomContractParamter', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 发起签约 POST /api/ElectronSign/SendContract */ |
| | | export async function sendContract(body: API.SendContractInput, options?: API.RequestConfig) { |
| | | return request<API.SendContractOutput>('/api/ElectronSign/SendContract', { |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 确认提交材料上传V2 POST /api/EnterpriseApplyFile/CustomerUploadMonthApplyFileV2 */ |
| | | export async function customerUploadMonthApplyFileV2( |
| | | body: API.CustomerUploadMonthApplyFileInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<number>('/api/EnterpriseApplyFile/CustomerUploadMonthApplyFileV2', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 删除客户四流材料 POST /api/EnterpriseApplyFile/DeleteEnterpriseApplyUploadFile */ |
| | | export async function deleteEnterpriseApplyUploadFile( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 获取月份上传文件详情V2 POST /api/EnterpriseApplyFile/GetCustomerUploadApplyFilesV2 */ |
| | | export async function getCustomerUploadApplyFilesV2( |
| | | body: API.GetCustomerUploadApplyFilesInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetCustomerUploadApplyFilesResponse>( |
| | | '/api/EnterpriseApplyFile/GetCustomerUploadApplyFilesV2', |
| | | { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** 根据月份查询是否存在提交记录 POST /api/EnterpriseApplyFile/GetCustomerUploadFileRecord */ |
| | | export async function getCustomerUploadFileRecord( |
| | | body: API.GetCustomerUploadFileRecordInput, |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 根据月份查询是否存在提交记录V2 POST /api/EnterpriseApplyFile/GetCustomerUploadFileRecordV2 */ |
| | | export async function getCustomerUploadFileRecordV2( |
| | | body: API.GetCustomerUploadFileRecordInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetCustomerUploadFileRecordOutput>( |
| | | '/api/EnterpriseApplyFile/GetCustomerUploadFileRecordV2', |
| | | { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** 按月份查询企业上传材料列表 POST /api/EnterpriseApplyFile/GetEnterpriseApplyUploadFile */ |
| | | export async function getEnterpriseApplyUploadFile( |
| | | body: API.PageInput, |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 导出园区客户管理列表 POST /api/ParkBountyApply/GetParkCustomerManagePageNewExport */ |
| | | export async function getParkCustomerManagePageNewExport( |
| | | body: API.QueryParkCustomerManageInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/ParkBountyApply/GetParkCustomerManagePageNewExport', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 查询奖励金统计报表 POST /api/ParkBountyApply/GetRewardStatistics */ |
| | | export async function getRewardStatistics( |
| | | body: API.GetRewardStatisticsInput, |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 创建政务端管理子账户 POST /api/UserRole/CreateGovermentSubAccounts */ |
| | | export async function createGovermentSubAccounts( |
| | | body: API.CreateGovermentSubAccounts, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<string>('/api/UserRole/CreateGovermentSubAccounts', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 新增角色 POST /api/UserRole/CreateRole */ |
| | | export async function createRole(body: API.CreateBaseRoleInput, options?: API.RequestConfig) { |
| | | return request<string>('/api/UserRole/CreateRole', { |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 政务端管理子账户列表 POST /api/UserRole/GetGovermentSubAccounts */ |
| | | export async function getGovermentSubAccounts( |
| | | body: API.GetBackClientUsersInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.UserDtoPageOutput>('/api/UserRole/GetGovermentSubAccounts', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 角色列表 POST /api/UserRole/GetRoles */ |
| | | export async function getRoles(body: API.GetRolesInput, options?: API.RequestConfig) { |
| | | return request<API.RoleInfoPageOutput>('/api/UserRole/GetRoles', { |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 编辑政务端管理子账户 POST /api/UserRole/UpdateGovermentSubAccounts */ |
| | | export async function updateGovermentSubAccounts( |
| | | body: API.UpdateGovermentClientUserInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<number>('/api/UserRole/UpdateGovermentSubAccounts', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 角色编辑 POST /api/UserRole/UpdateRole */ |
| | | export async function updateRole(body: API.CreateOrUpdateRoleInput, options?: API.RequestConfig) { |
| | | return request<number>('/api/UserRole/UpdateRole', { |
| | |
| | | moduleId?: string; |
| | | } |
| | | |
| | | interface APIgetCustomContractParamterSelectParams { |
| | | /** 客户Id */ |
| | | customerId?: string; |
| | | /** 是否默认 */ |
| | | isDefault?: boolean; |
| | | /** 合同模板Id */ |
| | | templateId?: string; |
| | | } |
| | | |
| | | interface APIgetCustomerFileTypeHeadParams { |
| | | enterpriseId?: string; |
| | | } |
| | |
| | | status?: EnumElectronSignContractParameterStatus; |
| | | } |
| | | |
| | | interface BatchUpdateCustomContractParamterStatusInput { |
| | | /** 客户Id */ |
| | | customerId?: string; |
| | | /** 参数Id */ |
| | | ids?: string[]; |
| | | status?: EnumElectronSignContractParameterStatus; |
| | | } |
| | | |
| | | interface BestSignDownloadImageDataResponse { |
| | | /** 图片文件流 */ |
| | | data?: any[]; |
| | |
| | | status?: CooperationApplyStatusEnum; |
| | | } |
| | | |
| | | interface CreateGovermentSubAccounts { |
| | | /** 名称 */ |
| | | name?: string; |
| | | /** 用户名 */ |
| | | userName?: string; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | /** 手机号 */ |
| | | phoneNumber?: string; |
| | | /** 用户端Id */ |
| | | clientId?: string; |
| | | /** 园区Ids */ |
| | | industrialParkIds?: string[]; |
| | | /** 角色 */ |
| | | roleNames?: string[]; |
| | | /** 是否理赔提醒 */ |
| | | sendClaimMessage?: boolean; |
| | | /** 是否保单到期提醒 */ |
| | | sendBillExpireMessage?: boolean; |
| | | /** 是否短信提醒 */ |
| | | isSendMessage?: boolean; |
| | | /** 是否人员变更提醒 */ |
| | | staffChangeMessage?: boolean; |
| | | /** 是否批改提醒 */ |
| | | batchUpdateMessage?: boolean; |
| | | /** 密码 */ |
| | | password?: string; |
| | | /** 主账号用户账号 */ |
| | | subAccountCreator?: string; |
| | | } |
| | | |
| | | interface CreateGoverUserInput { |
| | | /** 名称 */ |
| | | name?: string; |
| | |
| | | isAutoSign?: boolean; |
| | | /** 自动签授权书 */ |
| | | autoSignPowerAttorneyUrl?: string; |
| | | /** 自定义内容 */ |
| | | customContents?: string[]; |
| | | /** 模板变量 */ |
| | | values: CreateOrUpdateContractTemplateValueInput[]; |
| | | } |
| | |
| | | applyAmount?: number; |
| | | fileTypes?: CustomerUploadMonthApplyFileType[]; |
| | | enterpriseId?: string; |
| | | /** 是否是运营端代上传 */ |
| | | isAdminFileUpload?: boolean; |
| | | } |
| | | |
| | | interface CustomerUploadMonthApplyFileType { |
| | |
| | | data?: GetContractParamterListItem[]; |
| | | } |
| | | |
| | | interface GetContractTemplateCustomContentDto { |
| | | /** 合同模板Id */ |
| | | templateId?: string; |
| | | /** 变量名称 */ |
| | | label?: string; |
| | | /** 变量代码 */ |
| | | name?: string; |
| | | /** 值 */ |
| | | value?: string; |
| | | } |
| | | |
| | | interface GetContractTemplateDto { |
| | | /** Id */ |
| | | id?: string; |
| | |
| | | isAutoSign?: boolean; |
| | | /** 自动签授权书 */ |
| | | autoSignPowerAttorneyUrl?: string; |
| | | /** 模板变量 */ |
| | | customContents?: GetContractTemplateCustomContentDto[]; |
| | | /** 模板变量 */ |
| | | values?: GetContractTemplateValueDto[]; |
| | | } |
| | |
| | | startDate?: string; |
| | | /** 截止日期 */ |
| | | endDate?: string; |
| | | } |
| | | |
| | | interface GetCustomContractParamterListInput { |
| | | pageModel?: Pagination; |
| | | /** 客户Id */ |
| | | customerId?: string; |
| | | /** 关键字 */ |
| | | keywords?: string; |
| | | status?: EnumElectronSignContractParameterStatus; |
| | | } |
| | | |
| | | interface GetCustomContractParamterListItem { |
| | | /** 参数Id */ |
| | | id?: string; |
| | | /** 变量名称 */ |
| | | label?: string; |
| | | /** 变量代码 */ |
| | | name?: string; |
| | | /** 是否默认 */ |
| | | isDefault?: boolean; |
| | | status?: EnumElectronSignContractParameterStatus; |
| | | } |
| | | |
| | | interface GetCustomContractParamterListItemPageOutput { |
| | | pageModel?: Pagination; |
| | | objectData?: any; |
| | | data?: GetCustomContractParamterListItem[]; |
| | | } |
| | | |
| | | interface GetCustomerDto { |
| | |
| | | bankBranchName?: string; |
| | | /** 银行卡号 */ |
| | | bankCardNumber?: string; |
| | | userCertificationStatus?: UserCertificationStatusEnum; |
| | | } |
| | | |
| | | interface GetParkCustomerManageOutput { |
| | |
| | | parentModuleName?: string; |
| | | } |
| | | |
| | | interface ModuleDtoV2 { |
| | | id?: string; |
| | | description?: string; |
| | | sortCode?: number; |
| | | enabledMark?: number; |
| | | parentId?: string; |
| | | name?: string; |
| | | isCache?: boolean; |
| | | path?: string; |
| | | viewAddress?: string; |
| | | levelNum?: number; |
| | | enCode?: string; |
| | | menuSource?: EnumMenuScene; |
| | | icon?: string; |
| | | hasCheck?: boolean; |
| | | isMenu?: number; |
| | | parentModuleName?: string; |
| | | } |
| | | |
| | | interface ModuleExtensionDto { |
| | | entities?: Record<string, any>; |
| | | configuration?: Record<string, any>; |
| | |
| | | status?: EnumElectronSignContractParameterStatus; |
| | | } |
| | | |
| | | interface SaveCustomContractTemplateParamterInput { |
| | | /** 客户Id */ |
| | | customerId?: string; |
| | | /** 参数Id */ |
| | | id?: string; |
| | | /** 变量名称 */ |
| | | label?: string; |
| | | /** 变量代码 */ |
| | | name?: string; |
| | | status?: EnumElectronSignContractParameterStatus; |
| | | } |
| | | |
| | | interface SaveCustomerTemplateParamInput { |
| | | /** 模板id */ |
| | | lgGigWorkerCustomerTemplateId?: string; |
| | |
| | | import _ from 'lodash'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import { EnterpriseTypeText } from '@/constants'; |
| | | import { useAccess } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'EnterpriseInfo', |
| | | }); |
| | | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'enterpriseName', |
| | | name: '企业名', |
| | | width: 250, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'societyCreditCode', |
| | | name: '统一社会信用代码', |
| | | width: 200, |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'enterpriseType', |
| | | name: '企业类型', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'industrialParkName', |
| | | name: '所属园区', |
| | | width: 200, |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'parkTypName', |
| | | name: '园区类型', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'applyCount', |
| | | name: '申报次数', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'lastApplyTime', |
| | | name: '最近申报日期', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'financeCount', |
| | | name: '财政拨付次数', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'lastFinanceTime', |
| | | name: '最近财政拨付日期', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'financeSumAmount', |
| | | name: '财政拨付总额', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'settleCount', |
| | | name: '平台拨付次数', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '12', |
| | | enCode: 'lastSettleTime', |
| | | name: '最近平台拨付日期', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '13', |
| | | enCode: 'settleSumAmount', |
| | | name: '平台拨付总额', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '14', |
| | | enCode: 'bountyAmount', |
| | | name: '平台拨付余额', |
| | | width: 150, |
| | | }, |
| | | ]; |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { emits: { onClick: (role) => goDetail(role) } }, |
| | | }; |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | emits: { |
| | | onClick: (role) => goDetail(role), |
| | | }, |
| | | }, |
| | | ]); |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const BaseState = { |
| | |
| | | import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; |
| | | import _ from 'lodash'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import { useGlobalEventContext } from '@/hooks'; |
| | | import { useAccess, useGlobalEventContext } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'MaterialReviewList', |
| | | }); |
| | | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'batchNo', |
| | | name: '申请批次号', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'parkName', |
| | | name: '申请园区', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'parkTypeName', |
| | | name: '园区类型', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'applyMonth', |
| | | name: '申请奖励金月份', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'applySumAmount', |
| | | name: '奖励金汇总金额(元)', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'creationTime', |
| | | name: '申报日期', |
| | | }, |
| | | { |
| | | id: '6-1', |
| | | enCode: 'outCheckAuditOperator', |
| | | name: '初审人', |
| | | }, |
| | | { |
| | | id: '6-2', |
| | | enCode: 'outCheckTime', |
| | | name: '初审日期', |
| | | }, |
| | | { |
| | | id: '6-3', |
| | | enCode: 'outCheckStatus', |
| | | name: '初审状态', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'outReCheckAuditOperator', |
| | | name: '复审人', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'outReCheckTime', |
| | | name: '复审日期', |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'outReCheckStatus', |
| | | name: '复审状态', |
| | | }, |
| | | ]; |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => goDetail(role), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'auditBtn', |
| | | name: '审核', |
| | | }, |
| | | auditBtn: { |
| | | emits: { |
| | | onClick: (role) => goAudit(role), |
| | | }, |
| | |
| | | row.outReCheckStatus !== BountyCheckStatusEnum.WaitCheck, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const BaseState = { |
| | |
| | | import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; |
| | | import _ from 'lodash'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import { useGlobalEventContext } from '@/hooks'; |
| | | import { useAccess, useGlobalEventContext } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'MaterialReviewList', |
| | | }); |
| | | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'batchNo', |
| | | name: '申请批次号', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'parkName', |
| | | name: '申请园区', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'parkTypeName', |
| | | name: '园区类型', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'applyMonth', |
| | | name: '申请奖励金月份', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'applySumAmount', |
| | | name: '奖励金汇总金额(元)', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'creationTime', |
| | | name: '申报日期', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'outCheckAuditOperator', |
| | | name: '审核人', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'outCheckTime', |
| | | name: '审核日期', |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'outCheckStatus', |
| | | name: '审核状态', |
| | | }, |
| | | ]; |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => goDetail(role), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'auditBtn', |
| | | name: '审核', |
| | | }, |
| | | auditBtn: { |
| | | emits: { |
| | | onClick: (role) => goAudit(role), |
| | | }, |
| | |
| | | row.outCheckStatus !== BountyCheckStatusEnum.WaitCheck, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const BaseState = { |
| New file |
| | |
| | | <template> |
| | | <LoadingLayout :loading="state.loading"> |
| | | <AppContainer> |
| | | <ProTableQueryFilterBar @on-reset="reset"> |
| | | <template #query> |
| | | <QueryFilterItem> |
| | | <SearchInput |
| | | v-model="extraParamState.queryCondition" |
| | | style="width: 200px" |
| | | placeholder="账号/姓名/手机号" |
| | | @on-click-search="getList" |
| | | > |
| | | </SearchInput> |
| | | </QueryFilterItem> |
| | | </template> |
| | | <template #btn> |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'addBtn')" |
| | | @click="openDialog()" |
| | | icon="Plus" |
| | | type="primary" |
| | | >新增</el-button |
| | | > |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <AddOrEditExternalAccountDialog v-bind="dialogProps" /> |
| | | <ResetPasswordDialog v-bind="resetPasswordDialogProps"></ResetPasswordDialog> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { |
| | | ProTableQueryFilterBar, |
| | | ProTableV2, |
| | | SearchInput, |
| | | LoadingLayout, |
| | | AppContainer, |
| | | QueryFilterItem, |
| | | useTable, |
| | | useFormDialog, |
| | | defineOperationBtns, |
| | | } from '@bole-core/components'; |
| | | import * as userRoleServices from '@/services/api/UserRole'; |
| | | import * as accountServices from '@/services/api/Account'; |
| | | import { Message, OrderInputType } from '@bole-core/core'; |
| | | import AddOrEditExternalAccountDialog from './components/AddOrEditExternalAccountDialog.vue'; |
| | | import ResetPasswordDialog from './components/ResetPasswordDialog.vue'; |
| | | import { useAccess } from '@/hooks'; |
| | | import { ExternalSystem, ExternalSystemText } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'ExternalAccountManage', |
| | | }); |
| | | |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | editBtn: { emits: { onClick: (role) => openDialog(role) } }, |
| | | resetPasswordBtn: { emits: { onClick: (role) => openResetPasswordDialog(role) } }, |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | | }; |
| | | |
| | | const state = reactive({ ...BaseState }); |
| | | |
| | | onMounted(async () => { |
| | | await getList(); |
| | | state.loading = false; |
| | | }); |
| | | |
| | | const { |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetBackClientUsersInput = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | queryCondition: extraParamState.queryCondition, |
| | | }; |
| | | let res = await userRoleServices.getGovermentSubAccounts(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | | } catch (error) {} |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | orderInput: [{ property: 'id', order: OrderInputType.Desc }], |
| | | queryCondition: '', |
| | | }, |
| | | columnsRenderProps: { |
| | | clientId: { type: 'enum', valueEnum: ExternalSystemText }, |
| | | }, |
| | | } |
| | | ); |
| | | |
| | | function openDialog(row?: API.UserDto) { |
| | | if (row) { |
| | | handleEdit({ |
| | | id: row.id, |
| | | userName: row.userName, |
| | | name: row.name, |
| | | phoneNumber: row.phoneNumber, |
| | | password: '', |
| | | clientId: row.clientId, |
| | | industrialParkIds: row.industrialParkIds?.length > 0 ? row.industrialParkIds : [], |
| | | remark: row.remark, |
| | | |
| | | isSendMessage: row.isSendMessage, |
| | | sendClaimMessage: row.sendClaimMessage, |
| | | sendBillExpireMessage: row.sendBillExpireMessage, |
| | | staffChangeMessage: row.staffChangeMessage, |
| | | batchUpdateMessage: row.batchUpdateMessage, |
| | | |
| | | roleNames: row.roles.map((x) => x.name), |
| | | }); |
| | | } else { |
| | | handleAdd(); |
| | | } |
| | | } |
| | | |
| | | const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({ |
| | | onConfirm: handleAddOrEdit, |
| | | defaultFormParams: { |
| | | id: '', |
| | | userName: '', |
| | | name: '', |
| | | phoneNumber: '', |
| | | clientId: '', |
| | | industrialParkIds: [] as string[], |
| | | password: '', |
| | | remark: '', |
| | | |
| | | isSendMessage: false, |
| | | sendClaimMessage: false, |
| | | sendBillExpireMessage: false, |
| | | staffChangeMessage: false, |
| | | batchUpdateMessage: false, |
| | | |
| | | roleNames: [] as string[], |
| | | }, |
| | | }); |
| | | |
| | | async function handleAddOrEdit() { |
| | | try { |
| | | let isEdit = !!editForm.id; |
| | | let params: API.CreateGovermentSubAccounts = { |
| | | name: editForm.name, |
| | | userName: editForm.userName, |
| | | remark: editForm.remark, |
| | | phoneNumber: editForm.phoneNumber, |
| | | clientId: ExternalSystem.Goverend, |
| | | industrialParkIds: editForm.industrialParkIds, |
| | | roleNames: editForm.roleNames, |
| | | sendClaimMessage: editForm.sendClaimMessage, |
| | | sendBillExpireMessage: editForm.sendBillExpireMessage, |
| | | isSendMessage: editForm.isSendMessage, |
| | | staffChangeMessage: editForm.staffChangeMessage, |
| | | batchUpdateMessage: editForm.batchUpdateMessage, |
| | | }; |
| | | let res; |
| | | if (isEdit) { |
| | | (params as API.UpdateGovermentClientUserInput).id = editForm.id; |
| | | res = await userRoleServices.updateGovermentSubAccounts(params); |
| | | } else { |
| | | (params as API.CreateGoverUserInput).password = editForm.password; |
| | | res = await userRoleServices.createGovermentSubAccounts(params); |
| | | } |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(isEdit ? paginationState.pageIndex : 1); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | const { |
| | | dialogProps: resetPasswordDialogProps, |
| | | handleAdd: handleResetPasswordAdd, |
| | | editForm: resetPasswordEditForm, |
| | | } = useFormDialog({ |
| | | onConfirm: resetPassword, |
| | | defaultFormParams: { |
| | | userId: '', |
| | | password: '', |
| | | }, |
| | | }); |
| | | |
| | | function openResetPasswordDialog(row: API.UserDto) { |
| | | handleResetPasswordAdd({ |
| | | userId: row.id, |
| | | password: '', |
| | | }); |
| | | } |
| | | |
| | | async function resetPassword() { |
| | | try { |
| | | let params: API.ResetPasswordBaseInput = { |
| | | userId: resetPasswordEditForm.userId, |
| | | password: resetPasswordEditForm.password, |
| | | }; |
| | | let res = await accountServices.resetPassword(params); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(paginationState.pageIndex); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | <template #columns="{ row, column }"> |
| | | <template v-if="column.property === 'departmentId'"> |
| | | {{ DepartmentTypeText[row[column.property]] }} |
| | | </template> |
| | | <template v-else-if="column.property === 'dataRange'"> |
| | | {{ DataRangeEnumText[row[column.property]] }} |
| | | </template> |
| | | <!-- <template v-else-if="column.property === 'isEnable'"> |
| | | <FieldSwitch |
| | | active-text="启用" |
| | | inactive-text="禁用" |
| | | v-model="row.isEnable" |
| | | :before-change="() => roleEnableOrForbid(row)" |
| | | /> |
| | | </template> --> |
| | | </template> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <AddOrEditRoleDialog v-bind="dialogProps" /> |
| | | <DialogAuthorize v-model:authorizeId="rowState.authorizeId" authorizeType="Role" /> |
| | | <!-- <DialogMember v-model:visibleId="rowState.setMemberRoleId" /> --> |
| | | <DialogAuthorize |
| | | v-model:authorizeId="rowState.authorizeId" |
| | | authorizeType="Role" |
| | | :menuScene="AppLocalConfig.menuScene" |
| | | /> |
| | | <DialogMember v-model:visibleId="rowState.setMemberRoleId" /> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | QueryFilterItem, |
| | | useTable, |
| | | useFormDialog, |
| | | FieldRadio, |
| | | } from '@bole-core/components'; |
| | | import { useAccess, useAllRoleList } from '@/hooks'; |
| | | import * as userServices from '@/services/api/User'; |
| | | import { useAccess } from '@/hooks'; |
| | | import * as userRoleServices from '@/services/api/UserRole'; |
| | | import { Message, OrderInputType } from '@bole-core/core'; |
| | | import AddOrEditRoleDialog from './components/AddOrEditRoleDialog.vue'; |
| | | import { DataRangeEnum, DataRangeEnumText } from '@/constants'; |
| | | import DialogAuthorize from './components/dialogAuthorize.vue'; |
| | | import DialogMember from './components/dialogMember.vue'; |
| | | import { |
| | | DepartmentType, |
| | | DepartmentTypeText, |
| | | DataRangeEnum, |
| | | DataRangeEnumText, |
| | | EnumMenuSceneText, |
| | | EnumMenuScene, |
| | | AppLocalConfig, |
| | | } from '@/constants'; |
| | | import { formatRoleName } from '@/utils'; |
| | | |
| | | defineOptions({ |
| | |
| | | editBtn: { emits: { onClick: (role) => openDialog(role) } }, |
| | | delBtn: { emits: { onClick: (role) => handleDeleteRole(role) }, props: { type: 'danger' } }, |
| | | authorize: { emits: { onClick: (role) => openAuthorizeDialog(role) } }, |
| | | // member: { emits: { onClick: (role) => openMemberDialog(role) } }, |
| | | disabledBtn: { |
| | | emits: { onClick: (role) => roleEnableOrForbid(role) }, |
| | | extraProps: { |
| | | hide: (row) => row.isEnable, |
| | | }, |
| | | }, |
| | | member: { emits: { onClick: (role) => openMemberDialog(role) } }, |
| | | enableBtn: { |
| | | emits: { onClick: (role) => roleEnableOrForbid(role) }, |
| | | extraProps: { |
| | | hide: (row) => !row.isEnable, |
| | | hide: (row: API.RoleInfo) => row.isEnable, |
| | | }, |
| | | }, |
| | | disabledBtn: { |
| | | emits: { onClick: (role) => roleEnableOrForbid(role) }, |
| | | extraProps: { |
| | | hide: (row: API.RoleInfo) => !row.isEnable, |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const { refetch } = useAllRoleList(); |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | |
| | | orderInput: [{ property: 'sequence', order: OrderInputType.Asc }], |
| | | }, |
| | | queryCondition: extraParamState.queryCondition, |
| | | menuScene: AppLocalConfig.menuScene, |
| | | }; |
| | | let res = await userServices.getRoles(params, { |
| | | let res = await userRoleServices.getRoles(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return { |
| | |
| | | id: row.id, |
| | | name: formatRoleName(row.name), |
| | | remark: row.remark, |
| | | // departmentId: row.departmentId, |
| | | dataRange: row.dataRange, |
| | | }); |
| | | } else { |
| | |
| | | id: '', |
| | | name: '', |
| | | remark: '', |
| | | // departmentId: DepartmentType.Market, |
| | | dataRange: DataRangeEnum.All, |
| | | }, |
| | | }); |
| | |
| | | async function handleAddOrEdit() { |
| | | try { |
| | | const isEdit = editForm.id; |
| | | let params: API.CreateOrUpdateRoleInput = { |
| | | let params: API.CreateBaseRoleInput = { |
| | | name: editForm.name, |
| | | remark: editForm.remark, |
| | | // departmentId: editForm.departmentId, |
| | | dataRange: editForm.dataRange, |
| | | menuScene: AppLocalConfig.menuScene, |
| | | }; |
| | | let res; |
| | | if (isEdit) { |
| | | params.id = editForm.id; |
| | | res = await userServices.updateRole(params); |
| | | (params as API.CreateOrUpdateRoleInput).id = editForm.id; |
| | | res = await userRoleServices.updateRole(params); |
| | | } else { |
| | | res = await userServices.createRole(params); |
| | | res = await userRoleServices.createRole(params); |
| | | } |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(isEdit ? paginationState.pageIndex : 1); |
| | | refetch({ type: 'inactive' }); |
| | | dialogState.dialogVisible = false; |
| | | } |
| | | } catch (error) {} |
| | | } |
| | |
| | | let params = { |
| | | id: row.id, |
| | | }; |
| | | let res = await userServices.deleteRole(params); |
| | | let res = await userRoleServices.deleteRole(params); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(paginationState.pageIndex); |
| | | refetch({ type: 'inactive' }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function roleEnableOrForbid(row: API.RoleInfo) { |
| | | try { |
| | | await Message.tipMessage(`是否${!row.isEnable ? '启用' : '禁用'}角色`); |
| | | let res = await userServices.roleEnableOrForbid({ |
| | | await Message.tipMessage(`是否${!row.isEnable ? '启用' : '禁用'}用户`); |
| | | let res = await userRoleServices.roleEnableOrForbid({ |
| | | id: row.id, |
| | | isEnable: !row.isEnable, |
| | | }); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(paginationState.pageIndex); |
| | | refetch({ type: 'inactive' }); |
| | | return !!res; |
| | | } |
| | | } catch (error) {} |
| | |
| | | rowState.authorizeId = row.id; |
| | | } |
| | | |
| | | // function openMemberDialog(row: API.IdentityRoleDto) { |
| | | // rowState.setMemberRoleId = row.id; |
| | | // } |
| | | function openMemberDialog(row: API.IdentityRoleDto) { |
| | | rowState.setMemberRoleId = row.id; |
| | | } |
| | | </script> |
| New file |
| | |
| | | <template> |
| | | <ProDialog |
| | | :title="form.title" |
| | | v-model="visible" |
| | | @close="onDialogClose" |
| | | destroy-on-close |
| | | draggable |
| | | :width="800" |
| | | > |
| | | <ProForm :model="form" ref="dialogForm" label-width="120px"> |
| | | <ProFormItemV2 |
| | | label="账号:" |
| | | prop="userName" |
| | | :check-rules="[ |
| | | { message: '请输入账号' }, |
| | | { message: '账号仅支持字母和数字', pattern: MyRegExp.PasswordRegexOnlyLetterNumber }, |
| | | ]" |
| | | > |
| | | <ProFormText |
| | | placeholder="请输入账号" |
| | | v-model.trim="form.userName" |
| | | :maxlength="30" |
| | | ></ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 label="姓名:" prop="name" :check-rules="[{ message: '请输入姓名' }]"> |
| | | <ProFormText |
| | | placeholder="请输入姓名" |
| | | v-model.trim="form.name" |
| | | :maxlength="30" |
| | | ></ProFormText> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="手机号:" |
| | | prop="phoneNumber" |
| | | :check-rules="[{ message: '请输入手机号', type: 'phone' }]" |
| | | > |
| | | <ProFormText placeholder="请输入手机号" v-model.trim="form.phoneNumber"></ProFormText> |
| | | </ProFormItemV2> |
| | | <!-- <ProFormItemV2 |
| | | label="外部系统:" |
| | | prop="clientId" |
| | | :check-rules="[{ message: '请选择外部系统' }]" |
| | | > |
| | | <ProFormSelect |
| | | placeholder="请选择外部系统" |
| | | v-model="form.clientId" |
| | | :value-enum="ExternalSystemText" |
| | | ></ProFormSelect> |
| | | </ProFormItemV2> --> |
| | | |
| | | <ProFormItemV2 |
| | | v-if="!isEdit" |
| | | label="密码:" |
| | | prop="password" |
| | | :check-rules="[{ message: '请输入密码', required: !form.id }]" |
| | | > |
| | | <ProFormText |
| | | placeholder="请输入密码" |
| | | v-model.trim="form.password" |
| | | :maxlength="30" |
| | | ></ProFormText> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 label="角色" prop="roleNames" :check-rules="[{ message: '请选择角色' }]"> |
| | | <ProFormCheckbox |
| | | v-model="form.roleNames" |
| | | :value-enum="enableRoleList" |
| | | enumLabelKey="name" |
| | | enum-value-key="realName" |
| | | ></ProFormCheckbox> |
| | | </ProFormItemV2> |
| | | |
| | | <ProFormItemV2 |
| | | v-if="form.clientId !== ExternalSystem.flexjob" |
| | | label="负责园区:" |
| | | prop="industrialParkIds" |
| | | :check-rules="[{ message: '请选择负责园区' }]" |
| | | > |
| | | <ProFormSelect |
| | | placeholder="请选择负责园区" |
| | | v-model="form.industrialParkIds" |
| | | :value-enum="industrialParkList" |
| | | enum-label-key="parkName" |
| | | enum-value-key="id" |
| | | multiple |
| | | ></ProFormSelect> |
| | | </ProFormItemV2> |
| | | <template v-if="form.clientId === ExternalSystem.JYB"> |
| | | <ProFormItemV2 label="短信提醒:" prop="isSendMessage"> |
| | | <ProFormRadio v-model="form.isSendMessage" :value-enum="BooleanOptions" /> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="提醒内容:" |
| | | prop="remind" |
| | | :check-rules="[ |
| | | { |
| | | required: form.isSendMessage, |
| | | message: '请选择提醒内容', |
| | | validator: (rule, value, callback) => { |
| | | if (form.isSendMessage && !form.sendClaimMessage && !form.sendBillExpireMessage) { |
| | | callback(new Error('请选择提醒内容')); |
| | | } |
| | | callback(); |
| | | }, |
| | | }, |
| | | ]" |
| | | > |
| | | <el-checkbox v-model="form.sendClaimMessage" label="理赔提醒" size="large" /> |
| | | <el-checkbox v-model="form.sendBillExpireMessage" label="保单到期提醒" size="large" /> |
| | | <el-checkbox v-model="form.staffChangeMessage" label="人员变更提醒" size="large" /> |
| | | <el-checkbox v-model="form.batchUpdateMessage" label="批改提醒" size="large" /> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <ProFormItemV2 label="备注:" prop="remark"> |
| | | <ProFormTextArea |
| | | v-model="form.remark" |
| | | placeholder="请输入备注" |
| | | :maxlength="2000" |
| | | ></ProFormTextArea> |
| | | </ProFormItemV2> |
| | | </ProForm> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="emit('onCancel')">取 消</el-button> |
| | | <el-button type="primary" @click="handleConfirm">确 定</el-button> |
| | | </span> |
| | | </template> |
| | | </ProDialog> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormInstance } from 'element-plus'; |
| | | import { |
| | | ProDialog, |
| | | ProForm, |
| | | ProFormItemV2, |
| | | ProFormText, |
| | | ProFormTextArea, |
| | | ProFormSelect, |
| | | ProFormRadio, |
| | | ProFormCheckbox, |
| | | } from '@bole-core/components'; |
| | | import { |
| | | ExternalSystemText, |
| | | BooleanOptions, |
| | | ExternalSystem, |
| | | MyRegExp, |
| | | EnumMenuScene, |
| | | } from '@/constants'; |
| | | import { useAllRoleList, useIndustrialParkDropDownList } from '@/hooks'; |
| | | import { BoleRegExp } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'AddOrEditExternalAccountDialog', |
| | | }); |
| | | |
| | | // type Props = {}; |
| | | |
| | | // const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const visible = defineModel({ type: Boolean }); |
| | | const { industrialParkList } = useIndustrialParkDropDownList(); |
| | | |
| | | type Form = { |
| | | title?: string; |
| | | id: string; |
| | | userName: string; |
| | | name: string; |
| | | phoneNumber: string; |
| | | clientId: string; |
| | | industrialParkIds: string[]; |
| | | password: string; |
| | | remark: string; |
| | | |
| | | isSendMessage?: boolean; |
| | | sendClaimMessage?: boolean; |
| | | sendBillExpireMessage?: boolean; |
| | | staffChangeMessage?: boolean; |
| | | batchUpdateMessage?: boolean; |
| | | roleNames: string[]; |
| | | }; |
| | | |
| | | const { enableRoleList } = useAllRoleList({ menuScene: EnumMenuScene.Goverment }); |
| | | |
| | | const form = defineModel<Form>('form'); |
| | | const isEdit = computed(() => !!form.value?.id); |
| | | const emit = defineEmits<{ |
| | | (e: 'onConfirm'): void; |
| | | (e: 'onCancel'): void; |
| | | }>(); |
| | | |
| | | const dialogForm = ref<FormInstance>(); |
| | | |
| | | function onDialogClose() { |
| | | if (!dialogForm.value) return; |
| | | dialogForm.value.resetFields(); |
| | | } |
| | | |
| | | function handleConfirm() { |
| | | if (!dialogForm.value) return; |
| | | dialogForm.value.validate((valid) => { |
| | | if (valid) { |
| | | emit('onConfirm'); |
| | | } else { |
| | | return; |
| | | } |
| | | }); |
| | | } |
| | | </script> |
| New file |
| | |
| | | <template> |
| | | <ProDialog |
| | | :title="form.title" |
| | | v-model="visible" |
| | | @close="onDialogClose" |
| | | destroy-on-close |
| | | draggable |
| | | :width="800" |
| | | > |
| | | <ProForm :model="form" ref="dialogForm" label-width="120px"> |
| | | <ProFormItemV2 label="密码:" prop="password" :check-rules="[{ message: '请输入密码' }]"> |
| | | <ProFormText |
| | | placeholder="请输入密码" |
| | | v-model.trim="form.password" |
| | | :maxlength="30" |
| | | ></ProFormText> |
| | | </ProFormItemV2> |
| | | </ProForm> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="emit('onCancel')">取 消</el-button> |
| | | <el-button type="primary" @click="handleConfirm">确 定</el-button> |
| | | </span> |
| | | </template> |
| | | </ProDialog> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormInstance } from 'element-plus'; |
| | | import { ProDialog, ProForm, ProFormItemV2, ProFormText } from '@bole-core/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'ResetPasswordDialog', |
| | | }); |
| | | |
| | | // type Props = {}; |
| | | |
| | | // const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const visible = defineModel({ type: Boolean }); |
| | | |
| | | type Form = { |
| | | title?: string; |
| | | userId: string; |
| | | password: string; |
| | | }; |
| | | |
| | | const form = defineModel<Form>('form'); |
| | | const emit = defineEmits<{ |
| | | (e: 'onConfirm'): void; |
| | | (e: 'onCancel'): void; |
| | | }>(); |
| | | |
| | | const dialogForm = ref<FormInstance>(); |
| | | |
| | | function onDialogClose() { |
| | | if (!dialogForm.value) return; |
| | | dialogForm.value.resetFields(); |
| | | } |
| | | |
| | | function handleConfirm() { |
| | | if (!dialogForm.value) return; |
| | | dialogForm.value.validate((valid) => { |
| | | if (valid) { |
| | | emit('onConfirm'); |
| | | } else { |
| | | return; |
| | | } |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | <script setup lang="ts"> |
| | | import { computed, reactive, watch } from 'vue'; |
| | | import * as baseModuleServices from '@/services/api/BaseModule'; |
| | | import * as baseModuleNewServices from '@/services/api/BaseModuleNew'; |
| | | import { Message } from '@bole-core/core'; |
| | | import { AuthorizeType, SubModuleType, SubModuleTitle } from '@/constants'; |
| | | import { |
| | | AuthorizeType, |
| | | SubModuleType, |
| | | SubModuleTitle, |
| | | EnumMenuSceneText, |
| | | EnumMenuScene, |
| | | } from '@/constants'; |
| | | import { getTree } from '@/utils'; |
| | | import { templateRef } from '@vueuse/core'; |
| | | import { PropType } from 'vue'; |
| | | |
| | | const TypeTip = defineComponent({ |
| | | name: 'TypeTip', |
| | |
| | | render() { |
| | | const { typeTip, isMenu } = this; |
| | | const tipText = isMenu ? `菜单` : '页面'; |
| | | console.log(typeTip); |
| | | return h( |
| | | 'span', |
| | | { |
| | |
| | | authorizeType: { |
| | | type: String, |
| | | default: 'Role', |
| | | }, |
| | | menuScene: { |
| | | type: Number as PropType<EnumMenuScene>, |
| | | default: EnumMenuScene.Back, |
| | | }, |
| | | }); |
| | | const emit = defineEmits<{ |
| | |
| | | async function getModulesByUserOrRoleId(id) { |
| | | const { authorizeType } = props; |
| | | |
| | | const data = { |
| | | const data: API.APIgetUserOrRoleModuleListParams = { |
| | | objectType: AuthorizeType[authorizeType], |
| | | id, |
| | | menuScene: props.menuScene, |
| | | }; |
| | | |
| | | const result = await baseModuleServices.getUserOrRoleModuleList(data); |
| | | const result = await baseModuleNewServices.getUserOrRoleModuleList(data); |
| | | |
| | | state.sysModules = getTree(result, null); |
| | | elModuleTree.value.setCheckedKeys(result.filter((x) => x.hasCheck).map((x) => x.id)); |
| New file |
| | |
| | | <template> |
| | | <el-dialog :modelValue="visibleId != ''" width="1080px" title="成员管理" @close="handleClose"> |
| | | <div class="setting-wrapper"> |
| | | <div class="setting-wrapper-left"> |
| | | <section class="table-wrapper"> |
| | | <el-table :data="state.originAccountList" size="mini" stripe :max-height="400"> |
| | | <el-table-column type="index" label="序号" width="100"> </el-table-column> |
| | | <el-table-column prop="userName" label="登录账号"> </el-table-column> |
| | | <el-table-column prop="name" label="姓名"> </el-table-column> |
| | | <el-table-column label="" width="60"> |
| | | <template #default="scope"> |
| | | <el-button |
| | | :icon="!scope.row.isCheck ? 'plus' : 'delete'" |
| | | class="fa" |
| | | link |
| | | type="primary" |
| | | @click="handleAddOrNot(scope.row.id)" |
| | | ></el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <div v-if="state.pagination.total !== 0" class="pagination-wrapper"> |
| | | <el-pagination |
| | | layout=" prev, pager, next, jumper" |
| | | :page-sizes="[20, 50, 100, 200, 400, 500]" |
| | | :current-page="state.pagination.page" |
| | | :page-size="50" |
| | | :total="state.pagination.total" |
| | | @current-change="getAccountList" |
| | | @size-change="handleSizeChange" |
| | | > |
| | | </el-pagination> |
| | | </div> |
| | | </section> |
| | | </div> |
| | | <div class="setting-wrapper-right"> |
| | | <el-scrollbar> |
| | | <el-table :data="state.checkedList" size="mini" stripe> |
| | | <el-table-column type="index" label="序号" width="55"> </el-table-column> |
| | | <el-table-column prop="userName" label="登录账号"> </el-table-column> |
| | | <el-table-column prop="name" label="姓名"> </el-table-column> |
| | | <el-table-column label="" width="60"> |
| | | <template #default="scope"> |
| | | <el-button icon="delete" link type="primary" @click="handleAddOrNot(scope.row.id)"> |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="handleClose"> 取消 </el-button> |
| | | <el-button type="primary" @click="changeRoleAccount" class="btn-submit"> 保存 </el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import * as identityUserServices from '@/services/api/IdentityUser'; |
| | | import * as userRoleServices from '@/services/api/UserRole'; |
| | | |
| | | import { Message } from '@bole-core/core'; |
| | | |
| | | const props = defineProps({ |
| | | visibleId: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | }); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'update:visibleId', params: string): void; |
| | | }>(); |
| | | |
| | | watch( |
| | | () => props.visibleId, |
| | | async (newValue) => { |
| | | if (newValue) { |
| | | const result = await identityUserServices.getRoleUserList({ |
| | | id: newValue, |
| | | pageModel: { rows: 100, page: 1 }, |
| | | }); |
| | | |
| | | const { data } = result; |
| | | const list = data.map((item) => { |
| | | return { |
| | | id: item.id, |
| | | userName: item.userName, |
| | | name: item.name, |
| | | }; |
| | | }); |
| | | state.checkedList = list; |
| | | getAccountList(); |
| | | } |
| | | } |
| | | ); |
| | | |
| | | const state = reactive({ |
| | | checkedList: [], |
| | | originAccountList: [], |
| | | pagination: { |
| | | rows: 20, |
| | | page: 1, |
| | | orderInput: [{ property: 'Id', order: 'asc' }], |
| | | total: -1, |
| | | }, |
| | | }); |
| | | |
| | | function handleClose() { |
| | | emit('update:visibleId', ''); |
| | | } |
| | | |
| | | function handleAddOrNot(id) { |
| | | const hitIndex = state.checkedList.findIndex((x) => x.id === id); |
| | | |
| | | const isExistOrigin = state.originAccountList.findIndex((x) => x.id === id); |
| | | |
| | | // 已选 |
| | | if (hitIndex !== -1) { |
| | | //如果 当前account 只有一个role且是当前的roleId visibleId的话就不能删除 |
| | | if (isExistOrigin !== -1) { |
| | | const roles = state.originAccountList[isExistOrigin].roles; |
| | | const roleIndex = roles.findIndex((role) => role.id === props.visibleId); |
| | | if (roles.length === 1 && roleIndex !== -1) { |
| | | Message.warnMessage('账号有且只有该角色,不能删除'); |
| | | return; |
| | | } |
| | | } |
| | | state.checkedList.splice(hitIndex, 1); |
| | | } |
| | | |
| | | //未选 |
| | | if (isExistOrigin !== -1) { |
| | | state.originAccountList[isExistOrigin]['isCheck'] = hitIndex === -1; |
| | | |
| | | if (hitIndex === -1) { |
| | | const current = state.originAccountList[isExistOrigin]; |
| | | state.checkedList.push({ |
| | | id: current.id, |
| | | userName: current.userName, |
| | | name: current.name, |
| | | phone: current.phone, |
| | | isCheck: true, |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | async function getAccountList(pageIndex = 1) { |
| | | try { |
| | | state.pagination.page = pageIndex; |
| | | |
| | | let params = { |
| | | pageModel: { rows: 100, page: 1 }, |
| | | }; |
| | | |
| | | const result = await userRoleServices.getBackClientUsers(params); |
| | | |
| | | const { data, pageModel } = result; |
| | | |
| | | const { checkedList } = state; |
| | | data.forEach((x) => { |
| | | const isExistIndex = checkedList.findIndex((item) => x.id === item.id); |
| | | if (isExistIndex !== -1) { |
| | | //@ts-ignore |
| | | x.isCheck = true; |
| | | } |
| | | }); |
| | | |
| | | state.originAccountList = data; |
| | | state.pagination.total = pageModel.totalCount; |
| | | } catch (error) { |
| | | console.log(error); |
| | | } |
| | | } |
| | | |
| | | function handleSizeChange(val) { |
| | | state.pagination.rows = val; |
| | | getAccountList(); |
| | | } |
| | | |
| | | async function changeRoleAccount() { |
| | | try { |
| | | const params = { |
| | | userId: state.checkedList.map((x) => x.id), |
| | | roleId: props.visibleId, |
| | | }; |
| | | await identityUserServices.setRoleUser(params); |
| | | Message.successMessage('设置成功!'); |
| | | handleClose(); |
| | | } catch (error) { |
| | | Message.errorMessage(error.message || '设置失败!'); |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @use '@/style/common.scss' as *; |
| | | |
| | | .setting-wrapper { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | // position: relative; |
| | | width: 100%; |
| | | height: 440px; |
| | | border-bottom: 1px solid #e8e8e8; |
| | | background-color: #f5f5f5; |
| | | |
| | | &-left { |
| | | position: relative; |
| | | display: flex; |
| | | width: 55%; |
| | | background-color: #ffffff; |
| | | box-shadow: 0px 2px 5px 0px rgba(112, 114, 117, 0.3); |
| | | |
| | | .el-scrollbar { |
| | | height: 360px; |
| | | |
| | | .el-scrollbar__bar.is-vertical { |
| | | padding-bottom: 18px; |
| | | } |
| | | } |
| | | |
| | | .table-wrapper { |
| | | display: flex; |
| | | width: 100%; |
| | | flex-direction: column; |
| | | |
| | | .pagination-wrapper { |
| | | display: flex; |
| | | justify-content: center; |
| | | margin: 6px 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | &-right { |
| | | // width: 40%; |
| | | margin-left: 12px; |
| | | background-color: #ffffff; |
| | | box-shadow: 0px 2px 5px 0px rgba(112, 114, 117, 0.3); |
| | | flex: 1; |
| | | |
| | | ul.selected-wrapper { |
| | | li { |
| | | position: relative; |
| | | padding-left: 30px; |
| | | width: 100%; |
| | | height: 47px; |
| | | font-size: 14px; |
| | | border-bottom: 1px solid #efefef; |
| | | color: #999999; |
| | | transition: all 0.45s ease; |
| | | line-height: 47px; |
| | | |
| | | &:hover { |
| | | color: #ffffff; |
| | | background-color: boleGetCssVar('color', 'primary'); |
| | | |
| | | .el-icon-delete { |
| | | position: absolute; |
| | | display: inline-block; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .btn-wrapper { |
| | | justify-content: center; |
| | | padding: 4% 40px 4%; |
| | | } |
| | | |
| | | :deep(.el-scrollbar) { |
| | | height: 100%; |
| | | |
| | | .el-scrollbar__wrap { |
| | | overflow-x: hidden; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="FinancialApprovalColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | <RewardApplyTradeCheckDialog v-bind="dialogProps"></RewardApplyTradeCheckDialog> |
| | | </AppContainer> |
| | |
| | | import { ModelValueType } from 'element-plus'; |
| | | import RewardApplyTradeCheckDialog from './components/RewardApplyTradeCheckDialog.vue'; |
| | | import { convertApi2FormUrlObjectBySeparator, convertApi2FormUrlOnlyOne, format } from '@/utils'; |
| | | import { FinancialApprovalColumns } from './constants'; |
| | | import { useIndustrialParkDropDownList } from '@/hooks/industrialPark'; |
| | | import { useAccess } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'FinancialApproval', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role, true), |
| | | }, |
| | |
| | | row.financeAuditStatus === EnumParkBountyTradeDetailAuditStatus.Wait, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'checkBtn', |
| | | name: '审批', |
| | | }, |
| | | checkBtn: { |
| | | emits: { |
| | | onClick: (row) => openDialog(row), |
| | | }, |
| | |
| | | row.financeAuditStatus !== EnumParkBountyTradeDetailAuditStatus.Wait, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="RewardApplyTradeCheckColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | <RewardApplyTradeCheckDialog isApplyTrade v-bind="dialogProps"></RewardApplyTradeCheckDialog> |
| | | </AppContainer> |
| | |
| | | import { ModelValueType } from 'element-plus'; |
| | | import RewardApplyTradeCheckDialog from './components/RewardApplyTradeCheckDialog.vue'; |
| | | import { convertApi2FormUrlObjectBySeparator, convertApi2FormUrlOnlyOne, format } from '@/utils'; |
| | | import { RewardApplyTradeCheckColumns } from './constants'; |
| | | import { useIndustrialParkDropDownList } from '@/hooks/industrialPark'; |
| | | import { useAccess } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'RewardApplyTradeCheck', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role, true), |
| | | }, |
| | |
| | | row.auditStatus === EnumParkBountyTradeDetailAuditStatus.Wait, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'checkBtn', |
| | | name: '审批', |
| | | }, |
| | | checkBtn: { |
| | | emits: { |
| | | onClick: (row) => openDialog(row), |
| | | }, |
| | |
| | | row.auditStatus !== EnumParkBountyTradeDetailAuditStatus.Wait, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | |
| | | import { useQueryClient } from '@tanstack/vue-query'; |
| | | import { TransferFileEnumInRewardGrandTableItem } from '@/components/commonView/types'; |
| | | import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; |
| | | import { useAccess } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'RewardGrant', |
| | | }); |
| | | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'batchNo', |
| | | name: '申请批次号', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'parkName', |
| | | name: '申请园区', |
| | | width: 250, |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'parkTypeName', |
| | | name: '园区类型', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'applyMonth', |
| | | name: '申请平台奖励月份', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'applySumAmount', |
| | | name: '平台奖励汇总金额(元)', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'creationTime', |
| | | name: '申报日期', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'financeStatus', |
| | | name: '财政拨付登记状态', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'financeTime', |
| | | name: '财政拨付登记日期', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'settleStatus', |
| | | name: '平台拨付登记状态', |
| | | width: 160, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'settleTime', |
| | | name: '平台拨付登记日期', |
| | | width: 180, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'settleAndFinanceOperator', |
| | | name: '登记人', |
| | | }, |
| | | ]; |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '申报详情', |
| | | }, |
| | | emits: { |
| | | onClick: (role) => goDetail(role), |
| | | }, |
| | | }, |
| | | // { |
| | | // data: { |
| | | // enCode: 'financialBtn', |
| | | // name: '财政拨付', |
| | | // }, |
| | | // emits: { |
| | | // onClick: (role) => openFinancialDialog(role), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetParkBountyApplyListOutput) => |
| | | // row.financeStatus === FinanceStatusEnum.HasIncome, |
| | | // }, |
| | | // }, |
| | | // { |
| | | // data: { |
| | | // enCode: 'plateformBtn', |
| | | // name: '平台充值', |
| | | // }, |
| | | // emits: { |
| | | // onClick: (role) => openPlateformDialog(role), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetParkBountyApplyListOutput) => |
| | | // row.settleStatus !== SettleStatusEnum.WaitForSettle, |
| | | // }, |
| | | // }, |
| | | { |
| | | data: { |
| | | enCode: 'registerBtn', |
| | | name: '登记', |
| | | }, |
| | | emits: { |
| | | onClick: (role) => goRewardGrantRegister(role), |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { emits: { onClick: (role) => goDetail(role) } }, |
| | | registerBtn: { |
| | | emits: { onClick: (role) => goRewardGrantRegister(role) }, |
| | | extraProps: { |
| | | hide: (row: API.GetParkBountyApplyListOutput) => |
| | | !( |
| | |
| | | ), |
| | | }, |
| | | }, |
| | | // { |
| | | // data: { |
| | | // enCode: 'uploadCertBtn', |
| | | // name: '上传凭证', |
| | | // }, |
| | | // emits: { |
| | | // onClick: (role) => openCertRewardDialog(role), |
| | | // }, |
| | | // extraProps: { |
| | | // hide: (row: API.GetParkBountyApplyListOutput) => |
| | | // !( |
| | | // row.settleStatus === SettleStatusEnum.HasSettle || |
| | | // row.financeStatus === FinanceStatusEnum.HasIncome |
| | | // ), |
| | | // }, |
| | | // }, |
| | | { |
| | | data: { |
| | | enCode: 'checkBtn', |
| | | name: '查看凭证', |
| | | }, |
| | | checkBtn: { |
| | | emits: { |
| | | onClick: (row) => openMaterialFileDialog(row), |
| | | }, |
| | |
| | | ), |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const BaseState = { |
| | |
| | | import WithdrawalApprovalAuditDialog from './components/WithdrawalApprovalAuditDialog.vue'; |
| | | import _ from 'lodash'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import { useAccess } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'WithdrawalApproval', |
| | | }); |
| | | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'enterpriseName', |
| | | name: '企业名称', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'societyCreditCode', |
| | | name: '统一社会信用代码', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'enterpriseType', |
| | | name: '企业类型', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'parkName', |
| | | name: '所属园区', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'parkType', |
| | | name: '园区类型', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'creationTime', |
| | | name: '申请时间', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'amount', |
| | | name: '申请提现金额(元)', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'checkStatus', |
| | | name: '审核状态', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'checkOperator', |
| | | name: '审核人', |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'checkTime', |
| | | name: '审核时间', |
| | | }, |
| | | ]; |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role, true), |
| | | }, |
| | |
| | | row.checkStatus === EnterpriseRechargeStatusEnum.WaitCheck, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'auditBtn', |
| | | name: '审核', |
| | | }, |
| | | auditBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role), |
| | | }, |
| | |
| | | row.checkStatus !== EnterpriseRechargeStatusEnum.WaitCheck, |
| | | }, |
| | | }, |
| | | ]); |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const BaseState = { |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | <template #btn> |
| | | <el-button @click="handleExport()" icon="Download" type="primary">导出</el-button> |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'exportBtn')" |
| | | @click="handleExport()" |
| | | icon="Download" |
| | | type="primary" |
| | | >导出</el-button |
| | | > |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :show-operation-column="false"> |
| | |
| | | name: 'RewardStatistics', |
| | | }); |
| | | |
| | | const column = defineColumns([ |
| | | { |
| | | id: '1', |
| | | enCode: 'enterpriseName', |
| | | name: '企业名称', |
| | | width: 250, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'societyCreditCode', |
| | | name: '信用代码', |
| | | width: 200, |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'industrialParkName', |
| | | name: '所属园区', |
| | | width: 200, |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'contact', |
| | | name: '联系人', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'contactPhone', |
| | | name: '联系方式', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'month', |
| | | name: '申报月份', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'batchNo', |
| | | name: '申报批次号', |
| | | width: 150, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'sumFinanceAmount', |
| | | name: '财政拨付金额', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'sumFinanceAmountBtn', |
| | | name: '财政拨付明细', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '10', |
| | | enCode: 'sumTransferAmount', |
| | | name: '平台拨付金额', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '11', |
| | | enCode: 'sumTransferAmountBtn', |
| | | name: '平台拨付明细', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '12', |
| | | enCode: 'sumRechargeAmount', |
| | | name: '企业充值总额', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '13', |
| | | enCode: 'sumRechargeAmountBtn', |
| | | name: '企业充值明细', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '14', |
| | | enCode: 'sumTradeAmount', |
| | | name: '企业消费总额', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '15', |
| | | enCode: 'sumTradeAmountBtn', |
| | | name: '企业消费明细', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '16', |
| | | enCode: 'sumDrawWithAmount', |
| | | name: '企业提现总额', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '17', |
| | | enCode: 'sumDrawWithAmountBtn', |
| | | name: '企业提现明细', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '18', |
| | | enCode: 'amount', |
| | | name: '账户余额', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '19', |
| | | enCode: 'amountBtn', |
| | | name: '余额明细', |
| | | width: 120, |
| | | }, |
| | | ]); |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({}); |
| | | |
| | | const BaseState = { |
| | | loading: true, |