|
@@ -5,7 +5,7 @@ import style from '../index.less'
|
|
|
import New1Radio from "@/pages/launchSystemV3/components/New1Radio";
|
|
|
import { useUpdateEffect } from "ahooks";
|
|
|
import { QuestionCircleFilled } from "@ant-design/icons";
|
|
|
-import { txtLength } from "@/utils/utils";
|
|
|
+import { extractAndFilterBracketsContent, txtLength } from "@/utils/utils";
|
|
|
import TextAideInput from "@/pages/launchSystemV3/components/TextAideInput";
|
|
|
import styles from '../Material/index.less'
|
|
|
import SelectLabel from "./SelectLable"
|
|
@@ -19,7 +19,8 @@ import SelectBarrage from "./SelectBarrage";
|
|
|
const CreativeConversionAssistant: React.FC<{ automaticSiteEnabled?: boolean, putInType?: 'NOVEL' | 'GAME' }> = ({ automaticSiteEnabled, putInType }) => {
|
|
|
|
|
|
/**************************************/
|
|
|
- const { creativeComponents, form, isUpdate, setIsUpdate } = useContext(DispatchDynamic)!;
|
|
|
+ const { creativeComponents, form, isUpdate, setIsUpdate, adgroups } = useContext(DispatchDynamic)!;
|
|
|
+ const { siteSet } = adgroups
|
|
|
const textLinkShow = Form.useWatch('textLinkShow', form)
|
|
|
const actionButtonShow = Form.useWatch('actionButtonShow', form)
|
|
|
const showDataShow = Form.useWatch('showDataShow', form)
|
|
@@ -31,6 +32,7 @@ const CreativeConversionAssistant: React.FC<{ automaticSiteEnabled?: boolean, pu
|
|
|
const floatingZoneSwitch = Form.useWatch(['floatingZone', 'value', 'floatingZoneSwitch'], form)
|
|
|
const floatingZoneType = Form.useWatch(['floatingZone', 'value', 'floatingZoneType'], form)
|
|
|
const image = Form.useWatch(['floatingZone', 'value', 'image'], form)
|
|
|
+ const pageType = Form.useWatch(['jumpInfo', 'pageType'], form)
|
|
|
const creativeTemplateId = Form.useWatch('creativeTemplateId', form)
|
|
|
const cardType: string[] = Form.useWatch('cardType', form)
|
|
|
const [cardData, setCardData] = useState<{ label: string, value: string, disabled?: boolean }[]>([])
|
|
@@ -287,9 +289,9 @@ const CreativeConversionAssistant: React.FC<{ automaticSiteEnabled?: boolean, pu
|
|
|
const barrageContent = useMemo(() => {
|
|
|
let barrage = creativeComponents?.barrage;
|
|
|
if (barrage) {
|
|
|
- return <Form.Item
|
|
|
- name={'creativeBarrageDTOS'}
|
|
|
- style={{ marginTop: 16, marginBottom: 0 }}
|
|
|
+ return <Form.Item
|
|
|
+ name={'creativeBarrageDTOS'}
|
|
|
+ style={{ marginTop: 16, marginBottom: 0 }}
|
|
|
label={<strong> 弹幕{barrage.required ? '' : '(选填)'}</strong>}
|
|
|
rules={[
|
|
|
{
|
|
@@ -569,6 +571,38 @@ const CreativeConversionAssistant: React.FC<{ automaticSiteEnabled?: boolean, pu
|
|
|
return null
|
|
|
}, [creativeComponents?.floating_zone, floatingZoneSwitch, floatingZoneType, image])
|
|
|
|
|
|
+
|
|
|
+ /** 微信朋友首评论 */
|
|
|
+ const socialSkillContent = useMemo(() => {
|
|
|
+ if ((automaticSiteEnabled || siteSet.includes('SITE_SET_MOMENTS')) && ![717, 727].includes(creativeTemplateId)) {
|
|
|
+ const disabled = !["PAGE_TYPE_WECHAT_CHANNELS_PROFILE", "PAGE_TYPE_WECHAT_OFFICIAL_ACCOUNT_DETAIL"].includes(pageType)
|
|
|
+ return <Form.Item
|
|
|
+ name={['creativeFirstReplyDTO', 'text']}
|
|
|
+ label={<strong> 首评(选填)</strong>}
|
|
|
+ rules={[{
|
|
|
+ required: false, validator: (rule, value) => {
|
|
|
+ if (value) {
|
|
|
+ if (!value.match(RegExp("^[^\\<\\>\\&'\\\"\\x08\\x09\\x0A\\x0D\\\\]+$"))) {
|
|
|
+ return Promise.reject('请输入正确的首评')
|
|
|
+ } else if (txtLength(value) > 30) {
|
|
|
+ return Promise.reject('请输入正确的首评')
|
|
|
+ }
|
|
|
+ const result = extractAndFilterBracketsContent(value);
|
|
|
+ if (result.extracted.length > 1) {
|
|
|
+ return Promise.reject('表情数量不得超出: 1 个')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Promise.resolve()
|
|
|
+ }
|
|
|
+ }]}
|
|
|
+ help={disabled ? <span style={{ color: 'red' }}>只有【品牌形象】是公众号和视频号支持</span> : null}
|
|
|
+ >
|
|
|
+ <TextAideInput placeholder={'请输入首评'} disabled={disabled} style={{ width: 750 }} isShowAjax={false} maxTextLength={30} putInType={putInType} />
|
|
|
+ </Form.Item>
|
|
|
+ }
|
|
|
+ return null
|
|
|
+ }, [automaticSiteEnabled, siteSet, creativeTemplateId, pageType])
|
|
|
+
|
|
|
useEffect(() => {
|
|
|
let data = [
|
|
|
{ label: '不使用', value: 'not', disabled: false },
|
|
@@ -645,6 +679,7 @@ const CreativeConversionAssistant: React.FC<{ automaticSiteEnabled?: boolean, pu
|
|
|
{barrageContent}
|
|
|
{showDataContent}
|
|
|
{floatingZoneContent}
|
|
|
+ {socialSkillContent}
|
|
|
|
|
|
{/* 选择视频素材 */}
|
|
|
{(selectVideoVisible && selectCloudData) && <SelectCloudNew
|