浏览代码

feat(组件): 经销商的页面编写

tangning 2 年之前
父节点
当前提交
2245a4c2cd
共有 4 个文件被更改,包括 95 次插入239 次删除
  1. 1 1
      src/api/dealer/index.ts
  2. 22 17
      src/views/dealer/account.vue
  3. 68 145
      src/views/dealer/components/financeModal.vue
  4. 4 76
      src/views/dealer/finance.vue

+ 1 - 1
src/api/dealer/index.ts

@@ -62,7 +62,7 @@ enum Api {
    },
  });
  export const checkUser = (params: PageParams) =>
- defHttp.post<Result>({
+ defHttp.get<Result>({
    url: Api.checkUserName,
    params: params,
    headers: {

+ 22 - 17
src/views/dealer/account.vue

@@ -4,7 +4,7 @@
       <BasicTable @register="registerTable">
         <template #toolbar>
           <a-button type="primary" @click="openModal(true, {language})" v-if="getCheckPerm('news-add')">
-            新增案例</a-button
+            新增经销商</a-button
           >
         </template>
         <template #action="{ record }">
@@ -12,21 +12,15 @@
             stopButtonPropagation
             :actions="[
               {
-                label: '撤回',
+                label: '权益设置',
                 //icon: 'icon-park-outline:folder-withdrawal-one',
-                ifShow: getCheckPerm('news-withdraw') && record.isPublic == 1,
+                ifShow: getCheckPerm('news-withdraw'),
                 onClick: handleWithdraw.bind(null, record),
               },
               {
-                label: '发布',
-                //icon: 'arcticons:efa-publish',
-                ifShow: getCheckPerm('news-publish') && record.isPublic == 0,
-                onClick: handlePublish.bind(null, record),
-              },
-              {
                 label: '编辑',
                 //icon: 'ep:edit',
-                ifShow: getCheckPerm('news-edit') && record.isPublic == 0,
+                ifShow: getCheckPerm('news-edit'),
                 onClick: handleEdit.bind(null, record),
               },
               {
@@ -41,6 +35,8 @@
       </BasicTable>
     </div>
     <addNewModal @register="register" @update="reload" />
+    <editNewModal @register="registerEdit" @update="reload" />
+    <financeModal @register="registerFinance" @update="reload" />
   </PageWrapper>
 </template>
 <script lang="ts">
@@ -61,6 +57,8 @@ import { useModal } from '/@/components/Modal';
 import { useI18n } from '/@/hooks/web/useI18n';
 import { useMessage } from '/@/hooks/web/useMessage';
 import addNewModal from './components/addModal.vue';
+import editNewModal from './components/editModal.vue';
+import financeModal from './components/financeModal.vue';
 import { usePermissionStore } from '/@/store/modules/permission';
 export default defineComponent({
   components: {
@@ -69,6 +67,8 @@ export default defineComponent({
     PageWrapper,
     TableImg,
     addNewModal,
+    editNewModal,
+    financeModal,
     [Descriptions.name]: Descriptions,
     [Descriptions.Item.name]: Descriptions.Item,
     [Tabs.name]: Tabs,
@@ -80,6 +80,8 @@ export default defineComponent({
     const permissionStore = usePermissionStore();
     const { getCheckPerm } = permissionStore;
     const [register, { openModal }] = useModal();
+    const [registerEdit, { openModal:openEditModal }] = useModal();
+    const [registerFinance, { openModal:openFinanceModal }] = useModal();
     const language = ref<string>('cn'); //未处理,0已处理(默认1)
     const columns: BasicColumn[] = [
       {
@@ -92,18 +94,18 @@ export default defineComponent({
         title: '联系人',
         dataIndex: 'nickName',
         ellipsis: true,
-        width: 120,
+        width: 250,
       },
       {
         title: '账号',
         ellipsis: true,
-        dataIndex: 'sysUserName',
+        dataIndex: 'userName',
         width: 120,
       },
       {
         title: '创建人',
         ellipsis: true,
-        dataIndex: 'userName',
+        dataIndex: 'sysUserName',
         width: 120,
       },
       {
@@ -187,12 +189,13 @@ export default defineComponent({
     }
     function handleEdit(record: Recordable) {
       console.log('点击了编辑', record);
-      openModal(true, {...record,language});
+      openEditModal(true, {...record,language});
     }
     async function handleWithdraw(record: Recordable) {
-      await casePublicApi({ id: record.id, isPublic: 0 });
-      createMessage.success(t('common.optSuccess'));
-      reload();
+      openFinanceModal(true, {...record});
+      // await casePublicApi({ id: record.id, isPublic: 0 });
+      // createMessage.success(t('common.optSuccess'));
+      // reload();
     }
     function changeTable(val: string) {
         language.value = val;
@@ -212,6 +215,8 @@ export default defineComponent({
       reload,
       language,
       register,
+      registerFinance,
+      registerEdit,
       openModal,
       getCheckPerm,
     };

+ 68 - 145
src/views/dealer/components/financeModal.vue

@@ -3,7 +3,7 @@
     v-bind="$attrs"
     @register="register"
     :title="title"
-    :width="1000"
+    :width="600"
     @visible-change="handleVisibleChange"
     @cancel="resetFields"
     @ok="handleSubmit"
@@ -22,10 +22,8 @@
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { uploadApi } from '/@/api/product/index';
-  import { newAddNews, NewsDetail, newUpdateNews } from '/@/api/operate'
+  import { agentNewUpdate } from '/@/api/dealer'
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { Tinymce } from '/@/components/Tinymce/index';
 
   const { t } = useI18n();
   export default defineComponent({
@@ -36,11 +34,13 @@
     emits: ['update', 'register'],
     setup(props, { emit }) {
       const modelRef = ref({});
-      const title = ref('新增新闻');
+      const title = ref('编辑经销商');
+      const preventAutoFill = ref(true);
       const fileFlow = reactive({
         coverImageUrl:''
       })
       const { createMessage } = useMessage();
+      const downTotalNum = ref(0)
       const schemas: FormSchema[] = [
         {
           field: 'id',
@@ -49,126 +49,46 @@
           label: 'id',
           required: false,
         },{
-          field: 'language',
-          component: 'Input',
-          show:false,
-          label: 'language',
-          defaultValue:'cn',
-          required: false,
-        },{
-            field: 'title',
-            component: 'Input',
-            required: true,
-            label: '新闻标题',
-            componentProps: {
-              maxlength: 50,
-            },
-            colProps: {
-              span: 22,
-            },
-        },{
-            field: 'source',
-            component: 'Input',
-            label: '新闻来源',
-            required: true,
-            componentProps: {
-              maxlength: 15,
-            },
-            colProps: {
-              span: 22,
-            },
-        },
-        {
-          field: 'coverImageUrl',
-          component: 'Upload',
-          label: '封面',
-          required: true,
-          rules: [{ required: true, message: t('common.uploadMessge') }],
-          // helpMessage: t('routes.corporation.uploadHelp'),
-          itemProps: {
-            validateTrigger: 'onBlur',
-          },
+          field: 'majorAddNum',
+          component: 'InputNumber',
+          label: '专业会员(年)剩余可售 0 个 新增',
+          defaultValue: 0,
           componentProps: {
-            api: uploadApi,
-            maxNumber: 1,
-            maxSize: 1,
-            accept: ['jpg'],
-            afterFetch: function (data) {
-              console.log('uploadApi',data)
-              fileFlow.coverImageUrl = data.url
-              return data;
-            },
+            maxlength: 50,
+            min:0,
           },
-
           colProps: {
             span: 22,
           },
-        },
-        {
-          field: 'newType',
-          label: '类型',
-          component: 'RadioButtonGroup',
-          required: true,
-          defaultValue: 2,
+        },{
+          field: 'highAddNum',
+          component: 'InputNumber',
+          label: '高级会员(年)剩余可售 0 个 新增',
+          defaultValue: 0,
+          ifShow:false,
           componentProps: {
-            onChange: NewTypeChange,
-            options: [
-              { label: '链接', value: 1 },
-              { label: '图文', value: 2 },
-            ],
+            maxlength: 50,
+            min:0,
           },
-        },{
-            field: 'newsUrl',
-            component: 'Input',
-            label: '新闻链接',
-            ifShow:false,
-            required: true,
-            colProps: {
-              span: 22,
-            },
-            componentProps: {
-              maxlength: 200,
-            },
-        },
-        {
-          field: 'content',
-          label: '新闻内容',
-          component: 'Input',
-          required: true,
           colProps: {
             span: 22,
           },
-          rules: [
-            {
-              required: true,
-              // @ts-ignore
-              validator: async (rule, value) => {
-                if (!value) {
-                  return Promise.reject('请输入新闻内容');
-                }
-                if (formatrichtext(value) > 10000) {
-                  /* eslint-disable-next-line */
-                  return Promise.reject('新闻内容不能超过10000');
-                }
-                return Promise.resolve();
-              },
-              trigger: 'change',
-            },
-          ],
-          render: ({ model, field }) => {
-            return h(Tinymce, {
-              value: model[field],
-              maxlength: 10000,
-              onChange: (value: string) => {
-                model[field] = value;
-              },
-              showImageUpload: true,
-            });
+        },{
+          field: 'downAddNum',
+          component: 'InputNumber',
+          label: '场景下载剩余可售 0 次 新增',
+          defaultValue: 0,
+          componentProps: {
+            maxlength: 50,
+            min:0,
+          },
+          colProps: {
+            span: 22,
           },
-        },
+        }
       ];
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
-        labelWidth: 120,
+        labelWidth: 250,
         schemas,
         showActionButtonGroup: false,
         actionColOptions: {
@@ -188,44 +108,47 @@
       }
       async function onDataReceive(data) {
         modelRef.value = data
-        resetFields();
-        NewTypeChange(data.newType)
-        if(data.id){
-          title.value = '编辑新闻'
-          const detail = await NewsDetail({id:data.id})
-          setFieldsValue({
-            ...detail,
-            newsUrl:detail.newType == 1?detail.content:'',
-            content:detail.newType != 1?detail.content:'',
-            coverImageUrl:detail.coverImageUrl?[detail.coverImageUrl]:''
-          });
-        }else{
-          title.value = '新增新闻'
-          setFieldsValue({
-            content:'',
-            ...data,
-            newType:2,
-          });
-        }
+        downTotalNum.value = data.downTotalNum
+        setFieldsValue({
+          id:data.id,
+          majorAddNum:0,
+          highAddNum:0,
+          downAddNum:0,
+        })
+        setTimeout(()=>{
+          updateSchema([{
+            field: 'majorAddNum',
+            label: `专业会员(年)剩余可售 ${data.majorAddNum || 0} 个 新增`,
+            componentProps:{
+              max:data.majorAddNum || 0,
+            }
+          },{
+            field: 'highAddNum',
+            label: `高级会员(年)剩余可售 ${data.highAddNum || 0} 个 新增`,
+            ifShow: data.highAddNum>0,
+            componentProps:{
+              max:data.highAddNum || 0,
+            }
+          },{
+            field: 'downAddNum',
+            label: `场景下载剩余可售 ${data.downAddNum || 0} 次 新增`,
+            componentProps:{
+              max:data.downAddNum || 0,
+            }
+          }])
+        },500)
       }
-      function NewTypeChange(val = 2){
-        console.log('NewTypeChange',val)
-        updateSchema([
-          { field: 'content', ifShow:val == 2,},
-          { field: 'newsUrl', ifShow:val != 2,},
-        ])
-      } 
       const handleSubmit = async () => {
         const params = await validate();
-        let apiUrl = title.value == '新增新闻'?newAddNews:newUpdateNews
-        console.log('validate',params)
+        console.log('次',params)
         const apiData = {
-          ...params as any,
-          coverImageUrl:params.coverImageUrl && params.coverImageUrl[0],
-          content:params.newType == 1?params.newsUrl:params.content
+          id:params.id,
+          majorAddNum:params.majorAddNum || 0,
+          highAddNum:params.highAddNum || 0,
+          downAddNum:(params.downAddNum || 0) + downTotalNum.value,
         }
         try {
-          await apiUrl(apiData);
+          await agentNewUpdate(apiData);
           closeModal();
           resetFields();
           createMessage.success(t('common.optSuccess'));
@@ -243,7 +166,7 @@
         registerForm,
         model: modelRef,
         fileFlow,
-        NewTypeChange,
+        preventAutoFill,
         handleVisibleChange,
         handleSubmit,
         addListFunc,

+ 4 - 76
src/views/dealer/finance.vue

@@ -62,42 +62,19 @@ export default defineComponent({
         width: 250,
       },
       {
-        title: '会员权益购买数量',
+        title: '专业会员(年)销售数量',
         dataIndex: 'typeId',
         ellipsis: true,
         width: 80,
-        customRender: ({ record }) => {
-          let obj = {
-            'smartCity':'智慧城市',
-            'museum':'博物馆',
-            'government':'刑侦消防',
-            'property':'房产营销',
-          }
-          return obj[record.typeId] || '智慧城市';
-        },
       },
       {
-        title: '结算金额(元)',
+        title: '高级会员(月)销售数量',
         ellipsis: true,
         dataIndex: 'sysUserName',
         width: 120,
       },
       {
-        title: '离线包下载购买数量',
-        dataIndex: 'createTime',
-        width: 150,
-        customRender: ({ record }) => {
-          return (
-            record.createTime &&
-            h(Time, {
-              value: record.createTime,
-              mode: 'datetime',
-            })
-          );
-        },
-      },
-      {
-        title: '结算金额(元)',
+        title: '场景下载销售数量',
         ellipsis: true,
         dataIndex: 'sort',
         width: 120,
@@ -109,7 +86,7 @@ export default defineComponent({
       schemas: [
         {
           field: 'publicTime',
-          label: t('routes.operate.releaseTime'),
+          label: '时间段',
           component: 'RangePicker',
           componentProps: {
             maxLength: 100,
@@ -122,49 +99,6 @@ export default defineComponent({
             xxl: 8,
           },
         },
-        {
-          field: 'title',
-          label: '案例标题',
-          component: 'Input',
-          colProps: {
-            xl: 5,
-            xxl: 5,
-          },
-        },
-        {
-          field: 'typeId',
-          label: '类型',
-          component: 'Select',
-          componentProps: {
-          placeholder: '请选择类型',
-          options: [
-            {
-              label: '智慧城市',
-              value: 'smartCity',
-              key: 'smartCity',
-            },
-            {
-              label: '博物馆',
-              value: 'museum',
-              key: 'museum',
-            },
-            {
-              label: '刑侦消防',
-              value: 'government',
-              key: 'government',
-            },
-            {
-              label: '房产营销',
-              value: 'property',
-              key: 'property',
-            },
-          ],
-        },
-          colProps: {
-            xl: 5,
-            xxl: 5,
-          },
-        },
       ],
     };
     const [registerTable, { reload }] = useTable({
@@ -190,12 +124,6 @@ export default defineComponent({
         }
         return T;
       },
-      actionColumn: {
-        width: 220,
-        title: '操作',
-        dataIndex: 'action',
-        slots: { customRender: 'action' },
-      },
       canResize: true,
     });
     function hendleAddNew() {