فهرست منبع

feat(组件): 邮件模板

tangning 2 سال پیش
والد
کامیت
5525b4c856
3فایلهای تغییر یافته به همراه82 افزوده شده و 24 حذف شده
  1. 25 0
      src/api/operate/index.ts
  2. 55 22
      src/views/operate/components/scene/addModal.vue
  3. 2 2
      src/views/operate/sceneList.vue

+ 25 - 0
src/api/operate/index.ts

@@ -47,6 +47,8 @@ enum Api {
   sceneApplyList = '/service/manage/sceneApply/list',
   sceneApplyList = '/service/manage/sceneApply/list',
   sendEmail = '/service/manage/sceneApply/sendEmail',
   sendEmail = '/service/manage/sceneApply/sendEmail',
   sceneApplyHandle = '/service/manage/sceneApply/handle',
   sceneApplyHandle = '/service/manage/sceneApply/handle',
+  getInfoMail = '/service/manage/getInfo',
+  updateMail = '/service/manage/update',
   
   
 }
 }
 
 
@@ -149,6 +151,29 @@ export const NewsDetail = (params: PageParams) =>
     },
     },
   });
   });
 
 
+//邮件模板设置
+export const getInfoMail = (params: PageParams) =>
+  defHttp.get<ResultDetail>({
+    url: Api.getInfoMail,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
+//邮件模板设置
+export const updateMail = (params: PageParams) =>
+  defHttp.post<ResultDetail>({
+    url: Api.updateMail,
+    params: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 //新闻管理/修改是否发布
 //新闻管理/修改是否发布
 export const NewPublicNews = (params: PageParams) =>
 export const NewPublicNews = (params: PageParams) =>
   defHttp.post<RentListGetResultModel>({
   defHttp.post<RentListGetResultModel>({

+ 55 - 22
src/views/operate/components/scene/addModal.vue

@@ -2,14 +2,14 @@
   <BasicModal
   <BasicModal
     v-bind="$attrs"
     v-bind="$attrs"
     @register="register"
     @register="register"
-    title="处理申请"
+    title="邮件模板设置"
+    :width="800"
     @visible-change="handleVisibleChange"
     @visible-change="handleVisibleChange"
-    okText="完成处理"
     @cancel="resetFields"
     @cancel="resetFields"
     @ok="handleSubmit"
     @ok="handleSubmit"
   >
   >
     <div class="pt-2px pr-3px">
     <div class="pt-2px pr-3px">
-      <BasicForm @register="registerForm" :model="model" >
+      <BasicForm @register="registerForm">
         <template #text="{ model, field }">
         <template #text="{ model, field }">
           {{ model[field]  }}
           {{ model[field]  }}
         </template>
         </template>
@@ -23,10 +23,9 @@
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { uploadApi } from '/@/api/product/index';
   import { uploadApi } from '/@/api/product/index';
-  import { newAddNews, addOrUpdate } from '/@/api/operate'
+  import { getInfoMail, updateMail } from '/@/api/operate'
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { Tinymce } from '/@/components/Tinymce/index';
   import { Tinymce } from '/@/components/Tinymce/index';
-  import { sceneApplyHandle } from '/@/api/operate'
 
 
   const { t } = useI18n();
   const { t } = useI18n();
   export default defineComponent({
   export default defineComponent({
@@ -43,24 +42,49 @@
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const schemas: FormSchema[] = [
       const schemas: FormSchema[] = [
         {
         {
-          field: 'id',
+          field: 'subject',
           component: 'Input',
           component: 'Input',
-          show:false,
-          label: 'id',
-          required: false,
+          label: '邮件主题',
+          required: true,
+          colProps: {
+            span: 22,
+          },
+        },
+        {
+          field: 'msg',
+          label: '新闻内容',
+          component: 'Input',
+          required: true,
+          colProps: {
+            span: 22,
+          },
+          render: ({ model, field }) => {
+            return h(Tinymce, {
+              value: model[field],
+              maxlength: 200,
+              onChange: (value: string) => {
+                model[field] = value;
+              },
+              showImageUpload: true,
+            });
+          },
         },{
         },{
-            field: 'noteContent',
-            component: 'InputTextArea',
+            field: 'sendMail',
+            component: 'Input',
             required: true,
             required: true,
-            label: '备注',
-            componentProps: {
-              maxLength: 200,
-              placeholder: '请备注处理结果',
+            label: '发件人邮箱',
+            colProps: {
+              span: 22,
             },
             },
+        },{
+            field: 'sendPassword',
+            component: 'Input',
+            label: '发件人授权码',
+            required: true,
             colProps: {
             colProps: {
               span: 22,
               span: 22,
             },
             },
-        },
+        }
       ];
       ];
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
@@ -72,13 +96,18 @@
       });
       });
       onMounted(() => {});
       onMounted(() => {});
       let addListFunc = () => {};
       let addListFunc = () => {};
-      const [register, { closeModal }] = useModalInner((data) => {
-        data && onDataReceive(data);
+      const [register, { closeModal }] = useModalInner(() => {
+        console.log('useModalInner')
+        onDataReceive();
       });
       });
-      async function onDataReceive(data) {
-        modelRef.value = data
+      async function onDataReceive() {
         resetFields();
         resetFields();
-        setFieldsValue(data);
+        const detail = await getInfoMail({mailTemplateId:2})
+        console.log('getInfoMail',detail)
+        setFieldsValue({
+          ...detail,
+          coverImageUrl:detail.coverImageUrl?[detail.coverImageUrl]:''
+        });
       }
       }
       function NewTypeChange(val){
       function NewTypeChange(val){
         console.log('NewTypeChange',val)
         console.log('NewTypeChange',val)
@@ -89,11 +118,15 @@
       } 
       } 
       const handleSubmit = async () => {
       const handleSubmit = async () => {
         const params = await validate();
         const params = await validate();
+        let apiUrl = updateMail
         const apiData = {
         const apiData = {
           ...params as any,
           ...params as any,
+          id:2,
+          coverImageUrl:params.coverImageUrl && params.coverImageUrl[0],
+          content:params.newType == 1?params.newsUrl:params.content
         }
         }
         try {
         try {
-          await sceneApplyHandle(apiData);
+          await apiUrl(apiData);
           closeModal();
           closeModal();
           resetFields();
           resetFields();
           createMessage.success(t('common.optSuccess'));
           createMessage.success(t('common.optSuccess'));

+ 2 - 2
src/views/operate/sceneList.vue

@@ -135,8 +135,9 @@
         reload();
         reload();
       }
       }
       function emailTemplate(){
       function emailTemplate(){
-        createMessage.warn('研发中....');
+        // createMessage.warn('研发中....');
         console.log('emailTemplate')
         console.log('emailTemplate')
+        openModal(true,{})
       }
       }
       async function handleWithdraw(record: Recordable) {
       async function handleWithdraw(record: Recordable) {
         createConfirm({
         createConfirm({
@@ -149,7 +150,6 @@
             createMessage.success(t('common.optSuccess'));
             createMessage.success(t('common.optSuccess'));
           },
           },
         });
         });
-        // openModal(true,record)
       }
       }
       return {
       return {
         registerTimeTable,
         registerTimeTable,