wjx 10 tháng trước cách đây
mục cha
commit
d9c8649f5f
22 tập tin đã thay đổi với 173 bổ sung82 xóa
  1. 14 0
      config/routerConfig.ts
  2. 2 0
      src/app.tsx
  3. 1 0
      src/assets/assetLibrary.svg
  4. 2 2
      src/pages/launchSystemNew/components/textAideInput/index.less
  5. 1 1
      src/pages/launchSystemNew/components/timeInSelect/Thead.tsx
  6. 2 2
      src/pages/launchSystemNew/launchManage/createAd/creative/modal/index.less
  7. 2 2
      src/pages/launchSystemNew/launchManage/createAd/creativeCL/modal/index.less
  8. 2 2
      src/pages/launchSystemNew/launchManage/localAd/creative/index.less
  9. 2 2
      src/pages/launchSystemNew/launchManage/taskList/index.less
  10. 1 1
      src/pages/launchSystemV3/components/New1Radio/index.less
  11. 1 1
      src/pages/launchSystemV3/components/NewRadio/index.less
  12. 2 2
      src/pages/launchSystemV3/components/TextAideInput/index.less
  13. 2 2
      src/pages/launchSystemV3/tencentAdPutIn/create/Ad/index.less
  14. 1 1
      src/pages/launchSystemV3/tencentAdPutIn/create/Dynamic/index.tsx
  15. 2 2
      src/pages/launchSystemV3/tencentAdPutIn/create/Material/index.less
  16. 2 2
      src/pages/launchSystemV3/tencentAdPutIn/create/Material/index.tsx
  17. 7 5
      src/pages/launchSystemV3/tencentAdPutIn/create/MaterialText/index.tsx
  18. 94 31
      src/pages/launchSystemV3/tencentAdPutIn/create/MaterialText/newText.tsx
  19. 3 3
      src/pages/launchSystemV3/tencentAdPutIn/create/index.tsx
  20. 15 19
      src/pages/launchSystemV3/tencentAdPutIn/create/tableConfig.tsx
  21. 3 2
      src/pages/launchSystemV3/tencentAdPutIn/taskList/tableConfig.tsx
  22. 12 0
      src/pages/launchSystemV3/tencentAdPutIn/typings.d.ts

+ 14 - 0
config/routerConfig.ts

@@ -241,6 +241,20 @@ const launchSystemV3 = {
                 }
             ],
         },
+        {
+            path: '/launchSystemV3/material',
+            name: '素材库',
+            access: 'material',
+            icon: 'DatabaseOutlined',
+            routes: [
+                {
+                    name: '本地素材',
+                    path: '/launchSystemV3/material/cloud',
+                    access: 'cloud',
+                    component: './launchSystemNew/material/cloud',
+                },
+            ],
+        },
     ]
 }
 /** 头条 */

+ 2 - 0
src/app.tsx

@@ -14,6 +14,7 @@ import { ReactComponent as MaterialSvg } from '@/assets/material.svg'
 import { ReactComponent as GdtSvg } from '@/assets/gdt.svg'
 import { ReactComponent as MonitorSvg } from '@/assets/monitor.svg'
 import { ReactComponent as AssetSvg } from '@/assets/asset.svg'
+import { ReactComponent as AssetLibrarySvg } from '@/assets/assetLibrary.svg'
 import versions from './utils/versions';
 
 
@@ -111,6 +112,7 @@ const IconMap = {
   eye: <EyeOutlined />,
   user: <UserSwitchOutlined />,
   asset: <span role="img" aria-label="fund-view" className="anticon anticon-fund-view"><AssetSvg /></span>,
+  assetLibrary: <span role="img" aria-label="fund-view" className="anticon anticon-fund-view"><AssetLibrarySvg /></span>,
 };
 //处理菜单
 const loopMenuItem = (menus: MenuDataItem[],): MenuDataItem[] => {

+ 1 - 0
src/assets/assetLibrary.svg

@@ -0,0 +1 @@
+<svg viewBox="64 64 896 896" focusable="false" data-icon="fund-view" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M254.976 448.512q27.648 0 47.104 19.456t19.456 47.104q0 26.624-19.456 46.592t-47.104 19.968-47.104-19.968-19.456-46.592q0-27.648 19.456-47.104t47.104-19.456zM771.072 66.56q45.056 0 79.872 15.872t58.88 40.96 36.864 56.832 12.8 62.464l0 523.264q0 23.552-10.752 46.08t-28.672 40.96-40.96 29.696-47.616 11.264l0-572.416q0-26.624-10.24-49.664t-27.648-40.448-40.448-27.648-49.664-10.24l-575.488 0q0-22.528 10.24-45.056t27.648-40.96 40.96-29.696 50.176-11.264l514.048 0zM681.984 258.048q46.08 0 65.536 25.088t19.456 67.072l0 603.136q0 25.6-21.504 48.128t-54.272 22.528l-620.544 0q-27.648 0-49.152-22.528t-21.504-54.272l0-614.4q0-32.768 17.92-53.76t47.616-20.992l616.448 0zM640 413.696q0-11.264-7.168-18.432t-18.432-7.168l-461.824 0q-11.264 0-18.432 7.168t-7.168 18.432l0 228.352q9.216 11.264 16.896 25.088t18.944 26.112 29.696 20.992 51.2 8.704q48.128 0 78.336-15.36t53.248-38.912 43.008-50.688 47.616-51.2 68.608-40.96 105.472-18.944l0-93.184z" p-id="2537"></path></svg>

+ 2 - 2
src/pages/launchSystemNew/components/textAideInput/index.less

@@ -13,8 +13,8 @@
     border-radius: 3px;
     font-size: 12px;
     color: #fff;
-    border: 1px solid #296bef;
-    background-color: #296bef;
+    border: 1px solid #1890ff;
+    background-color: #1890ff;
     line-height: normal;
   }
 }

+ 1 - 1
src/pages/launchSystemNew/components/timeInSelect/Thead.tsx

@@ -145,7 +145,7 @@ const Thead: React.FC<Props> = ({ value = [], onChange }) => {
     const Footer = (
         <div className="footer_wrapper">
             <Space>
-                <Tag color="rgb(56,128,255)">已选</Tag>
+                <Tag color="#1890ff">已选</Tag>
                 <Tag>未选</Tag>
                 <Typography.Text type="secondary">可拖动鼠标选择时间段</Typography.Text>
             </Space>

+ 2 - 2
src/pages/launchSystemNew/launchManage/createAd/creative/modal/index.less

@@ -109,7 +109,7 @@
     border-radius: 3px;
     font-size: 12px;
     color: #fff;
-    border: 1px solid #296bef;
-    background-color: #296bef;
+    border: 1px solid #1890ff;
+    background-color: #1890ff;
     line-height: normal;
 }

+ 2 - 2
src/pages/launchSystemNew/launchManage/createAd/creativeCL/modal/index.less

@@ -112,8 +112,8 @@
     border-radius: 3px;
     font-size: 12px;
     color: #fff;
-    border: 1px solid #296bef;
-    background-color: #296bef;
+    border: 1px solid #1890ff;
+    background-color: #1890ff;
     line-height: normal;
 }
 

+ 2 - 2
src/pages/launchSystemNew/launchManage/localAd/creative/index.less

@@ -73,7 +73,7 @@
     border-radius: 3px;
     font-size: 12px;
     color: #fff;
-    border: 1px solid #296bef;
-    background-color: #296bef;
+    border: 1px solid #1890ff;
+    background-color: #1890ff;
     line-height: normal;
 }

+ 2 - 2
src/pages/launchSystemNew/launchManage/taskList/index.less

@@ -145,7 +145,7 @@
   border-radius: 3px;
   font-size: 12px;
   color: #fff;
-  border: 1px solid #296bef;
-  background-color: #296bef;
+  border: 1px solid #1890ff;
+  background-color: #1890ff;
   line-height: normal;
 }

+ 1 - 1
src/pages/launchSystemV3/components/New1Radio/index.less

@@ -30,7 +30,7 @@
             content: '';
             width: 16px;
             height: 16px;
-            color: #296bef;
+            color: #1890ff;
             opacity: 0;
         }
 

+ 1 - 1
src/pages/launchSystemV3/components/NewRadio/index.less

@@ -28,7 +28,7 @@
             content: '';
             width: 16px;
             height: 16px;
-            color: #296bef;
+            color: #1890ff;
             opacity: 0;
         }
 

+ 2 - 2
src/pages/launchSystemV3/components/TextAideInput/index.less

@@ -13,8 +13,8 @@
     border-radius: 3px;
     font-size: 12px;
     color: #fff;
-    border: 1px solid #296bef;
-    background-color: #296bef;
+    border: 1px solid #1890ff;
+    background-color: #1890ff;
     line-height: normal;
   }
 }

+ 2 - 2
src/pages/launchSystemV3/tencentAdPutIn/create/Ad/index.less

@@ -38,7 +38,7 @@
         }
 
         >div {
-            color: #296bef;
+            color: #1890ff;
             position: absolute;
             top: 0;
             right: 0;
@@ -60,7 +60,7 @@
         background-color: #FAFCFF;
 
         >span {
-            color: #296bef;
+            color: #1890ff;
             font-weight: 600;
         }
 

+ 1 - 1
src/pages/launchSystemV3/tencentAdPutIn/create/Dynamic/index.tsx

@@ -152,7 +152,7 @@ const Dynamic: React.FC = () => {
                 } else {
                     setAddelivery({ ...addelivery, dynamic, dynamicMaterialDTos: {}, dynamicCreativesTextDTOS: {} })
                 }
-                let oldPageTypeList = mainJumpInfo.map((item: { value: { pageType: any } }) => item.value.pageType)
+                let oldPageTypeList = mainJumpInfo?.map((item: { value: { pageType: any } }) => item.value.pageType) || []
                 let newPageTypeList = dynamic?.creativeComponents?.mainJumpInfo.map((item: { value: { pageType: any } }) => item.value.pageType)
                 setNewVisible(false)
                 clearData()

+ 2 - 2
src/pages/launchSystemV3/tencentAdPutIn/create/Material/index.less

@@ -114,8 +114,8 @@
     border-radius: 3px;
     font-size: 12px;
     color: #fff;
-    border: 1px solid #296bef;
-    background-color: #296bef;
+    border: 1px solid #1890ff;
+    background-color: #1890ff;
     line-height: normal;
 }
 

+ 2 - 2
src/pages/launchSystemV3/tencentAdPutIn/create/Material/index.tsx

@@ -91,7 +91,7 @@ const Material: React.FC = () => {
     return <div className={`${style.settingsBody_content_row} ${style.row4}`}>
         <div className={style.title}>
             <span>创意素材 <span className={style.selected}>已选 {dynamicMaterialDTos?.dynamicGroup?.length || 0}</span></span>
-            {(dynamicMaterialDTos && Object.keys(dynamicMaterialDTos).length > 0) ? <Button type="link" size="small" style={{ fontSize: 11, padding: 0 }} onClick={() => setAddelivery({ ...addelivery, dynamicMaterialDTos: [] })}><RedoOutlined />清空</Button> : null}
+            {(dynamicMaterialDTos && Object.keys(dynamicMaterialDTos).length > 0) ? <Button type="link" size="small" style={{ fontSize: 11, padding: 0 }} onClick={() => setAddelivery({ ...addelivery, dynamicMaterialDTos: [], dynamicCreativesTextDTOS: {} })}><RedoOutlined />清空</Button> : null}
         </div>
         <div className={style.detail}>
             <div className={style.detail_body}>
@@ -141,7 +141,7 @@ const Material: React.FC = () => {
                 setNewVisible(false)
             }}
             onChange={(values) => {
-                setAddelivery({ ...addelivery, dynamicMaterialDTos: values })
+                setAddelivery({ ...addelivery, dynamicMaterialDTos: values, dynamicCreativesTextDTOS: {} })
                 setNewVisible(false)
                 clearData()
             }}

+ 7 - 5
src/pages/launchSystemV3/tencentAdPutIn/create/MaterialText/index.tsx

@@ -11,13 +11,13 @@ const MaterialText: React.FC = () => {
 
     /*************************************/
     const { textData, addelivery, setAddelivery, clearData } = useContext(DispatchAddelivery)!;
-    const { dynamic, dynamicCreativesTextDTOS } = addelivery
+    const { dynamic, dynamicCreativesTextDTOS, dynamicMaterialDTos } = addelivery
 
     const [addVisible, setAddVisible] = useState<boolean>(false)
     const [descName, setDescName] = useState<string>('')
     const [titleName, setTitleName] = useState<string>('')
     /*************************************/
-    
+
     useEffect(() => {
         if (textData && Object.keys(textData).length > 0) {
             Object.keys(textData).forEach(key => {
@@ -38,16 +38,17 @@ const MaterialText: React.FC = () => {
         </div>
         <div className={style.detail}>
             <div className={style.detail_body}>
+                <Title level={5} style={{ fontSize: 12 }}>{dynamicCreativesTextDTOS?.type === 0 ? '全部相同' : dynamicCreativesTextDTOS?.type === 1 ? '按创意顺序分配' : null}</Title>
                 {dynamicCreativesTextDTOS?.dynamicCreativesTextDetailDTOList?.map((item: { [x: string]: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined; }, index: number) => {
                     if (item) {
                         let keys = Object.keys(item)
                         return <div key={index}>
                             {keys.includes('description') ? <>
                                 <Title level={5} style={{ fontSize: 12 }}>{descName}</Title>
-                                <div className={style.text}><Text ellipsis={{ tooltip: true }}>{item['description']}</Text></div>
+                                <div className={style.text}><Text ellipsis={{ tooltip: true }}>{item['description']?.[0]}</Text></div>
                             </> : keys.includes('title') ? <>
                                 <Title level={5} style={{ fontSize: 12 }}>{titleName}</Title>
-                                <div className={style.text}><Text ellipsis={{ tooltip: true }}>{item['title']}</Text></div>
+                                <div className={style.text}><Text ellipsis={{ tooltip: true }}>{item['title']?.[0]}</Text></div>
                             </> : null}
                         </div>
                     }
@@ -58,12 +59,13 @@ const MaterialText: React.FC = () => {
                 </div>}
             </div>
             <div className={style.detail_footer}>
-                <Button disabled={!(dynamic && Object.keys(dynamic)?.length > 0)} type="link" icon={<PlusCircleOutlined />} style={{ padding: 0, fontSize: 12 }} onClick={() => setAddVisible(true)}>添加</Button>
+                <Button disabled={!(dynamicMaterialDTos && Object.keys(dynamicMaterialDTos)?.length > 0)} type="link" icon={<PlusCircleOutlined />} style={{ padding: 0, fontSize: 12 }} onClick={() => setAddVisible(true)}>添加</Button>
             </div>
         </div>
 
         {addVisible && <NewText
             value={dynamicCreativesTextDTOS}
+            dynamicMaterialDTos={dynamicMaterialDTos}
             textData={textData}
             visible={addVisible}
             onClose={() => {

+ 94 - 31
src/pages/launchSystemV3/tencentAdPutIn/create/MaterialText/newText.tsx

@@ -1,11 +1,13 @@
+import New1Radio from "@/pages/launchSystemV3/components/New1Radio"
 import TextAideInput from "@/pages/launchSystemV3/components/TextAideInput"
 import { txtLength } from "@/utils/utils"
 import { Button, Card, Form, Modal, Space, message } from "antd"
-import React, { useEffect } from "react"
+import React, { useEffect, useState } from "react"
 
 
 interface Props {
-    textData: any
+    textData: any,
+    dynamicMaterialDTos: any,
     value?: any,
     visible?: boolean
     onClose?: () => void
@@ -17,27 +19,55 @@ interface Props {
  * @param param0 
  * @returns 
  */
-const NewText: React.FC<Props> = ({ visible, onClose, onChange, value, textData }) => {
+const NewText: React.FC<Props> = ({ visible, onClose, onChange, value, textData, dynamicMaterialDTos }) => {
 
     /*************************************/
     const [form] = Form.useForm();
+    const type = Form.useWatch('type', form)
+    const textDto = Form.useWatch('textDto', form)
+
+    const [textList, setTextList] = useState<PULLIN.TextDtoProps[]>([])
     /*************************************/
 
     const handleOk = (values: any) => {
         console.log(values)
+        const { type, textDto } = values
         onChange?.({
-            type: 0,
-            dynamicCreativesTextDetailDTOList: [values]
+            type,
+            dynamicCreativesTextDetailDTOList: textDto.map((item: any) => {
+                let data: any = {}
+                Object.keys(item).forEach(key => {
+                    data[key] = [item[key]]
+                })
+                return data
+            })
         })
     }
 
     useEffect(() => {
-        if (value?.dynamicCreativesTextDetailDTOList) {
-            console.log('value?.dynamicCreativesTextDTOS?.dynamicCreativesTextDetailDTOList[0]', value?.dynamicCreativesTextDetailDTOList[0])
-            form.setFieldsValue(value?.dynamicCreativesTextDetailDTOList[0])
+        console.log('创意文案--->', value)
+        if (value && Object.keys(value).length) {
+            const { type, dynamicCreativesTextDetailDTOList } = value
+            form.setFieldsValue({ type, textDto: dynamicCreativesTextDetailDTOList.map((item: any) => {
+                let data: any = {}
+                Object.keys(item).forEach(key => {
+                    data[key] = item[key]?.[0]
+                })
+                return data
+            }) })
         }
     }, [value])
 
+    useEffect(() => {
+        if (textData && Object.keys(textData)) {
+            let data = Object.values(textData).map((item: any) => {
+                let content = item.children.content
+                return { label: content.description, restriction: content.restriction, value: item.name, required: item.required }
+            })
+            setTextList(data)
+        }
+    }, [textData])
+
     return <Modal
         title={<strong style={{ fontSize: 20 }}>创意文案</strong>}
         visible={visible}
@@ -62,34 +92,67 @@ const NewText: React.FC<Props> = ({ visible, onClose, onChange, value, textData
             onFinishFailed={({ errorFields }) => {
                 message.error(errorFields?.[0]?.errors?.[0])
             }}
+            initialValues={{
+                type: 0,
+                textDto: [{}]
+            }}
             onFinish={handleOk}
         >
             <Card className="cardResetCss" style={{ marginTop: 10 }}>
-                {Object.keys(textData).map(key => {
-                    let item = textData[key]
-                    let content = item.children.content
-
-                    return <Form.Item
-                        label={<strong>{content.description}</strong>}
-                        name={item.name}
-                        key={key}
-                        rules={[{
-                            required: item.required, message: '请输入正确的' + content.description, validator: (rule, value) => {
-                                if (!value) {
-                                    return Promise.reject()
-                                } else if (!value.match(RegExp(content.restriction.textRestriction.textPattern))) {
-                                    return Promise.reject()
-                                } else if (txtLength(value) > content.restriction.textRestriction.maxLength) {
-                                    return Promise.reject()
-                                }
-                                return Promise.resolve()
+                <Form.Item name="type" label={<strong>文案分配规则</strong>} style={{ marginBottom: 0 }} rules={[{ required: true, message: '请选择营销目的!' }]}>
+                    <New1Radio
+                        data={[{ label: '全部相同', value: 0 }, { label: '按创意顺序分配', value: 1 }]}
+                        onChange={(value) => {
+                            if (value === 0) {
+                                form.setFieldsValue({ textDto: [textDto[0] || {}] })
+                            } else if (value === 1) {
+                                let oldtextDto: PULLIN.TextDtoProps[] = JSON.parse(JSON.stringify(textDto))
+                                oldtextDto = oldtextDto.concat(Array(dynamicMaterialDTos.dynamicGroup.length - oldtextDto.length).fill({}))
+                                form.setFieldsValue({ textDto: oldtextDto })
                             }
-                        }]}
-                    >
-                        <TextAideInput placeholder={'请输入' + content.description} style={{ width: 450 }} maxTextLength={content.restriction.textRestriction.maxLength} />
-                    </Form.Item>
-                })}
+                        }}
+                    />
+                </Form.Item>
             </Card>
+
+            <Form.List name="textDto">
+                {(fields) => (<>
+                    {fields.map(({ key, name, ...restField }, num) => (
+                        <Card
+                            title={type === 1 ? <strong style={{ fontSize: 14 }}>创意组{num + 1}</strong> : null}
+                            className="cardResetCss"
+                            style={{ marginTop: 10 }}
+                            key={key}
+                        >
+                            <Space style={{ width: '100%' }} direction="vertical" size={10}>
+                                {textList.map(item => {
+                                    return <Form.Item
+                                        {...restField}
+                                        label={<strong>{item.label}</strong>}
+                                        name={[name, item.value]}
+                                        key={key}
+                                        style={{ marginBottom: 0 }}
+                                        rules={[{
+                                            required: item.required, message: '请输入正确的' + item.label, validator: (rule, value) => {
+                                                if (!value) {
+                                                    return Promise.reject()
+                                                } else if (!value.match(RegExp(item.restriction.textRestriction.textPattern))) {
+                                                    return Promise.reject()
+                                                } else if (txtLength(value) > item.restriction.textRestriction.maxLength) {
+                                                    return Promise.reject()
+                                                }
+                                                return Promise.resolve()
+                                            }
+                                        }]}
+                                    >
+                                        <TextAideInput placeholder={'请输入' + item.label} style={{ width: 450 }} maxTextLength={item.restriction.textRestriction.maxLength} />
+                                    </Form.Item>
+                                })}
+                            </Space>
+                        </Card>
+                    ))}
+                </>)}
+            </Form.List>
             <Form.Item className="submit_pull">
                 <Space>
                     <Button onClick={onClose}>取消</Button>

+ 3 - 3
src/pages/launchSystemV3/tencentAdPutIn/create/index.tsx

@@ -208,8 +208,7 @@ const Create: React.FC = () => {
                         adgroupName: adgroups.adgroupName + suffix
                     },
                     dynamicDto: dynamic,                          // 创意信息
-                    rowSpan: dynamicMaterialDTos?.dynamicGroup?.length || 1,
-                    dynamicCreativesTextDTOS,                     // 创意文案
+                    rowSpan: dynamicMaterialDTos?.dynamicGroup?.length || 1
                 }
                 if (marketingCarrierType === 'MARKETING_CARRIER_TYPE_WECHAT_OFFICIAL_ACCOUNT') { // 营销载体
                     dat.marketingCarrierDto = item?.wechatChannelList
@@ -223,7 +222,8 @@ const Create: React.FC = () => {
                 return {
                     ...d1,
                     id: d1.id + '_' + index,
-                    dynamicGroup: group
+                    dynamicGroup: group,
+                    textDto: dynamicCreativesTextDTOS?.dynamicCreativesTextDetailDTOList?.[index % dynamicMaterialDTos.dynamicGroup?.length],                     // 创意文案
                 }
             })
             newdynamicCount = newdynamicCount + newData.length

+ 15 - 19
src/pages/launchSystemV3/tencentAdPutIn/create/tableConfig.tsx

@@ -119,29 +119,25 @@ const columns = (): TableProps<any>['columns'] => {
                 },
                 {
                     title: '创意文案',
-                    dataIndex: 'dynamicCreativesTextDTOS',
-                    key: 'dynamicCreativesTextDTOS',
+                    dataIndex: 'textDto',
+                    key: 'textDto',
                     width: 200,
-                    render: (_, b) => {
+                    render: (value, b) => {
+                        console.log('textDto-->', value)
                         let deliveryMode = b?.dynamicDto?.deliveryMode
-                        let dynamicCreativesTextDTOS = b?.dynamicCreativesTextDTOS
-                        if (dynamicCreativesTextDTOS && Object.keys(dynamicCreativesTextDTOS).length) {
+                        if (value && Object.keys(value).length) {
                             if (deliveryMode === "DELIVERY_MODE_CUSTOMIZE") {
                                 return <div className={style.detail_body} style={{ height: 'auto' }}>
-                                    {dynamicCreativesTextDTOS?.dynamicCreativesTextDetailDTOList?.map((item: { [x: string]: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined; }, index: number) => {
-                                        if (item) {
-                                            let keys = Object.keys(item)
-                                            return <div key={index}>
-                                                {keys.includes('description') ? <>
-                                                    <Title level={5} style={{ fontSize: 12 }}>{'描述'}</Title>
-                                                    <div className={style.text}><Text ellipsis={{ tooltip: true }}>{item['description']}</Text></div>
-                                                </> : keys.includes('title') ? <>
-                                                    <Title level={5} style={{ fontSize: 12 }}>{'标题'}</Title>
-                                                    <div className={style.text}><Text ellipsis={{ tooltip: true }}>{item['title']}</Text></div>
-                                                </> : null}
-                                            </div>
-                                        }
-                                        return null
+                                    {Object.keys(value)?.map((key, index: number) => {
+                                        return <div key={index}>
+                                            {key === 'description' ? <>
+                                                <Title level={5} style={{ fontSize: 12 }}>{'文案'}</Title>
+                                                <div className={style.text}><Text ellipsis={{ tooltip: true }}>{value['description']?.toString()}</Text></div>
+                                            </> : key === 'title' ? <>
+                                                <Title level={5} style={{ fontSize: 12 }}>{'标题'}</Title>
+                                                <div className={style.text}><Text ellipsis={{ tooltip: true }}>{value['title']?.toString()}</Text></div>
+                                            </> : null}
+                                        </div>
                                     })}
                                 </div>
                             } else {

+ 3 - 2
src/pages/launchSystemV3/tencentAdPutIn/taskList/tableConfig.tsx

@@ -26,10 +26,11 @@ const columns = (geoLocationList: any, modelList: any, callback: (data: any, typ
             }
         },
         {
-            title: '任务状态',
+            title: '任务广告状态',
             dataIndex: 'status',
             key: 'status',
-            width: 78,
+            width: 100,
+            align: 'center',
             fixed: 'left',
             render(value) {
                 return { 0: <Badge status="processing" text={<span style={{ fontSize: 12 }} >执行中</span>} />, 1: <Badge style={{ fontSize: 12 }} status="error" text={<span style={{ fontSize: 12 }} >全部失败</span>} />, 2: <Badge style={{ fontSize: 12 }} status="warning" text={<span style={{ fontSize: 12 }} >部分成功</span>} />, 100: <Badge style={{ fontSize: 12 }} status="success" text={<span style={{ fontSize: 12 }} >全部成功</span>} /> }[value]

+ 12 - 0
src/pages/launchSystemV3/tencentAdPutIn/typings.d.ts

@@ -110,4 +110,16 @@ declare namespace PULLIN {
         pageSize: number,
         adgroupCreateLogId?: string
     }
+    type TextDtoProps = {
+        label: string,
+        value: string,
+        required: boolean,
+        restriction: {
+            textRestriction: {
+                minLength: number,
+                maxLength: number,
+                textPattern: string
+            }
+        }
+    }
 }