index.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <template>
  2. <div>
  3. <div class="sy-content" v-if="!isShowReport">
  4. <el-row>
  5. <el-col>
  6. <!-- 搜索信息 -->
  7. <el-form ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="80px">
  8. <el-form-item label="报表名称" prop="reportTableName">
  9. <el-input v-model="queryParams.reportTableName" placeholder="请输入报表名称" maxlength="10">
  10. </el-input>
  11. </el-form-item>
  12. <el-form-item label="报表类型" prop="reportTableType">
  13. <el-select v-model="queryParams.reportTableType" placeholder="请选择类型">
  14. <el-option v-for="tableType in reportTableTypeList" :key="tableType.value"
  15. :label="tableType.label" :value="tableType.value">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button type="primary" icon="el-icon-search" size="mini"
  21. @click="getAllReportTable">查询</el-button>
  22. <!-- <el-button ref="btn" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> -->
  23. </el-form-item>
  24. </el-form>
  25. <!-- 数据组表格信息 -->
  26. <CommonTable ref="runConfigTable" :tableHeaderTitle="tableHeaderTitle" :tableData="tableData"
  27. :isShowCheckbox="isShowCheckbox" :isShowIndex="isShowIndex" :tableHight="tableHight"
  28. :tableOperate="tableOperate" @reportNameClick="reportNameClick" @runRecordEvent="runRecordEvent"
  29. @timeConfigEvent="timeConfigEvent" @runConfigEvent="runConfigEvent"
  30. @stopConfigEvent="stopConfigEvent" @reportAuthEvent="reportAuthEvent"
  31. @reportAuthDetail="reportAuthDetail" @delReportTableEvent="delReportTableEvent">
  32. </CommonTable>
  33. <!-- 分页信息 -->
  34. <pagination v-show="tableTotal > 0" small :total="tableTotal" :page.sync="queryParams.page"
  35. :limit.sync="queryParams.limit" align="right" @pagination="getAllReportTable" />
  36. </el-col>
  37. </el-row>
  38. <!-- 运行记录 -->
  39. <RunRecord ref="runRecord" @getAllReportTable="getAllReportTable"></RunRecord>
  40. <!-- 定时器配置 -->
  41. <TimeConfig ref="timeConfig" @getAllReportTable="getAllReportTable"></TimeConfig>
  42. <!-- 报表授权 -->
  43. <ReportAuth ref="reportAuth" @getAllReportTable="getAllReportTable"></ReportAuth>
  44. <!-- 报表授权详情 -->
  45. <ReportAuthDetail ref="reportAuthDetail" @getAllReportTable="getAllReportTable"></ReportAuthDetail>
  46. </div>
  47. <iframe @load="sendToken" id="myIframe" :src="iframeSrc" style="height: 90vh;width: 100%;border: none;"
  48. v-if="isShowReport"></iframe>
  49. </div>
  50. </template>
  51. <script>
  52. import CommonTable from '@/components/CommonTable/index.vue'
  53. import RunRecord from './runRecord'
  54. import TimeConfig from './timeConfig'
  55. import ReportAuth from './reportAuth'
  56. import ReportAuthDetail from './reportAuthDetail'
  57. import { showConfirmWin } from "@/utils/cqcy"
  58. import { getToken } from '@/utils/auth'
  59. import {
  60. getAllReportTable, runAutoTableById,
  61. delReportTableById
  62. } from '@/api/report/reportTable'
  63. export default {
  64. created() {
  65. this.getAllReportTable()
  66. },
  67. components: {
  68. CommonTable,
  69. RunRecord,
  70. TimeConfig,
  71. ReportAuth,
  72. ReportAuthDetail
  73. },
  74. data() {
  75. return {
  76. //是否展示报表
  77. isShowReport: false,
  78. reportId: null,
  79. iframeSrc: process.env.VUE_APP_BASE_API + '/reportSheet/report-history.html',
  80. //表格参数
  81. isShowCheckbox: false,
  82. isShowIndex: true,
  83. tableHight: '68vh',
  84. tableHeaderTitle: [
  85. {
  86. propName: "reportTableName",
  87. labelName: "报表名称",
  88. type: "html",
  89. formatter: (row, column, cellValue, index) => {
  90. let html = `<span style="color: #409eff; cursor: pointer"`
  91. html += ` :title="scope.row.reportTableName">`
  92. html += row.reportTableName
  93. html += `</span>`
  94. return html
  95. },
  96. methodName: "reportNameClick",
  97. align: "center"
  98. },
  99. {
  100. propName: "reportTableType",
  101. labelName: "报表类型",
  102. formatter: (row, column, cellValue, index) => {
  103. if (row.reportTableType == 0) {
  104. return '手动报表'
  105. } else if (row.reportTableType == 1 || row.reportTableType == 3) {
  106. return '周期报表'
  107. } else if (row.reportTableType == 2 || row.reportTableType == 4) {
  108. return '事件驱动报表'
  109. } else if (row.reportTableType == 5 || row.reportTableType == 6) {
  110. return '设备报表'
  111. }
  112. },
  113. align: "center"
  114. },
  115. {
  116. propName: "runState",
  117. labelName: "运行状态",
  118. formatter: (row, column, cellValue, index) => {
  119. if (row.runState == 0) {
  120. return '停止'
  121. } else if (row.runState == 1) {
  122. return '运行中'
  123. }
  124. },
  125. align: "center",
  126. width: '100'
  127. },
  128. {
  129. propName: "createTime",
  130. labelName: "创建时间",
  131. align: "center",
  132. width: '200'
  133. }
  134. ],
  135. tableData: [],
  136. tableOperate: [
  137. {
  138. btnName: '运行记录',
  139. size: "mini",
  140. style: '',
  141. icon: 'el-icon-setting',
  142. methodName: "runRecordEvent",
  143. },
  144. {
  145. btnName: '配置',
  146. size: "mini",
  147. style: '',
  148. icon: 'el-icon-setting',
  149. methodName: "timeConfigEvent",
  150. hidden: row => {
  151. return row.runState === 0
  152. }
  153. },
  154. {
  155. btnName: '运行',
  156. size: "mini",
  157. style: '',
  158. icon: 'el-icon-video-play',
  159. methodName: "runConfigEvent",
  160. hidden: row => {
  161. return row.runState === 0
  162. }
  163. },
  164. {
  165. btnName: '停止',
  166. size: "mini",
  167. style: 'color: red;',
  168. icon: 'el-icon-video-pause',
  169. methodName: "stopConfigEvent",
  170. hidden: row => {
  171. return row.runState === 1
  172. }
  173. },
  174. {
  175. btnName: '授权',
  176. size: "mini",
  177. style: '',
  178. icon: 'el-icon-user',
  179. methodName: "reportAuthEvent",
  180. hidden: row => {
  181. return row.runState === 0
  182. }
  183. },
  184. {
  185. btnName: '授权详情',
  186. size: "mini",
  187. style: '',
  188. icon: 'el-icon-document',
  189. methodName: "reportAuthDetail",
  190. },
  191. {
  192. btnName: '删除',
  193. size: "mini",
  194. style: 'color: red;',
  195. icon: 'el-icon-delete',
  196. methodName: "delReportTableEvent",
  197. }
  198. ],
  199. queryParams: {
  200. page: 1,
  201. limit: 10,
  202. reportTableName: '',
  203. reportTableType: null,
  204. },
  205. tableTotal: 0,
  206. //报表类型
  207. reportTableTypeList: [
  208. {
  209. value: 0,
  210. label: '手动报表'
  211. }, {
  212. value: 1,
  213. label: '周期报表'
  214. }, {
  215. value: 2,
  216. label: '事件驱动报表'
  217. }, {
  218. value: 3,
  219. label: '设备报表'
  220. }
  221. ]
  222. }
  223. },
  224. methods: {
  225. /** 分页获取当前登录人的所有报表 */
  226. getAllReportTable() {
  227. getAllReportTable(this.queryParams).then(res => {
  228. if (!res || !res.data) {
  229. this.$message({
  230. message: '数据查询失败!',
  231. type: 'warning'
  232. })
  233. return
  234. }
  235. this.tableTotal = res.data.count
  236. this.tableData = res.data.reportTableList
  237. })
  238. },
  239. /** 报表名称点击事件 */
  240. reportNameClick(data) {
  241. this.reportId = data.id
  242. this.isShowReport = true
  243. },
  244. /** 运行记录 */
  245. runRecordEvent(row) {
  246. this.$refs.runRecord.params.autoTableId = row.id
  247. this.$refs.runRecord.visible = true
  248. },
  249. /** 配置 */
  250. timeConfigEvent(row) {
  251. this.$refs.timeConfig.reportForm.id = row.id
  252. this.$refs.timeConfig.visible = true
  253. },
  254. /** 运行 */
  255. runConfigEvent(row) {
  256. showConfirmWin(this, null, '您确定要运行该报表吗?', () => {
  257. let params = { id: row.id, runState: 1 }
  258. runAutoTableById(params).then(res => {
  259. this.$message({
  260. message: '运行报表成功!',
  261. type: 'success'
  262. })
  263. this.getAllReportTable()
  264. })
  265. })
  266. },
  267. /** 停止 */
  268. stopConfigEvent(row) {
  269. showConfirmWin(this, null, '您确定要停止该报表吗?', () => {
  270. let params = { id: row.id, runState: 0 }
  271. runAutoTableById(params).then(res => {
  272. this.$message({
  273. message: '停止报表成功!',
  274. type: 'success'
  275. })
  276. this.getAllReportTable()
  277. })
  278. })
  279. },
  280. /** 授权 */
  281. reportAuthEvent(row) {
  282. this.$refs.reportAuth.reportId = row.id
  283. this.$refs.reportAuth.visible = true
  284. },
  285. /** 授权详情 */
  286. reportAuthDetail(row) {
  287. this.$refs.reportAuthDetail.reportId = row.id
  288. this.$refs.reportAuthDetail.visible = true
  289. },
  290. /** 删除报表 */
  291. delReportTableEvent(row) {
  292. showConfirmWin(this, null, '您确定要删除该报表吗?', () => {
  293. delReportTableById(row.id).then(res => {
  294. this.$message({
  295. message: '删除报表成功!',
  296. type: 'success'
  297. })
  298. this.getAllReportTable()
  299. })
  300. })
  301. },
  302. sendToken() {
  303. const _this = this
  304. _this.sendMsg({
  305. cmd: 'init',
  306. data: {
  307. token: getToken(),
  308. url: process.env.VUE_APP_BASE_API,
  309. reportId: this.reportId
  310. }
  311. })
  312. window.addEventListener('message', function (event) {
  313. const json = event.data
  314. if (json.cmd === 'close') {
  315. _this.isShowDesign = false
  316. }
  317. })
  318. },
  319. sendMsg(msg) {
  320. document.getElementById('myIframe').contentWindow.postMessage(msg, '*')
  321. }
  322. }
  323. }
  324. </script>