nili
5 months ago
19 changed files with 371 additions and 91 deletions
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||||
!function(){"use strict";var t="/".replace(/([^/])$/,"$1/"),e=location.pathname,n=e.startsWith(t)&&decodeURI("/".concat(e.slice(t.length)));if(n){var a=document,c=a.head,r=a.createElement.bind(a),i=function(t,e,n){var a,c=e.r[t]||(null===(a=Object.entries(e.r).find((function(e){var n=e[0];return new RegExp("^".concat(n.replace(/\/:[^/]+/g,"/[^/]+").replace("/*","/.+"),"$")).test(t)})))||void 0===a?void 0:a[1]);return null==c?void 0:c.map((function(t){var a=e.f[t][1],c=e.f[t][0];return{type:c.split(".").pop(),url:"".concat(n.publicPath).concat(c),attrs:[["data-".concat(e.b),"".concat(e.p,":").concat(a)]]}}))}(n,{"p":"ant-design-pro","b":"webpack","f":[["51.a2ea1b3b.async.js",51],["134.6fc81d91.async.js",134],["169.57647c7d.async.js",169],["p__Welcome.61596037.async.js",185],["p__MoneyManagement.7ad34f8d.async.js",190],["247.3fe8fb10.async.js",247],["t__plugin-layout__Layout.6cae69f5.chunk.css",301],["t__plugin-layout__Layout.4594a64b.async.js",301],["p__User__Login__index.9d3ab92e.async.js",366],["p__DeviceOwnerApp.ec53e5c4.async.js",371],["390.41467286.async.js",390],["393.38316f72.async.js",393],["397.fb5f72c1.async.js",397],["p__SuperAdmin.92290426.async.js",455],["531.4c68f902.async.js",531],["539.49b7b156.async.js",539],["p__AdvRecordListV2.a637838a.async.js",542],["p__Bind.b6ee068f.async.js",557],["559.016bfdbb.async.js",559],["p__404.0c100574.async.js",571],["635.20e45f05.async.js",635],["p__App__AppManagement.7b88d7c4.async.js",731],["p__AdminManagement.5e2368b3.async.js",816],["822.4ba8fa04.async.js",822],["841.614ef4c0.async.js",841],["p__AdvRecordList.8e5ef22c.async.js",857],["p__UserManagement.ec0defdd.async.js",903],["905.6e225d1b.async.js",905],["930.fca7adbf.async.js",930]],"r":{"/*":[19,27],"/":[1,6,7,18,20,27],"/welcome":[1,2,3,11,18,28,6,7,20,27],"/super":[0,1,2,5,13,14,15,23,27,28,6,7,18,20],"/adminList":[0,2,22,23,1,6,7,18,20,27],"/bind":[1,2,11,12,17,18,28,6,7,20,27],"/appList":[0,1,2,5,12,14,15,21,23,27,28,6,7,18,20],"/advList/:code":[0,1,2,14,15,18,23,24,25,27,28,6,7,20],"/advListV2/:code":[0,1,2,14,15,16,18,23,24,27,28,6,7,20],"/user/:code":[0,1,2,14,15,23,26,27,28,6,7,18,20],"/money/:code":[0,1,2,4,14,15,23,27,28,6,7,18,20],"/app/:code":[0,1,2,9,14,15,18,23,24,27,28,6,7,20],"/user/login":[1,2,8,14,23]}},{publicPath:"/"});null==i||i.forEach((function(t){var e,n=t.type,a=t.url;if("js"===n)(e=r("script")).src=a,e.async=!0;else{if("css"!==n)return;(e=r("link")).href=a,e.rel="preload",e.as="style"}t.attrs.forEach((function(t){e.setAttribute(t[0],t[1]||"")})),c.appendChild(e)}))}}(); |
!function(){"use strict";var t="/".replace(/([^/])$/,"$1/"),e=location.pathname,n=e.startsWith(t)&&decodeURI("/".concat(e.slice(t.length)));if(n){var a=document,c=a.head,r=a.createElement.bind(a),i=function(t,e,n){var a,c=e.r[t]||(null===(a=Object.entries(e.r).find((function(e){var n=e[0];return new RegExp("^".concat(n.replace(/\/:[^/]+/g,"/[^/]+").replace("/*","/.+"),"$")).test(t)})))||void 0===a?void 0:a[1]);return null==c?void 0:c.map((function(t){var a=e.f[t][1],c=e.f[t][0];return{type:c.split(".").pop(),url:"".concat(n.publicPath).concat(c),attrs:[["data-".concat(e.b),"".concat(e.p,":").concat(a)]]}}))}(n,{"p":"ant-design-pro","b":"webpack","f":[["51.a2ea1b3b.async.js",51],["134.6fc81d91.async.js",134],["169.57647c7d.async.js",169],["p__Welcome.61596037.async.js",185],["p__MoneyManagement.7ad34f8d.async.js",190],["247.3fe8fb10.async.js",247],["t__plugin-layout__Layout.6cae69f5.chunk.css",301],["t__plugin-layout__Layout.4594a64b.async.js",301],["p__User__Login__index.9d3ab92e.async.js",366],["p__DeviceOwnerApp.ec53e5c4.async.js",371],["390.41467286.async.js",390],["393.38316f72.async.js",393],["397.fb5f72c1.async.js",397],["p__SuperAdmin.92290426.async.js",455],["531.4c68f902.async.js",531],["539.49b7b156.async.js",539],["p__AdvRecordListV2.1e89410d.async.js",542],["p__Bind.b6ee068f.async.js",557],["559.016bfdbb.async.js",559],["p__404.0c100574.async.js",571],["635.20e45f05.async.js",635],["p__App__AppManagement.7b88d7c4.async.js",731],["p__AdminManagement.16f4328b.async.js",816],["822.4ba8fa04.async.js",822],["841.614ef4c0.async.js",841],["p__AdvRecordList.8e5ef22c.async.js",857],["p__UserManagement.5e827801.async.js",903],["905.6e225d1b.async.js",905],["930.fca7adbf.async.js",930],["942.561ac28f.async.js",942]],"r":{"/*":[19,27],"/":[1,6,7,18,20,27],"/welcome":[1,2,3,11,18,28,6,7,20,27],"/super":[0,1,2,5,13,14,15,23,27,28,6,7,18,20],"/adminList":[0,1,2,22,23,29,6,7,18,20,27],"/bind":[1,2,11,12,17,18,28,6,7,20,27],"/appList":[0,1,2,5,12,14,15,21,23,27,28,6,7,18,20],"/advList/:code":[0,1,2,14,15,18,23,24,25,27,28,6,7,20],"/advListV2/:code":[0,1,2,14,15,16,18,23,24,27,28,6,7,20],"/user/:code":[0,1,2,14,15,23,26,27,28,6,7,18,20],"/money/:code":[0,1,2,4,14,15,23,27,28,6,7,18,20],"/app/:code":[0,1,2,9,14,15,18,23,24,27,28,6,7,20],"/user/login":[1,2,8,14,23]}},{publicPath:"/"});null==i||i.forEach((function(t){var e,n=t.type,a=t.url;if("js"===n)(e=r("script")).src=a,e.async=!0;else{if("css"!==n)return;(e=r("link")).href=a,e.rel="preload",e.as="style"}t.attrs.forEach((function(t){e.setAttribute(t[0],t[1]||"")})),c.appendChild(e)}))}}(); |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,150 @@ |
|||||
|
import { getGrantUser, saveGrantUser } from '@/services/matrix/admin'; |
||||
|
import { queryById } from '@/services/matrix/matrixUserController'; |
||||
|
import { MinusCircleOutlined } from '@ant-design/icons'; |
||||
|
import { Button, Col, Flex, Form, InputNumber, Modal, Popover, Row, message } from 'antd'; |
||||
|
import React, { useEffect, useState } from 'react'; |
||||
|
import UserInfo from '../User/UserInfo'; |
||||
|
|
||||
|
export type GrantUserFormProps = { |
||||
|
onSubmit: () => void; |
||||
|
onCancel: () => void; |
||||
|
data: API.MatrixAdminBo; |
||||
|
}; |
||||
|
|
||||
|
const GrantUserForm: React.FC<GrantUserFormProps> = (props) => { |
||||
|
const [userList, setUserList] = useState<API.UserBo[]>([]); |
||||
|
const [newAddList, setNewAddList] = useState<API.UserBo[]>([]); |
||||
|
const [form] = Form.useForm(); |
||||
|
|
||||
|
const fetchConfig = async (id: number) => { |
||||
|
const data = await getGrantUser({ adminId: id }); |
||||
|
setUserList(data.data || []); |
||||
|
}; |
||||
|
|
||||
|
useEffect(() => { |
||||
|
if (props.data.id) { |
||||
|
fetchConfig(props.data.id); |
||||
|
} |
||||
|
}, [props.data.id]); |
||||
|
|
||||
|
return ( |
||||
|
<Modal |
||||
|
title="绑定账号" |
||||
|
visible |
||||
|
centered |
||||
|
onCancel={() => { |
||||
|
props.onCancel(); |
||||
|
}} |
||||
|
footer={[ |
||||
|
<Button |
||||
|
key="back" |
||||
|
onClick={() => { |
||||
|
props.onCancel(); |
||||
|
}} |
||||
|
> |
||||
|
取消 |
||||
|
</Button>, |
||||
|
<Popover |
||||
|
key="confirm" |
||||
|
title="确定保存吗" |
||||
|
content={ |
||||
|
<div style={{ textAlign: 'center' }}> |
||||
|
<p>账号一旦绑定后,无法被删除</p> |
||||
|
<a |
||||
|
onClick={async () => { |
||||
|
let uids = [...userList, ...newAddList] |
||||
|
.map((x) => x.id) |
||||
|
.filter(Boolean) as number[]; |
||||
|
if (props.data.id && uids) { |
||||
|
await saveGrantUser({ adminId: props.data.id }, uids); |
||||
|
props.onSubmit(); |
||||
|
} else { |
||||
|
props.onCancel(); |
||||
|
} |
||||
|
}} |
||||
|
> |
||||
|
确定 |
||||
|
</a> |
||||
|
</div> |
||||
|
} |
||||
|
> |
||||
|
<Button type="primary">保存</Button> |
||||
|
</Popover>, |
||||
|
]} |
||||
|
> |
||||
|
{userList.length > 0 && ( |
||||
|
<Row gutter={6} style={{ marginTop: 20 }}> |
||||
|
<Col span={4}>已绑定:</Col> |
||||
|
<Flex vertical gap="small"> |
||||
|
{userList.map((x) => ( |
||||
|
<Row key={x.id}> |
||||
|
<UserInfo data={x} /> |
||||
|
</Row> |
||||
|
))} |
||||
|
</Flex> |
||||
|
</Row> |
||||
|
)} |
||||
|
|
||||
|
{newAddList.length > 0 && ( |
||||
|
<Row gutter={6} style={{ marginTop: 20 }}> |
||||
|
<Col span={4}>本次新增:</Col> |
||||
|
<Flex vertical gap="small"> |
||||
|
{newAddList.map((x) => ( |
||||
|
<Row key={x.id}> |
||||
|
<UserInfo data={x} /> |
||||
|
<MinusCircleOutlined |
||||
|
style={{ marginLeft: 20 }} |
||||
|
onClick={() => { |
||||
|
setNewAddList(newAddList.filter((a) => a.id !== x.id)); |
||||
|
}} |
||||
|
/> |
||||
|
</Row> |
||||
|
))} |
||||
|
</Flex> |
||||
|
</Row> |
||||
|
)} |
||||
|
|
||||
|
<Form |
||||
|
style={{ marginTop: 20 }} |
||||
|
labelCol={{ span: 4 }} |
||||
|
wrapperCol={{ span: 18 }} |
||||
|
form={form} |
||||
|
onFinish={async ({ uid }) => { |
||||
|
if (!uid) { |
||||
|
message.error('uid不能为空'); |
||||
|
return; |
||||
|
} |
||||
|
if (props.data.id && uid) { |
||||
|
if (newAddList.filter((x) => x.id === uid).length > 0) { |
||||
|
message.error('该账号已添加'); |
||||
|
return; |
||||
|
} |
||||
|
if (userList.filter((x) => x.id === uid).length > 0) { |
||||
|
message.error('该账号已添加'); |
||||
|
return; |
||||
|
} |
||||
|
const data = await queryById({ adminId: props.data.id, userId: uid }); |
||||
|
if (!data.data) { |
||||
|
message.error('uid非法'); |
||||
|
} else { |
||||
|
setNewAddList([...newAddList, data.data]); |
||||
|
} |
||||
|
} |
||||
|
}} |
||||
|
> |
||||
|
<Row> |
||||
|
<Form.Item name="uid" label="uid"> |
||||
|
<InputNumber style={{ width: 200 }} /> |
||||
|
</Form.Item> |
||||
|
<Form.Item wrapperCol={{ offset: 8, span: 16 }}> |
||||
|
<Button type="primary" htmlType="submit"> |
||||
|
添加 |
||||
|
</Button> |
||||
|
</Form.Item> |
||||
|
</Row> |
||||
|
</Form> |
||||
|
</Modal> |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
export default GrantUserForm; |
Loading…
Reference in new issue