Browse Source

回填连接小程序

wjx 3 weeks ago
parent
commit
2a034e605e

+ 13 - 0
src/pages/weComTask/API/bookLink/index.ts

@@ -27,6 +27,19 @@ export function getCorpAutoLinkListApi(data: GetCorpAutoLinkListProps) {
     })
 }
 
+/**
+ * 详情
+ * @param data 
+ * @returns 
+ */
+export function getAutoLinkInfoApi(data: { mpAccountId: number, platform: string, links?: string[], miniapps?: {miniappId: string, miniappName: string }[] }) {
+    return request({
+        url: api + `/corpOperation/corp/autoLink/getInfo`,
+        method: 'POST',
+        data
+    })
+}
+
 export interface AddCorpAutoLinkProps {
     mpAccountIds: number[],
     platform: string,

+ 6 - 1
src/pages/weComTask/page/bookLink/SelectBookLinkButton.tsx

@@ -4,6 +4,10 @@ import SelectBookLink from './selectBookLink';
 
 interface SelectBookLinkButtonProps {
     children?: React.ReactNode;
+    linkList?: {
+        type: 'link' | 'miniprogram',
+        data: any[]
+    }
     mpAccountId: number | null
     bookPlatForm: TASK_CREATE.BookPlatFormProps[]
     linkData: { [x: string]: any }[]
@@ -11,7 +15,7 @@ interface SelectBookLinkButtonProps {
     platform: string
 }
 
-const SelectBookLinkButton: React.FC<SelectBookLinkButtonProps> = ({ mpAccountId, bookPlatForm, linkData, onChange, children = '选择', platform }) => {
+const SelectBookLinkButton: React.FC<SelectBookLinkButtonProps> = ({ mpAccountId, linkList, bookPlatForm, linkData, onChange, children = '选择', platform }) => {
 
     /********************************/
     const [visible, setVisible] = useState<boolean>(false)
@@ -28,6 +32,7 @@ const SelectBookLinkButton: React.FC<SelectBookLinkButtonProps> = ({ mpAccountId
             visible={visible}
             linkData={linkData}
             onClose={() => setVisible(false)}
+            linkList={linkList}
             onChange={(linkStr, miniprogramAppid, miniprogramPage) => {
                 console.log('linkStr', linkStr)
                 onChange(linkStr, miniprogramAppid, miniprogramPage)

+ 23 - 2
src/pages/weComTask/page/bookLink/selectBookLink.tsx

@@ -1,7 +1,7 @@
 import { App, Button, DatePicker, Input, Modal, Select, Space, Table, Tag, Typography } from "antd";
 import style from '../../components/selectExternalAccount/index.less'
 import { useEffect, useState } from "react";
-import { getCorpAutoLinkListApi, GetCorpAutoLinkListProps } from "../../API/bookLink";
+import { getAutoLinkInfoApi, getCorpAutoLinkListApi, GetCorpAutoLinkListProps } from "../../API/bookLink";
 import { useAjax } from "@/Hook/useAjax";
 import { getBindMpListApi } from "../../API/corpUserAssign";
 import { LINKTYPE } from "./const";
@@ -18,6 +18,10 @@ interface Props {
     visible?: boolean;
     onClose?: () => void;
     onChange?: (linkStr: string, miniprogramAppid?: string, miniprogramPage?: string) => void;
+    linkList?: {
+        type: 'link' | 'miniprogram',
+        data: any[]
+    }
 }
 
 /**
@@ -25,7 +29,7 @@ interface Props {
  * @param param0 
  * @returns 
  */
-const SelectBookLink: React.FC<Props> = ({ bookPlatForm, linkData, mpAccountId, visible, onClose, onChange, platform }) => {
+const SelectBookLink: React.FC<Props> = ({ bookPlatForm, linkData, mpAccountId, visible, onClose, onChange, platform, linkList }) => {
 
     /*******************************************/
     const { message } = App.useApp()
@@ -36,9 +40,26 @@ const SelectBookLink: React.FC<Props> = ({ bookPlatForm, linkData, mpAccountId,
     const [queryParamsNew, setQueryParamsNew] = useState<GetCorpAutoLinkListProps>({ pageNum: 1, pageSize: 20, mpAccountId, platform })
 
     const getCorpAutoLinkList = useAjax((params) => getCorpAutoLinkListApi(params))
+    const getAutoLinkInfo = useAjax((params) => getAutoLinkInfoApi(params))
     const getBindMpList = useAjax(() => getBindMpListApi())
     /*******************************************/
 
+    useEffect(() => {
+        if (linkList?.type && linkList?.data?.length > 0 && mpAccountId) {
+            const params = { mpAccountId, platform }
+            if (linkList?.type === 'link') {
+                params['links'] = linkList.data
+            } else if (linkList?.type === 'miniprogram') {
+                params['miniapps'] = linkList.data
+            }
+            getAutoLinkInfo.run(params).then(res => {
+                if (res?.data?.length) {
+                    setData(linkData.map((item, index) => ({ ...item, bookLink: res?.data?.[index] ? [res?.data?.[index]] : undefined })))
+                }
+            })
+        }
+    }, [linkList, mpAccountId, platform, linkData])
+
     useEffect(() => {
         getCorpAutoLinkList.run({ ...queryParamsNew, mpAccountId })
     }, [queryParamsNew, mpAccountId, platform])

+ 46 - 2
src/pages/weComTask/page/businessPlan/create/tableConfig.tsx

@@ -218,11 +218,12 @@ export const massSendingColumns = (setContent: (data: TASK_CREATE.SetContentProp
             key: 'linkUrl',
             width: 250,
             render(_, record) {
+                const linkUrl = previewContent?.groupMsgContent?.[record.corpUsergroupIndex]?.[record.strategyIndex - 1]?.[record.sendDataIndex - 1]?.[record.contentIndex - 1]?.linkUrl
                 return record?.linkData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入链接"
                         allowClear
-                        value={previewContent?.groupMsgContent?.[record.corpUsergroupIndex]?.[record.strategyIndex - 1]?.[record.sendDataIndex - 1]?.[record.contentIndex - 1]?.linkUrl}
+                        value={linkUrl}
                         onChange={e => {
                             setContent({
                                 msg: { linkUrl: e.target.value },
@@ -236,6 +237,10 @@ export const massSendingColumns = (setContent: (data: TASK_CREATE.SetContentProp
                         platform={platform}
                         mpAccountId={record.corpUserList?.[0]?.mpAccountId}
                         linkData={record.linkData}
+                        linkList={linkUrl ? {
+                            type: 'link',
+                            data: linkUrl.split(',')
+                        } : undefined}
                         onChange={(linkStr, miniprogramAppid, miniprogramPage) => {
                             const msg: { [x: string]: string } = { linkUrl: linkStr }
                             if (miniprogramAppid && miniprogramPage && record?.miniProgramData?.length > 0 && !previewContent?.groupMsgContent?.[record.corpUsergroupIndex]?.[record.strategyIndex - 1]?.[record.sendDataIndex - 1]?.[record.contentIndex - 1]?.miniprogramAppid && !previewContent?.groupMsgContent?.[record.corpUsergroupIndex]?.[record.strategyIndex - 1]?.[record.sendDataIndex - 1]?.[record.contentIndex - 1]?.miniprogramPage) {
@@ -276,6 +281,22 @@ export const massSendingColumns = (setContent: (data: TASK_CREATE.SetContentProp
             key: 'miniprogramPage',
             width: 250,
             render(_, record) {
+                const miniprogramAppid = previewContent?.groupMsgContent?.[record.corpUsergroupIndex]?.[record.strategyIndex - 1]?.[record.sendDataIndex - 1]?.[record.contentIndex - 1]?.miniprogramAppid
+                const miniprogramPage = previewContent?.groupMsgContent?.[record.corpUsergroupIndex]?.[record.strategyIndex - 1]?.[record.sendDataIndex - 1]?.[record.contentIndex - 1]?.miniprogramPage
+                let linkList: {
+                    type: 'link' | 'miniprogram',
+                    data: any[]
+                } = undefined
+                if (miniprogramAppid && miniprogramPage) {
+                    linkList = { type: 'miniprogram', data: [] }
+                    const miniprogramPages = miniprogramPage.split(',')
+                    miniprogramAppid.split(',').map((item, index) => {
+                        linkList.data.push({
+                            miniappId: item,
+                            miniappPagePath: miniprogramPages?.[index]
+                        })
+                    })
+                }
                 return record?.miniProgramData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入小程序路径"
@@ -291,6 +312,7 @@ export const massSendingColumns = (setContent: (data: TASK_CREATE.SetContentProp
                         bookPlatForm={bookPlatForm}
                         platform={platform}
                         mpAccountId={record.corpUserList?.[0]?.mpAccountId}
+                        linkList={linkList}
                         linkData={record.miniProgramData.map(item => ({
                             msgType: "TASK_CONTENT_LINK",
                             link: {
@@ -527,11 +549,12 @@ export const welcomeColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
             key: 'linkUrl',
             width: 250,
             render(_, record) {
+                const linkUrl = previewContent?.welcomeMsgContent?.[record.corpUsergroupIndex]?.[record.contentIndex - 1]?.linkUrl
                 return record?.linkData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入链接"
                         allowClear
-                        value={previewContent?.welcomeMsgContent?.[record.corpUsergroupIndex]?.[record.contentIndex - 1]?.linkUrl}
+                        value={linkUrl}
                         onChange={e => {
                             setContent({
                                 msg: { linkUrl: e.target.value },
@@ -552,6 +575,10 @@ export const welcomeColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
                                 desc: item.linkDesc
                             }
                         }))}
+                        linkList={linkUrl ? {
+                            type: 'link',
+                            data: linkUrl.split(',')
+                        } : undefined}
                         onChange={(linkStr, miniprogramAppid, miniprogramPage) => {
                             const msg: { [x: string]: string } = { linkUrl: linkStr }
                             if (miniprogramAppid && miniprogramPage && record?.miniProgramData?.length > 0 && !previewContent?.welcomeMsgContent?.[record.corpUsergroupIndex]?.[record.contentIndex - 1]?.miniprogramAppid && !previewContent?.welcomeMsgContent?.[record.corpUsergroupIndex]?.[record.contentIndex - 1]?.miniprogramPage) {
@@ -592,6 +619,22 @@ export const welcomeColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
             key: 'miniprogramPage',
             width: 250,
             render(_, record) {
+                const miniprogramAppid = previewContent?.welcomeMsgContent?.[record.corpUsergroupIndex]?.[record.contentIndex - 1]?.miniprogramAppid
+                const miniprogramPage = previewContent?.welcomeMsgContent?.[record.corpUsergroupIndex]?.[record.contentIndex - 1]?.miniprogramPage
+                let linkList: {
+                    type: 'link' | 'miniprogram',
+                    data: any[]
+                } = undefined
+                if (miniprogramAppid && miniprogramPage) {
+                    linkList = { type: 'miniprogram', data: [] }
+                    const miniprogramPages = miniprogramPage.split(',')
+                    miniprogramAppid.split(',').map((item, index) => {
+                        linkList.data.push({
+                            miniappId: item,
+                            miniappPagePath: miniprogramPages?.[index]
+                        })
+                    })
+                }
                 return record?.miniProgramData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入小程序路径"
@@ -607,6 +650,7 @@ export const welcomeColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
                         bookPlatForm={bookPlatForm}
                         platform={platform}
                         mpAccountId={record.corpUserList?.[0]?.mpAccountId}
+                        linkList={linkList}
                         linkData={record.miniProgramData.map(item => ({
                             msgType: "TASK_CONTENT_LINK",
                             link: {

+ 16 - 0
src/pages/weComTask/page/groupChat/create/components/groupUser/addGroupObject.tsx

@@ -210,6 +210,16 @@ export const ShowGroupUserTable: React.FC<GROUP_CHAT_CREATE.ShowGroupUserTablePr
                 return value || '--'
             },
         },
+        {
+            title: '建群模板名称',
+            dataIndex: 'templateName',
+            key: 'templateName',
+            width: 100,
+            ellipsis: true,
+            render(value) {
+                return value || '--'
+            },
+        },
         {
             title: '拉群完成后群聊备注',
             dataIndex: 'remark',
@@ -471,6 +481,12 @@ const AddGroupObjectModal: React.FC<GROUP_CHAT_CREATE.AddGroupObjectModalProps>
                     options={getBindMpList?.data?.data?.map(item => ({ label: item.name, value: item.name + '_' + item.id }))}
                 />
             </Form.Item>
+            <Form.Item
+                name={'templateName'}
+                label={<strong>建群模板名称</strong>}
+            >
+                <Input placeholder="请输入建群模板名称" />
+            </Form.Item>
             <Form.Item
                 name={'remark'}
                 label={<strong>拉群完成后群聊备注</strong>}

+ 10 - 0
src/pages/weComTask/page/groupChat/create/tableConfig.tsx

@@ -183,6 +183,16 @@ export const PreviewColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
                 return value || '--'
             },
         },
+        {
+            title: '建群模板名称',
+            dataIndex: 'templateName',
+            key: 'templateName',
+            width: 100,
+            ellipsis: true,
+            render(value) {
+                return value || '--'
+            },
+        },
         {
             title: '拉群完成后群聊备注',
             dataIndex: 'remark',

+ 1 - 2
src/pages/weComTask/page/groupChatSend/official/create/index.tsx

@@ -53,12 +53,11 @@ const OfficialCreate: React.FC<{ weComTaskStore: { data: { bookList: TASK_CREATE
         const project = sessionStorage.getItem('PGSD_OFFICIALTASKID')
         if (project) {
             const { id, isCopy } = JSON.parse(project)
-            console.log('projectId-->', id, isCopy)
             if (!isCopy) {
                 setProjectId(id)
             }
             getCreateDetails.run(id).then(res => {
-                // sessionStorage.removeItem('PGSD_OFFICIALTASKID')
+                sessionStorage.removeItem('PGSD_OFFICIALTASKID')
                 if (res?.data) {
                     const { bizType, platform, templateProductId, channel, groupChatSendTaskAddDTO, mpAccounts } = res.data
                     const group = mpAccounts.map(m => {

+ 23 - 1
src/pages/weComTask/page/groupChatSend/official/create/tableConfig.tsx

@@ -106,11 +106,12 @@ export const PreviewColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
             key: 'linkUrl',
             width: 250,
             render(_, record) {
+                const linkUrl = previewContent?.[record.id]?.linkUrl
                 return record?.linkData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入链接"
                         allowClear
-                        value={previewContent?.[record.id]?.linkUrl}
+                        value={linkUrl}
                         onChange={e => {
                             const newPreviewContent = JSON.parse(JSON.stringify(previewContent))
                             const c = previewContent?.[record.id] || {}
@@ -123,6 +124,10 @@ export const PreviewColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
                         platform={platform}
                         mpAccountId={record.mpAccountId}
                         linkData={record.linkData}
+                        linkList={linkUrl ? {
+                            type: 'link',
+                            data: linkUrl.split(',')
+                        } : undefined}
                         onChange={(linkStr, miniprogramAppid, miniprogramPage) => {
                             const msg: { [x: string]: string } = { linkUrl: linkStr }
                             if (miniprogramAppid && miniprogramPage && record?.miniProgramData?.length > 0 && !previewContent?.[record.id]?.miniprogramAppid && !previewContent?.[record.id]?.miniprogramPage) {
@@ -163,6 +168,22 @@ export const PreviewColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
             key: 'miniprogramPage',
             width: 250,
             render(_, record) {
+                const miniprogramAppid = previewContent?.[record.id]?.miniprogramAppid
+                const miniprogramPage = previewContent?.[record.id]?.miniprogramPage
+                let linkList: {
+                    type: 'link' | 'miniprogram',
+                    data: any[]
+                } = undefined
+                if (miniprogramAppid && miniprogramPage) {
+                    linkList = { type: 'miniprogram', data: [] }
+                    const miniprogramPages = miniprogramPage.split(',')
+                    miniprogramAppid.split(',').map((item, index) => {
+                        linkList.data.push({
+                            miniappId: item,
+                            miniappPagePath: miniprogramPages?.[index]
+                        })
+                    })
+                }
                 return record?.miniProgramData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入小程序路径"
@@ -179,6 +200,7 @@ export const PreviewColumns = (bookPlatForm: TASK_CREATE.BookPlatFormProps[], bo
                         bookPlatForm={bookPlatForm}
                         platform={platform}
                         mpAccountId={record.mpAccountId}
+                        linkList={linkList}
                         linkData={record.miniProgramData.map(item => ({
                             msgType: "TASK_CONTENT_LINK",
                             link: {

+ 0 - 1
src/pages/weComTask/page/groupChatSend/robot/create/index.tsx

@@ -54,7 +54,6 @@ const OfficialCreate: React.FC<{ weComTaskStore: { data: { bookList: TASK_CREATE
         const project = sessionStorage.getItem('ROBOT_OFFICIALTASKID')
         if (project) {
             const { id, isCopy } = JSON.parse(project)
-            console.log('projectId-->', id, isCopy)
             if (!isCopy) {
                 setProjectId(id)
             }

+ 23 - 1
src/pages/weComTask/page/groupChatSend/robot/create/tableConfig.tsx

@@ -190,11 +190,12 @@ export const PreviewColumns = (
             key: 'linkUrl',
             width: 250,
             render(_, record) {
+                const linkUrl = previewContent?.[record.id]?.linkUrl
                 return record?.linkData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入链接"
                         allowClear
-                        value={previewContent?.[record.id]?.linkUrl}
+                        value={linkUrl}
                         onChange={e => {
                             const newPreviewContent = JSON.parse(JSON.stringify(previewContent))
                             const c = previewContent?.[record.id] || {}
@@ -207,6 +208,10 @@ export const PreviewColumns = (
                         platform={platform}
                         mpAccountId={record.mpAccountId}
                         linkData={record.linkData}
+                        linkList={linkUrl ? {
+                            type: 'link',
+                            data: linkUrl.split(',')
+                        } : undefined}
                         onChange={(linkStr, miniprogramAppid, miniprogramPage) => {
                             const msg: { [x: string]: string } = { linkUrl: linkStr }
                             if (miniprogramAppid && miniprogramPage && record?.miniProgramData?.length > 0 && !previewContent?.[record.id]?.miniprogramAppid && !previewContent?.[record.id]?.miniprogramPage) {
@@ -247,6 +252,22 @@ export const PreviewColumns = (
             key: 'miniprogramPage',
             width: 250,
             render(_, record) {
+                const miniprogramAppid = previewContent?.[record.id]?.miniprogramAppid
+                const miniprogramPage = previewContent?.[record.id]?.miniprogramPage
+                let linkList: {
+                    type: 'link' | 'miniprogram',
+                    data: any[]
+                } = undefined
+                if (miniprogramAppid && miniprogramPage) {
+                    linkList = { type: 'miniprogram', data: [] }
+                    const miniprogramPages = miniprogramPage.split(',')
+                    miniprogramAppid.split(',').map((item, index) => {
+                        linkList.data.push({
+                            miniappId: item,
+                            miniappPagePath: miniprogramPages?.[index]
+                        })
+                    })
+                }
                 return record?.miniProgramData?.length > 0 ? <div style={{ display: 'flex', gap: 4, alignItems: 'flex-end' }}>
                     <Input.TextArea
                         placeholder="请输入小程序路径"
@@ -263,6 +284,7 @@ export const PreviewColumns = (
                         bookPlatForm={bookPlatForm}
                         platform={platform}
                         mpAccountId={record.mpAccountId}
+                        linkList={linkList}
                         linkData={record.miniProgramData.map(item => ({
                             msgType: "TASK_CONTENT_LINK",
                             link: {