From 93a3d1a2c3e03552b34914a08759bf1ba1ceec7f Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Mon, 01 Apr 2024 17:39:29 +0800
Subject: [PATCH] 短信+议事导出
---
src/api/resource/sms.js | 3
src/views/article/discussionManage.vue | 43 ++
src/views/sms/smsRecord.vue | 360 ++++++++++++++++++++++++
src/api/resource/smsTemplate.js | 49 +++
src/views/sms/smsTemplate.vue | 356 +++++++++++++++++++++++
src/views/article/components/deitDiscussion.vue | 24 +
src/views/sms/sms.vue | 0
src/api/resource/smsRecord.js | 50 +++
8 files changed, 876 insertions(+), 9 deletions(-)
diff --git a/src/api/resource/sms.js b/src/api/resource/sms.js
index d937f07..9351363 100644
--- a/src/api/resource/sms.js
+++ b/src/api/resource/sms.js
@@ -68,5 +68,4 @@
params,
}
})
-}
-
+}
\ No newline at end of file
diff --git a/src/api/resource/smsRecord.js b/src/api/resource/smsRecord.js
new file mode 100644
index 0000000..f4a154d
--- /dev/null
+++ b/src/api/resource/smsRecord.js
@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+
+export const getList = (current, size, params) => {
+ return request({
+ url: '/api/blade-smsRecord/smsRecord/list',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ }
+ })
+}
+
+export const getDetail = (id) => {
+ return request({
+ url: '/api/blade-smsRecord/smsRecord/detail',
+ method: 'get',
+ params: {
+ id
+ }
+ })
+}
+
+export const remove = (ids) => {
+ return request({
+ url: '/api/blade-smsRecord/smsRecord/remove',
+ method: 'post',
+ params: {
+ ids,
+ }
+ })
+}
+
+export const add = (row) => {
+ return request({
+ url: '/api/blade-smsRecord/smsRecord/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const update = (row) => {
+ return request({
+ url: '/api/blade-smsRecord/smsRecord/submit',
+ method: 'post',
+ data: row
+ })
+}
\ No newline at end of file
diff --git a/src/api/resource/smsTemplate.js b/src/api/resource/smsTemplate.js
new file mode 100644
index 0000000..bdb8a82
--- /dev/null
+++ b/src/api/resource/smsTemplate.js
@@ -0,0 +1,49 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+ return request({
+ url: '/api/blade-smsTemplate/smsTemplate/list',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ }
+ })
+}
+
+export const getDetail = (id) => {
+ return request({
+ url: '/api/blade-smsTemplate/smsTemplate/detail',
+ method: 'get',
+ params: {
+ id
+ }
+ })
+}
+
+export const remove = (ids) => {
+ return request({
+ url: '/api/blade-smsTemplate/smsTemplate/remove',
+ method: 'post',
+ params: {
+ ids,
+ }
+ })
+}
+
+export const add = (row) => {
+ return request({
+ url: '/api/blade-smsTemplate/smsTemplate/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const update = (row) => {
+ return request({
+ url: '/api/blade-smsTemplate/smsTemplate/submit',
+ method: 'post',
+ data: row
+ })
+}
\ No newline at end of file
diff --git a/src/views/article/components/deitDiscussion.vue b/src/views/article/components/deitDiscussion.vue
index 45401a5..bb8fb6d 100644
--- a/src/views/article/components/deitDiscussion.vue
+++ b/src/views/article/components/deitDiscussion.vue
@@ -423,12 +423,24 @@
...this.query
}
data = Qs.stringify(data)
- exportBlob(
- `/api/blade-userTopics/userTopics/exportUser?${this.website.tokenHeader}=${getToken()}&` + data).then(
- res => {
- downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
- NProgress.done()
- })
+ if (this.newData.type === 4) {
+ exportBlob(
+ `/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)
+ .then(
+ res => {
+ downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
+ NProgress.done()
+ })
+ }
})
},
diff --git a/src/views/article/discussionManage.vue b/src/views/article/discussionManage.vue
index 0ce1743..4d4049f 100644
--- a/src/views/article/discussionManage.vue
+++ b/src/views/article/discussionManage.vue
@@ -23,6 +23,10 @@
参与用户
</el-button>
+ <!-- <el-button icon="el-icon-user" v-if="row.type == 4" :size="size" :type="type" @click.stop="handleExport(row)">
+ 导出用户
+ </el-button> -->
+
<el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
撤销
</el-button>
@@ -79,6 +83,21 @@
} from "vuex"
import deitDiscussion from "./components/deitDiscussion"
import discussionManageChild from "./components/discussionManageChild"
+ import NProgress from 'nprogress'
+ import 'nprogress/nprogress.css'
+ import Qs from "qs"
+ import {
+ exportBlob
+ } from "@/api/common"
+ import {
+ getToken
+ } from '@/util/auth'
+ import {
+ downloadXls
+ } from "@/util/util"
+ import {
+ dateNow
+ } from "@/util/date"
export default {
components: {
@@ -488,6 +507,28 @@
}
},
methods: {
+ handleExport(row) {
+ this.$confirm("是否导出投票人员数据?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ }).then(() => {
+ NProgress.start()
+ this.query = {}
+ this.query.articleId = row.id
+ var data = {
+ ...this.query
+ }
+ data = Qs.stringify(data)
+ exportBlob(
+ `/api/blade-userTopics/userTopics/exportDataIndex?${this.website.tokenHeader}=${getToken()}&` + data)
+ .then(
+ res => {
+ downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
+ NProgress.done()
+ })
+ })
+ },
iscommentInput(e, data) {
upcomment(data.id, e).then(() => {
this.$message({
@@ -800,4 +841,4 @@
.avue-upload__icon {
line-height: 6;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/resource/sms.vue b/src/views/sms/sms.vue
similarity index 100%
rename from src/views/resource/sms.vue
rename to src/views/sms/sms.vue
diff --git a/src/views/sms/smsRecord.vue b/src/views/sms/smsRecord.vue
new file mode 100644
index 0000000..1da0915
--- /dev/null
+++ b/src/views/sms/smsRecord.vue
@@ -0,0 +1,360 @@
+<template>
+ <basic-container>
+ <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
+ :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>
+
+<script>
+ import {
+ getList,
+ getDetail,
+ add,
+ update,
+ remove,
+ customizeSave
+ } from "@/api/messageRecord/messageRecord";
+ import {
+ mapGetters
+ } from "vuex";
+ import {
+ getDeptLazyTree,
+ getDeptUserTree,
+ getLazyList
+ } from "@/api/system/dept";
+ import DeptUserTable from "@/views/message/components/DeptUserTable.vue";
+
+ export default {
+ components: {
+ DeptUserTable
+ },
+ data() {
+ return {
+ form: {},
+ query: {},
+ loading: true,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ selectionList: [],
+ option: {
+ dialogDirection: 'rtl',
+ dialogType: 'drawer',
+ 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,
+ 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,
+ span: 24,
+ viewDisplay: false,
+ rules: [{
+ required: true,
+ message: "请选择接收人",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "接收人",
+ prop: "userName",
+ addDisplay: false,
+ },
+ {
+ label: "标题",
+ prop: "title",
+ type: "input",
+ span: 24,
+ rules: [{
+ required: true,
+ message: "请输入标题",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "内容",
+ prop: "content",
+ type: "textarea",
+ minRow: 5,
+ span: 24,
+ rules: [{
+ required: true,
+ message: "请输入内容",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "发送时间",
+ prop: "createTime",
+ span: 24,
+ display: false
+ },
+ {
+ 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(",");
+ }
+ },
+ created() {
+ // this.getTreeData()
+ },
+ 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);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ window.console.log(error);
+ });
+ },
+ rowUpdate(row, index, done, loading) {
+ update(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ console.log(error);
+ });
+ },
+ rowDel(row) {
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(row.id);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ });
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("请选择至少一条数据");
+ return;
+ }
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.ids);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ this.$refs.crud.toggleSelection();
+ });
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getDetail(this.form.id).then(res => {
+ this.form = res.data.data;
+ });
+ }
+ done();
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ searchChange(params, done) {
+ this.query = params;
+ this.page.currentPage = 1;
+ this.onLoad(this.page, params);
+ done();
+ },
+ selectionChange(list) {
+ console.log('selectionChange', list)
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.crud.toggleSelection();
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ 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();
+ });
+ }
+ }
+ };
+</script>
+
+<style>
+</style>
diff --git a/src/views/sms/smsTemplate.vue b/src/views/sms/smsTemplate.vue
new file mode 100644
index 0000000..20f27f2
--- /dev/null
+++ b/src/views/sms/smsTemplate.vue
@@ -0,0 +1,356 @@
+<template>
+ <basic-container>
+ <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
+ :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.sms_delete"
+ @click="handleDelete">删 除
+ </el-button>
+ </template>
+
+ <template slot-scope="{ row, size, index }" slot="menu">
+ <!-- <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"
+ @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>
+ </template>
+ <template slot-scope="{row, size}" slot="category">
+ <el-tag :size="size">{{ row.categoryName }}</el-tag>
+ </template>
+ </avue-crud>
+ <el-dialog title="手机短信发送调试" append-to-body :visible.sync="box" width="550px">
+ <avue-form :option="debugOption" v-model="debugForm" @submit="handleSend" />
+ </el-dialog>
+ </basic-container>
+</template>
+
+<script>
+ import {
+ getList,
+ getDetail,
+ add,
+ update,
+ remove
+ } from "@/api/resource/smsTemplate"
+ import {
+ mapGetters
+ } from "vuex"
+ import func from "@/util/func"
+
+ export default {
+ data() {
+ return {
+ form: {},
+ query: {},
+ loading: true,
+ box: false,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ selectionList: [],
+ option: {
+ labelWidth: 96,
+ searchLabelWidth: 96,
+ searchShow: true,
+ searchMenuSpan: 3,
+ menuWidth: 350,
+ height: 'auto',
+ calcHeight: 30,
+ tip: false,
+ border: true,
+ index: true,
+ viewBtn: true,
+ selection: true,
+ dialogWidth: 880,
+ dialogClickModal: false,
+ column: [{
+ width: 100,
+ label: "模板id",
+ prop: "id",
+ span: 24,
+ align: "center",
+ slot: true,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: false,
+ }, {
+ label: "模版内容",
+ prop: "content",
+ span: 24,
+ width: 200,
+ searchSpan: 4,
+ search: true,
+ rules: [{
+ required: true,
+ message: "请输入模版内容",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "创建时间",
+ prop: "createTime",
+ span: 24,
+ width: 200,
+ addDisplay: false,
+ rules: [{
+ required: true,
+ message: "请输入短信签名",
+ trigger: "blur"
+ }],
+ },
+ {
+ width: 100,
+ label: "是否启用",
+ prop: "isDeleted",
+ span: 24,
+ align: "center",
+ slot: true,
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: false,
+ },
+ ]
+ },
+ data: [],
+ 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':'通知标题'}",
+ },
+ ]
+ }
+ }
+ },
+ 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: {
+ rowSave(row, done, loading) {
+ add(row).then(() => {
+ this.onLoad(this.page)
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ })
+ done()
+ }, error => {
+ window.console.log(error)
+ loading()
+ })
+ },
+ rowUpdate(row, index, done, loading) {
+ update(row).then(() => {
+ this.onLoad(this.page)
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ })
+ done()
+ }, error => {
+ window.console.log(error)
+ loading()
+ })
+ },
+ rowDel(row) {
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(row.id)
+ })
+ .then(() => {
+ 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.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.ids)
+ })
+ .then(() => {
+ this.onLoad(this.page)
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ })
+ this.$refs.crud.toggleSelection()
+ })
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getDetail(this.form.id).then(res => {
+ this.form = res.data.data
+ })
+ }
+ done()
+ },
+ searchReset() {
+ this.query = {}
+ this.onLoad(this.page)
+ },
+ searchChange(params, done) {
+ this.query = params
+ this.page.currentPage = 1
+ this.onLoad(this.page, params)
+ done()
+ },
+ selectionChange(list) {
+ this.selectionList = list
+ },
+ selectionClear() {
+ this.selectionList = []
+ this.$refs.crud.toggleSelection()
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize
+ },
+ refreshChange() {
+ this.onLoad(this.page, this.query)
+ },
+ onLoad(page, params = {}) {
+ 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>
\ No newline at end of file
--
Gitblit v1.9.3