087abd4e1af2386580d8a19e499a46432080a27a.svn-base 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. <template>
  2. <el-dialog title="任务处理详细"
  3. :visible.sync="dialogVisible"
  4. :close-on-click-modal="false"
  5. width="800px"
  6. @close="closeDialog">
  7. <div class="sysContent">
  8. <el-tabs type="border-card" class="tab-container">
  9. <el-tab-pane label="问题信息">
  10. <el-divider content-position="left">问题基本信息</el-divider>
  11. <el-row type="flex">
  12. <el-col :span="4" class="title">对象代码</el-col>
  13. <el-col :span="8">{{form.code}}</el-col>
  14. <el-col :span="4" class="title">对象名称</el-col>
  15. <el-col :span="8">{{form.name}}</el-col>
  16. </el-row>
  17. <el-row type="flex">
  18. <el-col :span="4" class="title">所属行政区代码</el-col>
  19. <el-col :span="8">{{form.adCode}}</el-col>
  20. <el-col :span="4" class="title">发现时间</el-col>
  21. <el-col :span="8">{{form.pblmTm}}</el-col>
  22. </el-row>
  23. <el-row type="flex">
  24. <el-col :span="4" class="title">问题类别</el-col>
  25. <el-col :span="20">{{form.pblmNameBz}}</el-col>
  26. </el-row>
  27. <el-row type="flex">
  28. <el-col :span="4" class="title">检查项目</el-col>
  29. <el-col :span="20">{{form.checkPointBz}}</el-col>
  30. </el-row>
  31. <el-row type="flex">
  32. <el-col :span="4" class="title">问题描述</el-col>
  33. <el-col :span="20">{{form.pblmDescBz}}</el-col>
  34. </el-row>
  35. <el-row type="flex">
  36. <el-col :span="4" class="title">详细描述</el-col>
  37. <el-col :span="20">{{form.inspPblmDesc}}</el-col>
  38. </el-row>
  39. <el-row type="flex">
  40. <el-col :span="4" class="title">备注</el-col>
  41. <el-col :span="20">{{form.note}}</el-col>
  42. </el-row>
  43. <el-divider content-position="left">问题附件信息</el-divider>
  44. <el-tabs type="border-card" style="height:240px;" class="fileTab">
  45. <el-tab-pane :label="picturetabName">
  46. <el-row>
  47. <el-carousel :interval="4000" style="height:100%;" id="imgView">
  48. <el-carousel-item v-for="(item,index) in pictureArray" :key="index" >
  49. <img style="width:100%;height:100%;" :src="`${hostUrl}/${item.filePath}`" alt>
  50. </el-carousel-item>
  51. <el-carousel-item v-if="pictureArray.length==0" style="display: flex;justify-content: center;align-items: center">
  52. <p>暂无图片信息</p>
  53. </el-carousel-item>
  54. </el-carousel>
  55. </el-row>
  56. </el-tab-pane>
  57. <el-tab-pane :label="audiotabName">
  58. <el-table border :data="audioArray" style="width: 100%;margin: 0 auto;">
  59. <el-table-column header-align="center" align="center" label="音频" show-overflow-tooltip>
  60. <template slot-scope="scope">
  61. <elaudio
  62. style="margin-left:15%;width:100px;height:30px;"
  63. :theUrl="`${hostUrl}/${scope.row.filePath}`"
  64. ></elaudio>
  65. </template>
  66. </el-table-column>
  67. </el-table>
  68. </el-tab-pane>
  69. <el-tab-pane :label="videotabName">
  70. <el-table border :data="videoArray" style="width: 100%;margin: 0 auto;">
  71. <el-table-column header-align="center" align="center" label="视频" show-overflow-tooltip>
  72. <template slot-scope="scope">
  73. <video-player
  74. class="vjs-custom-skin"
  75. ref="videoPlayer"
  76. :options="scope.row"
  77. :playsinline="true"
  78. ></video-player>
  79. </template>
  80. </el-table-column>
  81. </el-table>
  82. </el-tab-pane>
  83. <el-tab-pane :label="filetabName">
  84. <el-table border :data="fileArray" style="width: 100%;margin: 0 auto;">
  85. <el-table-column header-align="center" align="center" label="文档" show-overflow-tooltip>
  86. <template slot-scope="scope">
  87. <p>
  88. <a :href="`${hostUrl}/${scope.row.filePath}`" target="_blank"
  89. rel="noopener noreferrer">
  90. {{scope.row.fileName}}
  91. </a>
  92. </p>
  93. </template>
  94. </el-table-column>
  95. </el-table>
  96. </el-tab-pane>
  97. </el-tabs>
  98. </el-tab-pane>
  99. <el-tab-pane label="反馈信息">
  100. <el-divider content-position="left">反馈基本信息</el-divider>
  101. <el-row type="flex">
  102. <el-col :span="4" class="title">整改结果</el-col>
  103. <el-col :span="8">{{formMend.pblmState=='0'?'未销号':formMend.pblmState=='1'?'销号':''}}</el-col>
  104. <el-col :span="4" class="title">整改时间</el-col>
  105. <el-col :span="8">{{formMend.pblmRectTm}}</el-col>
  106. </el-row>
  107. <el-divider content-position="left">反馈流程信息</el-divider>
  108. <el-table
  109. :data="tableData"
  110. border
  111. height="300px"
  112. style="width: 100%">
  113. <el-table-column
  114. prop="pblmRectNote"
  115. show-overflow-tooltip
  116. align="center"
  117. label="反馈内容">
  118. </el-table-column>
  119. <el-table-column
  120. prop="pblmRectDuty"
  121. show-overflow-tooltip
  122. align="center"
  123. label="反馈单位">
  124. </el-table-column>
  125. <el-table-column
  126. prop="pblmRectName"
  127. show-overflow-tooltip
  128. align="center"
  129. label="反馈人姓名">
  130. </el-table-column>
  131. <el-table-column
  132. prop="pblmRectTm"
  133. show-overflow-tooltip
  134. align="center"
  135. label="反馈时间">
  136. </el-table-column>
  137. </el-table>
  138. <el-divider content-position="left">反馈附件</el-divider>
  139. <el-tabs type="border-card" style="height:240px;" class="fileTab">
  140. <el-tab-pane :label="picturetabName1">
  141. <el-row>
  142. <el-carousel :interval="4000" style="height:100%;" id="imgView1">
  143. <el-carousel-item v-for="(item,index) in pictureArray1" :key="index" >
  144. <img style="width:100%;height:100%;" :src="`${hostUrl}/${item.filePath}`" alt>
  145. </el-carousel-item>
  146. <el-carousel-item v-if="pictureArray.length==0" style="display: flex;justify-content: center;align-items: center">
  147. <p>暂无图片信息</p>
  148. </el-carousel-item>
  149. </el-carousel>
  150. </el-row>
  151. </el-tab-pane>
  152. <el-tab-pane :label="audiotabName1">
  153. <el-table border :data="audioArray1" style="width: 100%;margin: 0 auto;">
  154. <el-table-column header-align="center" align="center" label="音频" show-overflow-tooltip>
  155. <template slot-scope="scope">
  156. <elaudio
  157. style="margin-left:15%;width:100px;height:30px;"
  158. :theUrl="`${hostUrl}/${scope.row.filePath}`"
  159. ></elaudio>
  160. </template>
  161. </el-table-column>
  162. </el-table>
  163. </el-tab-pane>
  164. <el-tab-pane :label="videotabName1">
  165. <el-table border :data="videoArray1" style="width: 100%;margin: 0 auto;">
  166. <el-table-column header-align="center" align="center" label="视频" show-overflow-tooltip>
  167. <template slot-scope="scope">
  168. <video-player
  169. class="vjs-custom-skin"
  170. ref="videoPlayer"
  171. :options="scope.row"
  172. :playsinline="true"
  173. ></video-player>
  174. </template>
  175. </el-table-column>
  176. </el-table>
  177. </el-tab-pane>
  178. <el-tab-pane :label="filetabName1">
  179. <el-table border :data="fileArray1" style="width: 100%;margin: 0 auto;">
  180. <el-table-column header-align="center" align="center" label="文档" show-overflow-tooltip>
  181. <template slot-scope="scope">
  182. <p>
  183. <a :href="`${hostUrl}/${scope.row.filePath}`" target="_blank"
  184. rel="noopener noreferrer">
  185. {{scope.row.fileName}}
  186. </a>
  187. </p>
  188. </template>
  189. </el-table-column>
  190. </el-table>
  191. </el-tab-pane>
  192. </el-tabs>
  193. </el-tab-pane>
  194. </el-tabs>
  195. </div>
  196. </el-dialog>
  197. </template>
  198. <script>
  199. import Viewer from 'viewerjs';
  200. import 'viewerjs/dist/viewer.css';
  201. import request from '@util/gw_ajax_request.js'
  202. import { hostUrl } from "@util/global_variable.js";
  203. import { deleteFileById } from "@api/duChaAPI.js";
  204. export default {
  205. props: {
  206. systemId: {
  207. type: String
  208. }
  209. },
  210. data() {
  211. return {
  212. dialogVisible:true,
  213. pictureArray: [],
  214. audioArray: [],
  215. videoArray: [],
  216. fileArray: [],
  217. audiotabName: "音频资料(0)",
  218. videotabName: "视频资料(0)",
  219. picturetabName: "图片资料(0)",
  220. filetabName: "其他资料(0)",
  221. pictureArray1: [],
  222. audioArray1: [],
  223. videoArray1: [],
  224. fileArray1: [],
  225. audiotabName1: "音频资料(0)",
  226. videotabName1: "视频资料(0)",
  227. picturetabName1: "图片资料(0)",
  228. filetabName1: "其他资料(0)",
  229. form:{},
  230. formMend:{},
  231. tableData:[]
  232. }
  233. },
  234. components: {
  235. },
  236. computed: {
  237. hostUrl(){
  238. return hostUrl
  239. }
  240. },
  241. mounted() {
  242. this.getBasePblm();
  243. this.getMendBase();
  244. this.getFileList();
  245. },
  246. methods: {
  247. getBasePblm(){
  248. this.form = {};
  249. request.get(`/gw/pblm/shr/getGwPblmShr/${this.systemId}`).then(res => {
  250. if (res.success) {
  251. this.form = res.data;
  252. }
  253. })
  254. },
  255. getMendBase(){
  256. this.formMend = {};
  257. request.get(`/gw/pblm/shr/getGwPblmRect/${this.systemId}`).then(res => {
  258. if (res.success) {
  259. this.formMend = res.data;
  260. if(res.data.id){
  261. this.getMendfllow(res.data.id);
  262. this.getMendFileList(res.data.id);
  263. }
  264. }
  265. })
  266. },
  267. getMendfllow(id){
  268. this.tableData = [];
  269. request.get(`/gw/pblm/shr/getGwPblmRectRecord/${id}`).then(res => {
  270. if (res.success) {
  271. this.tableData = res.data;
  272. }
  273. })
  274. },
  275. getFileList() {
  276. const _this = this;
  277. request.get(`/gw/pblm/shr/getGwPblmShrFile/${this.systemId}`).then(res => {
  278. if (res.success) {
  279. this.pictureArray = [];
  280. this.audioArray = [];
  281. this.videoArray = [];
  282. this.fileArray = [];
  283. res.data.forEach(item => {
  284. if (
  285. item.fileExt == "jpg" ||
  286. item.fileExt == "JPG" ||
  287. item.fileExt == "png" ||
  288. item.fileExt == "PNG" ||
  289. item.fileExt == "JPEG" ||
  290. item.fileExt == "jpeg"
  291. ) {
  292. this.pictureArray.push(item);
  293. } else if (item.fileExt == "mp4" || item.fileExt == "MP4") {
  294. this.videoArray.push({
  295. height: "320",
  296. width: "500",
  297. id: item.id,
  298. bizId: item.bizId,
  299. autoplay: false,
  300. muted: true,
  301. language: "en",
  302. playbackRates: [0.7, 1.0, 1.5, 2.0],
  303. sources: [
  304. {
  305. type: "video/mp4",
  306. src: this.hostUrl + item.filePath
  307. }
  308. ]
  309. });
  310. }else if (
  311. item.fileExt == "mp3" ||
  312. item.fileExt == "MP3" ||
  313. item.fileExt == "m4a"
  314. ) {
  315. this.audioArray.push(item);
  316. }else{
  317. this.fileArray.push(item);
  318. }
  319. });
  320. _this.$nextTick(function(){
  321. const ViewerDom = document.getElementById('imgView');
  322. const viewer = new Viewer(ViewerDom, {})
  323. });
  324. this.filetabName = this.fileArray.length ? "其他资料(" + this.fileArray.length + ")" : "其他资料";
  325. this.picturetabName = this.pictureArray.length ? "图片资料(" + this.pictureArray.length + ")" : "图片资料";
  326. this.audiotabName = this.audioArray.length ? "音频资料(" + this.audioArray.length + ")" : "音频资料";
  327. this.videotabName = this.videoArray.length ? "视频资料(" + this.videoArray.length + ")" : "视频资料";
  328. }
  329. })
  330. },
  331. getMendFileList(id) {
  332. const _this = this;
  333. request.get(`/gw/pblm/shr/getGwPblmRectFile/${id}`).then(res => {
  334. if (res.success) {
  335. this.pictureArray1 = [];
  336. this.audioArray1 = [];
  337. this.videoArray1 = [];
  338. this.fileArray1 = [];
  339. res.data.forEach(item => {
  340. if (
  341. item.fileExt == "jpg" ||
  342. item.fileExt == "JPG" ||
  343. item.fileExt == "png" ||
  344. item.fileExt == "PNG" ||
  345. item.fileExt == "JPEG" ||
  346. item.fileExt == "jpeg"
  347. ) {
  348. this.pictureArray1.push(item);
  349. } else if (item.fileExt == "mp4" || item.fileExt == "MP4") {
  350. this.videoArray1.push({
  351. height: "320",
  352. width: "500",
  353. id: item.id,
  354. bizId: item.bizId,
  355. autoplay: false,
  356. muted: true,
  357. language: "en",
  358. playbackRates: [0.7, 1.0, 1.5, 2.0],
  359. sources: [
  360. {
  361. type: "video/mp4",
  362. src: this.hostUrl + item.filePath
  363. }
  364. ]
  365. });
  366. }else if (
  367. item.fileExt == "mp3" ||
  368. item.fileExt == "MP3" ||
  369. item.fileExt == "m4a"
  370. ) {
  371. this.audioArray1.push(item);
  372. }else{
  373. this.fileArray1.push(item);
  374. }
  375. });
  376. _this.$nextTick(function(){
  377. const ViewerDom = document.getElementById('imgView1');
  378. const viewer = new Viewer(ViewerDom, {})
  379. });
  380. this.filetabName1 = this.fileArray1.length ? "其他资料(" + this.fileArray1.length + ")" : "其他资料";
  381. this.picturetabName1 = this.pictureArray1.length ? "图片资料(" + this.pictureArray1.length + ")" : "图片资料";
  382. this.audiotabName1 = this.audioArray1.length ? "音频资料(" + this.audioArray1.length + ")" : "音频资料";
  383. this.videotabName1 = this.videoArray1.length ? "视频资料(" + this.videoArray1.length + ")" : "视频资料";
  384. }
  385. })
  386. },
  387. closeDialog(){
  388. this.$emit("closeDialog");
  389. }
  390. }
  391. }
  392. </script>
  393. <style lang="scss" scoped>
  394. .title{
  395. text-align: center;
  396. background: #f9f9f9;
  397. display: flex;
  398. align-items: center;
  399. justify-content: center;
  400. }
  401. .el-col{
  402. padding: 8px;
  403. border: 1px solid #f0e6e6;
  404. }
  405. .sysContent{
  406. width: 100%;
  407. }
  408. .tab-container{
  409. width:100%;
  410. }
  411. .tab-container /deep/.el-tabs__content{
  412. width: calc(100% - 30px);
  413. height: calc(100% - 70px);
  414. padding: 10px;
  415. overflow: auto;
  416. }
  417. .fileTab{
  418. height:240px;
  419. }
  420. .fileTab /deep/.el-tabs__content{
  421. height: calc(100% - 70px);
  422. padding: 10px;
  423. overflow: auto;
  424. }
  425. .fileTab /deep/.el-tab-pane{
  426. height:100%;
  427. }
  428. .fileTab /deep/.el-row{
  429. height:100%;
  430. }
  431. .fileTab /deep/.el-carousel__container{
  432. height:100%;
  433. }
  434. </style>