MessagesReceive.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. <template>
  2. <div>
  3. <!-- 102 -->
  4. <el-card class="box-card">
  5. <!-- 搜索区域 -->
  6. <div class="search-bx1">
  7. <el-input v-model="searchData.name" placeholder="消息名称" style="width: 220px;" class="g-mr20" clearable />
  8. <el-date-picker v-model="searchData.inputDatetime1" class="g-mr20" type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" style="width: 250px;" />
  9. <el-button type="primary" class ="btn-search" @click="form_search">搜索</el-button>
  10. <el-button type="primary" class ="btn-clear" @click="form_clear">重置</el-button>
  11. <!-- <el-button type="primary" class ="btn-add" v-if="isButtonEdit" @click="form_add">添加</el-button> -->
  12. <!-- <el-button type="primary" @click="form_export">导出</el-button> -->
  13. </div>
  14. <!-- 表格 -->
  15. <el-table key="0" :data="tableList" v-loading="tableLoading" element-loading-text="给我一点时间" border fit>
  16. <el-table-column label="序号" width="50px" align="center">
  17. <template slot-scope="scope">
  18. <span>{{ scope.row.id }}</span>
  19. </template>
  20. </el-table-column>
  21. <el-table-column label="消息名称" min-width="150px" align="center">
  22. <template slot-scope="scope">
  23. <span>{{ scope.row.name }}</span>
  24. </template>
  25. </el-table-column>
  26. <el-table-column label="消息内容" min-width="150px" align="center">
  27. <template slot-scope="scope">
  28. <span>{{ scope.row.content }}</span>
  29. </template>
  30. </el-table-column>
  31. <el-table-column label="接收时间" min-width="150px" align="center">
  32. <template slot-scope="scope">
  33. <span>{{ scope.row.created_at_format }}</span>
  34. </template>
  35. </el-table-column>
  36. <el-table-column label="消息状态" min-width="150px" align="center">
  37. <template slot-scope="scope">
  38. <span v-show = "scope.row.status == 1">未读</span>
  39. <span v-show = "scope.row.status == 2">已读</span>
  40. </template>
  41. </el-table-column>
  42. <el-table-column label="操作" align="center" width="300" class-name="small-padding fixed-width" fixed="right">
  43. <template slot-scope="scope">
  44. <el-button type="primary" v-if="isButtonEdit" size="mini" icon="el-icon-edit" @click="form_see(scope.row)">查看</el-button>
  45. <!-- 修改按钮 -->
  46. <el-button type="danger" v-if="isButtonEdit" size="mini" icon="el-icon-delete" @click="form_delete(scope.row)">删除</el-button>
  47. </template>
  48. </el-table-column>
  49. </el-table>
  50. <!-- 分页区域 -->
  51. <el-pagination @size-change="change_size_page" @current-change="change_current_page" :current-page="searchData.page" :page-sizes="[1,5,10,20,30,50]" :page-size="searchData.page_size" layout="total, prev, pager, next" :total="searchData.total"/>
  52. </el-card>
  53. <!-- 弹窗 新增or修改 -->
  54. <el-dialog :title="addFormTxt[addFormStatus]" :visible.sync="addFormShow" @close="add_dialog_close" width="50%">
  55. <div class="">
  56. <el-form ref="addFormRef" :rules="addFormRules" :model="addForm" label-position="right" label-width="100px" style="width:50%;margin:0 auto 50px">
  57. <el-form-item label="类型名称:" prop="name">
  58. <el-input v-model="addForm.name" disabled ></el-input>
  59. </el-form-item>
  60. <el-form-item label="消息内容:" prop="content">
  61. <el-input ref="content" v-model="addForm.content" type="textarea" maxlength="200" style="width: 100%;" :rows="3" disabled />
  62. </el-form-item>
  63. </el-form>
  64. <div slot="footer" class="dialog-footer">
  65. <el-button @click="add_dialog_close" >关闭</el-button>
  66. </div>
  67. </div>
  68. </el-dialog>
  69. </div>
  70. </template>
  71. <script>
  72. import { ajaxDataGet, ajaxDataPost, ajaxDataPut, ajaxDataDelete, checkButtons} from '@/api/common'
  73. import { parseTime, json2excel } from '@/utils/index.js'
  74. export default {
  75. data() {
  76. return {
  77. //接口 - 获取 - 表格
  78. url_get_table:'/api/v1/ops/message_template/user/list',
  79. //接口 - 新增 - 表格
  80. url_add_table:'/api/v1/ops/message_template/add',
  81. //接口 - 修改 - 表格
  82. url_edit_table:'/api/v1/ops/message_template/update',
  83. //接口 - 删除 - 表格
  84. url_delete_table:'/api/v1/ops/message_template/user/delete',
  85. //接口 - 下拉框 列表
  86. url_get_select1:'/role/getAll',
  87. //按钮权限
  88. isButtonEdit:false,
  89. //获取 - 表格数据 - 参数
  90. searchData:{
  91. name: "",
  92. start_created_time: "",
  93. end_created_time: "",
  94. inputDatetime1:"",
  95. page: 1, //页码
  96. page_size: 10, //每页数量
  97. total:0, //总页数
  98. pastureId: ""
  99. },
  100. tableLoading: false,
  101. //表格内容
  102. tableList:[
  103. { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123',roleList:[2,3] },
  104. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123',roleList:[] },
  105. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  106. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  107. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  108. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  109. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  110. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  111. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  112. // { username:"admin", id:100, date:'2023-12-01',email:'测试信息1123' },
  113. // { username:"epans", id:200, date:'2023-12-01',email:'测试信息1123' },
  114. // { username:"derek", id:300, date:'2023-12-01',email:'测试信息1123' },
  115. ],
  116. pastureList:[
  117. ],
  118. addFormShow:false,
  119. addFormStatus: '',
  120. addFormTxt: { edit: '修改', create: '新增' },
  121. addForm:{
  122. name:'',id:'' ,content:'' ,is_show: 1
  123. },
  124. addFormRules:{
  125. name: [ { required: true, message: '名称必填', trigger: 'blur' }, ],
  126. content: [ { required: true, message: '内容必填', trigger: 'blur' }, ],
  127. },
  128. }
  129. },
  130. created(){
  131. //获取按钮权限
  132. const isButtonEdit = checkButtons(this.$store.state.buttonsList, "犊牛类型编辑")
  133. this.isButtonEdit = isButtonEdit
  134. console.log('this.isButtonEdit==========',this.isButtonEdit)
  135. //获取下拉框
  136. // this.get_select_list1()
  137. //表格 - 初始化
  138. this.get_table_data()
  139. },
  140. methods:{
  141. get_auto_buttons() {
  142. // 编辑
  143. const isButtonEdit = checkButtons(this.$store.state.buttonsList, "用户管理编辑")
  144. this.isButtonEdit = isButtonEdit
  145. console.log('this.isButtonEdit==========',this.isButtonEdit)
  146. },
  147. //获取 下拉框
  148. get_select_list1(){
  149. var me = this
  150. ajaxDataGet(me.url_get_select1, {"roleName": "", "page": 1, "page_size": 1000}).then(e => {
  151. console.log("下拉框1:",e)
  152. //打印请求成功结果
  153. if(e.data == null || e.data == undefined ||e.data.length == 0 ){
  154. me.roleList = []
  155. } else {
  156. me.roleList = e.data
  157. }
  158. })
  159. ajaxDataGet('/authdata/pasture', { "page": 1, "page_size": 1000}).then(e => {
  160. console.log("牧场下拉框1:",e)
  161. //打印请求成功结果
  162. if(e.data == null || e.data == undefined ||e.data.length == 0 ){
  163. me.pastureList = []
  164. } else {
  165. me.pastureList = e.data
  166. }
  167. })
  168. },
  169. //获取 表格
  170. get_table_data() {
  171. var me = this
  172. me.tableLoading = true
  173. if (me.searchData.inputDatetime1 !== '' && me.searchData.inputDatetime1 !== null) {
  174. me.searchData.start_created_time = parseTime(me.searchData.inputDatetime1[0], '{y}-{m}-{d}')
  175. me.searchData.end_created_time = parseTime(me.searchData.inputDatetime1[1], '{y}-{m}-{d}')
  176. } else {
  177. me.searchData.inputDatetime1 = ''
  178. me.searchData.start_created_time = ''
  179. me.searchData.end_created_time = ''
  180. }
  181. console.log("searchData======>", me.searchData)
  182. var send_url = me.url_get_table + '?page=' + me.searchData.page + '&page_size=' + me.searchData.page_size
  183. ajaxDataPost(send_url, me.searchData).then(e => {
  184. console.log("表格请求结果:",e)
  185. //打印请求成功结果
  186. if(e.code == 200 ){
  187. me.tableList = e.data.list
  188. me.searchData.total = e.data.total; // 总数
  189. me.searchData.page = e.data.page; //页码
  190. me.searchData.page_size = e.data.page_size; //每页数量
  191. } else {
  192. me.$message({ type: 'error', message: '请求表格列表失败!' + e.msg, duration: 2000 })
  193. }
  194. setTimeout(() => {
  195. me.tableLoading = false
  196. }, 100)
  197. })
  198. },
  199. //搜索 查询表格
  200. form_search(){
  201. var me = this
  202. // this.$router.push({name: 'MenuManagement' , query: { id: 'create', isEdit: 'edit' }})
  203. // console.log('请求表格列表searchData',me.searchData)
  204. me.get_table_data()
  205. },
  206. //重置 表格
  207. form_clear(){
  208. var me = this
  209. me.searchData.name = ""
  210. me.get_table_data()
  211. },
  212. //监听 page_size 改变的事件
  213. change_size_page(item){
  214. console.log(item)
  215. // this.searchData.page_size = item
  216. // this.getUserList()
  217. },
  218. //监听 page 改变的事件
  219. change_current_page(item){
  220. console.log(item)
  221. this.searchData.page = item
  222. this.get_table_data()
  223. },
  224. //清空弹窗表单信息
  225. reset_form(){
  226. this.addForm.name = ''
  227. this.addForm.id = undefined
  228. this.addForm.content = ''
  229. this.addForm.is_show = 1
  230. },
  231. //新增
  232. form_add() {
  233. this.reset_form()
  234. this.addFormStatus = 'create'
  235. this.addFormShow = true
  236. this.$nextTick(() => {
  237. this.$refs['addFormRef'].clearValidate()
  238. })
  239. },
  240. //编辑
  241. form_edit(row) {
  242. this.reset_form()
  243. console.log('行内容row=========', row)
  244. //编辑行内容赋值
  245. this.addForm = Object.assign({}, row)
  246. this.addFormStatus = 'edit'
  247. this.addFormShow = true
  248. this.$nextTick(() => {
  249. this.$refs['addFormRef'].clearValidate()
  250. })
  251. },
  252. //编辑
  253. form_see(row) {
  254. var me = this
  255. console.log('行内容row=========', row)
  256. //编辑行内容赋值
  257. me.addForm = Object.assign({}, row)
  258. ajaxDataPut("/api/v1/ops/message_template/user/show/"+ row.id , {}).then(e => {
  259. console.log("消息已读:",e)
  260. //打印请求成功结果
  261. if(e.code == 200 ){
  262. } else {
  263. // me.$message({ type: 'error', message: '失败!' + e.msg, duration: 2000 })
  264. }
  265. })
  266. this.addFormStatus = 'see'
  267. this.addFormShow = true
  268. },
  269. //新增关闭
  270. add_dialog_close(){
  271. var me = this
  272. //内容重置
  273. me.addFormShow = false
  274. me.get_table_data()
  275. },
  276. //新增 保存
  277. add_dialog_save() {
  278. var me = this
  279. this.$refs['addFormRef'].validate(valid => {
  280. //验证成功
  281. if (valid) {
  282. //发起请求
  283. var send_data = {
  284. "name": me.addForm.name,
  285. "content": me.addForm.content,
  286. "is_show": me.addForm.is_show
  287. }
  288. console.log("弹窗参数:", send_data)
  289. //关闭弹窗
  290. // me.addFormShow = false
  291. //加载 - 发送新增保存
  292. ajaxDataPost(me.url_add_table, send_data).then(e => {
  293. console.log("新增结果:",e)
  294. //打印请求成功结果
  295. if(e.code == 200 ){
  296. me.$message({ type: 'success', message: '新增成功!' , duration: 2000 })
  297. //关闭弹窗
  298. me.addFormShow = false
  299. me.get_table_data()
  300. } else {
  301. me.$message({ type: 'error', message: '新增失败!' + e.msg, duration: 2000 })
  302. }
  303. })
  304. }
  305. })
  306. },
  307. //编辑 保存
  308. edit_dialog_save(){
  309. var me = this
  310. this.$refs['addFormRef'].validate(valid => {
  311. //验证成功
  312. if (valid) {
  313. //发起请求
  314. var send_data = {
  315. "name": me.addForm.name,
  316. "id": me.addForm.id,
  317. "content": me.addForm.content,
  318. "is_show": me.addForm.is_show
  319. }
  320. console.log("弹窗参数:", send_data)
  321. //关闭弹窗
  322. // me.addFormShow = false
  323. //加载 - 发送新增保存
  324. ajaxDataPut(me.url_edit_table, send_data).then(e => {
  325. console.log("编辑结果:",e)
  326. //打印请求成功结果
  327. if(e.code == 200 ){
  328. me.$message({ type: 'success', message: '编辑成功!' , duration: 2000 })
  329. //关闭弹窗
  330. me.addFormShow = false
  331. me.get_table_data()
  332. } else {
  333. me.$message({ type: 'error', message: '编辑失败!' + e.msg, duration: 2000 })
  334. }
  335. })
  336. }
  337. })
  338. },
  339. form_delete(row) {
  340. var me = this
  341. me.$confirm('是否删除此条内容?', '提示', {
  342. confirmButtonText: '确定',
  343. cancelButtonText: '取消',
  344. type: 'warning'
  345. }).then(() => {
  346. console.log("删除的ID参数:", row.id)
  347. //加载 - 发送新增保存
  348. ajaxDataDelete(me.url_delete_table + '/' +row.id, {}).then(e => {
  349. console.log("编辑结果:",e)
  350. //打印请求成功结果
  351. if(e.code == 200 ){
  352. me.$message({ type: 'success', message: '删除成功!' });
  353. me.get_table_data()
  354. } else {
  355. me.$message({ type: 'error', message: '删除失败!' + e.msg, duration: 2000 })
  356. }
  357. })
  358. }).catch(() => {
  359. me.$message({
  360. type: 'info',
  361. message: '已取消删除'
  362. });
  363. });
  364. },
  365. form_export() {
  366. //获取请求表格数据的参数
  367. //this.download.getdataListParm.parammaps = this.tableObj.getdataListParm.parammaps
  368. //请求表格
  369. // GetDataByName(this.download.getdataListParm).then(response => {
  370. // if (response.data.list !== null) {
  371. // this.download.list = response.data.list
  372. // } else {
  373. // this.download.list = []
  374. // }
  375. // var excelDatas = [
  376. // {
  377. // tHeader: ['表头1', '表头2', '表头3', '表头4',],
  378. // filterVal: ['title1', 'title2', 'title3', 'title4'],
  379. // tableDatas: this.download.list,
  380. // sheetName: 'Sheet1'
  381. // }
  382. // ]
  383. // json2excel(excelDatas, '表格大标题', true, 'xlsx')
  384. // })
  385. var excelDatas = [
  386. {
  387. tHeader: ['表头1', '表头2', '表头3', '表头4',],
  388. filterVal: ['title1', 'title2', 'title3', 'title4'],
  389. tableDatas: [
  390. {title1: "内容1",title2: "内容2",title3: "内容3",title4: "内容4"},
  391. {title1: "内容11",title2: "内容22",title3: "内容32",title4: "内容44"},
  392. {title1: "内容111",title2: "内容222",title3: "内容333",title4: "内容444"},
  393. ],
  394. sheetName: 'Sheet1'
  395. }
  396. ]
  397. json2excel(excelDatas, '表格大标题', true, 'xlsx')
  398. }
  399. }
  400. }
  401. </script>
  402. <!-- 加了scoped,则是仅在此组件里生效 -->
  403. <style scoped>
  404. </style>