shenwu před 5 měsíci
rodič
revize
97aab0ac81

+ 29 - 15
src/models/global.tsx

@@ -34,7 +34,7 @@ export function reducer(state: State, action: Action) {
 export default (): {
   state: State;
   init: () => void;
-  getEnum: (enumName: string, type: "map" | "arr" | "obj") => any;
+  getEnum: (enumName: string, type: "map" | "arr" | "obj",stateEnum?:{success?:number,error?:number,default?:number,processing?:number,warning:number}) => any;
   getLabelAndClassList: (params?: { workDirection: number | string }) => Promise<boolean>;
 } => {
   const [state, dispatch] = useReducer(reducer, {});
@@ -106,24 +106,38 @@ export default (): {
     dispatch({ type: 'setAll', params: { ...state, labelList, categoryList } });
     return true;
   };
-  const getEnum = (enumName: string, type: "map" | "arr" | "obj") => {
+  /**
+   * @param enumName 枚举名称
+   * @param type 类型 "map" 通用在列表中选中值输出值会变成number | "arr" 数组类型返回 | "obj" 对象类型返回 再列表中选中输出值为string | "stateObj" 带状态徽标返回的对象
+   * @param stateEnum 类型  "stateObj" 时传入映射对象 {success?:number,error?:number,default?:number,processing?:number,warning:number} number为对应值展示什么状态
+   * */ 
+  const getEnum = (enumName: string, type: "map" | "arr" | "obj" | "stateObj",stateEnum?:{success?:number,error?:number,default?:number,processing?:number,warning:number}) => {
     let arr = state?.enumList?.[enumName]?.values
     // console.log("arr",enumName,arr)
     switch (type) {
-        case "map":
-            return new Map(arr?.map(({ value, description }: any) => [value, description]))
-        case "arr":
-            return arr?.map(({ value, description }: any) => ({ value, key: value, label: description, disabled: false }))
-        case "obj":
-            let obj: any = {}
-            if (arr) {
-                for (let item of arr) {
-                    obj[item?.value] = { text: item?.description, disabled: false }
-                }
-            }
-            return obj
+      case "map":
+        return new Map(arr?.map(({ value, description }: any) => [value, description]))
+      case "arr":
+        return arr?.map(({ value, description }: any) => ({ value, key: value, label: description, disabled: false }))
+      case "obj":
+        let obj: any = {}
+        if (arr) {
+          for (let item of arr) {
+            obj[item?.value] = { text: item?.description, disabled: false }
+          }
+        }
+        return obj
+      case "stateObj":
+        let stateObj: any = {}
+        if (arr && stateEnum) {
+          for (let item of arr) {
+            let state = stateEnum
+            obj[item?.value] = { text: item?.description, disabled: false }
+          }
+        }
+        return stateObj
     }
-}
+  }
   return {
     state,
     init,

+ 3 - 0
src/pages/distribution/book/longBook/index.tsx

@@ -62,6 +62,9 @@ const Page: React.FC = () => {
         return { ...item, bookId: editValues.bookId };
       });
     }
+    if (!values?.bookId) {
+      values.bookId = editValues.bookId
+    }
     BookInfoBookConfig.run(values).then((res) => {
       if (res.code === 200) {
         actionRef?.current?.reload();

+ 9 - 7
src/pages/distribution/miniprogram/weChatInfo/index.tsx

@@ -32,7 +32,7 @@ const Page: React.FC = () => {
   const formRef = useRef<ProFormInstance>();
   const assignRormRef = useRef<ProFormInstance>();
   const actionRef = useRef<ActionType>();
-  let { state ,getEnum} = useModel('global');
+  let { state, getEnum } = useModel('global');
   let [open, setOpen] = useState<any>(null); //新增
   let [assignOpen, setAssignOpen] = useState(false);
   let [editValues, setEditValues] = useState<any>({});
@@ -75,7 +75,9 @@ const Page: React.FC = () => {
       DistributorInfoList.run();
       setEditValues(params);
       setAssignOpen(true);
-      assignRormRef?.current?.setFieldsValue({ distributorId: params?.distributorInfo?.id });
+      setTimeout(()=>{
+        assignRormRef?.current?.setFieldsValue({ distributorId: params?.distributorInfo?.id, advertisingChannels: params?.advertisingChannels });
+      },50)
     },
     [WxAppInfoPageList],
   );
@@ -146,7 +148,7 @@ const Page: React.FC = () => {
           ];
         }}
         columns={columns(closeForm, del, stateUpdata, mimiAssign)}
-        // bordered
+      // bordered
       />
       {/* 新增修改 */}
       <BetaSchemaForm<DataItem>
@@ -164,7 +166,7 @@ const Page: React.FC = () => {
         rowProps={{ gutter: [10, 10] }}
         layout="horizontal"
         onFinish={submit}
-        columns={formConfig(state?.enumList, getWechatMchAll?.data?.data,appPageListApi?.data?.data)}
+        columns={formConfig(state?.enumList, getWechatMchAll?.data?.data, appPageListApi?.data?.data)}
         loading={WxAppInfoUpdate?.loading || WxAppInfo?.loading}
       />
       {/*指派  */}
@@ -186,7 +188,7 @@ const Page: React.FC = () => {
         layout="horizontal"
         onFinish={assign}
         modalProps={{
-          destroyOnClose:true
+          destroyOnClose: true
         }}
         columns={[
           {
@@ -218,8 +220,8 @@ const Page: React.FC = () => {
                 },
               ],
             },
-            valueType:'checkbox',
-            valueEnum:getEnum("ADVERTISING_CHANNEL",'map'),
+            valueType: 'checkbox',
+            valueEnum: getEnum("ADVERTISING_CHANNEL", 'map'),
           },
         ]}
         loading={WxAppInfoWxAppConfigAddOrEdit?.loading}

+ 14 - 1
src/pages/distribution/miniprogram/weChatInfo/tableConfig.tsx

@@ -1,13 +1,14 @@
 import { ProColumns } from '@ant-design/pro-components';
 import { Tag, Button, Popconfirm, Space, Switch, Tooltip } from 'antd';
 import Users from './user'
-import { InfoCircleOutlined } from '@ant-design/icons';
+import { useModel } from '@umijs/max';
 export const columns = (
   edit: (b: boolean, v: any) => void,
   del: (id: any) => void,
   stateUpdata: (id: any, ck: boolean) => void,
   mimiAssign: (b: any) => void,
 ): ProColumns<any>[] => {
+  let { getEnum } = useModel('global');
   return [
     {
       title: 'ID',
@@ -123,6 +124,18 @@ export const columns = (
         return <a>{b?.distributorInfo?.companyName}</a>;
       },
     },
+    {
+      title: '允许投放载体',
+      dataIndex: 'advertisingChannels',
+      width: 80,
+      align: 'center',
+      ellipsis: true,
+      hideInSearch: true,
+      render: (a, b: any) => {
+        let map = getEnum("ADVERTISING_CHANNEL", 'map')
+        return b?.advertisingChannels?.map((n: any) => <Tag  color={"processing"} bordered={false}> {map.get(n)} </Tag>)
+      },
+    },
     {
       title: '商户',
       dataIndex: 'mchName',

+ 1 - 1
src/pages/distribution/orderLog/short/tableConfig.tsx

@@ -100,7 +100,7 @@ export const columns = (): ProColumns<any>[] => {
       width: 170,
       align: 'center',
       ellipsis: true,
-      valueEnum:getEnum("ORDER_STATUS","map")
+      valueEnum:getEnum("ORDER_STATUS","arr")
     },
     {
       title: '支付场景',