|  | @@ -0,0 +1,150 @@
 | 
	
		
			
				|  |  | +import Tables from "@/components/Tables"
 | 
	
		
			
				|  |  | +import { useAjax } from "@/Hook/useAjax"
 | 
	
		
			
				|  |  | +import { addSysProfileApi, delSysProfileApi, editSysProfileApi, getSysProfileApi } from "@/services/launchAdq/global"
 | 
	
		
			
				|  |  | +import { PlusOutlined } from "@ant-design/icons"
 | 
	
		
			
				|  |  | +import { Button, Divider, Form, Input, message, Modal, Select, Space } from "antd"
 | 
	
		
			
				|  |  | +import React, { useEffect, useState } from "react"
 | 
	
		
			
				|  |  | +import { UploadImage } from "./brandImage"
 | 
	
		
			
				|  |  | +import { profileColumns } from "./tableConfig"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +interface Props {
 | 
	
		
			
				|  |  | +    onChange?: (data: any) => void,
 | 
	
		
			
				|  |  | +    value?: any
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 头像及昵称跳转页
 | 
	
		
			
				|  |  | + * @returns 
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +const HeadNickJump: React.FC<Props> = (props) => {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /****************************/
 | 
	
		
			
				|  |  | +    const { onChange, value } = props
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const [visible, setVisible] = useState<boolean>(false)
 | 
	
		
			
				|  |  | +    const [addVisible, setAddVisible] = useState<boolean>(false)
 | 
	
		
			
				|  |  | +    const [form] = Form.useForm()
 | 
	
		
			
				|  |  | +    const [initialValues, setInitialValues] = useState<any>({})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const getSysProfile = useAjax(() => getSysProfileApi())
 | 
	
		
			
				|  |  | +    const addSysProfile = useAjax((params) => addSysProfileApi(params))
 | 
	
		
			
				|  |  | +    const editSysProfile = useAjax((params) => editSysProfileApi(params))
 | 
	
		
			
				|  |  | +    const delSysProfile = useAjax((params) => delSysProfileApi(params))
 | 
	
		
			
				|  |  | +    /****************************/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 获取列表
 | 
	
		
			
				|  |  | +    useEffect(() => {
 | 
	
		
			
				|  |  | +        getSysProfile.run()
 | 
	
		
			
				|  |  | +    }, [])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 新增修改
 | 
	
		
			
				|  |  | +    const handleOk = async () => {
 | 
	
		
			
				|  |  | +        form.submit()
 | 
	
		
			
				|  |  | +        let data = await form.validateFields()
 | 
	
		
			
				|  |  | +        if (Object.keys(initialValues).length > 0) { // 修改
 | 
	
		
			
				|  |  | +            editSysProfile.run({ ...data, sysProfileId: initialValues.id }).then(res => {
 | 
	
		
			
				|  |  | +                if (res) {
 | 
	
		
			
				|  |  | +                    message.success('修改成功')
 | 
	
		
			
				|  |  | +                    setAddVisible(false)
 | 
	
		
			
				|  |  | +                    getSysProfile.refresh()
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +        } else { // 新增
 | 
	
		
			
				|  |  | +            addSysProfile.run(data).then(res => {
 | 
	
		
			
				|  |  | +                if (res) {
 | 
	
		
			
				|  |  | +                    message.success('新增成功')
 | 
	
		
			
				|  |  | +                    setAddVisible(false)
 | 
	
		
			
				|  |  | +                    getSysProfile.refresh()
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        setInitialValues({})
 | 
	
		
			
				|  |  | +        form.resetFields()
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** 删除 */
 | 
	
		
			
				|  |  | +    const del = (id: number) => {
 | 
	
		
			
				|  |  | +        delSysProfile.run({ sysProfileId: id }).then(res => {
 | 
	
		
			
				|  |  | +            if (res) {
 | 
	
		
			
				|  |  | +                message.success('删除成功')
 | 
	
		
			
				|  |  | +                getSysProfile.refresh()
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** 修改 */
 | 
	
		
			
				|  |  | +    const edit = (data: any) => {
 | 
	
		
			
				|  |  | +        setInitialValues(data)
 | 
	
		
			
				|  |  | +        setAddVisible(true)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return <div>
 | 
	
		
			
				|  |  | +        <Select
 | 
	
		
			
				|  |  | +            showSearch
 | 
	
		
			
				|  |  | +            placeholder="请选择一个品牌跳转页,与广告创意一起展示"
 | 
	
		
			
				|  |  | +            optionFilterProp="children"
 | 
	
		
			
				|  |  | +            style={{ width: 400 }}
 | 
	
		
			
				|  |  | +            onChange={(e) => { onChange && onChange(e) }}
 | 
	
		
			
				|  |  | +            allowClear
 | 
	
		
			
				|  |  | +            value={value}
 | 
	
		
			
				|  |  | +            filterOption={(input, option) => {
 | 
	
		
			
				|  |  | +                return (option!.value as unknown as string).toLowerCase().includes(input.toLowerCase())
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +            dropdownRender={menu => <>
 | 
	
		
			
				|  |  | +                {menu}
 | 
	
		
			
				|  |  | +                <Divider style={{ margin: '8px 0' }} />
 | 
	
		
			
				|  |  | +                <div>
 | 
	
		
			
				|  |  | +                    <Button type="link" onClick={() => { setAddVisible(true); setInitialValues({}) }}>新增</Button>
 | 
	
		
			
				|  |  | +                    <Button type="link" onClick={() => setVisible(true)}>前往管理</Button>
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +            </>}
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                getSysProfile?.data?.map((item: any) => {
 | 
	
		
			
				|  |  | +                    return <Select.Option value={item.profileName + '_' + item.headImageUrl + '_' + item.description} key={item.id}>
 | 
	
		
			
				|  |  | +                        <Space>
 | 
	
		
			
				|  |  | +                            <img src={item.headImageUrl} style={{ width: 20 }} />
 | 
	
		
			
				|  |  | +                            <span>{item.profileName}</span>
 | 
	
		
			
				|  |  | +                        </Space>
 | 
	
		
			
				|  |  | +                    </Select.Option>
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        </Select>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {visible && <Modal title="头像及昵称跳转页" width={1000} visible={visible} footer={null} onCancel={() => setVisible(false)}>
 | 
	
		
			
				|  |  | +            <Space direction='vertical' style={{ width: '100%' }}>
 | 
	
		
			
				|  |  | +                <Button type="primary" icon={<PlusOutlined />} onClick={() => { setAddVisible(true); setInitialValues({}) }}>上传品牌形象</Button>
 | 
	
		
			
				|  |  | +                <Tables
 | 
	
		
			
				|  |  | +                    columns={profileColumns(del, edit)}
 | 
	
		
			
				|  |  | +                    dataSource={getSysProfile?.data}
 | 
	
		
			
				|  |  | +                    size="small"
 | 
	
		
			
				|  |  | +                    loading={getSysProfile?.loading}
 | 
	
		
			
				|  |  | +                    scroll={{ y: 300 }}
 | 
	
		
			
				|  |  | +                    bordered
 | 
	
		
			
				|  |  | +                />
 | 
	
		
			
				|  |  | +            </Space>
 | 
	
		
			
				|  |  | +        </Modal>}
 | 
	
		
			
				|  |  | +        {addVisible && <Modal title={`${Object.keys(initialValues).length > 0 ? '修改' : '上传'}头像及昵称跳转页`} visible={addVisible} confirmLoading={addSysProfile.loading || editSysProfile.loading} onOk={handleOk} onCancel={() => setAddVisible(false)}>
 | 
	
		
			
				|  |  | +            <Form
 | 
	
		
			
				|  |  | +                name="basic"
 | 
	
		
			
				|  |  | +                form={form}
 | 
	
		
			
				|  |  | +                layout='vertical'
 | 
	
		
			
				|  |  | +                autoComplete="off"
 | 
	
		
			
				|  |  | +                initialValues={{ ...initialValues }}
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +                <Form.Item label={<strong>头像</strong>} name="headImageUrl" rules={[{ required: true, message: '请选择头像!' }]}>
 | 
	
		
			
				|  |  | +                    <UploadImage />
 | 
	
		
			
				|  |  | +                </Form.Item>
 | 
	
		
			
				|  |  | +                <Form.Item label={<strong>名称</strong>} name="profileName" rules={[{ required: true, message: '请输入名称!' }]}>
 | 
	
		
			
				|  |  | +                    <Input placeholder="请输入名称" maxLength={12} />
 | 
	
		
			
				|  |  | +                </Form.Item>
 | 
	
		
			
				|  |  | +                <Form.Item label={<strong>详细描述</strong>} name="description" rules={[{ required: true, message: '请输入详细描述!' }]}>
 | 
	
		
			
				|  |  | +                    <Input.TextArea placeholder="请输入详细描述" maxLength={120} />
 | 
	
		
			
				|  |  | +                </Form.Item>
 | 
	
		
			
				|  |  | +            </Form>
 | 
	
		
			
				|  |  | +        </Modal>}
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default React.memo(HeadNickJump)
 |