Browse Source

✨ feat(admin): 新增后台管理系统核心页面配置

- 实现【兑换码管理】页面配置,包含筛选、表格、表单、详情等完整功能
- 实现【广告管理】页面配置,支持图片上传和OSS链接处理
- 实现【批次管理】页面配置,集成批次分类选择器
- 实现【活动分类管理】页面配置,支持图片上传和分类管理
- 实现【领券日志管理】页面配置,提供完整的日志查看功能

所有页面均包含完整的CRUD接口配置和自定义渲染功能
yourname 4 tháng trước cách đây
mục cha
commit
8e030e9f72

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 40 - 0
docs/前台页面/\"兑换码管理\".json


+ 111 - 0
docs/前台页面/\"广告管理\".json

@@ -0,0 +1,111 @@
+{
+    "id": "route_FbrHHBZ4Gr",
+    "name": "广告管理",
+    "type": "route",
+    "props": {
+        "path": "home_ad/manage",
+        "devId": "route_FbrHHBZ4Gr",
+        "style": {},
+        "element": [
+            {
+                "id": "fComponent_dinwp64Sjc",
+                "name": "",
+                "type": "fComponent",
+                "props": {
+                    "attr": [
+                        {
+                            "attrId": "variable_xprakCZSMp",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    label:'关键字',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'广告位ID',\r\n    type:'input'\r\n  },\r\n]"
+                        },
+                        {
+                            "attrId": "variable_iBsTwHceQA",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "(\r\n  function () {\r\n    const imgNode = _F('fNode_mziHH7TnQQ').call;\r\n\r\n    return [\r\n      {\r\n        title: '序号',\r\n        dataIndex: '_index',\r\n        key: '_index',\r\n        fixed: 'left',\r\n      },\r\n      {\r\n        title: '广告位ID',\r\n        dataIndex: '广告位ID',\r\n        key: '广告位ID',\r\n        fixed: 'left',\r\n      },\r\n      // {\r\n      //   title: '标题',\r\n      //   dataIndex: '标题',\r\n      //   key: '标题',\r\n      //   fixed: 'left',\r\n      // },\r\n      // {\r\n      //   title: '排序',\r\n      //   dataIndex: '排序',\r\n      //   key: '排序',\r\n      //   fixed: 'left',\r\n      // },\r\n      {\r\n        title: '链接地址',\r\n        dataIndex: '链接地址',\r\n        key: '链接地址',\r\n        width: 100,\r\n        ellipsis: true,\r\n      },\r\n      {\r\n        title: '图片地址',\r\n        dataIndex: '图片地址',\r\n        key: '图片地址',\r\n        width: 150,\r\n        render: (text, record) => {\r\n          const ossUrl = _F('oss_func').callMethod('getOssUrl',text);\r\n          return imgNode(({ 图片地址: ossUrl }));\r\n        }\r\n      },\r\n      {\r\n        title: '更新时间',\r\n        dataIndex: '_update',\r\n        key: '_update',\r\n        render: (text, record) => {\r\n          //获取dayjs对象\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          // 获取当前日期\r\n          const now = dayjs(text * 1000);\r\n          // console.log(now.format('YYYY-MM-DD'));\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n      {\r\n        title: '操作',\r\n        dataIndex: '操作',\r\n        key: 'operate',\r\n      },\r\n\r\n    ];\r\n\r\n  }()\r\n)"
+                        },
+                        {
+                            "attrId": "variable_YNDnsMCrnc",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "({\r\n  搜索:'/v1/admin/ad/search',\r\n  新增:'/v1/admin/ad/add',\r\n  编辑:'/v1/admin/ad/edit',\r\n  删除:'/v1/admin/ad/del',\r\n})"
+                        },
+                        {
+                            "attrId": "variable_MJHtQRsnsR",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "true"
+                        },
+                        {
+                            "attrId": "variable_SbaMQEMnjM",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    label:'广告位ID',\r\n    name:'广告位ID',\r\n    type:'input'\r\n  },\r\n  // {\r\n  //   label:'标题',\r\n  //   name:'标题',\r\n  //   type:'input'\r\n  // },\r\n  {\r\n    label:'链接地址',\r\n    name:'链接地址',\r\n    type:'input',\r\n  },\r\n  {\r\n    label:'图片地址',\r\n    name:'图片地址',\r\n    type:'upload',\r\n    maxCount:1,\r\n    listType:'picture-card'\r\n  },\r\n  // {\r\n  //   label:'排序',\r\n  //   name:'排序',\r\n  //   type:'input'\r\n  // },\r\n]"
+                        },
+                        {
+                            "attrId": "variable_GPmKRdbzpm",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "true"
+                        },
+                        {
+                            "attrId": "variable_sSSxjAwSnQ",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "false"
+                        },
+                        {
+                            "attrId": "variable_s8TWaBnH7S",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "(\r\n  function () {\r\n    const imgNode = _F('fNode_zXFaQxpwNR').call;\r\n\r\n    return [\r\n      {\r\n        title: '序号',\r\n        dataIndex: '_index',\r\n      },\r\n      {\r\n        title: '广告位ID',\r\n        dataIndex: '广告位ID',\r\n      },\r\n      // {\r\n      //   title: '标题',\r\n      //   dataIndex: '标题',\r\n      // },\r\n      // {\r\n      //   title: '排序',\r\n      //   dataIndex: '排序',\r\n      // },\r\n      {\r\n        title: '链接地址',\r\n        dataIndex: '链接地址',\r\n        span: 2,\r\n      },\r\n      {\r\n        title: '图片地址',\r\n        dataIndex: '图片地址',\r\n        span: 2,\r\n        render: (text, record) => {\r\n          return imgNode(({图片地址:text}));\r\n        }\r\n      },\r\n      {\r\n        title: '创建时间',\r\n        dataIndex: '_create',\r\n        render: (text, record) => {\r\n          //获取dayjs对象\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          // 获取当前日期\r\n          const now = dayjs(text * 1000);\r\n          // console.log(now.format('YYYY-MM-DD'));\r\n          return now.format('YYYY-MM-DD hh:mm:ss');\r\n        }\r\n      },\r\n      {\r\n        title: '更新时间',\r\n        dataIndex: '_update',\r\n        render: (text, record) => {\r\n          //获取dayjs对象\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          // 获取当前日期\r\n          const now = dayjs(text * 1000);\r\n          // console.log(now.format('YYYY-MM-DD'));\r\n          return now.format('YYYY-MM-DD hh:mm:ss');\r\n        }\r\n      },\r\n\r\n    ];\r\n  }()\r\n)"
+                        }
+                    ],
+                    "devId": "fComponent_dinwp64Sjc",
+                    "moduleId": "module_KXT548Mji5"
+                }
+            },
+            {
+                "id": "fNode_zXFaQxpwNR",
+                "type": "fNode",
+                "props": {},
+                "children": [
+                    {
+                        "id": "image_jiC7KdBMdx",
+                        "type": "image",
+                        "props": {
+                            "srcJs": "_F('fNode_zXFaQxpwNR').callMethod('getItem')?.图片地址",
+                            "width": "200px",
+                            "srcType": "js",
+                            "previewJs": "true",
+                            "previewType": "js"
+                        },
+                        "children": []
+                    }
+                ]
+            },
+            {
+                "id": "fNode_mziHH7TnQQ",
+                "type": "fNode",
+                "props": {},
+                "children": [
+                    {
+                        "id": "image_WiyRCkFips",
+                        "name": "表格列图片",
+                        "type": "image",
+                        "props": {
+                            "srcJs": "_F('fNode_mziHH7TnQQ').callMethod('getItem')?.图片地址",
+                            "width": "100px",
+                            "srcType": "js",
+                            "previewJs": "true",
+                            "previewType": "js"
+                        },
+                        "children": []
+                    }
+                ]
+            }
+        ],
+        "pathNav": "/admin/home_ad/manage"
+    }
+}

+ 139 - 0
docs/前台页面/\"批次管理\".json

@@ -0,0 +1,139 @@
+{
+    "id": "route_wmaPxJxJmB",
+    "name": "批次管理",
+    "type": "route",
+    "props": {
+        "path": "stock/manage",
+        "devId": "route_wmaPxJxJmB",
+        "style": {},
+        "element": [
+            {
+                "id": "fComponent_zMEmQH8kBS",
+                "name": "批次管理页组件",
+                "type": "fComponent",
+                "props": {
+                    "attr": [
+                        {
+                            "attrId": "variable_xprakCZSMp",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    label:'批次分类ID',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'批次名称',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'批次号',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'是否上架',\r\n    type:'input'\r\n  },\r\n]"
+                        },
+                        {
+                            "attrId": "variable_iBsTwHceQA",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    title: '序号',\r\n    dataIndex: '_index',\r\n    key: '_index',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '分类名称',\r\n    dataIndex: '批次分类名称',\r\n    key: '批次分类名称',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次号',\r\n    dataIndex: '批次号',\r\n    key: '批次号',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次名称',\r\n    dataIndex: '批次名称',\r\n    key: '批次名称',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次简介',\r\n    dataIndex: '批次简介',\r\n    key: '批次简介',\r\n  },\r\n  {\r\n    title: '上架',\r\n    dataIndex: '是否上架',\r\n    key: '是否上架',\r\n    render: (text, record) => {\r\n      return text === 1?'已上架':'已下架'\r\n    }\r\n  },\r\n  {\r\n    title: '创建时间',\r\n    dataIndex: '_create',\r\n    key: '_create',\r\n    render: (text, record) => {\r\n      //获取dayjs对象\r\n      const dayjs = _F('date_func').callMethod('dayjs');\r\n      // 获取当前日期\r\n      const now = dayjs(text * 1000);\r\n      // console.log(now.format('YYYY-MM-DD'));\r\n      return now.format('YYYY-MM-DD hh:mm:ss');\r\n    }\r\n  },\r\n  {\r\n    title: '操作',\r\n    dataIndex: '操作',\r\n    key: 'operate',\r\n  },\r\n\r\n]"
+                        },
+                        {
+                            "attrId": "variable_SbaMQEMnjM",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "(\r\n  function () {\r\n    const stockPicker = _F('fComponent_Ye4eY73j27');\r\n\r\n    return [\r\n      {\r\n        label: '批次号',\r\n        name: '批次号',\r\n        type: 'input'\r\n      },\r\n      {\r\n        label: '批次名称',\r\n        name: '批次名称',\r\n        type: 'input',\r\n      },\r\n      {\r\n        label: '批次分类',\r\n        name: '批次分类ID',\r\n        type: 'modalPicker',\r\n        onClick: ({ event, form }) => {\r\n          const stockPickerEvent = stockPicker?.callMethod('jsFunc_JTH4SttH2b');\r\n          stockPickerEvent?.open();\r\n          stockPickerEvent?.onOk(({ selectedRows }) => {\r\n            if (Array.isArray(selectedRows) && selectedRows?.length > 0) {\r\n              form?.setFieldValue('批次分类ID', selectedRows[0]?._id);\r\n              form?.setFieldValue('批次分类名称', selectedRows[0]?.分类名称);\r\n            }\r\n          });\r\n        },\r\n        render: (form) => {\r\n          const 批次分类名称 = form?.getFieldValue('批次分类名称');\r\n          const 批次分类ID = form?.getFieldValue('批次分类ID');\r\n\r\n          return 批次分类名称?.toString() || 批次分类ID?.toString() || '请选择';\r\n        },\r\n      },\r\n      {\r\n        label: '制券商户号',\r\n        name: '制券商户号',\r\n        type: 'input'\r\n      },\r\n      {\r\n        label: '发券商户号',\r\n        name: '发券商户号',\r\n        type: 'input'\r\n      },\r\n      {\r\n        label: '是否上架',\r\n        name: '是否上架',\r\n        type: 'input'\r\n      },\r\n      {\r\n        label: '是否首页展示',\r\n        name: '是否首页展示',\r\n        type: 'input'\r\n      },\r\n      {\r\n        label: '批次简介',\r\n        name: '批次简介',\r\n        type: 'textarea'\r\n      },\r\n    ];\r\n  }()\r\n)"
+                        },
+                        {
+                            "attrId": "variable_s8TWaBnH7S",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "(\r\n  function () {\r\n\r\n    return [\r\n      {\r\n        title: '序号',\r\n        dataIndex: '_index',\r\n      },\r\n      {\r\n        title: '批次分类ID',\r\n        dataIndex: '批次分类ID',\r\n      },\r\n      {\r\n        title: '分类名称',\r\n        dataIndex: '批次分类名称',\r\n      },\r\n      {\r\n        title: '批次名称',\r\n        dataIndex: '批次名称',\r\n      },\r\n      {\r\n        title: '批次号',\r\n        dataIndex: '批次号',\r\n      },\r\n      {\r\n        title: '发券商户号',\r\n        dataIndex: '发券商户号',\r\n      },\r\n      {\r\n        title: '制券商户号',\r\n        dataIndex: '制券商户号',\r\n      },\r\n      {\r\n        title: '上架',\r\n        dataIndex: '是否上架',\r\n        key: '是否上架',\r\n        render: (text, record) => {\r\n          return text === 1 ? '已上架' : '已下架'\r\n        }\r\n      },\r\n      {\r\n        title: '首页展示',\r\n        dataIndex: '是否首页展示',\r\n        key: '是否首页展示',\r\n        render: (text, record) => {\r\n          return text === 1 ? '展示中' : '已隐藏'\r\n        }\r\n      },\r\n      {\r\n        title: '批次简介',\r\n        dataIndex: '批次简介',\r\n        span: 2,\r\n      },\r\n      {\r\n        title: '创建时间',\r\n        dataIndex: '_create',\r\n        render: (text) => {\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          const now = dayjs(text * 1000);\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n      {\r\n        title: '更新时间',\r\n        dataIndex: '_update',\r\n        render: (text) => {\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          const now = dayjs(text * 1000);\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n    ]\r\n  }()\r\n)"
+                        },
+                        {
+                            "attrId": "variable_YNDnsMCrnc",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "({\r\n  搜索:'/v1/admin/stock/search',\r\n  新增:'/v1/admin/stock/add',\r\n  编辑:'/v1/admin/stock/edit',\r\n  删除:'/v1/admin/stock/del',\r\n})"
+                        },
+                        {
+                            "attrId": "variable_MJHtQRsnsR",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "true"
+                        },
+                        {
+                            "attrId": "variable_GPmKRdbzpm",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "true"
+                        }
+                    ],
+                    "devId": "fComponent_xDDXPbCsKb",
+                    "moduleId": "module_KXT548Mji5"
+                }
+            },
+            {
+                "id": "group_E4Gd4Cct53",
+                "name": "页面弹窗",
+                "type": "group",
+                "props": {},
+                "children": [
+                    {
+                        "id": "fComponent_Ye4eY73j27",
+                        "name": "活动分类管理页组件",
+                        "type": "fComponent",
+                        "props": {
+                            "attr": [
+                                {
+                                    "attrId": "variable_xprakCZSMp",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "[\r\n  {\r\n    label:'批次分类',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'分类名称',\r\n    type:'input'\r\n  },\r\n]"
+                                },
+                                {
+                                    "attrId": "variable_iBsTwHceQA",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "[\r\n  {\r\n    title: '序号',\r\n    dataIndex: '_index',\r\n    key: '_index',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次分类',\r\n    dataIndex: '批次分类',\r\n    key: '批次分类',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '分类名称',\r\n    dataIndex: '分类名称',\r\n    key: '分类名称',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '最大领取次数',\r\n    dataIndex: '最大领取次数',\r\n    key: '最大领取次数',\r\n  },\r\n  {\r\n    title: '创建时间',\r\n    dataIndex: '_create',\r\n    key: '_create',\r\n    render: (text, record) => {\r\n      //获取dayjs对象\r\n      const dayjs = _F('date_func').callMethod('dayjs');\r\n      // 获取当前日期\r\n      const now = dayjs(text * 1000);\r\n      // console.log(now.format('YYYY-MM-DD'));\r\n      return now.format('YYYY-MM-DD hh:mm:ss');\r\n    }\r\n  },\r\n  // {\r\n  //   title: '操作',\r\n  //   dataIndex: '操作',\r\n  //   key: 'operate',\r\n  // },\r\n\r\n]"
+                                },
+                                {
+                                    "attrId": "variable_SbaMQEMnjM",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "[\r\n  {\r\n    label:'批次分类',\r\n    name:'批次分类',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'分类名称',\r\n    name:'分类名称',\r\n    type:'input',\r\n  },\r\n  {\r\n    label:'图片地址',\r\n    name:'图片地址',\r\n    type:'upload',\r\n    maxCount:3,\r\n    listType:'picture-card'\r\n  },\r\n  {\r\n    label:'最大领取次数',\r\n    name:'最大领取次数',\r\n    type:'input'\r\n  },\r\n]"
+                                },
+                                {
+                                    "attrId": "variable_s8TWaBnH7S",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "(\r\n  function () {\r\n    const imgNode = _F('fNode_2Q4TGsSPMx').call;\r\n\r\n    return [\r\n      {\r\n        title: '序号',\r\n        dataIndex: '_index',\r\n      },\r\n      {\r\n        title: '批次分类',\r\n        dataIndex: '批次分类',\r\n      },\r\n      {\r\n        title: '分类名称',\r\n        dataIndex: '分类名称',\r\n      },\r\n      {\r\n        title: '最大领取次数',\r\n        dataIndex: '最大领取次数',\r\n      },\r\n      {\r\n        title: '图片地址',\r\n        dataIndex: '图片地址',\r\n        span: 2,\r\n        render: (text, record) => {\r\n          try { \r\n            return JSON.parse(text)?.map(item => (imgNode(({ 图片地址: item}))));\r\n          } catch (e) {\r\n            return '';\r\n          }\r\n\r\n        }\r\n      },\r\n      {\r\n        title: '创建时间',\r\n        dataIndex: '_create',\r\n        render: (text) => {\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          const now = dayjs(text * 1000);\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n      {\r\n        title: '更新时间',\r\n        dataIndex: '_update',\r\n        render: (text) => {\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          const now = dayjs(text * 1000);\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n    ]\r\n  }()\r\n)"
+                                },
+                                {
+                                    "attrId": "variable_YNDnsMCrnc",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "({\r\n  搜索:'/v1/admin/stock_cate/search',\r\n  新增:'/v1/admin/stock_cate/add',\r\n  编辑:'/v1/admin/stock_cate/edit',\r\n  删除:'/v1/admin/stock_cate/del',\r\n})"
+                                },
+                                {
+                                    "attrId": "variable_MJHtQRsnsR",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "false"
+                                },
+                                {
+                                    "attrId": "variable_GPmKRdbzpm",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "false"
+                                },
+                                {
+                                    "attrId": "variable_E44FQ32E6A",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "true"
+                                },
+                                {
+                                    "attrId": "variable_GF4MPsc3k6",
+                                    "attrType": "js",
+                                    "attrValue": "",
+                                    "attrJsCode": "'radio'"
+                                }
+                            ],
+                            "devId": "fComponent_Ye4eY73j27",
+                            "moduleId": "module_KXT548Mji5"
+                        }
+                    }
+                ]
+            }
+        ],
+        "pathNav": "/admin/stock/manage"
+    }
+}

+ 85 - 0
docs/前台页面/\"活动分类管理\".json

@@ -0,0 +1,85 @@
+{
+    "id": "route_W7JYk2HXQ6",
+    "name": "活动分类管理",
+    "type": "route",
+    "props": {
+        "path": "stock_cate/manage",
+        "devId": "route_W7JYk2HXQ6",
+        "style": {},
+        "element": [
+            {
+                "id": "fComponent_xDDXPbCsKb",
+                "name": "活动分类管理页组件",
+                "type": "fComponent",
+                "props": {
+                    "attr": [
+                        {
+                            "attrId": "variable_xprakCZSMp",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    label:'批次分类',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'分类名称',\r\n    type:'input'\r\n  },\r\n]"
+                        },
+                        {
+                            "attrId": "variable_iBsTwHceQA",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    title: '序号',\r\n    dataIndex: '_index',\r\n    key: '_index',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: 'ID',\r\n    dataIndex: '_id',\r\n    key: '_id',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '分类名称',\r\n    dataIndex: '分类名称',\r\n    key: '分类名称',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '最大领取次数',\r\n    dataIndex: '最大领取次数',\r\n    key: '最大领取次数',\r\n  },\r\n  {\r\n    title: '创建时间',\r\n    dataIndex: '_create',\r\n    key: '_create',\r\n    render: (text, record) => {\r\n      //获取dayjs对象\r\n      const dayjs = _F('date_func').callMethod('dayjs');\r\n      // 获取当前日期\r\n      const now = dayjs(text * 1000);\r\n      // console.log(now.format('YYYY-MM-DD'));\r\n      return now.format('YYYY-MM-DD hh:mm:ss');\r\n    }\r\n  },\r\n  {\r\n    title: '操作',\r\n    dataIndex: '操作',\r\n    key: 'operate',\r\n  },\r\n\r\n]"
+                        },
+                        {
+                            "attrId": "variable_SbaMQEMnjM",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "[\r\n  {\r\n    label:'批次分类',\r\n    name:'批次分类',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'分类名称',\r\n    name:'分类名称',\r\n    type:'input',\r\n  },\r\n  {\r\n    label:'图片地址',\r\n    name:'图片地址',\r\n    type:'upload',\r\n    maxCount:3,\r\n    listType:'picture-card'\r\n  },\r\n  {\r\n    label:'最大领取次数',\r\n    name:'最大领取次数',\r\n    type:'input'\r\n  },\r\n]"
+                        },
+                        {
+                            "attrId": "variable_s8TWaBnH7S",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "(\r\n  function () {\r\n    const imgNode = _F('fNode_2Q4TGsSPMx').call;\r\n\r\n    return [\r\n      {\r\n        title: '序号',\r\n        dataIndex: '_index',\r\n      },\r\n      {\r\n        title: 'ID',\r\n        dataIndex: '_id',\r\n      },\r\n      {\r\n        title: '分类名称',\r\n        dataIndex: '分类名称',\r\n      },\r\n      {\r\n        title: '最大领取次数',\r\n        dataIndex: '最大领取次数',\r\n      },\r\n      {\r\n        title: '小程序活动页地址',\r\n        dataIndex: '_id',\r\n        span: 2,\r\n        render: (text, record) => {\r\n          return `/route/index?_=#/huodong2/detail/&sc_id=${text}`\r\n\r\n        }\r\n      },\r\n      {\r\n        title: '图片地址',\r\n        dataIndex: '图片地址',\r\n        span: 2,\r\n        render: (text, record) => {\r\n          try { \r\n            return JSON.parse(text)?.map(item => (imgNode(({ 图片地址: item}))));\r\n          } catch (e) {\r\n            return '';\r\n          }\r\n\r\n        }\r\n      },\r\n      {\r\n        title: '创建时间',\r\n        dataIndex: '_create',\r\n        render: (text) => {\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          const now = dayjs(text * 1000);\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n      {\r\n        title: '更新时间',\r\n        dataIndex: '_update',\r\n        render: (text) => {\r\n          const dayjs = _F('date_func').callMethod('dayjs');\r\n          const now = dayjs(text * 1000);\r\n          return now.format('YYYY-MM-DD');\r\n        }\r\n      },\r\n    ]\r\n  }()\r\n)"
+                        },
+                        {
+                            "attrId": "variable_YNDnsMCrnc",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "({\r\n  搜索:'/v1/admin/stock_cate/search',\r\n  新增:'/v1/admin/stock_cate/add',\r\n  编辑:'/v1/admin/stock_cate/edit',\r\n  删除:'/v1/admin/stock_cate/del',\r\n})"
+                        },
+                        {
+                            "attrId": "variable_MJHtQRsnsR",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "true"
+                        },
+                        {
+                            "attrId": "variable_GPmKRdbzpm",
+                            "attrType": "js",
+                            "attrValue": "",
+                            "attrJsCode": "true"
+                        }
+                    ],
+                    "devId": "fComponent_xDDXPbCsKb",
+                    "moduleId": "module_KXT548Mji5"
+                }
+            },
+            {
+                "id": "fNode_2Q4TGsSPMx",
+                "type": "fNode",
+                "props": {},
+                "children": [
+                    {
+                        "id": "image_jwxAQj86Aj",
+                        "type": "image",
+                        "props": {
+                            "srcJs": "_F('fNode_2Q4TGsSPMx').callMethod('getItem')?.图片地址",
+                            "width": "200px",
+                            "srcType": "js",
+                            "previewJs": "true",
+                            "previewType": "js"
+                        },
+                        "children": []
+                    }
+                ]
+            }
+        ],
+        "pathNav": "/admin/stock_cate/manage"
+    }
+}

+ 165 - 0
docs/前台页面/\"领券日志管理\".json

@@ -0,0 +1,165 @@
+{
+    "id": "route_6A72SX3ckY",
+    "name": "领券日志管理",
+    "type": "route",
+    "props": {
+        "path": "stock_log/manage",
+        "devId": "route_6A72SX3ckY",
+        "style": {},
+        "element": [
+            {
+                "id": "fComponent_zN4MC3XEQt",
+                "name": "领券日志管理页组件",
+                "type": "fComponent",
+                "props": {
+                    "attr": [
+                        {
+                            "attrId": "variable_3prRZK687N",
+                            "attrMemo": "",
+                            "attrName": "组件自定义标识",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_xprakCZSMp",
+                            "attrMemo": "<p style=\"line-height: 1;\">* 配置筛选表单项项属性值,以数组形式配置</p><p style=\"line-height: 1;\"> &nbsp; * &nbsp;标题:label, </p><p style=\"line-height: 1;\"> &nbsp; * &nbsp;字段名:name, </p><p style=\"line-height: 1;\"> &nbsp; &nbsp;* &nbsp;字段类型:type (</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; input:单行输入框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; number:数字输入框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; textarea:多行输入框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; select:下拉选择框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; richtext:富文本输入框,</p><p style=\"line-height: 1;\"><span style=\"color: rgb(96, 139, 78);\"> &nbsp; &nbsp; &nbsp; &nbsp; </span>date:开始结束日期时间,(</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;range: false,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;showTime: &nbsp;false,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;custom:自定义节点</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp;),</p><p style=\"line-height: 1;\"> * &nbsp; &nbsp; &nbsp;自定义节点渲染函数(当前表单实例):render(form)</p><pre><code >[\n    {\n        label:'',\n        name:'',\n        type:'',\n        render:(form)=&gt;{}\n    }\n]</code></pre><p><br></p>",
+                            "attrName": "筛选表单配置",
+                            "attrType": "js",
+                            "attrJsCode": "[\r\n  {\r\n    label:'关键字',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'兑换码',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'批次分类名称',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'批次名称',\r\n    type:'input'\r\n  },\r\n  {\r\n    label:'批次号',\r\n    type:'input'\r\n  },\r\n]"
+                        },
+                        {
+                            "attrId": "variable_iBsTwHceQA",
+                            "attrMemo": "<p>配置表格的列属性值,以数组形式配置</p><p> * &nbsp; &nbsp; &nbsp;列标题:title, </p><p> * &nbsp; &nbsp; &nbsp;列字段名:dataIndex, </p><p> * &nbsp; &nbsp; &nbsp;列唯一标识:key,</p><p> * &nbsp; &nbsp; &nbsp;列自定义渲染函数(当前值,行数据):render(text,record)</p><pre><code >[\n    {\n        title:'',\n        dataIndex:'',\n        key:'',\n        render:(text,recode)=&gt;{}\n    }\n]</code></pre><p><br></p>",
+                            "attrName": "表格列配置",
+                            "attrType": "js",
+                            "attrJsCode": "[\r\n  {\r\n    title: '序号',\r\n    dataIndex: '_index',\r\n    key: '_index',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '兑换码',\r\n    dataIndex: '兑换码',\r\n    key: '兑换码',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次分类名称',\r\n    dataIndex: '批次分类名称',\r\n    key: '批次分类名称',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次号',\r\n    dataIndex: '批次号',\r\n    key: '批次号',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '批次名称',\r\n    dataIndex: '批次名称',\r\n    key: '批次名称',\r\n    fixed: 'left',\r\n  },\r\n  {\r\n    title: '用户ID',\r\n    dataIndex: '用户ID',\r\n    key: '用户ID',\r\n  },\r\n  {\r\n    title: '领取结果',\r\n    dataIndex: '领取结果',\r\n    key: '领取结果',\r\n    render: (text, record) => {\r\n      return text === 1?'成功':'失败';\r\n    }\r\n  },\r\n  {\r\n    title: '失败原因',\r\n    dataIndex: '失败原因',\r\n    key: '失败原因',\r\n  },\r\n  {\r\n    title: '领取时间',\r\n    dataIndex: '_create',\r\n    key: '_create',\r\n    render: (text, record) => {\r\n      //获取dayjs对象\r\n      const dayjs = _F('date_func').callMethod('dayjs');\r\n      // 获取当前日期\r\n      const now = dayjs(text * 1000);\r\n      // console.log(now.format('YYYY-MM-DD'));\r\n      return now.format('YYYY-MM-DD hh:mm:ss');\r\n    }\r\n  },\r\n  // {\r\n  //   title: '操作',\r\n  //   dataIndex: '操作',\r\n  //   key: 'operate',\r\n  // },\r\n\r\n]"
+                        },
+                        {
+                            "attrId": "variable_SbaMQEMnjM",
+                            "attrMemo": "<p style=\"line-height: 1;\">* 配置筛选表单项项属性值,以数组形式配置</p><p style=\"line-height: 1;\"> &nbsp; * &nbsp;标题:label, </p><p style=\"line-height: 1;\"> &nbsp; * &nbsp;字段名:name, </p><p style=\"line-height: 1;\"> &nbsp; &nbsp;* &nbsp;字段类型:type (</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; input:单行输入框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; number:数字输入框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; textarea:多行输入框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; select:下拉选择框,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; richtext:富文本输入框,</p><p style=\"line-height: 1;\"><span style=\"color: rgb(96, 139, 78);\"> &nbsp; &nbsp; &nbsp; &nbsp; </span>date:开始结束日期时间,(</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;range: false,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;showTime: &nbsp;false,</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;custom:自定义节点</p><p style=\"line-height: 1;\"> &nbsp; &nbsp; &nbsp; &nbsp;),</p><p style=\"line-height: 1;\"> * &nbsp; &nbsp; &nbsp;自定义节点渲染函数(当前表单实例):render(form)</p><pre><code >[\n    {\n        label:'',\n        name:'',\n        type:'',\n        render:(form)=&gt;{}\n    }\n]</code></pre><p><br></p>",
+                            "attrName": "表单字段配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_s8TWaBnH7S",
+                            "attrMemo": "<p>配置详情的列属性值,以数组形式配置</p><p> * &nbsp; &nbsp; &nbsp;列标题:title, </p><p> * &nbsp; &nbsp; &nbsp;列字段名:dataIndex, </p><p> * &nbsp; &nbsp; &nbsp;列占位数:span(当span:2时,就是占2列)</p><p> * &nbsp; &nbsp; &nbsp;列自定义渲染函数(当前值,行数据):render(text,record)</p><pre><code >[\n    {\n        title:'',\n        dataIndex:'',\n        render:(text,recode)=&gt;{}\n    }\n]</code></pre><p><br></p>",
+                            "attrName": "详情字段配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_YNDnsMCrnc",
+                            "attrMemo": "<p>api路径配置,如搜索:\"/user/search\"</p><pre><code >{搜索:\"\",编辑:\"\",新增:\"\",删除:\"\"}</code></pre><p><br></p>",
+                            "attrName": "接口api配置",
+                            "attrType": "js",
+                            "attrJsCode": "({\r\n  搜索:'/v1/admin/stock_log/search',\r\n  新增:'/v1/admin/stock_log/add',\r\n  编辑:'/v1/admin/stock_log/edit',\r\n  删除:'/v1/admin/stock_log/del',\r\n})"
+                        },
+                        {
+                            "attrId": "variable_MJHtQRsnsR",
+                            "attrMemo": "<p>Boolean 布尔 &nbsp;false/true</p>",
+                            "attrName": "启用新增",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_GPmKRdbzpm",
+                            "attrMemo": "<p>Boolean 布尔 &nbsp;false/true</p>",
+                            "attrName": "启用编辑",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_sSSxjAwSnQ",
+                            "attrMemo": "<p>Boolean 布尔 &nbsp;false/true</p>",
+                            "attrName": "启用删除",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_E44FQ32E6A",
+                            "attrMemo": "",
+                            "attrName": "弹窗模式",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_GF4MPsc3k6",
+                            "attrMemo": "<p><br></p>",
+                            "attrName": "表格选择",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_mnxk3Xmkis",
+                            "attrMemo": "",
+                            "attrName": "表格滚动配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_idG4RZZNKt",
+                            "attrMemo": "",
+                            "attrName": "初始搜索条件配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_xCaQSMN5zY",
+                            "attrMemo": "",
+                            "attrName": "必需搜索条件配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_chd57mZHQx",
+                            "attrMemo": "",
+                            "attrName": "系统初始化完成",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_eeshRB4Gse",
+                            "attrMemo": "",
+                            "attrName": "初始化完成前显示内容",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_FGskc4bDff",
+                            "attrMemo": "",
+                            "attrName": "禁用筛选表单",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_EzEBwWT2w5",
+                            "attrMemo": "",
+                            "attrName": "表单弹窗宽度",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_mGbjt2s7xy",
+                            "attrMemo": "",
+                            "attrName": "导出条数",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_SEPjcnhXQi",
+                            "attrMemo": "",
+                            "attrName": "统计栏配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_hXSjmCzKce",
+                            "attrMemo": "",
+                            "attrName": "批量新增配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_mhBibjNmFZ",
+                            "attrMemo": "",
+                            "attrName": "扩展栏配置",
+                            "attrJsCode": ""
+                        },
+                        {
+                            "attrId": "variable_DW5pDyM2MY",
+                            "attrMemo": "",
+                            "attrName": "自定义上传方法回调",
+                            "attrJsCode": ""
+                        }
+                    ],
+                    "devId": "fComponent_zN4MC3XEQt",
+                    "moduleId": "module_KXT548Mji5"
+                }
+            }
+        ],
+        "pathNav": "/admin/stock_log/manage"
+    }
+}

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác