UNPKG

create-iking-admin

Version:

金合技术中台脚手架

124 lines (117 loc) 3.27 kB
/* * @Author : wfl * @LastEditors : wfl * @description : * @updateInfo : * @Date : 2022-11-25 09:44:17 * @LastEditTime : 2023-10-13 17:48:15 */ import { _ } from 'iking-utils' import type { Ref } from 'vue' import useNewsStore from '@main/store/modules/news' import { msgApi } from '@main/api/modules/msg' export enum ESendType { '系统消息' = 'SYSTEM', '微信小程序' = 'WECHAT_MINI_SUBSCRIBE', '钉钉群机器人' = 'DING_TALK_ROBOT', '短信' = 'SMS' } export const sendTypeOption = [ { label: '系统消息', value: ESendType.系统消息 }, { label: '微信小程序', value: ESendType['微信小程序'] } ] export interface Tlist { businessKey: string businessName: string [key: string]: any } export const useNews = () => { const newsStore = useNewsStore() const tloading = ref(false) const msgNoList: Ref<any[]> = ref([]) const tempForm = ref(_.cloneDeep(newsStore.templateForm)) const businessType: Ref<Array<Tlist>> = ref([]) const { msgError, msgSuccess, msgBoxWarnAsync } = useMessage() // 根据模块获取编号 const getNoByTemplate = async (statu = true) => { tloading.value = true msgNoList.value = [] const { msg, success, data } = await msgApi.getMsgTemplateByBusiness(tempForm.value.businessKey) tloading.value = false if (!success) { msgError(msg) statu && (tempForm.value.messageTemplateKey = '') } else { msgNoList.value = data if (statu) { tempForm.value = _.cloneDeep(msgNoList.value?.[0] || {}) newsStore.setTemplateForm(tempForm.value) } msgNoList.value.forEach((item: any) => { item.label = item.messageTemplateKey item.value = item.messageTemplateKey }) } } /** * @description: 获取业务类型(模块列表) * @param {*} bool: 是否排除所有模板已配置的业务模块 * @return {*} */ const getBusiness = async () => { const { msg, success, data } = await msgApi.getBusiness({ excludeNonTemplateConfigured: true }) businessType.value = (success && data) ? data : [] newsStore.setBusinessType(_.cloneDeep(businessType.value)) businessType.value.unshift({ businessName: '全部', businessKey: '' }) !success && msgError(msg) { const { msg, success, data } = await msgApi.getBusiness({ excludeAllTemplateConfigured: true }) newsStore.setBusinessType(_.cloneDeep(data)) !success && msgError(msg) } } /** * @description: 根据模板编号获取消息渠道及配置信息 * @param {string} no * @return {*} */ const getMsgChannelByNo = async () => { const no = (tempForm.value as any).id const { msg, success, data } = await msgApi.getMsgChannelByNo(no) if (!success) { msgError(msg) return null } else { return data } } return { ESendType, tloading, newsStore, tempForm, businessType, msgNoList, getBusiness, msgError, msgSuccess, msgBoxWarnAsync, getNoByTemplate, getMsgChannelByNo } }