diff --git a/src/api/system/wechat/index.js b/src/api/system/wechat/index.js new file mode 100644 index 0000000..eb4c01d --- /dev/null +++ b/src/api/system/wechat/index.js @@ -0,0 +1,23 @@ +import request from '@/config/axios' + +// 更新 +export const updateWechatConfig = (data) => { + return request.post({ url: '/admin-api/system/wx-robot-message-setting/save', data }) +} + +// 更新发送时间 +export const updateWechatSendTime = (data) => { + return request.put({ url: '/admin-api/system/wx-robot-message-setting/update-send-time', data }) +} +// 更新微信群 +export const updateWechatGroup = (data) => { + return request.put({ url: '/admin-api/system/wx-robot-message-setting/update-wx-group', data }) +} + +// 获得列表 +export const getWechatConfigList = (params) => { + return request.get({ + url: '/admin-api/system/wx-robot-message-setting/list', + params + }) +} diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index 348d8ae..fdd7af5 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -129,27 +129,27 @@ const remainingRouter: AppRouteRecordRaw[] = [ // } // ] // }, - { - path: '/Basic', - component: Layout, - name: 'Basic', - meta: { title: '菜单管理' }, - redirect: '/Basic/menu', - children: [ - { - path: 'menu', - component: () => import('@/views/Basic/Menu/index.vue'), - name: 'Menu', - meta: { - canTo: true, - hidden: true, - noTagsView: false, - icon: 'ep:user', - title: '菜单管理' - } - } - ] - }, + // { + // path: '/Basic', + // component: Layout, + // name: 'Basic', + // meta: { title: '菜单管理' }, + // redirect: '/Basic/menu', + // children: [ + // { + // path: 'menu', + // component: () => import('@/views/Basic/Menu/index.vue'), + // name: 'Menu', + // meta: { + // canTo: true, + // hidden: true, + // noTagsView: false, + // icon: 'ep:user', + // title: '菜单管理' + // } + // } + // ] + // }, { path: '/login', component: () => import('@/views/Login/Login.vue'), diff --git a/src/views/Basic/WxRobot/Setting.vue b/src/views/Basic/WxRobot/Setting.vue index 6f0fdf2..d1d3f1e 100644 --- a/src/views/Basic/WxRobot/Setting.vue +++ b/src/views/Basic/WxRobot/Setting.vue @@ -5,15 +5,21 @@ <el-table-column label="发送方式" min-width="150"> <template #default="{ row }"> <el-checkbox-group v-model="row.sendType" size="small" @change="rowChange(row)"> - <el-checkbox :label="1"> 微信 </el-checkbox> - <el-checkbox :label="2"> 微信群 </el-checkbox> + <el-checkbox label="微信"> 微信 </el-checkbox> + <el-checkbox label="微信群"> 微信群 </el-checkbox> </el-checkbox-group> </template> </el-table-column> <el-table-column label="微信群名称" min-width="150"> <template #default="{ row }"> - <span v-if="!row.edit">{{ row.wxGroup }}</span> - <el-input v-else v-model="row.wxGroup" size="small" clearable @blur="rowChange(row)" /> + <el-input + v-if="row.sendType.includes('微信群')" + v-model="row.wxGroup" + size="small" + clearable + @input="rowChange(row)" + /> + <span v-else>{{ row.wxGroup }}</span> </template> </el-table-column> <el-table-column label="群二维码" width="90"> @@ -23,11 +29,17 @@ </el-table-column> <el-table-column label="操作" width="100"> <template #default="{ row }"> - <div> - <el-button type="primary" style="padding: 5px 0" text @click="row.edit = true"> + <!-- <div> + <el-button + v-if="row.sendType.includes('微信群')" + type="primary" + style="padding: 5px 0" + text + @click="row.edit = true" + > 修改群名称 </el-button> - </div> + </div> --> <div v-if="['每日', '每月'].includes(row.sendFrequency)"> <el-button type="primary" style="padding: 5px 0" text @click="changeSendTime(row)"> 修改发送时间 @@ -37,7 +49,11 @@ </el-table-column> </el-table> - <Dialog :title="`修改【${sendTimeInfo.name}】发送时间`" v-model="showSendTime" width="500px"> + <Dialog + :title="`修改【${sendTimeInfo.messageName}】发送时间`" + v-model="showSendTime" + width="500px" + > <el-text type="danger"> <span v-if="sendTimeInfo.sendFrequency == '每日'"> 请按照时间格式输入,多个时间以“、”分割,如09:00、15:00、18:00 @@ -63,68 +79,20 @@ </template> <script setup name="WXSetting"> +import * as WechatApi from '@/api/system/wechat' + const message = useMessage() // 消息弹窗 const loading = ref(false) -const tableList = ref([ - { - name: '分配通知', - sendType: [], - sendFrequency: '每次', - sendTime: '触发时立刻发送', - remark: '线索分配给除本人之外的用户时,通知对方注意接收' - }, - { - name: '发货通知', - sendType: [], - sendFrequency: '每次', - sendTime: '触发时立刻发送', - remark: '攀尼下单后,点击发货,发送发货模板到微信/群' - }, - { - name: '审核失败通知', - sendType: [], - sendFrequency: '每次', - sendTime: '触发时立刻发送', - remark: 'crm中的回款、售后等审核失败,通知申请人' - }, - { - name: '喜报', - sendType: [], - sendFrequency: '每次', - sendTime: '触发时立刻发送', - remark: '销售成交登记时,发送喜报到微信/群', - wxGroup: '寻驾' - }, - { - name: '周业绩排名', - sendType: [], - sendFrequency: '每日', - sendTime: '10:00、15:00、18:00', - remark: '发送业绩排名到微信/群', - wxGroup: '爱顽熊' - }, - { - name: '月业绩排名', - sendType: [], - sendFrequency: '每月', - sendTime: '26-18:00、28-14:00、30-15:00、30-18:00', - remark: '发送业绩排名到微信/群' - } - // { - // name: '周报', - // sendType: [], - // sendFrequency: '触发时立刻发送' - // } -]) +const tableList = ref([]) const columns = [ { label: '消息名称', - prop: 'name' + prop: 'messageName' }, { label: '解释说明', - prop: 'remark' + prop: 'description' }, { label: '发送频率', @@ -136,11 +104,35 @@ const columns = [ } ] -async function rowChange(row) { +onMounted(() => { + getTableList() +}) + +async function getTableList() { try { - console.log(row) + loading.value = true + const list = await WechatApi.getWechatConfigList() + tableList.value = list.map((it) => ({ ...it, sendType: it.sendType || [] })) + } finally { + loading.value = false + } +} + +let timer = ref(null) +const lastId = ref('') +function rowChange(row) { + try { + lastId.value == row.id && clearTimeout(timer.value) + timer.value = setTimeout(async () => { + lastId.value = row.id + await WechatApi.updateWechatGroup({ + id: row.id, + sendType: row.sendType, + wxGroup: row.wxGroup + }) + // message.success('修改成功') + }, 1500) } finally { - row.edit = false } } @@ -148,28 +140,53 @@ const showSendTime = ref(false) const sendTimeInfo = ref({}) function changeSendTime(row) { showSendTime.value = true - sendTimeInfo.value = row + sendTimeInfo.value = { ...row } } -function submitSendTime() { +const formLoading = ref(false) + +async function submitSendTime() { // 校验时间是否有效 - const arr = sendTimeInfo.value.sendTime.split('、') + const arr = sendTimeInfo.value.sendTime ? sendTimeInfo.value.sendTime.split('、') : [] + if (sendTimeInfo.value.sendFrequency == '每日') { // 正则校验是否HH:MM if (arr.some((it) => !/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(it))) { message.error('请检查输入格式是否正确!!!') return } else { - message.success('校验成功!') + try { + formLoading.value = true + await WechatApi.updateWechatSendTime({ + id: sendTimeInfo.value.id, + sendTime: arr.join('、') + }) + message.success('修改成功!') + getTableList() + showSendTime.value = false + } finally { + formLoading.value = false + } } } else if (sendTimeInfo.value.sendFrequency == '每月') { // 正则校验是否【1-31】-HH:MM const reg = /^([1-9]|[1-2]\d|3[01])-([01]?[0-9]|2[0-3]):[0-5][0-9]$/ - if (arr.some((it) => !reg.test(it))) { + if (arr.length > 0 && arr.some((it) => !reg.test(it))) { message.error('请检查输入格式是否正确!!!') return } else { - message.success('校验成功!') + try { + formLoading.value = true + await WechatApi.updateWechatSendTime({ + id: sendTimeInfo.value.id, + sendTime: arr.join('、') + }) + message.success('修改成功!') + getTableList() + showSendTime.value = false + } finally { + formLoading.value = false + } } } } diff --git a/src/views/Kpi/Score/index.vue b/src/views/Kpi/Score/index.vue index 31392e4..7aded1e 100644 --- a/src/views/Kpi/Score/index.vue +++ b/src/views/Kpi/Score/index.vue @@ -173,8 +173,9 @@ async function getList() { } let timer = ref(null) +const lastId = ref('') function handleSave() { - clearTimeout(timer.value) + lastId.value == row.id && clearTimeout(timer.value) timer.value = setTimeout(() => { message.success('正在保存数据,请稍后') }, 2000)