ylj20011123 31a0a71e48 update
2026-01-08 18:15:18 +08:00

1205 lines
48 KiB
TypeScript

import ProForm, { ProFormRadio, ProFormSelect, ProFormText, ProFormTreeSelect } from "@ant-design/pro-form"
import { FooterToolbar, PageContainer } from "@ant-design/pro-layout"
import useRequest from "@ahooksjs/use-request";
import { Card, Col, Form, Row, Tree, message, Switch, Button, TreeSelect, Radio, Drawer, Popconfirm } from "antd";
import { useEffect, useRef, useState } from "react";
import { history } from "umi";
import type { ProFormInstance } from "@ant-design/pro-form";
import type { CurrentUser } from '@/models/user';
import { getMerchantTree, getMerchantTreeNosessoin, getOnwer } from "@/services/options";
import { getUserDetail, getUserTypeTree, getServerpartTree, updataUser, modifyUserPassword, getMerchantShopTree, getWeiChatPush, handleGetServiceList, handleDeleteUSER, handleSynchroBEHAVIORRECORD } from "../service";
import { getRoleList, getSystemMenuTree, handleAnalysisPermission, handleSupplierList } from "../../Roles/service";
import session from "@/utils/session";
import moment from 'moment'
import BusinessManDrawer from "@/pages/basicManage/businessMan/components/businessManDrawer";
import { handeGetMERCHANTSList } from "@/pages/travelMember/service";
// 提交账号数据
const handleAddUpdate = async (item: any, type: boolean) => {
console.log('handleAddUpdate', item);
const loading = message.loading("正在提交...")
const result = await updataUser(item)
loading()
if (result.Result_Code !== 100) {
message.error(`${result.Result_Desc}` || `${result.Result_Code}:提交失败`)
return false
}
if (type) {
message.success(item.USER_ID ? "更新成功!" : "新建成功!")
}
return result.Result_Data.USER_ID
}
// 重置账号密码请求
const handelResetPassWord = async (item: { UserId: number, Password: string }) => {
const loading = message.loading("正在提交...")
const result = await modifyUserPassword(item)
loading()
if (result.Result_Code !== 100) {
message.error(`${result.Result_Desc}` || `${result.Result_Code}:账户密码重置失败`)
} else {
message.success("账户密码重置成功!")
}
}
/**
* @description: 主体编辑函数
* @param {function} reloadTable 是否已经更新数据
* @param {UserModel} detail 编辑账户数据时的数据对象
* @param {CurrentUser} user 当前用户的用户信息
* @return {ReactDOM} 返回页面节点
*/
const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, pageType, BUSINESSMAN_ID, onShow }: { onShow?: boolean, BUSINESSMAN_ID?: any, pageType?: string, selectTab?: any, tableTab?: any, openType?: string, detail?: UserModel, reloadTable: any, currentUser: CurrentUser | undefined }) => {
const detailForm = useRef<ProFormInstance>() // 表单对象
const [checkedRole, setCheckedRole] = useState<React.Key[]>(); // 当前选中的行 角色 id
const [checkedServerpart, setCheckedServerpart] = useState<React.Key[]>(); // 当前选中的行 服务区id
const [checkedShop, setCheckedShop] = useState<React.Key[]>(); // 当前选中的行 服务区门店id
const [initialDetail, setInitialDetail] = useState<any>(detail || {}); // 当前编辑页面的账户数据
const [copyData, setCopyData] = useState<any>()// 拷贝一份一开始接口返回的表单数据 与 最后提交可以进行对比
const [companyList, setCompanyList] = useState<any>()// 用户下面的公司列表
const [selectDetail, setSelectDetail] = useState<any>()// 选中的业主单位的省份
const [serviceList, setServiceList] = useState<any>()// 服务区列表
const [showServiceList, setShowServiceList] = useState<any>()// 展示要选择的服务区
// const selectType = useRef()
const [showWeChatFlag, setShowWeChatFlag] = useState<any>()// 微信推送权限是选择了false 还是 true
const [SPRegionList, setSPRegionList] = useState<any>()// 片区的数组
// type为1 的
const [serverPartType1, setServerPartType1] = useState<any>()
// 添加商户的抽屉
const [showAddDrawer, setShowAddDrawer] = useState<boolean>(false)
// const [supplierList,setSupplierList] = useState<any>()// 供应商列表
// 查询角色树
const [roleTree, setRoleTree] = useState<any>() // 角色树列表
// const { data: roleTree } = useRequest(async () => {
// if (currentUser?.UserPattern===9000){
// const req = {
// SystemRolePattern:currentUser?.UserPattern
// }
// return await getRoleList(req)
// }
// })
const handleRoleList = async (value: number) => {
if (currentUser?.UserPattern === 9000) {
const req = {
ShowStatus: true
}
const data = await getRoleList(req)
setRoleTree(data)
} else if (currentUser?.UserPattern === 1000 && value !== 3000) {
let req
if (currentUser?.SystemRolePID) {
req = {
SystemRolePID: currentUser?.SystemRolePID,
ShowStatus: true,
SystemRolePattern: value
}
} else {
req = {
ShowStatus: true,
SystemRolePattern: value
}
}
const data = await getRoleList(req)
setRoleTree(data)
} else if (currentUser?.UserPattern !== 3000) {
const req = {
ShowStatus: true,
SystemRolePattern: value
}
const data = await getRoleList(req)
console.log('reqreqreq', data);
setRoleTree(data)
}
}
// 查询可配置的服务区
const { data: serverpartTree } = useRequest(async () => {
const data = await getServerpartTree({ ProvinceCode: '530000' })
return data.map(n => n.children ? n : { ...n, children: [] })
})
// 查询可选商家
// const { run: getMerchantTree, data: merchantTree } = useRequest(async () => {
// return await getMerchantTree()
// })
// 查询可选商家
const { run: handleGetMerchantTree, data: merchantTree } = useRequest(async () => {
const data = await getMerchantTreeNosessoin()
return data
}, { manual: true })
const { data: supplierList } = useRequest(async () => {
const req = {
searchParameter: {
OWNERUNIT_ID: 911,
PROVINCE_CODE: 530000,
MERCHANTS_TYPE: ""
},
PageIndex: 1,
PageSize: 999999,
}
const data = await handeGetMERCHANTSList(req);
let list: any = []
if (data.List && data.List.length > 0) {
data.List.forEach((item: any) => {
list.push({ label: item.MERCHANTS_NAME, value: item.MERCHANTS_ID })
})
}
return list
})
// 根据角色id查询权限树
const { run: getRoleMenu, data: roleMenuTree } = useRequest(async (SystemRoleId?: number) => {
const data = await getSystemMenuTree(SystemRoleId ? `${SystemRoleId}` : '')
return data
}, { manual: true })
// 根据商家id查询门店列表
const { run: getShopTree, data: shopTree } = useRequest(async (businessManId?: number) => {
const data = await getMerchantShopTree({ BusinessManId: businessManId ? `${businessManId}` : detail?.BUSINESSMAN_ID })
return data
}, { manual: !detail?.BUSINESSMAN_ID })
const companyType = {
1000: "业主本部",
1010: "服务区",
1020: "区域",
2000: "商户"
}
const getServiceList = async (PROVINCEID: any, id: any) => {
const typeId = id || showServiceList
const req = {
ProvinceCode: PROVINCEID,
ServerpartType: typeId === 1020 ? 1010 : 1000,
ShowWholePower: true
}
const res = await handleGetServiceList(req)
// const service: any = []
// const SPRegion: any = []
// if (res.List && res.List.length>0){
// res.List.forEach((item: any)=>{
// SPRegion.push({label:item.label,value:item.value})
// service.push({label:item.label,value:item.value})
// // if (item.children && item.children.length>0){
// // item.children.forEach((subItem: any)=>{
// // service.push({label:subItem.label,value:subItem.value})
// // })
// // }
// })
// }
if (res.List && res.List.length > 0) {
const list = JSON.parse(JSON.stringify(res.List))
// for (let i=0;i<=list.length-1;i++){
// for (let j=0;j<=list.length - i - 1;j++){
// if (list[j] && list[j + 1] && list[j].value && list[j+1].value){
// if (list[j].value > list[j+1].value){
// const temp = list[j]
// list[j] = list[j + 1]
// list[j + 1] = temp
// }
// }
// }
// }
list.forEach((item: any) => {
if (item.type === 1) {
item.selectable = true
} else {
item.selectable = false
}
})
// setServiceList(list)
setSPRegionList(list)
}
}
// 商戶管理拿到角色权限
const handleRoleListShop = async () => {
const req = {
ShowStatus: true,
SystemRolePattern: 2000
}
const data = await getRoleList(req)
setRoleTree(data)
}
useEffect(() => {
// detailForm.current?.setFieldsValue({USER_PATTERN: Number(selectTab) })
console.log('selectTab', Number(selectTab))
if (pageType === 'merchantManagement') {
handleRoleListShop()
} else {
handleRoleList(Number(selectTab))
}
handleGetMerchantTree()
setInitialDetail({
...initialDetail,
USER_PATTERN: Number(selectTab)
})
}, [selectTab]);
// 删除角色
const handleDeleteUser = async () => {
console.log('initialDetail', initialDetail);
const req: any = {
USERId: initialDetail?.USER_ID
}
const data = await handleDeleteUSER(req)
if (data.Result_Code === 100) {
message.success(data.Result_Desc)
reloadTable(true, 'delete')
} else {
message.error(data.Result_Desc)
}
const baseInfo = session.get('basicInfo')
const browser = session.get('browserVersion')
const systemInfo = session.get('systemBasin')
handleGetSynchroBEHAVIORRECORD(1002)
}
const handleGetSynchroBEHAVIORRECORD = async (type: number) => {
const baseInfo = session.get('basicInfo')
const browser = session.get('browserVersion')
const systemInfo = session.get('systemBasin')
const req: any = {
USER_ID: initialDetail?.USER_ID,
USER_NAME: initialDetail?.USER_NAME,
USER_PASSPORT: initialDetail?.USER_PASSPORT,
USER_MOBILEPHONE: initialDetail?.USER_MOBILEPHONE,
BEHAVIORRECORD_TYPE: type,
BEHAVIORRECORD_EXPLAIN: type === 1001 ? '更新用户' : '删除用户',
BEHAVIORRECORD_TIME: moment().format('YYYY-MM-DD HH:mm:ss'),
BEHAVIORRECORD_ROUT: pageType ? '/setting/merchantManagement' : '/setting/users',
BEHAVIORRECORD_ROUTNAME: pageType ? '商户管理' : '账号管理',
SOURCE_PLATFORM: '驿商云平台',
USER_LOGINIP: baseInfo?.ip ? baseInfo?.ip : '',
USER_LOGINPLACE: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}${baseInfo?.prov && baseInfo?.city && baseInfo?.district ? '-' : ''}${baseInfo?.district ? baseInfo?.district : ''}`,
BROWSER_VERSION: browser || '',
OPERATING_SYSTEM: systemInfo || '',
}
handleSynchroBEHAVIORRECORD(req)
}
return (
<PageContainer header={{
title: '',
breadcrumb: {},
}}>
<ProForm
wrapperCol={{ span: 20 }}
labelCol={{ span: 20 }}
formRef={detailForm}
initialValues={initialDetail || {}}
request={async () => {
if (detail) {
const initDetail = await getUserDetail(detail.USER_ID, true)
// 格式转化
// let haveList = initDetail.ServerpartList ? initDetail.ServerpartList.map(Number) : [] // 业主账号有服务区 有权限的全部服务区
const haveList = initDetail.ServerpartList || [] // 业主账号有服务区 有权限的全部服务区
const firstType: any = []
const serverpartTree = await getServerpartTree()
if (serverpartTree && serverpartTree.length > 0) {
serverpartTree.forEach((item: any) => {
if (item.type === 1) {
firstType.push(item.value)
if (item.children && item.children.length > 0) {
item.children.forEach((subItem: any) => {
if (subItem.type === 1) {
firstType.push(subItem.value)
}
})
}
}
})
}
const serverpartList: any = []
if (haveList && haveList.length > 0) {
if (firstType && firstType.length > 0) {
haveList.forEach((item: any) => {
if (firstType.indexOf(Number(item)) === -1) {
serverpartList.push(Number(item))
}
})
}
}
const serverpartShopList = initDetail.ServerpartShopList ? initDetail.ServerpartShopList.map(Number) : [] // 商户账号有门店
const systemRoleList = initDetail.SystemRoleList ? initDetail.SystemRoleList.map(Number) : []
initDetail.USERTYPE_ID = initDetail.USERTYPE_ID || ''
setCheckedRole(initDetail.SystemRoleList)
setCheckedServerpart(serverpartList)
setCheckedShop(serverpartShopList)
if (tableTab === '1000') {
// getServiceList(initDetail.USER_PROVINCE, initDetail.PushList && initDetail.PushList.length > 0 && initDetail.PushList[0] ? initDetail.PushList[0].type : null)
getServiceList('530000', initDetail.PushList && initDetail.PushList.length > 0 && initDetail.PushList[0] ? initDetail.PushList[0].type : null)
}
const res = JSON.parse(JSON.stringify(initDetail))
// setSelectDetail(initDetail.USER_PROVINCE)
setSelectDetail('530000')
if (initDetail.PushList && initDetail.PushList.length > 0) {
if (initDetail.PushList[0].key) {
const keyList: any = []
const list = initDetail.PushList[0].key.split(',')
list.forEach((item: any) => {
keyList.push(item)
})
res.ServerpartIds = keyList
}
// res.ServerpartIds = initDetail.PushList[0].key?Number(initDetail.PushList[0].key):null
res.UserTypeIds = initDetail.PushList[0].type
setShowServiceList(initDetail.PushList[0].type)
setInitialDetail(res)
} else {
setInitialDetail(res)
}
setCompanyList(initDetail.PushList)
// setShowServiceList(initDetail.PushList[0].type)
setShowWeChatFlag(initDetail.PushPermission)
// 请求获取该账户绑定的角色拥有的模块权限
if (initDetail.SystemRoleList.length > 0) {
getRoleMenu(initDetail.SystemRoleList.toString())
}
setCopyData(res)
return { ...initDetail, ServerpartIds: res?.ServerpartIds || [], ServerpartList: serverpartList, SystemRoleList: systemRoleList, ServerpartShopList: serverpartShopList, USER_PROVINCE: 911 }
}
handleGetMerchantTree()
setSelectDetail('530000')
// , USER_PATTERN: currentUser?.UserPattern
setInitialDetail({ USER_STATUS: 1, USER_REPEATLOGON: 1, SUPER_ADMIN: 0 })
// , USER_PATTERN: currentUser?.UserPattern
setCopyData(JSON.parse(JSON.stringify({ USER_STATUS: 1, USER_REPEATLOGON: 1, SUPER_ADMIN: 0 })))
// , USER_PATTERN: currentUser?.UserPattern
if (pageType === 'merchantManagement') {
detailForm.current?.setFieldsValue({ USERTYPE_ID: '' })
setInitialDetail({ ...initialDetail, BUSINESSMAN_NAME: BUSINESSMAN_ID?.label, BUSINESSMAN_ID: Number(BUSINESSMAN_ID?.value) })
console.log('{ ...initialDetail, BUSINESSMAN_NAME: BUSINESSMAN_ID?.label }', { ...initialDetail, BUSINESSMAN_NAME: BUSINESSMAN_ID?.label || '' });
setCheckedServerpart([]) // 清空选择的服务区/门店
getShopTree(BUSINESSMAN_ID?.value)
}
console.log('没有');
return { USER_STATUS: 1, USER_REPEATLOGON: 1, SUPER_ADMIN: 0, USER_PROVINCE: 911 }
}}
onFinish={async (value) => {
let newValue: any = { ...value }
if (initialDetail) { // 编辑数据
newValue = { ...initialDetail, ...value }
}
newValue.USER_STATUS = newValue.USER_STATUS ? 1 : 0
newValue.USER_REPEATLOGON = newValue.USER_REPEATLOGON ? 1 : 0
newValue.SUPER_ADMIN = newValue.SUPER_ADMIN ? 1 : 0
newValue.USER_CITYAUTHORITY = checkedServerpart ? checkedServerpart.join(" ") : ''
newValue.ServerpartList = checkedServerpart && checkedServerpart.length > 0 ? checkedServerpart : []
newValue.ServerpartShopList = checkedShop || []
newValue.SystemRoleList = checkedRole && checkedRole.length > 0 ? checkedRole : []
newValue.OperateUser = currentUser?.Name
newValue.ServerpartIds = newValue.ServerpartIds && newValue.ServerpartIds.length > 0 ? newValue.ServerpartIds.toString() : ''
newValue.USER_PROVINCE = '530000'
// 拿到新修改的数据
const newData = detailForm.current?.getFieldsValue()
// 比较开始数据 如果和开始数据不一样 就调用接口
// 调用接口传入的是当前新的值
if (newData.AnalysisPermission !== copyData.AnalysisPermission) {
handleAnalysisPermission({
userId: copyData.USER_ID,
AuthorType: (selectDetail === 530000 && tableTab === '1000' ||
selectDetail === 530000 && copyData?.AnalysisPermission === true && tableTab === '1000' ||
selectDetail === 530000 && copyData?.AnalysisPermission === false && tableTab === '1000') && newData.AnalysisPermission,
OperateUser: currentUser?.Name
})
}
const success = await handleAddUpdate(newValue, false);
if (success) {
// 比较开始数据 如果和开始数据不一样 就调用接口
// 调用接口传入的是当前新的值
// 因为如果没权限的时候要把错误提示弹出来显示 所以要做判断
// 一个是没有微信授权 一个有微信授权的情况下
// 微信没有授权的时候 就不会调用更新数据的接口 只会报未绑定
// 微信有授权的时候就掉更新数据的接口
if (newData.PushPermission !== copyData.PushPermission ||
newData.UserTypeIds !== copyData.UserTypeIds ||
newData.ServerpartIds !== copyData.ServerpartIds) {
let serverpartId = ''
if (newData.ServerpartIds && newData.ServerpartIds.length > 0) {
newData.ServerpartIds.forEach((item: any) => {
if (serverpartId === '') {
serverpartId = item.split('-')[1].toString()
} else {
serverpartId += `,${item.split('-')[1].toString()}`
}
})
}
let req = {}
if (tableTab === '1000' || tableTab === '4000') {
req = {
userId: openType === 'add' ? success : copyData.USER_ID,
AuthorType: newData.PushPermission || false,
OperateUser: currentUser?.Name,
GroupType: newData.UserTypeIds || null,
ServerpartIds: serverpartId
}
} else if (tableTab === '2000') {
req = {
userId: openType === 'add' ? success : copyData.USER_ID,
AuthorType: newData.PushPermission || false,
OperateUser: currentUser?.Name,
}
}
// getWeiChatPush(req).then(async res => {
// if (res.Result_Code === 200) {
// message.error(res.Result_Desc)
// } else {
// message.success(newValue.USER_ID ? "更新成功!" : "新建成功!")
// }
// })
message.success(newValue.USER_ID ? "更新成功!" : "新建成功!")
} else {
message.success(newValue.USER_ID ? "更新成功!" : "新建成功!")
}
}
handleGetSynchroBEHAVIORRECORD(1001)
reloadTable(success)
}}
submitter={{
render: (_, dom) => (
<FooterToolbar
style={{
// left: 208,
width: "73%",
}}
>
{
initialDetail?.USER_ID ?
<Popconfirm title="确认删除?" onConfirm={() => {
handleDeleteUser()
}}>
<Button type="primary" danger></Button>
</Popconfirm> : ''
}
{detail?.USER_ID &&
<Button type="primary" danger onClick={() => {
handelResetPassWord({ UserId: initialDetail.USER_ID, Password: initialDetail.USER_PASSPORT })
}}></Button>
}
{dom[0]}
<Button type="primary" onClick={() => {
detailForm.current?.setFieldsValue({ UserTypeIds: showServiceList })
detailForm.current?.submit()
}}></Button>
</FooterToolbar>
),
}}
>
<Card bordered={false} bodyStyle={{ paddingBottom: 0 }}>
<Row>
{currentUser?.UserPattern === 9000 || currentUser?.UserPattern === 1000 ?
<Col span={6}>
<ProFormSelect
name="USER_PATTERN"
label="账号类型"
placeholder="请选择账号类型"
rules={[
{
required: true,
message: '请选择业主单位',
},
]}
initialValue={Number(selectTab) || null}
disabled={pageType === 'merchantManagement'}
options={
currentUser?.UserPattern === 9000 || pageType === 'merchantManagement' ? [
{ label: '业主', value: 1000 },
{ label: '供应商', value: 4000 },
{ label: '商户', value: 2000 },
{ label: '游客', value: 3000 },
{ label: '内部人员', value: 9000 }
] : [{ label: '业主', value: 1000 }, { label: '供应商', value: 4000 }]}
fieldProps={{
onChange: async (value: any) => {
if (value === 1000) {
setSelectDetail(null)
}
detailForm.current?.setFieldsValue({ USERTYPE_ID: '', USER_PROVINCE: '', ServerpartList: [], PROVINCE_UNIT: '' })
setInitialDetail({ ...initialDetail, USER_PATTERN: Number(value), PROVINCE_UNIT: '' })
setCheckedServerpart([]) // 清空选择的服务区/门店
handleRoleList(value)
}
}}
/>
</Col> : ''}
<Col span={6}>
<ProFormText
label="账号名称"
name="USER_PASSPORT"
placeholder="请输入账号名称"
disabled={!!detail?.USER_PASSPORT}
rules={[
{
required: true,
message: '请输入账号名称,',
}
]}
/>
</Col>
<Col span={6}>
<ProFormText
label="用户名称"
name="USER_NAME"
placeholder="请输入用户名称"
rules={[
{
required: true,
message: '请输入用户名称,',
}
]}
/>
</Col>
<Col span={6}>
<ProFormText
label="手机号码"
name="USER_MOBILEPHONE"
placeholder="请输入手机号码"
rules={[
{
required: true,
message: '请输入手机号码',
},
]}
/>
</Col>
<Col span={12}>
<ProFormSelect
name="USER_PROVINCE"
label="业主单位"
initialValue={pageType === 'merchantManagement' ? Number(currentUser?.ProvinceCode) : ''}
disabled={pageType === 'merchantManagement'}
rules={[
{
required: initialDetail.USER_PATTERN === 1000,
message: '请选择业主单位',
},
]}
request={async () => {
const options = await getOnwer({ DataType: 1, ProvinceCode: "530000" })
console.log('optionsoptionsoptionsoptions', options);
return options;
}}
fieldProps={{
showSearch: true,
placeholder: '请选择业主单位',
fieldNames: {
title: 'label',
// key: "value"
},
onSelect: (_: any, options: any) => {
console.log("optionsoptions", options);
detailForm.current?.setFieldsValue({ ServerpartIds: [] })
setSelectDetail(options.value)
getServiceList(options.value, showServiceList || null)
detailForm.current?.setFieldsValue({ USERTYPE_ID: '' })
// setInitialDetail({ ...initialDetail, PROVINCE_UNIT: options.label, })
setInitialDetail({ ...initialDetail, PROVINCE_UNIT: options.value, OWNERUNIT_NAME: options.label })
// if (initialDetail.USER_PATTERN === 4000){
// const req = {
// ProvinceCode:currentUser?.ProvinceCode,
// // OwnerUnitId:e
// }
// const data = await handleSupplierList(req)
// setSupplierList(data.List)
// }
},
onChange: async (e) => {
if (!e) {
setSelectDetail(undefined)
}
}
}}
/>
</Col>
{/* {currentUser?.UserPattern === 9000 ||initialDetail.USER_PATTERN === 4000?
<Col span={12}>
<ProFormSelect
name="USER_PROVINCE"
label="业主单位"
rules={[
{
required: initialDetail.USER_PATTERN === 1000,
message: '请选择业主单位',
},
]}
request={async () => {
const options = await getOnwer()
return options;
}}
fieldProps={{
showSearch: true,
placeholder: '请选择业主单位',
fieldNames: {
title: 'label',
// key: "value"
},
onSelect: (_: any, options: any) => {
detailForm.current?.setFieldsValue({ ServerpartIds: [] })
setSelectDetail(options.value)
getServiceList(options.value, showServiceList || null)
detailForm.current?.setFieldsValue({ USERTYPE_ID: '' })
setInitialDetail({ ...initialDetail, PROVINCE_UNIT: options.label, })
// if (initialDetail.USER_PATTERN === 4000){
// const req = {
// ProvinceCode:currentUser?.ProvinceCode,
// // OwnerUnitId:e
// }
// const data = await handleSupplierList(req)
// setSupplierList(data.List)
// }
},
onChange: async (e) => {
if (!e) {
setSelectDetail(undefined)
}
}
}}
/>
</Col>:''
} */}
<Col span={6}>
<ProFormTreeSelect
label="账号部门"
name="USERTYPE_ID"
dependencies={['USER_PROVINCE', 'USER_PATTERN', '']}
// rules={[
// {
// required: initialDetail.USER_PATTERN === 1000 || initialDetail.USER_PATTERN === 4000,
// message: '请选择账号部门',
// },
// ]}
request={async (params) => {
console.log('params', params);
if (pageType === 'merchantManagement') {
const req: any = {
// ProvinceCode: '530000',
UserTypePattern: 2000
}
const data = await getUserTypeTree(req)
console.log('data2', data)
if (data && data.length > 0) {
data.forEach((item: any) => {
item.disabled = true
})
}
return data
} if (params.USER_PROVINCE || params.USER_PATTERN) {
const req: any = {
// ProvinceCode: '530000',
UserTypePattern: tableTab === 9000 ? 1000 : tableTab
}
const data = await getUserTypeTree(req)
console.log('data2', data)
if (data && data.length > 0) {
data.forEach((item: any) => {
item.disabled = true
})
}
return data
// return await getUserTypeTree({ ProvinceCode: params.USER_PATTERN === 1000 ? params.USER_PROVINCE : params.BUSINESSMAN_ID,UserTypePattern:tableTab==='4000'?tableTab:'' })
}
return []
}}
fieldProps={{
fieldNames: {
key: "value",
title: 'label',
},
treeDefaultExpandAll: true
}}
// addonAfter={<Button type="primary"
// onClick={() => {
// window.open(`/setting/userstype`)
// // history.push('/setting/userstype')
// }}>去添加</Button>}
/>
</Col>
<Col span={6}>
<ProFormText
label="显示顺序"
name="USER_INDEX"
placeholder="请输入显示顺序"
/>
</Col>
{(currentUser?.UserPattern === 9000 && initialDetail.USER_PATTERN === 2000) || pageType === 'merchantManagement' ?
<Col span={12}>
<Row gutter={8} style={{ alignItems: 'center' }}>
<Col span={16}>
<Form.Item
name="BUSINESSMAN_ID"
label="所属商家"
rules={[
{
required: true,
message: '请选择所属商家',
},
]}
initialValue={pageType === 'merchantManagement' ? BUSINESSMAN_ID?.value ? Number(BUSINESSMAN_ID?.value) : '' : ''}
>
<TreeSelect
treeData={merchantTree}
treeDefaultExpandAll
showSearch
treeNodeFilterProp="label"
onSelect={(value: any, options: any) => {
detailForm.current?.setFieldsValue({ USERTYPE_ID: '' })
setInitialDetail({ ...initialDetail, BUSINESSMAN_NAME: options.label, })
setCheckedServerpart([]) // 清空选择的服务区/门店
getShopTree(value)
}}
placeholder="请选择所属商家,以便给商户授权门店"
allowClear
/>
</Form.Item>
</Col>
<Col span={8}>
{
pageType === 'merchantManagement' ?
<Button style={{ marginLeft: '8px' }} type="primary" onClick={() => {
setShowAddDrawer(true)
}}></Button> : ''
}
</Col>
</Row>
</Col> : initialDetail.USER_PATTERN === 4000 && selectDetail ?
<Col span={12}>
<Form.Item
name="BUSINESSMAN_ID"
label="所属供应商"
rules={[
{
required: true,
message: '所属供应商',
},
]}
>
<TreeSelect
treeData={supplierList}
treeDefaultExpandAll
showSearch
treeNodeFilterProp="label"
onSelect={(value: any, options: any) => {
detailForm.current?.setFieldsValue({ USERTYPE_ID: '' })
setInitialDetail({ ...initialDetail, BUSINESSMAN_NAME: options.label })
setCheckedServerpart([]) // 清空选择的服务区/门店
getShopTree(value)
}}
placeholder="请选择所属供应商"
allowClear
/>
</Form.Item>
</Col> : ''
}
<Col span={6} style={{ display: 'none' }}>
<ProFormText
label="所属供应商"
name="BUSINESSMAN_NAME"
/>
</Col>
<Col span={16}>
<ProFormText
label="备注"
name="USER_DESC"
// placeholder="请输入显示顺序"
/>
</Col>
{/* {currentUser?.UserPattern===9000 && <Col span={4}>
<Form.Item
name="SUPER_ADMIN"
label="是否为内部账号"
>
<Switch
checkedChildren="是"
unCheckedChildren="否"
defaultChecked={detail ? !!detail.SUPER_ADMIN : false}
/>
</Form.Item>
</Col>
} */}
</Row>
<Row>
<Col span={4}>
<Form.Item
name="USER_STATUS"
label="有效状态"
>
<Switch
checkedChildren="有效"
unCheckedChildren="无效"
defaultChecked={detail ? !!detail.USER_STATUS : true}
/>
</Form.Item>
</Col>
<Col span={4}>
<Form.Item
name="USER_REPEATLOGON"
label="可重复登录"
>
<Switch
checkedChildren="是"
unCheckedChildren="否"
defaultChecked={detail ? !!detail.USER_REPEATLOGON : true}
/>
</Form.Item>
</Col>
{
selectDetail === 530000 && tableTab === '1000' ||
selectDetail === 530000 && copyData?.AnalysisPermission === true && tableTab === '1000' ||
selectDetail === 530000 && copyData?.AnalysisPermission === false && tableTab === '1000'
?
<Col span={4}>
<Form.Item
name="AnalysisPermission"
label="业主看板权限"
>
<Switch
checkedChildren="是"
unCheckedChildren="否"
defaultChecked={copyData?.AnalysisPermission}
// defaultChecked={detail ? !!copyData.AnalysisPermission : true}
/>
</Form.Item>
</Col> : ''
}
{
tableTab === '2000' || tableTab === 2000 ?
<Col span={4}>
<Form.Item
name="PushPermission"
label="微信推送权限"
>
<Switch
checkedChildren="是"
unCheckedChildren="否"
defaultChecked={copyData?.PushPermission}
// defaultChecked={detail ? !!copyData.PushPermission : true}
onChange={(e) => {
setShowWeChatFlag(e)
}}
/>
</Form.Item>
</Col>
: ''
}
</Row>
{
tableTab === '1000' ?
<Row>
<Col span={4}>
<Form.Item
name="PushPermission"
label="微信推送权限"
>
<Switch
checkedChildren="是"
unCheckedChildren="否"
defaultChecked={copyData?.PushPermission}
// defaultChecked={detail ? !!copyData.PushPermission : true}
onChange={(e) => {
setShowWeChatFlag(e)
}}
/>
</Form.Item>
</Col>
{/* { */}
{/* <span onClick={()=>{ */}
{/* showFormdetail() */}
{/* }}> 111</span> */}
{/* } */}
{
showWeChatFlag && initialDetail?.USER_PATTERN !== 2000 ?
<Col span={6}>
<ProForm.Item
label="推送类型"
name="UserTypeIds"
rules={[
{
required: showWeChatFlag,
message: '请选择推送类型',
}
]}
>
<Radio.Group onChange={(e: any) => {
setShowServiceList(e.target.value)
setServiceList([])
setSPRegionList([])
detailForm.current?.setFieldsValue({ ServerpartIds: [] })
getServiceList(selectDetail || null, e.target.value)
}} value={showServiceList}>
<Radio value={1000}></Radio>
<Radio value={1010}></Radio>
<Radio value={1020}></Radio>
</Radio.Group>
</ProForm.Item>
</Col> : ''
}
{
showWeChatFlag && showServiceList && showServiceList !== 1000 ?
<Col span={14}>
<ProForm.Item
label={showServiceList === 1010 ? "服务区" : "区域"}
name="ServerpartIds"
rules={[
{
required: showWeChatFlag && showServiceList !== 1000,
message: showServiceList === 1010 ? "请选择推送服务区" : "请选择推送区域",
}
]}
>
<TreeSelect
showSearch
allowClear
style={{ width: '100%' }}
// 拿数组里面的指定字段给树形选择器当对应字段
fieldNames={{ label: 'label', value: 'key', children: 'children' }}
multiple={true}
treeCheckable={true}
treeDefaultExpandAll
onChange={(e) => {
}}
treeData={SPRegionList}
/>
</ProForm.Item>
</Col> : ''
}
</Row>
: ''
}
</Card>
<Card title="授予账号权限" style={{ marginTop: 24 }} bordered={false} size="default">
<Row gutter={24}>
{
tableTab === '1000' || tableTab === '4000' || tableTab === '9000' ?
<Col span={8}>
{serverpartTree &&
<Card
style={{ borderColor: "#97D6FE", height: 424 }}
size="small"
title="服务区权限" headStyle={{ backgroundColor: '#E7F7FF' }}
extra={<a onClick={() => {
setCheckedServerpart([])
detailForm.current?.setFieldsValue({ ServerpartList: [] })
}}></a>}>
<Form.Item name="ServerpartList" style={{ marginBottom: 0 }}>
<Tree
checkedKeys={checkedServerpart}
defaultCheckedKeys={checkedServerpart}
// defaultExpandedKeys={checkedServerpart}
treeData={serverpartTree}
height={360}
checkable
fieldNames={{
title: 'label',
key: 'value'
}}
onCheck={(checkedKeys: React.Key[] | any) => {
setCheckedServerpart(checkedKeys)
return checkedKeys
}}
></Tree>
</Form.Item>
</Card>}
</Col>
: ''
}
{/* {(currentUser?.UserPattern === 9000 ? initialDetail.USER_PATTERN === 1000 : currentUser?.UserPattern === 1000) && } */}
{
(initialDetail.USER_PATTERN === 2000 && initialDetail.BUSINESSMAN_NAME) || (pageType === 'merchantManagement' && BUSINESSMAN_ID?.label) ?
<Col span={8}>
{
shopTree && shopTree.length > 0 ?
< Card
style={{ borderColor: "#97D6FE", height: 424 }}
size="small"
title="门店权限" headStyle={{ backgroundColor: '#E7F7FF' }}
extra={<a onClick={() => {
setCheckedServerpart([])
setCheckedShop([])
detailForm.current?.setFieldsValue({ ServerpartList: [], ServerpartShopList: [] })
}}></a>}>
<Form.Item name="ServerpartList" style={{ marginBottom: 0 }}>
<Tree
// checkedKeys={checkedServerpart}
defaultCheckedKeys={checkedShop}
defaultExpandedKeys={checkedShop}
treeData={shopTree}
height={360}
checkable
fieldNames={{
title: 'label',
key: 'value'
}}
onCheck={(checkedKeys: React.Key[] | any, info: any) => {
if (info.checkedNodes.length > 0) {
const checkedPart = info.checkedNodes.reduce((accumulator, current) => {
accumulator[current.type].push(current.value)
return accumulator
}, { 1: [], 2: [] })
setCheckedServerpart(checkedPart[1])
setCheckedShop(checkedPart[2])
// setInitialDetail({ ...initialDetail, ServerpartShopList: checkedPart[2] })
} else {
setCheckedServerpart([])
setCheckedShop([])
// setInitialDetail({ ...initialDetail, ServerpartShopList: [] })
}
return checkedKeys
}}
></Tree>
</Form.Item>
</Card> : ''
}
</Col>
: ''
}
<Col span={8} >
{roleTree && <Card
style={{ borderColor: "#97D6FE", height: 424 }}
size="small"
title="角色权限"
headStyle={{ backgroundColor: '#E7F7FF' }}
extra={<a onClick={() => {
setCheckedRole([])
detailForm.current?.setFieldsValue({ SystemRoleList: [] })
}}></a>}>
<Form.Item name="SystemRoleList" style={{ marginBottom: 0 }}>
<Tree
checkedKeys={checkedRole}
defaultCheckedKeys={checkedRole}
defaultExpandedKeys={checkedRole}
treeData={roleTree}
height={330}
checkable
fieldNames={{
title: 'SYSTEMROLE_NAME',
key: 'SYSTEMROLE_ID'
}}
onCheck={(checkedKeys: React.Key[] | any) => {
setCheckedRole(checkedKeys)
if (checkedKeys.length > 0) {
getRoleMenu(checkedKeys.toString())
}
return checkedKeys
}}
></Tree>
</Form.Item>
</Card>
}
</Col>
{checkedRole && checkedRole.length > 0 && <Col span={8}>
<Card
style={{ borderColor: "#97D6FE", height: 424 }}
size="small"
title="已选角色的模块权限"
headStyle={{ backgroundColor: '#E7F7FF' }}
>
<Tree
defaultExpandAll
treeData={roleMenuTree || []}
height={330}
fieldNames={{
title: 'label',
}}
></Tree>
</Card>
</Col>}
</Row>
</Card>
{
companyList && companyList.length > 0 ?
<Card title="推送权限" style={{ marginTop: 24 }}>
<div style={{ display: 'flex' }}>
{/* 遍历公众号列表 展示item */}
{
companyList.map((item: any) => {
return <div style={{ marginRight: '5%' }}>
{/* <span>{companyType[item.type]}</span> */}
<span>{`${item.label}公众号: ${companyType[item.type]}的每日营收汇总通知`}</span>
</div>
})
}
</div>
</Card> : ''
}
</ProForm>
<BusinessManDrawer showDrawer={showAddDrawer} setShowDrawer={setShowAddDrawer} pageType={'edit'} afterOk={handleGetMerchantTree} />
</PageContainer >
)
}
export default Edit;