Files
ss-crm-manage-web/src/views/Basic/WxRobot/Setting.vue

196 lines
5.6 KiB
Vue
Raw Normal View History

2024-12-03 17:14:00 +08:00
<template>
<div>
<el-table v-loading="loading" :data="tableList" border stripe>
<el-table-column v-for="col in columns" :prop="col.prop" :key="col.prop" :label="col.label" />
<el-table-column label="发送方式" min-width="150">
<template #default="{ row }">
<el-checkbox-group v-model="row.sendType" size="small" @change="rowChange(row)">
2024-12-11 16:28:31 +08:00
<el-checkbox label="微信"> 微信 </el-checkbox>
<el-checkbox label="微信群"> 微信群 </el-checkbox>
2024-12-03 17:14:00 +08:00
</el-checkbox-group>
</template>
</el-table-column>
<el-table-column label="微信群名称" min-width="150">
<template #default="{ row }">
2024-12-11 16:28:31 +08:00
<el-input
v-if="row.sendType.includes('微信群')"
v-model="row.wxGroup"
size="small"
clearable
@input="rowChange(row)"
/>
<span v-else>{{ row.wxGroup }}</span>
2024-12-03 17:14:00 +08:00
</template>
</el-table-column>
2024-12-04 17:38:39 +08:00
<el-table-column label="群二维码" width="90">
<template #default="{ row }">
<img :src="row.wxCode" width="80px" height="80px" alt="" />
</template>
</el-table-column>
2024-12-03 17:14:00 +08:00
<el-table-column label="操作" width="100">
<template #default="{ row }">
2024-12-11 16:28:31 +08:00
<!-- <div>
<el-button
v-if="row.sendType.includes('微信群')"
type="primary"
style="padding: 5px 0"
text
@click="row.edit = true"
>
2024-12-03 17:14:00 +08:00
修改群名称
</el-button>
2024-12-11 16:28:31 +08:00
</div> -->
2024-12-04 17:38:39 +08:00
<div v-if="['每日', '每月'].includes(row.sendFrequency)">
<el-button type="primary" style="padding: 5px 0" text @click="changeSendTime(row)">
2024-12-03 17:14:00 +08:00
修改发送时间
</el-button>
</div>
</template>
</el-table-column>
</el-table>
2024-12-04 17:38:39 +08:00
2024-12-11 16:28:31 +08:00
<Dialog
:title="`修改【${sendTimeInfo.messageName}】发送时间`"
v-model="showSendTime"
width="500px"
>
2024-12-04 17:38:39 +08:00
<el-text type="danger">
<span v-if="sendTimeInfo.sendFrequency == '每日'">
请按照时间格式输入多个时间以分割如09:0015:0018:00
</span>
<span v-else-if="sendTimeInfo.sendFrequency == '每月'">
请按照"日期-时间"格式输入多个日期以分割如26-18:0028-14:0030-15:0030-18:00
</span>
</el-text>
<el-input
type="textarea"
class="mt-20px mb-20px"
:autosize="{ minRows: 3 }"
v-model="sendTimeInfo.sendTime"
placeholder="请输入"
clearable
/>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitSendTime"> </el-button>
<el-button @click="showSendTime = false"> </el-button>
</template>
</Dialog>
2024-12-03 17:14:00 +08:00
</div>
</template>
<script setup name="WXSetting">
2024-12-11 16:28:31 +08:00
import * as WechatApi from '@/api/system/wechat'
2024-12-04 17:38:39 +08:00
const message = useMessage() // 消息弹窗
2024-12-03 17:14:00 +08:00
const loading = ref(false)
2024-12-11 16:28:31 +08:00
const tableList = ref([])
2024-12-03 17:14:00 +08:00
const columns = [
{
label: '消息名称',
2024-12-11 16:28:31 +08:00
prop: 'messageName'
2024-12-03 17:14:00 +08:00
},
{
label: '解释说明',
2024-12-11 16:28:31 +08:00
prop: 'description'
2024-12-03 17:14:00 +08:00
},
{
label: '发送频率',
prop: 'sendFrequency'
},
{
label: '发送时间',
prop: 'sendTime'
}
]
2024-12-11 16:28:31 +08:00
onMounted(() => {
getTableList()
})
async function getTableList() {
2024-12-03 17:14:00 +08:00
try {
2024-12-11 16:28:31 +08:00
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)
2024-12-03 17:14:00 +08:00
} finally {
}
}
2024-12-04 17:38:39 +08:00
const showSendTime = ref(false)
const sendTimeInfo = ref({})
function changeSendTime(row) {
showSendTime.value = true
2024-12-11 16:28:31 +08:00
sendTimeInfo.value = { ...row }
2024-12-04 17:38:39 +08:00
}
2024-12-11 16:28:31 +08:00
const formLoading = ref(false)
async function submitSendTime() {
2024-12-04 17:38:39 +08:00
// 校验时间是否有效
2024-12-11 16:28:31 +08:00
const arr = sendTimeInfo.value.sendTime ? sendTimeInfo.value.sendTime.split('、') : []
2024-12-04 17:38:39 +08:00
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 {
2024-12-11 16:28:31 +08:00
try {
formLoading.value = true
await WechatApi.updateWechatSendTime({
id: sendTimeInfo.value.id,
sendTime: arr.join('、')
})
message.success('修改成功!')
getTableList()
showSendTime.value = false
} finally {
formLoading.value = false
}
2024-12-04 17:38:39 +08:00
}
} 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]$/
2024-12-11 16:28:31 +08:00
if (arr.length > 0 && arr.some((it) => !reg.test(it))) {
2024-12-04 17:38:39 +08:00
message.error('请检查输入格式是否正确!!!')
return
} else {
2024-12-11 16:28:31 +08:00
try {
formLoading.value = true
await WechatApi.updateWechatSendTime({
id: sendTimeInfo.value.id,
sendTime: arr.join('、')
})
message.success('修改成功!')
getTableList()
showSendTime.value = false
} finally {
formLoading.value = false
}
2024-12-04 17:38:39 +08:00
}
}
}
2024-12-03 17:14:00 +08:00
</script>
<style lang="scss" scoped></style>