| 1 |
- {"remainingRequest":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/vue-loader/lib/index.js??vue-loader-options!/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/src/views/system/notice/index.vue?vue&type=script&lang=js&","dependencies":[{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/src/views/system/notice/index.vue","mtime":1618041504000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/babel-loader/lib/index.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/project/NN2020060801/addons/admin/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgVGlueW1jZUVkaXRvciBmcm9tICdAL2NvbXBvbmVudHMvVGlueW1jZUVkaXRvcicNCmltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICJ2dWV4IjsNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIlN5c05vdGljZSIsDQogIGNvbXBvbmVudHM6IHtUaW55bWNlRWRpdG9yfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgdGFibGU6IHt1cmw6ICcvbm90aWNlL2luZGV4Jywgd2hlcmU6IHt9fSwgIC8vIOihqOagvOmFjee9rg0KICAgICAgY2hvb3NlOiBbXSwgIC8vIOihqOagvOmAieS4reaVsOaNrg0KICAgICAgc2hvd0VkaXQ6IGZhbHNlLCAgLy8g5piv5ZCm5pi+56S66KGo5Y2V5by556qXDQogICAgICBlZGl0Rm9ybToge3NvdXJjZToxLHN0YXR1czoxLGlzX3RvcDoyfSwgIC8vIOihqOWNleaVsOaNrg0KICAgICAgZWRpdFJ1bGVzOiB7ICAvLyDooajljZXpqozor4Hop4TliJkNCiAgICAgICAgdGl0bGU6IFsNCiAgICAgICAgICB7cmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICfor7fovpPlhaXpgJrnn6XmoIfpopgnLCB0cmlnZ2VyOiAnYmx1cid9DQogICAgICAgIF0sDQogICAgICAgIHN0YXR1czogWw0KICAgICAgICAgIHtyZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+ivt+i+k+WFpemAieaLqemAmuefpeeKtuaAgScsIHRyaWdnZXI6ICdibHVyJ30NCiAgICAgICAgXSwNCiAgICAgICAgc291cmNlOiBbDQogICAgICAgICAge3JlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl6YCJ5oup6YCa55+l5p2l5rqQJywgdHJpZ2dlcjogJ2JsdXInfQ0KICAgICAgICBdLA0KICAgICAgICBpc190b3A6IFsNCiAgICAgICAgICB7cmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICfor7fovpPlhaXpgInmi6nmmK/lkKbnva7pobYnLCB0cmlnZ2VyOiAnYmx1cid9DQogICAgICAgIF0sDQogICAgICB9LA0KICAgICAgLy8g6Ieq5a6a5LmJ5paH5Lu25LiK5LygKOi/memHjOS9v+eUqOaKiumAieaLqeeahOaWh+S7tui9rOaIkGJsb2LmvJTnpLopDQogICAgICBmaWxlX3BpY2tlcl9jYWxsYmFjazogKGNhbGxiYWNrLCB2YWx1ZSwgbWV0YSkgPT4gew0KICAgICAgICBsZXQgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOw0KICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpOw0KICAgICAgICAvLyDorr7lrprmlofku7blj6/pgInnsbvlnosNCiAgICAgICAgaWYgKG1ldGEuZmlsZXR5cGUgPT09ICdpbWFnZScpIHsNCiAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7DQogICAgICAgIH0gZWxzZSBpZiAobWV0YS5maWxldHlwZSA9PT0gJ21lZGlhJykgew0KICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ3ZpZGVvLyonKTsNCiAgICAgICAgfQ0KICAgICAgICBpbnB1dC5vbmNoYW5nZSA9ICgpID0+IHsNCiAgICAgICAgICBsZXQgZmlsZSA9IGlucHV0LmZpbGVzWzBdOw0KICAgICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gew0KICAgICAgICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbZS50YXJnZXQucmVzdWx0XSwge3R5cGU6IGZpbGUudHlwZX0pOw0KICAgICAgICAgICAgY2FsbGJhY2soVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSk7DQogICAgICAgICAgfTsNCiAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7DQogICAgICAgIH0NCiAgICAgICAgaW5wdXQuY2xpY2soKTsNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIGNvbXB1dGVkOiB7DQogICAgLi4ubWFwR2V0dGVycyhbInBlcm1pc3Npb24iXSksDQogICAgDQogICAgZWRpdENvbnRlbnQoKSB7DQogICAgICByZXR1cm4gew0KICAgICAgICBtZW51YmFyOiBmYWxzZSwNCiAgICAgICAgZmlsZV9waWNrZXJfY2FsbGJhY2s6IHRoaXMuZmlsZV9waWNrZXJfY2FsbGJhY2ssDQogICAgICAgIHNraW5fdXJsOiB0aGlzLiRzdG9yZS5zdGF0ZS50aGVtZS50aGVtZSA9PT0gJ2RhcmsnID8gJy90aW55bWNlL3NraW5zL3VpL294aWRlLWRhcmsnIDogJy90aW55bWNlL3NraW5zL3VpL294aWRlJywNCiAgICAgICAgY29udGVudF9jc3M6IHRoaXMuJHN0b3JlLnN0YXRlLnRoZW1lLnRoZW1lID09PSAnZGFyaycgPyAnL3RpbnltY2Uvc2tpbnMvY29udGVudC9kYXJrL2NvbnRlbnQuY3NzJyA6ICcvdGlueW1jZS9za2lucy9jb250ZW50L2RlZmF1bHQvY29udGVudC5jc3MnDQogICAgICB9Ow0KICAgIH0NCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIC8qIOaYvuekuue8lui+kSAqLw0KICAgIGVkaXQocm93KSB7DQogICAgICB0aGlzLmVkaXRGb3JtID0gT2JqZWN0LmFzc2lnbih7fSwgcm93KTsNCiAgICAgIHRoaXMuc2hvd0VkaXQgPSB0cnVlOw0KICAgIH0sDQogICAgLyog5L+d5a2Y57yW6L6RICovDQogICAgc2F2ZSgpIHsNCiAgICAgIHRoaXMuJHJlZnNbJ2VkaXRGb3JtJ10udmFsaWRhdGUoKHZhbGlkKSA9PiB7DQogICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtsb2NrOiB0cnVlfSk7DQogICAgICAgICAgdGhpcy4kaHR0cC5wb3N0KCcvbm90aWNlL2VkaXQnLCB0aGlzLmVkaXRGb3JtKS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgICBpZiAocmVzLmRhdGEuY29kZSA9PT0gMCkgew0KICAgICAgICAgICAgICB0aGlzLnNob3dFZGl0ID0gZmFsc2U7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6ICdzdWNjZXNzJywgbWVzc2FnZTogcmVzLmRhdGEubXNnfSk7DQogICAgICAgICAgICAgIHRoaXMuJHJlZnMudGFibGUucmVsb2FkKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5kYXRhLm1zZyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfSkuY2F0Y2goZSA9PiB7DQogICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubWVzc2FnZSk7DQogICAgICAgICAgfSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8qIOWIoOmZpCAqLw0KICAgIHJlbW92ZShyb3cpIHsNCiAgICAgIGlmICghcm93KSB7ICAvLyDmibnph4/liKDpmaQNCiAgICAgICAgaWYgKHRoaXMuY2hvb3NlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+ivt+iHs+WwkemAieaLqeS4gOadoeaVsOaNricpOw0KICAgICAgICBsZXQgaWRzID0gdGhpcy5jaG9vc2UubWFwKGQgPT4gZC5pZCk7DQogICAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuimgeWIoOmZpOmAieS4reeahOmAmuefpeWQlz8nLCAn5o+Q56S6Jywge3R5cGU6ICd3YXJuaW5nJ30pLnRoZW4oKCkgPT4gew0KICAgICAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtsb2NrOiB0cnVlfSk7DQogICAgICAgICAgdGhpcy4kaHR0cC5wb3N0KCcvbm90aWNlL2RlbGV0ZScsIHtpZDogaWRzfSkudGhlbihyZXMgPT4gew0KICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7dHlwZTogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiByZXMuZGF0YS5tc2d9KTsNCiAgICAgICAgICAgICAgdGhpcy4kcmVmcy50YWJsZS5yZWxvYWQoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEubXNnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZS5tZXNzYWdlKTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfSkuY2F0Y2goKCkgPT4gMCk7DQogICAgICB9IGVsc2UgeyAgLy8g5Y2V5Liq5Yig6ZmkDQogICAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtsb2NrOiB0cnVlfSk7DQogICAgICAgIHRoaXMuJGh0dHAucG9zdCgnL25vdGljZS9kZWxldGUnLCB7aWQ6cm93LmlkfSkudGhlbihyZXMgPT4gew0KICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICBpZiAocmVzLmRhdGEuY29kZSA9PT0gMCkgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7dHlwZTogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiByZXMuZGF0YS5tc2d9KTsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMudGFibGUucmVsb2FkKCk7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IocmVzLmRhdGEubXNnKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pLmNhdGNoKGUgPT4gew0KICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubWVzc2FnZSk7DQogICAgICAgIH0pOw0KICAgICAgfQ0KICAgIH0sDQogICAgLyog5pu05pS554q25oCBICovDQogICAgZWRpdFN0YXR1cyhyb3cpIHsNCiAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtsb2NrOiB0cnVlfSk7DQogICAgICBsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgcm93KTsNCiAgICAgIHRoaXMuJGh0dHAucG9zdCgnL25vdGljZS9zdGF0dXMnLCBwYXJhbXMpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICBpZiAocmVzLmRhdGEuY29kZSA9PT0gMCkgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe3R5cGU6ICdzdWNjZXNzJywgbWVzc2FnZTogcmVzLmRhdGEubXNnfSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgcm93LnN0YXR1cyA9ICFyb3cuc3RhdHVzID8gMiA6IDE7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YS5tc2cpOw0KICAgICAgICB9DQogICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubWVzc2FnZSk7DQogICAgICB9KTsNCiAgICB9LA0KICAgIC8qIOaYr+WQpue9rumhtiAqLw0KICAgIGVkaXRJc1RvcChyb3cpIHsNCiAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHtsb2NrOiB0cnVlfSk7DQogICAgICBsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgcm93KTsNCiAgICAgIHRoaXMuJGh0dHAucG9zdCgnL25vdGljZS9zZXRJc1RvcCcsIHBhcmFtcykudGhlbihyZXMgPT4gew0KICAgICAgICBsb2FkaW5nLmNsb3NlKCk7DQogICAgICAgIGlmIChyZXMuZGF0YS5jb2RlID09PSAwKSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZSh7dHlwZTogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiByZXMuZGF0YS5tc2d9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICByb3cuaXNUb3AgPSAhcm93LmlzVG9wID8gMiA6IDE7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMuZGF0YS5tc2cpOw0KICAgICAgICB9DQogICAgICB9KS5jYXRjaChlID0+IHsNCiAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGUubWVzc2FnZSk7DQogICAgICB9KTsNCiAgICB9LA0KICB9DQp9DQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/system/notice","sourcesContent":["<template>\r\n <div class=\"ele-body\">\r\n <el-card shadow=\"never\">\r\n <!-- 搜索表单 -->\r\n <el-form :model=\"table.where\" label-width=\"77px\" class=\"ele-form-search\"\r\n @keyup.enter.native=\"$refs.table.reload()\" @submit.native.prevent>\r\n <el-row :gutter=\"15\">\r\n <el-col :md=\"6\" :sm=\"12\">\r\n <el-form-item label=\"通知标题:\">\r\n <el-input v-model=\"table.where.title\" placeholder=\"请输入通知标题\" clearable/>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :md=\"6\" :sm=\"12\">\r\n <div class=\"ele-form-actions\">\r\n <el-button type=\"primary\" @click=\"$refs.table.reload()\" icon=\"el-icon-search\" class=\"ele-btn-icon\">查询\r\n </el-button>\r\n <el-button @click=\"(table.where={})&&$refs.table.reload()\">重置</el-button>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!-- 操作按钮 -->\r\n <div class=\"ele-table-tool ele-table-tool-default\">\r\n <el-button @click=\"showEdit=true\" type=\"primary\" icon=\"el-icon-plus\" class=\"ele-btn-icon\" size=\"small\" v-if=\"permission.includes('sys:notice:add')\">添加\r\n </el-button>\r\n <el-button @click=\"remove()\" type=\"danger\" icon=\"el-icon-delete\" class=\"ele-btn-icon\" size=\"small\" v-if=\"permission.includes('sys:notice:dall')\">批量删除\r\n </el-button>\r\n </div>\r\n <!-- 数据表格 -->\r\n <ele-data-table ref=\"table\" :config=\"table\" :choose.sync=\"choose\" height=\"calc(100vh - 315px)\" highlight-current-row>\r\n <template slot-scope=\"{index}\">\r\n <el-table-column type=\"selection\" width=\"45\" align=\"center\" fixed=\"left\"/>\r\n <el-table-column type=\"index\" :index=\"index\" label=\"编号\" width=\"60\" align=\"center\" fixed=\"left\" show-overflow-tooltip/>\r\n <el-table-column prop=\"title\" label=\"通知标题\" sortable=\"custom\" show-overflow-tooltip min-width=\"250\"/>\r\n <el-table-column label=\"通知来源\" min-width=\"100\" align=\"center\">\r\n <template slot-scope=\"{row}\">\r\n <el-tag :type=\"['primary','success'][row.source]\" size=\"mini\">{{ ['内部通知', '外部新闻'][row.source] }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"is_top\" label=\"是否置顶\" sortable=\"custom\" :resizable=\"false\" min-width=\"120\">\r\n <template slot-scope=\"{row}\">\r\n <el-switch v-model=\"row.is_top\" @change=\"editIsTop(row)\" :active-value=\"1\" :inactive-value=\"2\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"status\" label=\"通知状态\" sortable=\"custom\" :resizable=\"false\" min-width=\"120\">\r\n <template slot-scope=\"{row}\">\r\n <el-switch v-model=\"row.status\" @change=\"editStatus(row)\" :active-value=\"1\" :inactive-value=\"2\"/>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"browse\" label=\"浏览量\" sortable=\"custom\" show-overflow-tooltip min-width=\"100\"/>\r\n <el-table-column label=\"创建时间\" sortable=\"custom\" show-overflow-tooltip min-width=\"160\">\r\n <template slot-scope=\"{row}\">{{ row.create_time | toDateString }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"更新时间\" sortable=\"custom\" show-overflow-tooltip min-width=\"160\">\r\n <template slot-scope=\"{row}\">{{ row.update_time | toDateString }}</template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" width=\"130px\" align=\"center\" :resizable=\"false\" fixed=\"right\">\r\n <template slot-scope=\"{row}\">\r\n <el-link @click=\"edit(row)\" icon=\"el-icon-edit\" type=\"primary\" :underline=\"false\" v-if=\"permission.includes('sys:notice:edit')\">修改</el-link>\r\n <el-popconfirm title=\"确定要删除此通知吗?\" @confirm=\"remove(row)\" class=\"ele-action\">\r\n <el-link slot=\"reference\" icon=\"el-icon-delete\" type=\"danger\" :underline=\"false\" v-if=\"permission.includes('sys:notice:delete')\">删除</el-link>\r\n </el-popconfirm>\r\n </template>\r\n </el-table-column>\r\n </template>\r\n </ele-data-table>\r\n </el-card>\r\n <!-- 编辑弹窗 -->\r\n <el-dialog :title=\"editForm.id?'修改通知':'修改通知'\" :visible.sync=\"showEdit\" width=\"600px\"\r\n @closed=\"editForm={}\" :destroy-on-close=\"true\" custom-class=\"ele-dialog-form\" :lock-scroll=\"false\">\r\n <el-form :model=\"editForm\" ref=\"editForm\" :rules=\"editRules\" label-width=\"82px\">\r\n <el-row :gutter=\"15\">\r\n <el-col :sm=\"12\">\r\n <el-form-item label=\"通知标题:\" prop=\"title\">\r\n <el-input v-model=\"editForm.title\" placeholder=\"请输入通知标题\" clearable/>\r\n </el-form-item>\r\n <el-form-item label=\"通知状态:\">\r\n <el-radio-group v-model=\"editForm.status\">\r\n <el-radio :label=\"1\">正常</el-radio>\r\n <el-radio :label=\"2\">禁用</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :sm=\"12\">\r\n <el-form-item label=\"通知来源:\">\r\n <el-radio-group v-model=\"editForm.source\">\r\n <el-radio :label=\"1\">内部通知</el-radio>\r\n <el-radio :label=\"2\">外部新闻</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"是否置顶:\">\r\n <el-radio-group v-model=\"editForm.is_top\">\r\n <el-radio :label=\"1\">置顶</el-radio>\r\n <el-radio :label=\"2\">不置顶</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n <!-- 富文本编辑器 -->\r\n <tinymce-editor v-model=\"editForm.content\" :init=\"editContent\"/>\r\n </el-form>\r\n <div slot=\"footer\">\r\n <el-button @click=\"showEdit=false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"save\">保存</el-button>\r\n </div>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport TinymceEditor from '@/components/TinymceEditor'\r\nimport { mapGetters } from \"vuex\";\r\nexport default {\r\n name: \"SysNotice\",\r\n components: {TinymceEditor},\r\n data() {\r\n return {\r\n table: {url: '/notice/index', where: {}}, // 表格配置\r\n choose: [], // 表格选中数据\r\n showEdit: false, // 是否显示表单弹窗\r\n editForm: {source:1,status:1,is_top:2}, // 表单数据\r\n editRules: { // 表单验证规则\r\n title: [\r\n {required: true, message: '请输入通知标题', trigger: 'blur'}\r\n ],\r\n status: [\r\n {required: true, message: '请输入选择通知状态', trigger: 'blur'}\r\n ],\r\n source: [\r\n {required: true, message: '请输入选择通知来源', trigger: 'blur'}\r\n ],\r\n is_top: [\r\n {required: true, message: '请输入选择是否置顶', trigger: 'blur'}\r\n ],\r\n },\r\n // 自定义文件上传(这里使用把选择的文件转成blob演示)\r\n file_picker_callback: (callback, value, meta) => {\r\n let input = document.createElement('input');\r\n input.setAttribute('type', 'file');\r\n // 设定文件可选类型\r\n if (meta.filetype === 'image') {\r\n input.setAttribute('accept', 'image/*');\r\n } else if (meta.filetype === 'media') {\r\n input.setAttribute('accept', 'video/*');\r\n }\r\n input.onchange = () => {\r\n let file = input.files[0];\r\n let reader = new FileReader();\r\n reader.onload = (e) => {\r\n let blob = new Blob([e.target.result], {type: file.type});\r\n callback(URL.createObjectURL(blob));\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n input.click();\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\"permission\"]),\r\n \r\n editContent() {\r\n return {\r\n menubar: false,\r\n file_picker_callback: this.file_picker_callback,\r\n skin_url: this.$store.state.theme.theme === 'dark' ? '/tinymce/skins/ui/oxide-dark' : '/tinymce/skins/ui/oxide',\r\n content_css: this.$store.state.theme.theme === 'dark' ? '/tinymce/skins/content/dark/content.css' : '/tinymce/skins/content/default/content.css'\r\n };\r\n }\r\n },\r\n mounted() {\r\n },\r\n methods: {\r\n /* 显示编辑 */\r\n edit(row) {\r\n this.editForm = Object.assign({}, row);\r\n this.showEdit = true;\r\n },\r\n /* 保存编辑 */\r\n save() {\r\n this.$refs['editForm'].validate((valid) => {\r\n if (valid) {\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/notice/edit', this.editForm).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.showEdit = false;\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n } else {\r\n return false;\r\n }\r\n });\r\n },\r\n /* 删除 */\r\n remove(row) {\r\n if (!row) { // 批量删除\r\n if (this.choose.length === 0) return this.$message.error('请至少选择一条数据');\r\n let ids = this.choose.map(d => d.id);\r\n this.$confirm('确定要删除选中的通知吗?', '提示', {type: 'warning'}).then(() => {\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/notice/delete', {id: ids}).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }).catch(() => 0);\r\n } else { // 单个删除\r\n const loading = this.$loading({lock: true});\r\n this.$http.post('/notice/delete', {id:row.id}).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n this.$refs.table.reload();\r\n } else {\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n }\r\n },\r\n /* 更改状态 */\r\n editStatus(row) {\r\n const loading = this.$loading({lock: true});\r\n let params = Object.assign({}, row);\r\n this.$http.post('/notice/status', params).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n } else {\r\n row.status = !row.status ? 2 : 1;\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n },\r\n /* 是否置顶 */\r\n editIsTop(row) {\r\n const loading = this.$loading({lock: true});\r\n let params = Object.assign({}, row);\r\n this.$http.post('/notice/setIsTop', params).then(res => {\r\n loading.close();\r\n if (res.data.code === 0) {\r\n this.$message({type: 'success', message: res.data.msg});\r\n } else {\r\n row.isTop = !row.isTop ? 2 : 1;\r\n this.$message.error(res.data.msg);\r\n }\r\n }).catch(e => {\r\n loading.close();\r\n this.$message.error(e.message);\r\n });\r\n },\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.ele-block >>> .el-upload, .ele-block >>> .el-upload-dragger {\r\n width: 100%;\r\n}\r\n</style>"]}]}
|