Kaynağa Gözat

feat: 新增邮箱功能

lvkun 2 yıl önce
ebeveyn
işleme
c246d4b6b8
3 değiştirilmiş dosya ile 40 ekleme ve 12 silme
  1. 12 0
      src/api/iot/sys.ts
  2. 6 1
      src/controller/iot/sys.ts
  3. 22 11
      src/pages/Iot/sys/noticeway.vue

+ 12 - 0
src/api/iot/sys.ts

@@ -23,6 +23,18 @@ export const updateSysConf = (data: IOT.API.SYS.Sys) => {
   })
 }
 
+/**
+ * 新增账户配置
+ * @returns
+ */
+export const addSysConf = (data: IOT.API.SYS.Sys) => {
+  return request<string>({
+    url: '/sysConf',
+    method: 'POST',
+    data
+  })
+}
+
 /**
  * 查询通知方式列表
  * @returns

+ 6 - 1
src/controller/iot/sys.ts

@@ -1,4 +1,4 @@
-import { addNoticeMethod, delNotice, getNoticeById, getNoticeMethod, getSysConf, updateNoticeLabel, updateNoticeMethod, updateNoticeStaus, updateSysConf } from '@/api/iot/sys'
+import { addNoticeMethod, addSysConf, delNotice, getNoticeById, getNoticeMethod, getSysConf, updateNoticeLabel, updateNoticeMethod, updateNoticeStaus, updateSysConf } from '@/api/iot/sys'
 import { message } from 'ant-design-vue'
 
 export class SysController {
@@ -13,6 +13,11 @@ export class SysController {
     message.success('修改成功')
   }
 
+  static async addSysConf (data: IOT.API.SYS.Sys) {
+    await addSysConf(data)
+    message.success('新增成功')
+  }
+
   static async noticeMethodPage (params: any) {
     return await getNoticeMethod(params)
   }

+ 22 - 11
src/pages/Iot/sys/noticeway.vue

@@ -2,10 +2,16 @@
 <a-spin :spinning="state.loading" >
   <a-row :gutter="[16, 16]">
       <a-col span="6" >
-        <a-card title="邮箱配置">
+        <a-card
+          title="邮箱配置"
+
+        >
+        <template v-slot:extra >
+          <a-button type="primary" @click="openModal" >{{modelRef.id ? '修改邮箱' : '创建邮箱'}}</a-button>
+        </template>
           <a-row>
             <a-col  span="24" class="email" >
-            <a-form>
+            <a-form  v-if="modelRef.id" >
               <a-form-item label="邮件地址📧" >
                 {{ state.sys.mailConf?.host }}
               </a-form-item>
@@ -20,19 +26,18 @@
               </a-form-item>
             </a-form>
 
-            </a-col>
-            <a-col span="24" class="center" >
-              <a-button type="primary" @click="openModal" >修改邮箱</a-button>
+            <a-empty  v-else description="暂无邮箱信息" />
             </a-col>
           </a-row>
         </a-card>
+
       </a-col>
       <a-col span="18" >
       </a-col>
   </a-row>
 </a-spin>
   <modal-pro
-    label="修改邮箱"
+    :label="modalTitle"
     :open="state.visible"
     ok-text="确定"
     cancel-text="取消"
@@ -61,7 +66,7 @@
 
 <script lang="ts" setup >
 import { SysController } from '@/controller'
-import { onMounted, reactive } from 'vue'
+import { computed, onMounted, reactive } from 'vue'
 import { Form } from 'ant-design-vue'
 
 const state = reactive<{
@@ -74,7 +79,10 @@ const state = reactive<{
   loading: false
 })
 
+const modalTitle = computed(() => modelRef.id ? '修改邮箱' : '创建邮箱')
+
 const modelRef = reactive({
+  id: '',
   host: '',
   port: '',
   protocol: '',
@@ -94,10 +102,12 @@ const { resetFields, validate, validateInfos } = useForm(modelRef, reactive({
 
 const ok = () => {
   validate().then(async () => {
-    await SysController.updateSysConf({
-      ...state.sys,
-      mailConf: modelRef
-    })
+    if (modelRef.id) {
+      await SysController.updateSysConf({ ...state.sys, mailConf: modelRef })
+    } else {
+      await SysController.addSysConf({ ...state.sys, mailConf: modelRef })
+    }
+
     state.visible = false
     getLogo()
   })
@@ -112,6 +122,7 @@ const getLogo = async () => {
   const { data } = await SysController.sysConf()
   state.loading = false
   state.sys = data || { mailConf: {} }
+  modelRef.id = data ? data.id : ''
   resetFields(data || { mailConf: {} })
 }