浏览代码

短信配置

yuanliang 1 年之前
父节点
当前提交
99285fae52

+ 9 - 13
src/views/message/message-config/index.tsx

@@ -1,19 +1,17 @@
 import {NTabPane, NTabs} from 'naive-ui'
-import {defineComponent, h, nextTick, onMounted, reactive, ref} from 'vue'
+import {defineComponent, nextTick, onMounted, reactive, ref} from 'vue'
 import {useRoute} from 'vue-router'
 import {getTabsCache, setTabsCaches} from '@/hooks/use-async'
-import {appKey, clientType, messageSenderMode} from '@/utils/constant'
-import {sysApplicationPage} from '@views/menu-manage/api'
-import MessageTemplateList from "@views/message/message-template/message-template-list";
-import {getMapValueByKey} from "@/utils/objectUtil";
-import MusicSheetKt from "@views/music-library/project-music-sheet/module/kt/music-sheet-kt";
 import SmsConfig from "@views/message/message-config/sms/sms-config";
+import PushConfig from "@views/message/message-config/sms/push-config";
+import WechatConfig from "@views/message/message-config/sms/wechat-config";
+import EmailConfig from "@views/message/message-config/sms/email-config";
 
 export default defineComponent({
   name: 'message-config-index',
   setup() {
     const state = reactive({
-      tabName: 'SMS',
+      tabName: 'SMS' as 'SMS' | 'PUSH' | 'EMAIL' | 'WECHAT',
     })
     const tabsInstRef = ref()
     getTabsCache((val: any) => {
@@ -42,12 +40,10 @@ export default defineComponent({
                   v-model:value={state.tabName}
                   onUpdate:value={(val: any) => setTabs(val)}
               >
-                {Object.keys(messageSenderMode).map((app: any, index: number) => (
-                    <NTabPane name={app} tab={getMapValueByKey(app, new Map(Object.entries(messageSenderMode)))}>
-                      {/*{app == 'SMS' && (<SmsConfig/>)}*/}
-                      <SmsConfig/>
-                    </NTabPane>
-                ))}
+                <NTabPane name='SMS' tab='短信'><SmsConfig/></NTabPane>
+                <NTabPane name='PUSH' tab="推送"><PushConfig/></NTabPane>
+                <NTabPane name='WECHAT' tab="公众号"><WechatConfig/></NTabPane>
+                <NTabPane name='EMAIL' tab="邮件"><EmailConfig/></NTabPane>
               </NTabs>
             </div>
           </div>

+ 288 - 0
src/views/message/message-config/sms/email-config.tsx

@@ -0,0 +1,288 @@
+import {NButton, NDataTable, NFormItem, NInput, NModal, NPageHeader, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
+import {defineComponent, onMounted, reactive, ref} from 'vue'
+import {useRoute, useRouter} from 'vue-router'
+import {useTabsViewStore} from '@/store/modules/tabsView'
+import SaveForm from "@components/save-form";
+import Pagination from "@components/pagination";
+import {appSendConfigPage, smsConfigDetail} from "@views/music-library/api";
+import PushConfigEdit from "@views/message/message-config/sms/modal/push-config-edit";
+
+export default defineComponent({
+  name: 'email-config',
+  setup(props, ctx) {
+    const route = useRoute()
+    const router = useRouter()
+    const dialog = useDialog()
+    const message = useMessage()
+    const state = reactive({
+      loading: false,
+      appId: null as any,
+      pagination: {
+        page: 1,
+        rows: 10,
+        pageTotal: 0
+      },
+      searchForm: {
+        keyword: null, //关键字
+        status: null // 状态
+      },
+      name: null as any,
+      smsConfigId: null as any,
+      dataList: [],
+      showEdit: false,
+      editMode: 'add',
+      editRowData: {} as any,
+    })
+    const tabsViewStore = useTabsViewStore()
+    const gotoBack = () => {
+      tabsViewStore.closeCurrentTab(route)
+      router.push({
+        path: '/message/messageConfig'
+      })
+    }
+
+    onMounted(async () => {
+      state.smsConfigId = route.query.id;
+      console.log('1111111111', state.smsConfigId)
+      if (state.smsConfigId) {
+        const {data} = await smsConfigDetail(state.smsConfigId)
+        if (data) {
+          state.name = data.name
+        }
+        getList()
+      }
+    })
+
+    const saveForm = ref()
+    const onSearch = () => {
+      saveForm.value?.submit()
+    }
+    const onBtnReset = () => {
+      saveForm.value?.reset()
+    }
+
+    const onSubmit = () => {
+      state.pagination.page = 1
+      getList()
+    }
+
+    const getList = async () => {
+      if (!state.smsConfigId) {
+        return
+      }
+      try {
+        state.loading = true
+        const {data} = await appSendConfigPage({
+          ...state.pagination,
+          ...state.searchForm,
+        })
+        state.pagination.pageTotal = Number(data.total)
+        state.dataList = data.rows || []
+      } catch {
+      }
+      state.loading = false
+    }
+
+
+    const columns = (): any => {
+      return [
+        {
+          title: '编号',
+          key: 'id'
+        },
+        {
+          title: '平台名称',
+          key: 'name'
+        },
+        {
+          title: '应用',
+          key: 'name'
+        },
+        {
+          title: '客户端',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入地址',
+          key: 'accessUrl'
+        },
+        {
+          title: '离线保留时长',
+          key: 'accessUrl'
+        },
+        {
+          title: '推送环境',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入key',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入秘匙',
+          key: 'accessUrl'
+        },
+        {
+          title: 'Android拓展参数',
+          key: 'accessUrl'
+        },
+        {
+          title: '状态',
+          key: 'status'
+        },
+        // {
+        //   title: '操作',
+        //   key: 'operation',
+        //   fixed: 'right',
+        //   render(row: any) {
+        //     return (
+        //         <NSpace>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               onClick={() => {
+        //
+        //
+        //               }}
+        //           >
+        //             {row.status ? '停用' : '启用'}
+        //           </NButton>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               onClick={() => {
+        //                 state.showEdit = true
+        //                 state.editRowData = deepClone(row)
+        //                 state.editMode = 'edit'
+        //               }}
+        //           >
+        //             修改
+        //           </NButton>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               disabled={!!row.status}
+        //               onClick={() => {
+        //
+        //               }}
+        //           >
+        //             删除
+        //           </NButton>
+        //         </NSpace>
+        //     )
+        //   }
+        // }
+      ]
+    }
+
+    return () => (
+        <div class="system-menu-container">
+          <NPageHeader
+              on-back={() => gotoBack()}
+              title={state.name}
+          ></NPageHeader>
+          <div class={['section-container']}>
+            <div class="system-menu-container">
+              <SaveForm
+                  ref={saveForm}
+                  model={state.searchForm}
+                  onSubmit={onSubmit}
+                  saveKey="push-config-app"
+                  onSetModel={(val: any) => (state.searchForm = val)}
+              >
+                <NFormItem label="关键字" path="keyword">
+                  <NInput
+                      placeholder="应用编号/名称"
+                      v-model:value={state.searchForm.keyword}
+                      clearable
+                  />
+                </NFormItem>
+                <NFormItem label="状态" path="status">
+                  <NSelect
+                      v-model:value={state.searchForm.status}
+                      clearable
+                      options={
+                        [
+                          {
+                            label: '启用',
+                            value: 1
+                          },
+                          {
+                            label: '停用',
+                            value: 0
+                          }
+                        ] as any
+                      }
+                      placeholder="全部状态"
+                  />
+                </NFormItem>
+                <NFormItem>
+                  <NSpace>
+                    <NButton type="primary" onClick={onSearch}>
+                      搜索
+                    </NButton>
+                    <NButton type="default" onClick={onBtnReset}>
+                      重置
+                    </NButton>
+                  </NSpace>
+                </NFormItem>
+              </SaveForm>
+
+              <NSpace style={{paddingBottom: '12px'}}>
+                <NButton
+                    type="primary"
+                    onClick={() => {
+                      state.showEdit = true
+                      state.editMode = 'add'
+                    }}
+                >
+                  新增应用
+                </NButton>
+              </NSpace>
+
+              <div class={['section-container']}>
+                <NDataTable
+                    loading={state.loading}
+                    columns={columns()}
+                    data={state.dataList}
+                    rowKey={(row: any) => row.id}
+                    scrollX={'1400'}
+                ></NDataTable>
+
+                <Pagination
+                    v-model:page={state.pagination.page}
+                    v-model:pageSize={state.pagination.rows}
+                    v-model:pageTotal={state.pagination.pageTotal}
+                    onList={getList}
+                    sync
+                    saveKey="push-config-app"
+                ></Pagination>
+              </div>
+              <NModal
+                  blockScroll={true}
+                  v-model:show={state.showEdit}
+                  preset="dialog"
+                  showIcon={false}
+                  title={(state.editMode == 'add' ? '新增' : '编辑') + '短信平台'}
+                  style={{width: 'auto'}}
+              >
+                <PushConfigEdit
+                    editMode={state.editMode}
+                    rowData={state.editRowData}
+                    style={{width: '450'}}
+                    onClose={() => (state.showEdit = false)}
+                    onGetList={() => {
+                      state.pagination.page = 1
+                      getList()
+                    }}
+                />
+              </NModal>
+            </div>
+          </div>
+        </div>
+    )
+  }
+})

+ 250 - 0
src/views/message/message-config/sms/modal/push-config-edit.tsx

@@ -0,0 +1,250 @@
+import {defineComponent, onMounted, reactive, ref} from "vue";
+import {NButton, NForm, NFormItem, NFormItemGi, NGrid, NInput, NSelect, NSpace, useMessage} from "naive-ui";
+import {musicSheetApplicationExtendUpdate, smsConfigSave, smsConfigUpdate} from "@views/music-library/api";
+import {sysApplicationPage} from "@views/menu-manage/api";
+
+export default defineComponent({
+  name: 'push-config-edit',
+  props: {
+    editMode: {
+      type: String,
+      required: true
+    },
+    rowData: {
+      type: Object,
+      required: false
+    },
+  },
+  emits: ['close', 'getList'],
+  setup(props, {slots, attrs, emit}) {
+    const message = useMessage()
+    const btnLoading = ref(false)
+    const forms = reactive({
+      name: null, // 平台名称
+      accessAPP: null, // 接入应用
+      clientId: null, // 客户端
+      accessUrl: null, // 接入地址
+      pushEvn: null, // 推送环境
+      accessKey: null, // 接入key
+      accessSecret: null, // 接入密钥
+      extendData: null, // 拓展参数
+    })
+    const formsRef = ref()
+
+    const state = reactive({
+      rowData: null as any,
+      musicSheetCategories: [] as any,
+      appData:[] as any,
+    })
+
+    onMounted(async () => {
+      state.rowData = props.rowData
+      if (props.editMode == 'edit' && props.rowData) {
+        forms.name = state.rowData.platformName
+        forms.accessAPP = state.rowData.accessAPP
+        forms.clientId = state.rowData.clientId
+        forms.accessUrl = state.rowData.accessUrl
+        forms.pushEvn = state.rowData.pushEvn
+        forms.accessKey = state.rowData.accessKey
+        forms.accessSecret = state.rowData.accessSecret
+        forms.extendData = state.rowData.extendData
+      }
+
+      state.appData = []
+      const {data} = await sysApplicationPage({page: 1, rows: 999})
+      if (data && data.rows) {
+        data.rows.forEach((item: any) => {
+          state.appData.push({label: item.appName, value: item.id + ''})
+        })
+      }
+    })
+
+    const onSubmit = async () => {
+      formsRef.value.validate(async (error: any) => {
+        if (error) return false
+        btnLoading.value = true
+        try {
+          let res;
+          if (props.editMode == 'add') {
+            res = await smsConfigSave(
+                {
+                  ...forms,
+                }
+            ) as any;
+          } else {
+            res = await smsConfigUpdate(
+                {
+                  ...forms,
+                  id: state.rowData.id
+                }
+            ) as any;
+          }
+          if (res && res.code === 200) {
+            emit('close')
+            emit('getList')
+          }
+        } catch (error) {
+        }
+        btnLoading.value = false
+      })
+    }
+
+    return () => {
+      return (
+          <div style="background: #fff; padding-top: 12px">
+            <NForm
+                ref={formsRef}
+                labelPlacement="top"
+                model={forms}
+                label-placement="left"
+                label-width="100"
+            >
+              <NGrid cols={2}>
+                <NFormItemGi
+                    label="平台名称"
+                    path="name"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入平台名称'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.name}
+                      placeholder="请输入平台名称"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="接入应用"
+                    path="accessAPP"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入接入应用'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.accessAPP}
+                      placeholder="请输入接入应用"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="客户端"
+                    path="clientId"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请选择客户端'
+                      }
+                    ]}
+                >
+                  <NSelect
+                      v-model:value={forms.clientId}
+                      options={state.appData}
+                      placeholder="请选择客户端"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="接入地址"
+                    path="accessUrl"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入接入地址'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.accessUrl}
+                      placeholder="请输入接入地址"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="推送环境"
+                    path="pushEvn"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入推送环境'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.pushEvn}
+                      placeholder="请输入推送环境"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="接入key"
+                    path="accessKey"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入接入key'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.accessKey}
+                      placeholder="请输入接入key"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="接入密钥"
+                    path="accessSecret"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入接入密钥'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.accessSecret}
+                      placeholder="请输入接入密码"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
+                    label="拓展参数"
+                    path="extendData"
+                    rule={[
+                      {
+                        required: false,
+                        message: '请输入拓展参数'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.extendData}
+                      placeholder="请输入拓展参数"
+                      autosize={{minRows: 3}}
+                      type={'textarea'}
+                      clearable
+                  />
+                </NFormItemGi>
+              </NGrid>
+            </NForm>
+
+            <NSpace justify="end">
+              <NButton onClick={() => emit('close')}>取消</NButton>
+              <NButton type="primary" onClick={onSubmit}
+                       loading={btnLoading.value}
+                       disabled={btnLoading.value}
+              >
+                保存
+              </NButton>
+            </NSpace>
+          </div>
+      )
+    }
+  }
+})

+ 25 - 15
src/views/message/message-config/sms/modal/sms-config-app-edit.tsx

@@ -1,6 +1,7 @@
 import {defineComponent, onMounted, reactive, ref} from "vue";
-import {NButton, NForm, NFormItem, NFormItemGi, NGrid, NInput, NSpace, useMessage} from "naive-ui";
-import {musicSheetApplicationExtendUpdate, smsConfigSave, smsConfigUpdate} from "@views/music-library/api";
+import {NButton, NForm, NFormItem, NFormItemGi, NGrid, NInput, NSelect, NSpace, useDialog, useMessage} from "naive-ui";
+import {musicSheetApplicationExtendUpdate, smsConfigRemove, smsConfigSave, smsConfigStatus, smsConfigUpdate} from "@views/music-library/api";
+import {sysApplicationPage} from "@views/menu-manage/api";
 
 export default defineComponent({
   name: 'sms-config-app-edit',
@@ -9,18 +10,25 @@ export default defineComponent({
       type: String,
       required: true
     },
+    smsConfigId: {
+      type: Number,
+      required: true
+    },
     rowData: {
       type: Object,
       required: false
     },
+    appData: {
+      type: Array as any,
+      required: true
+    }
   },
   emits: ['close', 'getList'],
   setup(props, {slots, attrs, emit}) {
-    const message = useMessage()
     const btnLoading = ref(false)
     const forms = reactive({
-      appId: null,
-      autograph: null,
+      appKey: null as any,
+      sign: null,
     })
     const formsRef = ref()
 
@@ -32,8 +40,8 @@ export default defineComponent({
     onMounted(async () => {
       state.rowData = props.rowData
       if (props.editMode == 'edit' && props.rowData) {
-        forms.appId = state.rowData.appId
-        forms.autograph = state.rowData.autograph
+        forms.appKey = state.rowData.appKey
+        forms.sign = state.rowData.sign
       }
     })
 
@@ -47,6 +55,7 @@ export default defineComponent({
             res = await smsConfigSave(
                 {
                   ...forms,
+                  smsConfigId:props.smsConfigId
                 }
             ) as any;
           } else {
@@ -77,10 +86,10 @@ export default defineComponent({
                 label-placement="left"
                 label-width="100"
             >
-              <NGrid cols={2}>
+              <NGrid cols={1}>
                 <NFormItemGi
                     label="应用"
-                    path="appId"
+                    path="appKey"
                     rule={[
                       {
                         required: true,
@@ -88,15 +97,16 @@ export default defineComponent({
                       }
                     ]}
                 >
-                  <NInput
-                      v-model:value={forms.appId}
-                      placeholder="请输入平台名称"
-                      clearable
+                  <NSelect
+                      placeholder="请选择平台"
+                      v-model:value={forms.appKey}
+                      options={props.appData}
+                      filterable
                   />
                 </NFormItemGi>
                 <NFormItemGi
                     label="签名"
-                    path="autograph"
+                    path="sign"
                     rule={[
                       {
                         required: true,
@@ -105,7 +115,7 @@ export default defineComponent({
                     ]}
                 >
                   <NInput
-                      v-model:value={forms.autograph}
+                      v-model:value={forms.sign}
                       placeholder="请输入签名"
                       clearable
                   />

+ 22 - 4
src/views/message/message-config/sms/modal/sms-config-edit.tsx

@@ -20,6 +20,7 @@ export default defineComponent({
     const btnLoading = ref(false)
     const forms = reactive({
       name: null,
+      sender: null,
       accessUrl: null,
       account: null,
       password: null,
@@ -35,11 +36,12 @@ export default defineComponent({
     onMounted(async () => {
       state.rowData = props.rowData
       if (props.editMode == 'edit' && props.rowData) {
-        forms.name = state.rowData.platformName
+        forms.name = state.rowData.name
+        forms.sender = state.rowData.sender
         forms.accessUrl = state.rowData.accessUrl
-        forms.account = state.rowData.accessAccount
-        forms.password = state.rowData.accessPassword
-        forms.extendData = state.rowData.accessExtParam
+        forms.account = state.rowData.account
+        forms.password = state.rowData.password
+        forms.extendData = state.rowData.extendData
       }
     })
 
@@ -101,6 +103,22 @@ export default defineComponent({
                   />
                 </NFormItemGi>
                 <NFormItemGi
+                    label="平台标识"
+                    path="name"
+                    rule={[
+                      {
+                        required: true,
+                        message: '请输入平台标识'
+                      }
+                    ]}
+                >
+                  <NInput
+                      v-model:value={forms.name}
+                      placeholder="请输入平台标识"
+                      clearable
+                  />
+                </NFormItemGi>
+                <NFormItemGi
                     label="接入地址"
                     path="accessUrl"
                     rule={[

+ 288 - 0
src/views/message/message-config/sms/push-config.tsx

@@ -0,0 +1,288 @@
+import {NButton, NDataTable, NFormItem, NInput, NModal, NPageHeader, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
+import {defineComponent, onMounted, reactive, ref} from 'vue'
+import {useRoute, useRouter} from 'vue-router'
+import {useTabsViewStore} from '@/store/modules/tabsView'
+import SaveForm from "@components/save-form";
+import Pagination from "@components/pagination";
+import {appSendConfigPage, smsConfigDetail} from "@views/music-library/api";
+import PushConfigEdit from "@views/message/message-config/sms/modal/push-config-edit";
+
+export default defineComponent({
+  name: 'push-config',
+  setup(props, ctx) {
+    const route = useRoute()
+    const router = useRouter()
+    const dialog = useDialog()
+    const message = useMessage()
+    const state = reactive({
+      loading: false,
+      appId: null as any,
+      pagination: {
+        page: 1,
+        rows: 10,
+        pageTotal: 0
+      },
+      searchForm: {
+        keyword: null, //关键字
+        status: null // 状态
+      },
+      name: null as any,
+      smsConfigId: null as any,
+      dataList: [],
+      showEdit: false,
+      editMode: 'add',
+      editRowData: {} as any,
+    })
+    const tabsViewStore = useTabsViewStore()
+    const gotoBack = () => {
+      tabsViewStore.closeCurrentTab(route)
+      router.push({
+        path: '/message/messageConfig'
+      })
+    }
+
+    onMounted(async () => {
+      state.smsConfigId = route.query.id;
+      console.log('1111111111', state.smsConfigId)
+      if (state.smsConfigId) {
+        const {data} = await smsConfigDetail(state.smsConfigId)
+        if (data) {
+          state.name = data.name
+        }
+        getList()
+      }
+    })
+
+    const saveForm = ref()
+    const onSearch = () => {
+      saveForm.value?.submit()
+    }
+    const onBtnReset = () => {
+      saveForm.value?.reset()
+    }
+
+    const onSubmit = () => {
+      state.pagination.page = 1
+      getList()
+    }
+
+    const getList = async () => {
+      if (!state.smsConfigId) {
+        return
+      }
+      try {
+        state.loading = true
+        const {data} = await appSendConfigPage({
+          ...state.pagination,
+          ...state.searchForm,
+        })
+        state.pagination.pageTotal = Number(data.total)
+        state.dataList = data.rows || []
+      } catch {
+      }
+      state.loading = false
+    }
+
+
+    const columns = (): any => {
+      return [
+        {
+          title: '编号',
+          key: 'id'
+        },
+        {
+          title: '平台名称',
+          key: 'name'
+        },
+        {
+          title: '应用',
+          key: 'name'
+        },
+        {
+          title: '客户端',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入地址',
+          key: 'accessUrl'
+        },
+        {
+          title: '离线保留时长',
+          key: 'accessUrl'
+        },
+        {
+          title: '推送环境',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入key',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入秘匙',
+          key: 'accessUrl'
+        },
+        {
+          title: 'Android拓展参数',
+          key: 'accessUrl'
+        },
+        {
+          title: '状态',
+          key: 'status'
+        },
+        // {
+        //   title: '操作',
+        //   key: 'operation',
+        //   fixed: 'right',
+        //   render(row: any) {
+        //     return (
+        //         <NSpace>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               onClick={() => {
+        //
+        //
+        //               }}
+        //           >
+        //             {row.status ? '停用' : '启用'}
+        //           </NButton>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               onClick={() => {
+        //                 state.showEdit = true
+        //                 state.editRowData = deepClone(row)
+        //                 state.editMode = 'edit'
+        //               }}
+        //           >
+        //             修改
+        //           </NButton>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               disabled={!!row.status}
+        //               onClick={() => {
+        //
+        //               }}
+        //           >
+        //             删除
+        //           </NButton>
+        //         </NSpace>
+        //     )
+        //   }
+        // }
+      ]
+    }
+
+    return () => (
+        <div class="system-menu-container">
+          <NPageHeader
+              on-back={() => gotoBack()}
+              title={state.name}
+          ></NPageHeader>
+          <div class={['section-container']}>
+            <div class="system-menu-container">
+              <SaveForm
+                  ref={saveForm}
+                  model={state.searchForm}
+                  onSubmit={onSubmit}
+                  saveKey="push-config-app"
+                  onSetModel={(val: any) => (state.searchForm = val)}
+              >
+                <NFormItem label="关键字" path="keyword">
+                  <NInput
+                      placeholder="应用编号/名称"
+                      v-model:value={state.searchForm.keyword}
+                      clearable
+                  />
+                </NFormItem>
+                <NFormItem label="状态" path="status">
+                  <NSelect
+                      v-model:value={state.searchForm.status}
+                      clearable
+                      options={
+                        [
+                          {
+                            label: '启用',
+                            value: 1
+                          },
+                          {
+                            label: '停用',
+                            value: 0
+                          }
+                        ] as any
+                      }
+                      placeholder="全部状态"
+                  />
+                </NFormItem>
+                <NFormItem>
+                  <NSpace>
+                    <NButton type="primary" onClick={onSearch}>
+                      搜索
+                    </NButton>
+                    <NButton type="default" onClick={onBtnReset}>
+                      重置
+                    </NButton>
+                  </NSpace>
+                </NFormItem>
+              </SaveForm>
+
+              <NSpace style={{paddingBottom: '12px'}}>
+                <NButton
+                    type="primary"
+                    onClick={() => {
+                      state.showEdit = true
+                      state.editMode = 'add'
+                    }}
+                >
+                  新增应用
+                </NButton>
+              </NSpace>
+
+              <div class={['section-container']}>
+                <NDataTable
+                    loading={state.loading}
+                    columns={columns()}
+                    data={state.dataList}
+                    rowKey={(row: any) => row.id}
+                    scrollX={'1400'}
+                ></NDataTable>
+
+                <Pagination
+                    v-model:page={state.pagination.page}
+                    v-model:pageSize={state.pagination.rows}
+                    v-model:pageTotal={state.pagination.pageTotal}
+                    onList={getList}
+                    sync
+                    saveKey="push-config-app"
+                ></Pagination>
+              </div>
+              <NModal
+                  blockScroll={true}
+                  v-model:show={state.showEdit}
+                  preset="dialog"
+                  showIcon={false}
+                  title={(state.editMode == 'add' ? '新增' : '编辑') + '短信平台'}
+                  style={{width: 'auto'}}
+              >
+                <PushConfigEdit
+                    editMode={state.editMode}
+                    rowData={state.editRowData}
+                    style={{width: '450'}}
+                    onClose={() => (state.showEdit = false)}
+                    onGetList={() => {
+                      state.pagination.page = 1
+                      getList()
+                    }}
+                />
+              </NModal>
+            </div>
+          </div>
+        </div>
+    )
+  }
+})

+ 84 - 19
src/views/message/message-config/sms/sms-config-app.tsx

@@ -1,21 +1,21 @@
-import {NButton, NDataTable, NFormItem, NInput, NModal, NPageHeader, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
+import {NButton, NDataTable, NFormItem, NInput, NModal, NPageHeader, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
 import {defineComponent, onMounted, reactive, ref} from 'vue'
 import {useRoute, useRouter} from 'vue-router'
 import {useTabsViewStore} from '@/store/modules/tabsView'
 import SaveForm from "@components/save-form";
 import Pagination from "@components/pagination";
-import SmsConfigEdit from "@views/message/message-config/sms/modal/sms-config-edit";
-import {appSendConfigPage, smsConfigDetail} from "@views/music-library/api";
+import {smsAppConfigPage, smsAppConfigRemove, smsAppConfigStatus, smsConfigDetail, smsConfigRemove, smsConfigStatus} from "@views/music-library/api";
 import deepClone from "@/utils/deep.clone";
 import SmsConfigAppEdit from "@views/message/message-config/sms/modal/sms-config-app-edit";
+import {sysApplicationPage} from "@views/menu-manage/api";
 
 export default defineComponent({
   name: 'sms-config-app',
   setup(props, ctx) {
-    const route = useRoute()
-    const router = useRouter()
     const dialog = useDialog()
+    const route = useRoute()
     const message = useMessage()
+    const router = useRouter()
     const state = reactive({
       loading: false,
       appId: null as any,
@@ -34,6 +34,8 @@ export default defineComponent({
       showEdit: false,
       editMode: 'add',
       editRowData: {} as any,
+      appData: [] as any,
+      appMap: new Map(),
     })
     const tabsViewStore = useTabsViewStore()
     const gotoBack = () => {
@@ -44,15 +46,29 @@ export default defineComponent({
     }
 
     onMounted(async () => {
-      state.smsConfigId = route.query.id;
-      console.log('1111111111', state.smsConfigId)
-      if (state.smsConfigId) {
+      state.smsConfigId = route.query;
+      if (!state.smsConfigId) {
+        return
+      }
+      {
         const {data} = await smsConfigDetail(state.smsConfigId)
         if (data) {
           state.name = data.name
         }
-        getList()
       }
+
+      // 应用
+      {
+        state.appData = []
+        const {data} = await sysApplicationPage({page: 1, rows: 999})
+        if (data && data.rows) {
+          data.rows.forEach((item: any) => {
+            state.appData.push({label: item.appName, value: item.appKey})
+            state.appMap.set(item.appKey, item.appName);
+          })
+        }
+      }
+      getList()
     })
 
     const saveForm = ref()
@@ -74,9 +90,10 @@ export default defineComponent({
       }
       try {
         state.loading = true
-        const {data} = await appSendConfigPage({
+        const {data} = await smsAppConfigPage({
           ...state.pagination,
           ...state.searchForm,
+          sysConfigId: state.smsConfigId
         })
         state.pagination.pageTotal = Number(data.total)
         state.dataList = data.rows || []
@@ -86,6 +103,44 @@ export default defineComponent({
     }
 
 
+    const onChangeStatus = (row: any) => {
+      const statusStr = row.status ? '停用' : '启用'
+      dialog.warning({
+        title: '提示',
+        content: `是否${statusStr}?`,
+        positiveText: '确定',
+        negativeText: '取消',
+        onPositiveClick: async () => {
+          try {
+            await smsAppConfigStatus({
+              id: row.id,
+              status: !row.status
+            })
+            getList()
+            message.success(`${statusStr}成功`)
+          } catch {
+          }
+        }
+      })
+    }
+
+    const onRmove = (row: any): void => {
+      dialog.warning({
+        title: '提示',
+        content: `删除"${row.name}",是否继续?`,
+        positiveText: '确定',
+        negativeText: '取消',
+        onPositiveClick: async () => {
+          try {
+            await smsAppConfigRemove(row.id)
+            getList()
+            message.success('删除成功')
+          } catch {
+          }
+        }
+      })
+    }
+
     const columns = (): any => {
       return [
         {
@@ -94,15 +149,24 @@ export default defineComponent({
         },
         {
           title: '应用',
-          key: 'name'
+          key: 'appKey',
+          render(row: any) {
+            return (state.appMap.get(row.appKey)
+            )
+          }
         },
         {
           title: '签名',
-          key: 'accessUrl'
+          key: 'sign'
         },
         {
           title: '状态',
-          key: 'status'
+          key: 'status',
+          render(row: any) {
+            return (
+                <NTag type={row.status ? 'primary' : 'default'}>{row.status ? '启用' : '停用'}</NTag>
+            )
+          }
         },
         {
           title: '操作',
@@ -116,8 +180,7 @@ export default defineComponent({
                       size="small"
                       text
                       onClick={() => {
-
-
+                        onChangeStatus(row)
                       }}
                   >
                     {row.status ? '停用' : '启用'}
@@ -140,7 +203,7 @@ export default defineComponent({
                       text
                       disabled={!!row.status}
                       onClick={() => {
-
+                        onRmove(row.id)
                       }}
                   >
                     删除
@@ -164,7 +227,7 @@ export default defineComponent({
                   ref={saveForm}
                   model={state.searchForm}
                   onSubmit={onSubmit}
-                  saveKey="sms-config"
+                  saveKey="sms-config-app"
                   onSetModel={(val: any) => (state.searchForm = val)}
               >
                 <NFormItem label="关键字" path="keyword">
@@ -232,7 +295,7 @@ export default defineComponent({
                     v-model:pageTotal={state.pagination.pageTotal}
                     onList={getList}
                     sync
-                    saveKey="sms-config"
+                    saveKey="sms-config-app"
                 ></Pagination>
               </div>
               <NModal
@@ -246,7 +309,9 @@ export default defineComponent({
                 <SmsConfigAppEdit
                     editMode={state.editMode}
                     rowData={state.editRowData}
-                    style={{width: '700px'}}
+                    appData={state.appData}
+                    style={{width: '450'}}
+                    smsConfigId={state.smsConfigId}
                     onClose={() => (state.showEdit = false)}
                     onGetList={() => {
                       state.pagination.page = 1

+ 19 - 4
src/views/message/message-config/sms/sms-config.tsx

@@ -19,6 +19,8 @@ import MusicPreView from "@views/music-library/music-sheet/modal/musicPreView";
 import SmsConfigEdit from "@views/message/message-config/sms/modal/sms-config-edit";
 import deepClone from "@/utils/deep.clone";
 import {useRouter} from "vue-router";
+import TheTooltip from "@components/TheTooltip";
+import {getOwnerName} from "@views/music-library/musicUtil";
 
 export default defineComponent({
   name: 'sms-config',
@@ -78,6 +80,7 @@ export default defineComponent({
         })
         state.pagination.pageTotal = Number(data.total)
         state.dataList = data.rows || []
+        // state.dataList = []
       } catch {
       }
       state.loading = false
@@ -93,7 +96,7 @@ export default defineComponent({
         onPositiveClick: async () => {
           try {
             await smsConfigStatus({
-              ids: new Array(row.id),
+              id: row.id,
               status: !row.status
             })
             getList()
@@ -112,7 +115,7 @@ export default defineComponent({
         negativeText: '取消',
         onPositiveClick: async () => {
           try {
-            await smsConfigRemove({id: row.id})
+            await smsConfigRemove(row.id)
             getList()
             message.success('删除成功')
           } catch {
@@ -132,6 +135,10 @@ export default defineComponent({
           key: 'name'
         },
         {
+          title: '平台标识',
+          key: 'sender'
+        },
+        {
           title: '接入地址',
           key: 'accessUrl'
         },
@@ -145,11 +152,19 @@ export default defineComponent({
         },
         {
           title: '拓展参数',
-          key: 'extendData'
+          key: 'extendData',
+          render: (row: any) => {
+            return <TheTooltip content={row.extendData}/>
+          }
         },
         {
           title: '状态',
-          key: 'status'
+          key: 'status',
+          render(row: any) {
+            return (
+                <NTag type={row.status ? 'primary' : 'default'}>{row.status ? '启用' : '停用'}</NTag>
+            )
+          }
         },
         {
           title: '操作',

+ 288 - 0
src/views/message/message-config/sms/wechat-config.tsx

@@ -0,0 +1,288 @@
+import {NButton, NDataTable, NFormItem, NInput, NModal, NPageHeader, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
+import {defineComponent, onMounted, reactive, ref} from 'vue'
+import {useRoute, useRouter} from 'vue-router'
+import {useTabsViewStore} from '@/store/modules/tabsView'
+import SaveForm from "@components/save-form";
+import Pagination from "@components/pagination";
+import {appSendConfigPage, smsConfigDetail} from "@views/music-library/api";
+import PushConfigEdit from "@views/message/message-config/sms/modal/push-config-edit";
+
+export default defineComponent({
+  name: 'wechat-config',
+  setup(props, ctx) {
+    const route = useRoute()
+    const router = useRouter()
+    const dialog = useDialog()
+    const message = useMessage()
+    const state = reactive({
+      loading: false,
+      appId: null as any,
+      pagination: {
+        page: 1,
+        rows: 10,
+        pageTotal: 0
+      },
+      searchForm: {
+        keyword: null, //关键字
+        status: null // 状态
+      },
+      name: null as any,
+      smsConfigId: null as any,
+      dataList: [],
+      showEdit: false,
+      editMode: 'add',
+      editRowData: {} as any,
+    })
+    const tabsViewStore = useTabsViewStore()
+    const gotoBack = () => {
+      tabsViewStore.closeCurrentTab(route)
+      router.push({
+        path: '/message/messageConfig'
+      })
+    }
+
+    onMounted(async () => {
+      state.smsConfigId = route.query.id;
+      console.log('1111111111', state.smsConfigId)
+      if (state.smsConfigId) {
+        const {data} = await smsConfigDetail(state.smsConfigId)
+        if (data) {
+          state.name = data.name
+        }
+        getList()
+      }
+    })
+
+    const saveForm = ref()
+    const onSearch = () => {
+      saveForm.value?.submit()
+    }
+    const onBtnReset = () => {
+      saveForm.value?.reset()
+    }
+
+    const onSubmit = () => {
+      state.pagination.page = 1
+      getList()
+    }
+
+    const getList = async () => {
+      if (!state.smsConfigId) {
+        return
+      }
+      try {
+        state.loading = true
+        const {data} = await appSendConfigPage({
+          ...state.pagination,
+          ...state.searchForm,
+        })
+        state.pagination.pageTotal = Number(data.total)
+        state.dataList = data.rows || []
+      } catch {
+      }
+      state.loading = false
+    }
+
+
+    const columns = (): any => {
+      return [
+        {
+          title: '编号',
+          key: 'id'
+        },
+        {
+          title: '平台名称',
+          key: 'name'
+        },
+        {
+          title: '应用',
+          key: 'name'
+        },
+        {
+          title: '客户端',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入地址',
+          key: 'accessUrl'
+        },
+        {
+          title: '离线保留时长',
+          key: 'accessUrl'
+        },
+        {
+          title: '推送环境',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入key',
+          key: 'accessUrl'
+        },
+        {
+          title: '接入秘匙',
+          key: 'accessUrl'
+        },
+        {
+          title: 'Android拓展参数',
+          key: 'accessUrl'
+        },
+        {
+          title: '状态',
+          key: 'status'
+        },
+        // {
+        //   title: '操作',
+        //   key: 'operation',
+        //   fixed: 'right',
+        //   render(row: any) {
+        //     return (
+        //         <NSpace>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               onClick={() => {
+        //
+        //
+        //               }}
+        //           >
+        //             {row.status ? '停用' : '启用'}
+        //           </NButton>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               onClick={() => {
+        //                 state.showEdit = true
+        //                 state.editRowData = deepClone(row)
+        //                 state.editMode = 'edit'
+        //               }}
+        //           >
+        //             修改
+        //           </NButton>
+        //           <NButton
+        //               type="primary"
+        //               size="small"
+        //               text
+        //               disabled={!!row.status}
+        //               onClick={() => {
+        //
+        //               }}
+        //           >
+        //             删除
+        //           </NButton>
+        //         </NSpace>
+        //     )
+        //   }
+        // }
+      ]
+    }
+
+    return () => (
+        <div class="system-menu-container">
+          <NPageHeader
+              on-back={() => gotoBack()}
+              title={state.name}
+          ></NPageHeader>
+          <div class={['section-container']}>
+            <div class="system-menu-container">
+              <SaveForm
+                  ref={saveForm}
+                  model={state.searchForm}
+                  onSubmit={onSubmit}
+                  saveKey="push-config-app"
+                  onSetModel={(val: any) => (state.searchForm = val)}
+              >
+                <NFormItem label="关键字" path="keyword">
+                  <NInput
+                      placeholder="应用编号/名称"
+                      v-model:value={state.searchForm.keyword}
+                      clearable
+                  />
+                </NFormItem>
+                <NFormItem label="状态" path="status">
+                  <NSelect
+                      v-model:value={state.searchForm.status}
+                      clearable
+                      options={
+                        [
+                          {
+                            label: '启用',
+                            value: 1
+                          },
+                          {
+                            label: '停用',
+                            value: 0
+                          }
+                        ] as any
+                      }
+                      placeholder="全部状态"
+                  />
+                </NFormItem>
+                <NFormItem>
+                  <NSpace>
+                    <NButton type="primary" onClick={onSearch}>
+                      搜索
+                    </NButton>
+                    <NButton type="default" onClick={onBtnReset}>
+                      重置
+                    </NButton>
+                  </NSpace>
+                </NFormItem>
+              </SaveForm>
+
+              <NSpace style={{paddingBottom: '12px'}}>
+                <NButton
+                    type="primary"
+                    onClick={() => {
+                      state.showEdit = true
+                      state.editMode = 'add'
+                    }}
+                >
+                  新增应用
+                </NButton>
+              </NSpace>
+
+              <div class={['section-container']}>
+                <NDataTable
+                    loading={state.loading}
+                    columns={columns()}
+                    data={state.dataList}
+                    rowKey={(row: any) => row.id}
+                    scrollX={'1400'}
+                ></NDataTable>
+
+                <Pagination
+                    v-model:page={state.pagination.page}
+                    v-model:pageSize={state.pagination.rows}
+                    v-model:pageTotal={state.pagination.pageTotal}
+                    onList={getList}
+                    sync
+                    saveKey="push-config-app"
+                ></Pagination>
+              </div>
+              <NModal
+                  blockScroll={true}
+                  v-model:show={state.showEdit}
+                  preset="dialog"
+                  showIcon={false}
+                  title={(state.editMode == 'add' ? '新增' : '编辑') + '短信平台'}
+                  style={{width: 'auto'}}
+              >
+                <PushConfigEdit
+                    editMode={state.editMode}
+                    rowData={state.editRowData}
+                    style={{width: '450'}}
+                    onClose={() => (state.showEdit = false)}
+                    onGetList={() => {
+                      state.pagination.page = 1
+                      getList()
+                    }}
+                />
+              </NModal>
+            </div>
+          </div>
+        </div>
+    )
+  }
+})

+ 3 - 2
src/views/message/message-record/email-record.tsx

@@ -4,7 +4,7 @@ import {DataTableRowKey, NButton, NDataTable, NDatePicker, NDescriptions, NDescr
 import Pagination from '@components/pagination'
 import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
 import {appKey, clientType, messageSenderFunctionModule, messageSenderMode, musicSheetSourceType, musicSheetType} from '@/utils/constant'
-import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendStatus, sysMessageConfigPage} from '@views/music-library/api'
+import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendStatus, sysMessageConfigPage, sysMessagePage} from '@views/music-library/api'
 import {subjectPage, sysApplicationPage} from '@views/system-manage/api'
 import {filterTimes, getTimes} from "@/utils/dateUtil";
 import TheTooltip from "@components/TheTooltip";
@@ -66,10 +66,11 @@ export default defineComponent({
     const getList = async () => {
       try {
         state.loading = true
-        const {data} = await sysMessageConfigPage({
+        const {data} = await sysMessagePage({
           ...state.pagination,
           ...state.searchForm,
           appKey: props.appKey,
+          sendMode:'EMAIL',
         })
         state.pagination.pageTotal = Number(data.total)
         state.dataList = data.rows || []

+ 1 - 0
src/views/message/message-record/push-record.tsx

@@ -70,6 +70,7 @@ export default defineComponent({
           clientId: state.searchForm.clientId,
           model: state.searchForm.model,
           appKey: props.appKey,
+          sendMode:'PUSH',
           ...getTimes(state.searchForm.sendTime, ['sendTimeStart', 'sendTimeEnd']),
         })
         state.pagination.pageTotal = Number(data.total)

+ 3 - 2
src/views/message/message-record/sms-record.tsx

@@ -4,7 +4,7 @@ import {DataTableRowKey, NButton, NDataTable, NDatePicker, NFormItem, NInput, NS
 import Pagination from '@components/pagination'
 import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
 import {appKey, clientType, messageSenderFunctionModule, messageSenderMode} from '@/utils/constant'
-import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendStatus, sysMessageConfigPage} from '@views/music-library/api'
+import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendStatus, sysMessageConfigPage, sysMessagePage} from '@views/music-library/api'
 import {subjectPage, sysApplicationPage} from '@views/system-manage/api'
 import {filterTimes, getTimes} from "@/utils/dateUtil";
 
@@ -64,12 +64,13 @@ export default defineComponent({
     const getList = async () => {
       try {
         state.loading = true
-        const {data} = await sysMessageConfigPage({
+        const {data} = await sysMessagePage({
           ...state.pagination,
           description: state.searchForm.description,
           clientId: state.searchForm.clientId,
           model: state.searchForm.model,
           appKey: props.appKey,
+          sendMode:'SMS',
           ...getTimes(state.searchForm.sendTime, ['sendTimeStart', 'sendTimeEnd']),
         })
         state.pagination.pageTotal = Number(data.total)

+ 1 - 0
src/views/message/message-record/wechat-record.tsx

@@ -70,6 +70,7 @@ export default defineComponent({
           ...state.pagination,
           ...state.searchForm,
           appKey: props.appKey,
+          sendMode:'WECHAT',
         })
         state.pagination.pageTotal = Number(data.total)
         state.dataList = data.rows || []

+ 0 - 72
src/views/message/message-template/message-template-list.tsx

@@ -74,86 +74,14 @@ export default defineComponent({
         model: null,
         status: null
       },
-      subjectList: [],
       dataList: [] as any[],
-      musicSheetCategories: [],
-      showAddDialog: false,
-      showEditDialog: false,
-      userIdDisable: true,
-      userIdData: [] as any,
-      updateRow: {} as any, // 修改选择的行
-      applicationId: null, //应用ID
-      musicPreview: false,
-      musicScore: null as any,
-      useProjectData: [] as any // 适用项目行数据
     })
 
     onMounted(async () => {
-      state.loading = true
-      // 获取应用APP信息
-
-      try {
-        const {data} = await sysApplicationPage({page: 1, rows: 1, appKey: props.appKey})
-        const tempList = data.rows || []
-        if (!tempList || tempList.length == 0) {
-          state.loading = false
-          message.error('加载项目信息失败')
-          return
-        }
-        state.appId = tempList[0].id
-        state.applicationId = tempList[0].id
-      } catch {
-      }
-
-      // 加载声部
-
-      try {
-        const {data} = await subjectPage({page: 1, rows: 999})
-        const tempList = data.rows || []
-        tempList.forEach((item: any) => {
-          item.label = item.name
-          item.value = item.id + ''
-        })
-        state.subjectList = tempList
-      } catch {
-      }
-
-      //加载曲目分类列表
-
-      try {
-        const {data} = await musicSheetApplicationExtendCategoryList({
-          applicationIds: state.appId
-        })
-        if (data && data.length > 0) {
-          state.musicSheetCategories = data[0].musicSheetCategories
-        }
-      } catch {
-      }
-
       // 加载表格数据
-      initUseAppList()
       getList()
     })
 
-    const initUseAppList = async () => {
-      try {
-        const appKeys = Object.keys(appKey)
-        const {data} = await sysApplicationPage({page: 1, rows: 999})
-        const tempList = data.rows || []
-        state.useProjectData = []
-        const filter = tempList.filter((next: any) => {
-          return appKeys.includes(next.appKey)
-        })
-        filter.forEach((item: any) => {
-          state.useProjectData.push({
-            ...item,
-            label: item.appName,
-            value: item.id
-          })
-        })
-      } catch {
-      }
-    }
 
     const saveForm = ref()
 

+ 44 - 1
src/views/music-library/api.ts

@@ -403,7 +403,7 @@ export const smsConfigStatus = (params: object) => {
  */
 export const smsConfigRemove = (id: object) => {
   return request({
-    url: '/cbs-app/smsConfig/remove?' + id,
+    url: '/cbs-app/smsConfig/remove?id=' + id,
     method: 'post',
   } as any)
 }
@@ -419,6 +419,38 @@ export const smsConfigDetail = (id: object) => {
 }
 
 /**
+ * @description: 短信应用配置表分页
+ */
+export const smsAppConfigPage = (params: object) => {
+  return request({
+    url: '/cbs-app/smsAppConfig/page',
+    method: 'post',
+    data: params
+  } as any)
+}
+
+/**
+ * @description: 短信应用配置表删除
+ */
+export const smsAppConfigRemove = (id: object) => {
+  return request({
+    url: '/cbs-app/smsAppConfig/remove?id=' + id,
+    method: 'post',
+  } as any)
+}
+
+/**
+ * @description: 短信应用配置表修改状态
+ */
+export const smsAppConfigStatus = (params: object) => {
+  return request({
+    url: '/cbs-app/smsAppConfig/status',
+    method: 'post',
+    data: params
+  } as any)
+}
+
+/**
  * @description: app推送配置表分页
  */
 export const appSendConfigPage = (params: object) => {
@@ -427,4 +459,15 @@ export const appSendConfigPage = (params: object) => {
     method: 'post',
     data: params
   } as any)
+}
+
+/**
+ * @description: 消息记录
+ */
+export const sysMessagePage = (params: object) => {
+  return request({
+    url: '/cbs-app/sysMessage/page',
+    method: 'post',
+    data: params
+  } as any)
 }