From e21dd8e2494a47ff4702a321479aa6ae16cbb0fb Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Tue, 02 Apr 2024 15:17:21 +0800
Subject: [PATCH] 短信+议事导出
---
src/views/sms/smsRecord.vue | 448 +++++++++++++++++++++++--------------------------
src/views/sms/smsTemplate.vue | 18 +
src/views/article/components/deitDiscussion.vue | 17 -
3 files changed, 233 insertions(+), 250 deletions(-)
diff --git a/src/views/article/components/deitDiscussion.vue b/src/views/article/components/deitDiscussion.vue
index bb8fb6d..e30c9a1 100644
--- a/src/views/article/components/deitDiscussion.vue
+++ b/src/views/article/components/deitDiscussion.vue
@@ -423,15 +423,14 @@
...this.query
}
data = Qs.stringify(data)
- if (this.newData.type === 4) {
+ if (this.type == 0 && this.newData.articleType === 4) {
exportBlob(
- `/api/blade-userTopics/userTopics/exportDataIndex?${this.website.tokenHeader}=${getToken()}&` + data
- )
- .then(
- res => {
- downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
- NProgress.done()
- })
+ `/api/blade-userTopics/userTopics/exportDataIndex?${this.website.tokenHeader}=${getToken()}&` + data
+ ).then(
+ res => {
+ downloadXls(res.data, `投票统计${dateNow()}.xlsx`)
+ NProgress.done()
+ })
} else {
exportBlob(
`/api/blade-userTopics/userTopics/exportUser?${this.website.tokenHeader}=${getToken()}&` + data)
@@ -696,4 +695,4 @@
}
</script>
-<style lang="scss" scoped></style>
\ No newline at end of file
+<style lang="scss" scoped></style>
diff --git a/src/views/sms/smsRecord.vue b/src/views/sms/smsRecord.vue
index 1da0915..b7f6ee1 100644
--- a/src/views/sms/smsRecord.vue
+++ b/src/views/sms/smsRecord.vue
@@ -4,28 +4,8 @@
:before-open="beforeOpen" v-model="form" ref="crud" @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel"
@search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
- <template slot="menuLeft">
- <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.messageRecord_delete"
- @click="handleDelete">删 除
- </el-button>
- </template>
- <template slot-scope="{disabled,size}" slot="receiverForm">
- <div style="display: flex">
- <el-input :disabled="disabled" :size="size" v-model="form.receiver" placeholder="请选择接收人"></el-input>
-
- <div style="margin-left: 10px">
- <el-button type="primary" size="small" @click="showDialog">选择</el-button>
- </div>
- </div>
- </template>
</avue-crud>
-
-
-
- <DeptUserTable ref="deptUserTable" @selectPersonList="selectPersonList"></DeptUserTable>
-
-
</basic-container>
</template>
@@ -36,28 +16,20 @@
getDetail,
add,
update,
- remove,
- customizeSave
- } from "@/api/messageRecord/messageRecord";
+ remove
+ } from "@/api/resource/smsRecord"
import {
mapGetters
- } from "vuex";
- import {
- getDeptLazyTree,
- getDeptUserTree,
- getLazyList
- } from "@/api/system/dept";
- import DeptUserTable from "@/views/message/components/DeptUserTable.vue";
+ } from "vuex"
+ import func from "@/util/func"
export default {
- components: {
- DeptUserTable
- },
data() {
return {
form: {},
query: {},
loading: true,
+ box: false,
page: {
pageSize: 10,
currentPage: 1,
@@ -65,188 +37,182 @@
},
selectionList: [],
option: {
- dialogDirection: 'rtl',
- dialogType: 'drawer',
+ labelWidth: 96,
+ searchLabelWidth: 96,
+ searchShow: true,
+ searchMenuSpan: 3,
+ menuWidth: 350,
+ menu: false,
height: 'auto',
calcHeight: 30,
tip: false,
- searchShow: true,
- searchMenuSpan: 6,
border: true,
index: true,
viewBtn: true,
- dialogClickModal: false,
- editBtn: false,
- addBtnText: "消息发送",
- saveBtnText: "发送",
- delBtn: false,
selection: true,
+ dialogWidth: 880,
+ dialogClickModal: false,
column: [{
- label: "消息类型",
- prop: "type",
- type: "checkbox",
- dataType: "string",
- search: true,
- searchSpan: 4,
- searchLabelWidth: 96,
- row: true,
- dicUrl: "/api/blade-system/dict-biz/dictionary?code=messageType",
- props: {
- label: "dictValue",
- value: "dictKey",
- },
- rules: [{
- required: true,
- message: "请选择消息类型",
- trigger: "blur"
- }]
- },
- {
- label: "接收人",
- prop: "receiver",
- type: "select",
- formslot: true,
- disabled: true,
- hide: true,
+ // width: 100,
+ label: "电话号码",
+ prop: "phone",
span: 24,
- viewDisplay: false,
- rules: [{
- required: true,
- message: "请选择接收人",
- trigger: "blur"
- }]
- },
- {
- label: "接收人",
- prop: "userName",
+ align: "center",
+ slot: true,
addDisplay: false,
- },
- {
- label: "标题",
- prop: "title",
- type: "input",
- span: 24,
- rules: [{
- required: true,
- message: "请输入标题",
- trigger: "blur"
- }]
- },
- {
- label: "内容",
+ editDisplay: false,
+ viewDisplay: false,
+ }, {
+ label: "短信内容",
prop: "content",
- type: "textarea",
- minRow: 5,
span: 24,
+ width: 800,
+ searchSpan: 4,
+ align: "center",
+ search: true,
rules: [{
required: true,
- message: "请输入内容",
+ message: "请输入模版内容",
trigger: "blur"
}]
},
{
- label: "发送时间",
+ // width: 100,
+ label: "模版ID",
+ prop: "templateId",
+ span: 24,
+ align: "center",
+ slot: true,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: false,
+ },
+ {
+ label: "创建时间",
prop: "createTime",
span: 24,
- display: false
+ // width: 200,
+ align: "center",
+ addDisplay: false,
+ rules: [{
+ required: true,
+ message: "请输入短信签名",
+ trigger: "blur"
+ }],
},
- {
- label: "发送时间",
- prop: "dateTime",
- type: "daterange",
- format: "yyyy-MM-dd",
- valueFormat: "yyyy-MM-dd",
- searchRange: true,
- hide: true,
- display: false,
- search: true,
- searchLabelWidth: 96,
- },
+
]
},
data: [],
-
- personList: [],
- };
- },
- computed: {
- ...mapGetters(["permission", "userInfo"]),
- permissionList() {
- return {
- addBtn: this.vaildData(this.permission.messageRecord_add, false),
- viewBtn: this.vaildData(this.permission.messageRecord_view, false),
- delBtn: this.vaildData(this.permission.messageRecord_delete, false),
- editBtn: this.vaildData(this.permission.messageRecord_edit, false)
- };
- },
- ids() {
- let ids = [];
- this.selectionList.forEach(ele => {
- ids.push(ele.id);
- });
- return ids.join(",");
+ debugForm: {
+ code: '',
+ },
+ debugOption: {
+ submitText: "发送",
+ column: [{
+ label: "资源编号",
+ prop: "code",
+ disabled: true,
+ span: 24,
+ },
+ {
+ label: "发送手机",
+ prop: "phones",
+ span: 24,
+ },
+ {
+ label: "发送参数",
+ prop: "params",
+ span: 24,
+ placeholder: "例: {'code':2333,'title':'通知标题'}",
+ },
+ ]
+ }
}
},
- created() {
- // this.getTreeData()
+ watch: {
+ 'form.category'() {
+ const category = func.toInt(this.form.category)
+ this.$refs.crud.option.column.filter(item => {
+ if (item.prop === "templateId") {
+ if (category === 1) {
+ item.label = "模版内容"
+ } else {
+ item.label = "模版ID"
+ }
+ }
+ if (item.prop === "accessKey") {
+ if (category === 1) {
+ item.label = "apiKey"
+ } else if (category === 4) {
+ item.label = "appId"
+ } else {
+ item.label = "accessKey"
+ }
+ }
+ if (item.prop === "secretKey") {
+ item.display = category !== 1
+ if (category === 4) {
+ item.label = "appKey"
+ } else {
+ item.label = "secretKey"
+ }
+ }
+ if (item.prop === "regionId") {
+ if (category === 3) {
+ item.display = true
+ item.value = "cn-hangzhou"
+ } else {
+ item.display = false
+ }
+ }
+ })
+ }
+ },
+ computed: {
+ ...mapGetters(["userInfo", "permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission.sms_add, false),
+ viewBtn: this.vaildData(this.permission.sms_view, false),
+ delBtn: this.vaildData(this.permission.sms_delete, false),
+ editBtn: this.vaildData(this.permission.sms_edit, false)
+ }
+ },
+ ids() {
+ let ids = []
+ this.selectionList.forEach(ele => {
+ ids.push(ele.id)
+ })
+ return ids.join(",")
+ }
},
methods: {
- selectPersonList(personList) {
- console.log(personList, "++++++++++++")
-
- this.personList = personList
-
- let nameList = personList.map(e => {
- return e.name
- })
- this.form.receiver = nameList.join(",")
- },
-
- showDialog() {
- this.$refs.deptUserTable.show()
- },
-
- getTreeData() {
- getDeptUserTree({
- id: this.userInfo.dept_id
- }).then(res => {
- console.log(res, "+++++++++++")
- let data = res.data.data
- let receiver = this.findObject(this.option.column, 'receiver')
- receiver.dicData = data
- })
-
- },
-
rowSave(row, done, loading) {
- console.log(row)
- row.type = row.type.split(",").sort((a, b) => a - b).join(",")
- row['messageResource'] = 2
- row.receiver = this.personList.map(e => e.id).join(",")
- customizeSave(row).then(() => {
- this.onLoad(this.page);
+ add(row).then(() => {
+ this.onLoad(this.page)
this.$message({
type: "success",
message: "操作成功!"
- });
- done();
+ })
+ done()
}, error => {
- loading();
- window.console.log(error);
- });
+ window.console.log(error)
+ loading()
+ })
},
rowUpdate(row, index, done, loading) {
update(row).then(() => {
- this.onLoad(this.page);
+ this.onLoad(this.page)
this.$message({
type: "success",
message: "操作成功!"
- });
- done();
+ })
+ done()
}, error => {
- loading();
- console.log(error);
- });
+ window.console.log(error)
+ loading()
+ })
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
@@ -255,20 +221,56 @@
type: "warning"
})
.then(() => {
- return remove(row.id);
+ return remove(row.id)
})
.then(() => {
- this.onLoad(this.page);
+ this.onLoad(this.page)
this.$message({
type: "success",
message: "操作成功!"
- });
- });
+ })
+ })
+ },
+ handleEnable(row) {
+ this.$confirm("是否确定启用这条配置?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return enable(row.id)
+ })
+ .then(() => {
+ this.onLoad(this.page)
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ })
+ this.$refs.crud.toggleSelection()
+ })
+ },
+ handleDebug(row) {
+ this.box = true
+ this.debugForm.code = row.smsCode
+ },
+ handleSend(form, done, loading) {
+ send(form.code, form.phones, form.params).then((res) => {
+ this.$message({
+ type: "success",
+ message: "发送成功!"
+ })
+ done()
+ window.console.log(res)
+ this.box = false
+ }, error => {
+ window.console.log(error)
+ loading()
+ })
},
handleDelete() {
if (this.selectionList.length === 0) {
- this.$message.warning("请选择至少一条数据");
- return;
+ this.$message.warning("请选择至少一条数据")
+ return
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
@@ -276,85 +278,61 @@
type: "warning"
})
.then(() => {
- return remove(this.ids);
+ return remove(this.ids)
})
.then(() => {
- this.onLoad(this.page);
+ this.onLoad(this.page)
this.$message({
type: "success",
message: "操作成功!"
- });
- this.$refs.crud.toggleSelection();
- });
+ })
+ this.$refs.crud.toggleSelection()
+ })
},
beforeOpen(done, type) {
if (["edit", "view"].includes(type)) {
getDetail(this.form.id).then(res => {
- this.form = res.data.data;
- });
+ this.form = res.data.data
+ })
}
- done();
+ done()
},
searchReset() {
- this.query = {};
- this.onLoad(this.page);
+ this.query = {}
+ this.onLoad(this.page)
},
searchChange(params, done) {
- this.query = params;
- this.page.currentPage = 1;
- this.onLoad(this.page, params);
- done();
+ this.query = params
+ this.page.currentPage = 1
+ this.onLoad(this.page, params)
+ done()
},
selectionChange(list) {
- console.log('selectionChange', list)
- this.selectionList = list;
+ this.selectionList = list
},
selectionClear() {
- this.selectionList = [];
- this.$refs.crud.toggleSelection();
+ this.selectionList = []
+ this.$refs.crud.toggleSelection()
},
currentChange(currentPage) {
- this.page.currentPage = currentPage;
+ this.page.currentPage = currentPage
},
sizeChange(pageSize) {
- this.page.pageSize = pageSize;
+ this.page.pageSize = pageSize
},
refreshChange() {
- this.onLoad(this.page, this.query);
+ this.onLoad(this.page, this.query)
},
onLoad(page, params = {}) {
- this.loading = true;
- //系统消息
- params.messageResource = '2'
- params.type = '3'
- params.createUser = this.userInfo.user_id
- const {
- dateTime
- } = this.query
- let values = {
- ...params,
- }
- if (dateTime) {
- values = {
- ...params,
- startTime: dateTime[0],
- endTime: dateTime[1],
- ...this.query,
- }
- values.dateTime = null
- }
-
- getList(page.currentPage, page.pageSize, values).then(res => {
- const data = res.data.data;
- this.page.total = data.total;
- this.data = data.records;
- this.loading = false;
- this.selectionClear();
- });
+ this.loading = true
+ getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+ const data = res.data.data
+ this.page.total = data.total
+ this.data = data.records
+ this.loading = false
+ this.selectionClear()
+ })
}
}
- };
-</script>
-
-<style>
-</style>
+ }
+</script>
\ No newline at end of file
diff --git a/src/views/sms/smsTemplate.vue b/src/views/sms/smsTemplate.vue
index 20f27f2..ec379c6 100644
--- a/src/views/sms/smsTemplate.vue
+++ b/src/views/sms/smsTemplate.vue
@@ -14,13 +14,16 @@
<!-- <el-button :size="size" type="text" icon="el-icon-video-play" v-if="userInfo.role_name.includes('admin')"
@click="handleDebug(row)">调试
</el-button> -->
- <el-button :size="size" type="text" icon="el-icon-circle-check" v-if="permission.sms_enable"
+ <el-button :size="size" type="text" icon="el-icon-circle-check" v-if="row.status == 1"
@click.stop="handleEnable(row)">启用
+ </el-button>
+ <el-button :size="size" type="text" icon="el-icon-circle-check" v-if="row.status == 2"
+ @click.stop="handleEnable(row)">禁用
</el-button>
</template>
<template slot-scope="{row, size}" slot="status">
- <el-tag :size="size" :type="row.statusName == '是' ? 'success' : 'info'">{{ row.statusName }}</el-tag>
+ <el-tag :size="size" :type="row.status == 1 ? 'info' : 'success'">{{ row.status == 1 ?'否':'是' }}</el-tag>
</template>
<template slot-scope="{row, size}" slot="category">
<el-tag :size="size">{{ row.categoryName }}</el-tag>
@@ -74,7 +77,7 @@
dialogWidth: 880,
dialogClickModal: false,
column: [{
- width: 100,
+ width: 200,
label: "模板id",
prop: "id",
span: 24,
@@ -87,8 +90,9 @@
label: "模版内容",
prop: "content",
span: 24,
- width: 200,
+ width: 400,
searchSpan: 4,
+ align: "center",
search: true,
rules: [{
required: true,
@@ -101,6 +105,7 @@
prop: "createTime",
span: 24,
width: 200,
+ align: "center",
addDisplay: false,
rules: [{
required: true,
@@ -111,7 +116,7 @@
{
width: 100,
label: "是否启用",
- prop: "isDeleted",
+ prop: "status",
span: 24,
align: "center",
slot: true,
@@ -256,7 +261,8 @@
type: "warning"
})
.then(() => {
- return enable(row.id)
+ row.status = row.status == 1 ? 2 : 1
+ return update(row)
})
.then(() => {
this.onLoad(this.page)
--
Gitblit v1.9.3