2bf771e87d4e23ae0a8c1c8a35536997a9a54ce2.svn-base 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843
  1. <template>
  2. <div style="height:100%;width:100%" id="wenTiContainer_sh">
  3. <el-container>
  4. <el-aside
  5. width="200px"
  6. style="border-right:2px solid #d5d5ff;float:left"
  7. :style="{'max-height':testHeight+'px','height':testHeight+'px'}"
  8. >
  9. <div class="tree" style="
  10. height: 100%;
  11. width: 100%;
  12. overflow: auto;
  13. display: inline-flex;">
  14. <el-tree
  15. :highlight-current="true"
  16. style="height:100%;"
  17. :data="treeData"
  18. node-key="id"
  19. show-checkbox
  20. @check-change="handleCheckChange"
  21. ref="jigou_tree"
  22. >
  23. <div class="custom-tree-node" slot-scope="{ node, data }">
  24. <span style="float:left;">
  25. {{ data.pnm}}
  26. <!-- <el-button v-if="data.type == '2'"
  27. type="text danger"
  28. icon="el-icon-circle-close"
  29. size="mini"
  30. style='color:red'
  31. @click="() => deletePICI(node, data)">
  32. </el-button>-->
  33. <!-- <el-button v-if="data.type == '4'"
  34. type="text danger"
  35. icon="el-icon-circle-close"
  36. size="mini"
  37. style='color:red'
  38. @click="() => deleteZU(node, data)">-->
  39. <!-- </el-button> -->
  40. </span>
  41. <div
  42. style="float:right;display: flex;justify-content: flex-end;align-items: center;width:50%;"
  43. >
  44. <!-- <span style="color:blue;margin-right:20%;" v-show="data.sttm!=''&&data.entm!=''">{{data.sttm}}/{{data.entm}}
  45. </span>-->
  46. <span style="color:blue;width:80px;">
  47. <!-- <el-button v-if="data.type == '1' && data.code != '100'"
  48. type="text"
  49. icon="el-icon-circle-plus"
  50. size="mini"
  51. @click="() => addPICI(node,data,'计划')">
  52. 新建计划
  53. </el-button>-->
  54. <!-- <el-button v-if="data.type == '3'"
  55. type="text"
  56. icon="el-icon-circle-plus"
  57. size="mini"
  58. @click="() => addZU(node,data)">
  59. 添加督查组
  60. </el-button>-->
  61. </span>
  62. </div>
  63. </div>
  64. </el-tree>
  65. </div>
  66. </el-aside>
  67. <el-main style="margin:0px;padding:0px;overflow-y:hidden;" class="shuihui">
  68. <!-- <el-card> -->
  69. <div :style="{'height':testHeight+'px'}">
  70. <!-- 查询条件 -->
  71. <!-- <div class="search">
  72. <el-row type="flex" justify="space-bv-fortween" style="border-bottom:1px dashed rgb(217, 236, 255);padding-bottom:2px;">
  73. <el-col :span="24" style="display:flex;flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:wrap;">
  74. <span>督查机构、督查组:</span>
  75. <el-tag
  76. :key="tag.code"
  77. v-for="tag in treeNodeArray"
  78. closable
  79. style="margin:2px;"
  80. :disable-transitions="false"
  81. @close="deleteTreeNode(tag)">
  82. {{tag.name}}
  83. </el-tag>
  84. <inuptWithDuChaTreeNode
  85. @selectDuChaTreeNode="insertTreeNode"
  86. v-if="treeNodeSelectVisible"
  87. style="margin-left:5px;"
  88. orgType="003"
  89. >
  90. </inuptWithDuChaTreeNode>
  91. <el-button v-else class="button-new-tag" size="mini" @click="treeNodeSelectVisible = true">+添加机构或组</el-button>
  92. </el-col>
  93. </el-row>
  94. </div>-->
  95. <div style="padding: 10px 10px 0 10px;">
  96. <el-row type="flex" justify="space-bv-fortween">
  97. <el-col :span="24">
  98. <el-form :inline="true" size="mini" class="demo-form-inline" style="padding-left: 10px;">
  99. <el-form-item label="行政区划:">
  100. <el-input
  101. resize="none"
  102. type="input"
  103. :rows="3"
  104. clearable
  105. placeholder="请输入行政区划名称"
  106. v-model.trim="findParams.adFullName"
  107. ></el-input>
  108. </el-form-item>
  109. <el-form-item label="工程名称:">
  110. <el-input
  111. resize="none"
  112. type="input"
  113. :rows="3"
  114. clearable
  115. placeholder="请输入水库名称"
  116. v-model.trim="findParams.nm"
  117. ></el-input>
  118. </el-form-item>
  119. <el-form-item label="问题类别:">
  120. <el-select v-model="findParams.inspPblmName" clearable placeholder="请选择">
  121. <el-option
  122. v-for="item in leibie"
  123. :key="item.guid"
  124. :label="item.inspPblmsName"
  125. :value="item.inspPblmsName"
  126. ></el-option>
  127. </el-select>
  128. </el-form-item>
  129. <el-form-item label="是否典型:">
  130. <el-select v-model="findParams.ifCasePblm" clearable placeholder="请选择">
  131. <el-option
  132. v-for="item in supervision"
  133. :key="item.value"
  134. :label="item.label"
  135. :value="item.value"
  136. ></el-option>
  137. </el-select>
  138. </el-form-item>
  139. <el-form-item label="问题筛选:">
  140. <el-select v-model="pblscr" clearable placeholder="请选择">
  141. <el-option
  142. v-for="item in pblscrList"
  143. :key="item.value"
  144. :label="item.lable"
  145. :value="item.value"
  146. ></el-option>
  147. </el-select>
  148. </el-form-item>
  149. <el-form-item label="上报人员:">
  150. <el-input
  151. resize="none"
  152. type="input"
  153. :rows="3"
  154. clearable
  155. placeholder="请输入名称"
  156. v-model.trim="findParams.persName"
  157. ></el-input>
  158. </el-form-item>
  159. <el-form-item label="所在组:">
  160. <el-input
  161. resize="none"
  162. type="input"
  163. :rows="3"
  164. placeholder="请输入所在组名称"
  165. v-model.trim="pblscrGroup"
  166. ></el-input>
  167. </el-form-item>
  168. <el-form-item label="是否包含多媒体文件:">
  169. <el-select v-model="findParams.hasVedio" clearable placeholder="请选择">
  170. <el-option
  171. v-for="item in hasVedio1"
  172. :key="item.value"
  173. :label="item.label"
  174. :value="item.value"
  175. ></el-option>
  176. </el-select>
  177. </el-form-item>
  178. <el-form-item label="发现时间:">
  179. <el-date-picker
  180. v-model="value6"
  181. type="daterange"
  182. value-format="yyyy-MM-dd"
  183. style="width:240px"
  184. range-separator="至"
  185. start-placeholder="开始日期"
  186. end-placeholder="结束日期"
  187. ></el-date-picker>
  188. </el-form-item>
  189. <el-button
  190. style="float:right;margin-right:10px;"
  191. type="primary"
  192. icon="el-icon-search"
  193. @click="search"
  194. >查询</el-button>
  195. </el-form>
  196. </el-col>
  197. </el-row>
  198. </div>
  199. <!-- 查询展示 -->
  200. <div style="margin-top:10px;">
  201. <el-table
  202. v-loading="loading"
  203. border
  204. ref="multipleTable"
  205. :data="searchResult"
  206. :height="tableHeight"
  207. tooltip-effect="dark"
  208. style="width: 100%"
  209. @selection-change="handleSelectionChange"
  210. >
  211. <el-table-column align="center" type="index" label="序号" min-width="25">
  212. <template slot-scope="scope">{{ (currentPage - 1) * pageSize + (scope.$index + 1) }}</template>
  213. </el-table-column>
  214. <!-- <el-table-column header-align="center" align="center" min-width="140" prop="inspPblmName" label="小水库问题类别"></el-table-column> -->
  215. <el-table-column
  216. header-align="center"
  217. align="center"
  218. min-width="60"
  219. prop="province"
  220. label="省" v-if="isXj"
  221. show-overflow-tooltip
  222. ></el-table-column>
  223. <!--<el-table-column-->
  224. <!--header-align="center"-->
  225. <!--align="center"-->
  226. <!--min-width="60"-->
  227. <!--prop="city"-->
  228. <!-- :label="ownAdName"-->
  229. <!--show-overflow-tooltip-->
  230. <!--&gt;</el-table-column>-->
  231. <el-table-column
  232. header-align="center"
  233. align="center"
  234. min-width="60"
  235. prop="country"
  236. label="县"
  237. v-if="isXj"
  238. show-overflow-tooltip
  239. ></el-table-column>
  240. <el-table-column
  241. header-align="center"
  242. align="center"
  243. min-width="100"
  244. prop="nm"
  245. label="水毁工程名称"
  246. show-overflow-tooltip
  247. ></el-table-column>
  248. <el-table-column
  249. header-align="center"
  250. align="center"
  251. min-width="150"
  252. prop="inspPblmDesc"
  253. label="问题描述"
  254. show-overflow-tooltip
  255. ></el-table-column>
  256. <!--<el-table-column-->
  257. <!--header-align="center"-->
  258. <!--align="center"-->
  259. <!--min-width="45"-->
  260. <!--prop="ifCasePblm"-->
  261. <!--label="典型"-->
  262. <!--&gt;-->
  263. <!--<template slot-scope="scope">-->
  264. <!--<p v-if="scope.row.ifCasePblm == 1">是</p>-->
  265. <!--<p v-if="scope.row.ifCasePblm == 0">否</p>-->
  266. <!--</template>-->
  267. <!--</el-table-column>-->
  268. <!-- <el-table-column header-align="center" align="center" min-width="45" prop="inspPblmCate" label="程度">
  269. <template slot-scope="scope">
  270. <p
  271. style="color:#27C19F;"
  272. v-if="scope.row.inspPblmCate == 0"
  273. >一般</p>
  274. <p
  275. style="color:#E6A23C;"
  276. v-if="scope.row.inspPblmCate == 1"
  277. >较重</p>
  278. <p
  279. style="color:#F56C6C;"
  280. v-if="scope.row.inspPblmCate == 2"
  281. >严重</p>
  282. </template>
  283. </el-table-column>-->
  284. <!-- <el-table-column header-align="center" align="center" min-width="180" prop="inspPblmDesc" label="问题描述"></el-table-column> -->
  285. <!-- <el-table-column header-align="center" align="center" min-width="180" prop="inspAddDesc" label="问题地址"></el-table-column> -->
  286. <el-table-column
  287. header-align="center"
  288. align="center"
  289. min-width="60"
  290. prop="persName"
  291. label="上报人"
  292. ></el-table-column>
  293. <el-table-column
  294. header-align="center"
  295. align="center"
  296. min-width="80"
  297. show-overflow-tooltip
  298. prop="orgNm"
  299. label="所在组"
  300. ></el-table-column>
  301. <!-- <el-table-column header-align="center" align="center" min-width="120" prop="recPers" label="操作记录人">
  302. </el-table-column>-->
  303. <el-table-column
  304. prop="collTime"
  305. label="上报时间"
  306. :formatter="timestampToTime"
  307. sortable
  308. align="center"
  309. min-width="100"
  310. show-overflow-tooltip
  311. ></el-table-column>
  312. <!--<el-table-column-->
  313. <!--header-align="center"-->
  314. <!--align="center"-->
  315. <!--min-width="150"-->
  316. <!--prop="hasVedio"-->
  317. <!--label="是否包含多媒体文件"-->
  318. <!--&gt;-->
  319. <!--<template slot-scope="scope">-->
  320. <!--<p v-if="scope.row.hasVedio == 1">是</p>-->
  321. <!--<p v-if="scope.row.hasVedio == 0">否</p>-->
  322. <!--</template>-->
  323. <!--</el-table-column>-->
  324. <el-table-column
  325. header-align="center"
  326. align="center"
  327. min-width="150"
  328. prop="inspPblmName"
  329. label="问题类别"
  330. show-overflow-tooltip
  331. ></el-table-column>
  332. <el-table-column
  333. align="center"
  334. prop
  335. min-width="100"
  336. label="操作"
  337. show-overflow-tooltip
  338. fixed="right"
  339. >
  340. <template slot-scope="scope">
  341. <el-button icon="el-icon-view" title="查看详情"type="text" @click="showDetails(scope.row.pblmId)"></el-button>
  342. <!--<el-button icon="el-icon-edit" type="text" @click="changeSup(scope.row.pblmId)"></el-button>-->
  343. <!--<el-button-->
  344. <!--icon="el-icon-delete"-->
  345. <!-- title="删除问题" @click="removeSuperviseOne(scope.row.pblmId)"-->
  346. <!--type="text"-->
  347. <!--&gt;</el-button>-->
  348. </template>
  349. </el-table-column>
  350. </el-table>
  351. <!-- 分页 -->
  352. <div class="paginationWarpper">
  353. <el-pagination
  354. class="paginationCenter"
  355. background
  356. @size-change="handleSizeChange"
  357. @current-change="search"
  358. :current-page.sync="currentPage"
  359. :page-sizes="[10, 20, 50, 100]"
  360. :page-size="pageSize"
  361. layout="total, sizes, prev, pager, next, jumper"
  362. :total="total"
  363. ></el-pagination>
  364. </div>
  365. </div>
  366. <!-- 详情弹框 -->
  367. <el-dialog
  368. class="outerDialog custom_dialog"
  369. title="问题详情"
  370. width="60%"
  371. v-if="supervisionDetailsVisible"
  372. :visible.sync="supervisionDetailsVisible"
  373. >
  374. <supervision-details ref="xianqing" :problemId="currentProblemId"></supervision-details>
  375. <span slot="footer">
  376. <el-button style="margin-top:5px;" @click="supervisionDetailsVisible = false">返回</el-button>
  377. </span>
  378. </el-dialog>
  379. <!-- 删除的弹窗 -->
  380. <el-dialog class="deleteDialog" title="问题删除描述" :visible.sync="problemDeleteVisible">
  381. <Problem-delete
  382. ref="deleteMiaoShu"
  383. :deleteProblemId="deleteId"
  384. @deleteSuccess="deleteSuccess"
  385. ></Problem-delete>
  386. <span slot="footer">
  387. <el-button @click="problemDeleteVisible = false">返回</el-button>
  388. </span>
  389. </el-dialog>
  390. <!-- 修改弹框 -->
  391. <el-dialog
  392. class="outerDialog custom_dialog"
  393. title="修改督查问题"
  394. width="60%"
  395. :close-on-click-modal="false"
  396. :visible.sync="changeSupervisionVisible"
  397. >
  398. <div class="scroll300">
  399. <div
  400. style="width:49%;overflow-y:auto;max-height:48vh;float:left;border:1px solid #d5d5ff;margin-right:5px;"
  401. >
  402. <p
  403. style="font-weight:bolder;background-color:#d5d5ff;padding:3px;marign-bottom:5px"
  404. >基本信息</p>
  405. <el-form
  406. ref="changeSupFrom"
  407. :rules="rules1"
  408. :model="changeSupervision"
  409. label-width="120px"
  410. >
  411. <el-form-item label="水毁工程名称" prop="nm">
  412. <el-input v-model="changeSupervision.nm" clearable readonly></el-input>
  413. </el-form-item>
  414. <el-form-item label="督查问题类别" prop="inspPblmName">
  415. <!-- <el-input v-model="changeSupervision.inspPblmName" clearable readonly></el-input> -->
  416. <el-select v-model="changeSupervision.inspPblmName" clearable placeholder="请选择">
  417. <el-option
  418. v-for="item in leibie"
  419. :key="item.inspPblmsName"
  420. :label="item.inspPblmsName"
  421. :value="item.inspPblmsName"
  422. ></el-option>
  423. </el-select>
  424. </el-form-item>
  425. <el-form-item label="是否为典型问题:">
  426. <el-radio v-model="changeSupervision.ifCasePblm" label="1">典型</el-radio>
  427. <el-radio v-model="changeSupervision.ifCasePblm" label="0">非典型</el-radio>
  428. </el-form-item>
  429. <el-form-item label="问题描述" prop="inspPblmDesc">
  430. <el-input
  431. type="textarea"
  432. :rows="5"
  433. v-model="changeSupervision.inspPblmDesc"
  434. clearable
  435. ></el-input>
  436. </el-form-item>
  437. <el-form-item label="建议措施" prop="note">
  438. <el-input type="textarea" :rows="3" v-model="changeSupervision.note" clearable></el-input>
  439. </el-form-item>
  440. <el-form-item label="上报人" prop="persName">
  441. <el-input
  442. resize="none"
  443. type="input"
  444. readonly
  445. :rows="3"
  446. placeholder="请输入"
  447. v-model.trim="changeSupervision.persName"
  448. ></el-input>
  449. </el-form-item>
  450. <!-- <el-form-item label="责任单位" prop="inspPblmOrgName">
  451. <el-input resize="none" type="input" :rows="3" placeholder="请输入" v-model.trim="changeSupervision.inspPblmOrgName"></el-input>
  452. </el-form-item>-->
  453. <el-form-item label="采集时间" prop="collTime">
  454. <el-date-picker v-model="changeSupervision.collTime" readonly type="date"></el-date-picker>
  455. </el-form-item>
  456. <!-- <el-form-item label="开始日期" prop="startTime">
  457. <el-date-picker value-format="yyyy-MM-dd" v-model="changeSupervision.startTime" type="date" placeholder="选择日期"></el-date-picker>
  458. </el-form-item>
  459. <el-form-item label="结束日期" prop="endTime">
  460. <el-date-picker value-format="yyyy-MM-dd" v-model="changeSupervision.endTime" type="date" placeholder="选择日期"></el-date-picker>
  461. </el-form-item>-->
  462. </el-form>
  463. </div>
  464. <div
  465. style="width: 49%;float: left;border: 1px solid rgb(213, 213, 255);margin-right: 5px;overflow-y: auto;max-height: 48vh;"
  466. >
  467. <p style="font-weight:bolder;background-color:#d5d5ff;padding:3px;">多媒体信息</p>
  468. <el-tabs style="margin:0px 5px;">
  469. <el-tab-pane :label="picturetabName" style>
  470. <!-- <el-table border :data="pictureArray" style="width: 100%;margin: 0 auto;">
  471. <el-table-column header-align="center" align="center" label="图片">
  472. <template slot-scope="scope">
  473. <img style="width:30%;" :src="`${hostUrl}/${scope.row.filePath}`" alt>
  474. </template>
  475. </el-table-column>
  476. <el-table-column header-align="center" align="center" label="操作">
  477. <template slot-scope="scope">
  478. <el-button size="mini" @click="removeFile(scope.row.id,scope.$index)" type="danger">删除</el-button>
  479. </template>
  480. </el-table-column>
  481. </el-table>-->
  482. <el-row style="text-align:right;">
  483. <el-button
  484. :v-if="!addPicPanel?addPicPanel:addPicPanel"
  485. size="mini"
  486. type="text"
  487. :icon="!addPicPanel?'el-icon-circle-plus-outline':'el-icon-circle-close-outline'"
  488. @click="addPic"
  489. >{{!addPicPanel?"添加":"取消"}}</el-button>
  490. </el-row>
  491. <el-row v-if="addPicPanel">
  492. <upload
  493. ref="uploadFile"
  494. :url="`/pdcApi/file/insert?bizId=`"
  495. @uploadOver="removeNewSupervision"
  496. ></upload>
  497. </el-row>
  498. <el-row>
  499. <div style="overflow-y:auto;overflow-x:hidden;max-height:30vh;padding:10px;">
  500. <div class="upload-container" id="imgView">
  501. <div
  502. v-for="(item, index) in pictureArray"
  503. :key="index"
  504. class="image-preview image-app-preview"
  505. >
  506. <div class="image-preview-wrapper">
  507. <img :src="`${hostUrl}/${item.filePath}`">
  508. <div class="image-preview-action">
  509. <i @click="removeFile(item.id)" class="el-icon-delete"></i>
  510. </div>
  511. </div>
  512. </div>
  513. </div>
  514. </div>
  515. </el-row>
  516. </el-tab-pane>
  517. <el-tab-pane :label="audiotabName">
  518. <el-table border :data="audioArray" style="width: 100%;margin: 0 auto;">
  519. <el-table-column header-align="center" align="center" label="音频">
  520. <template slot-scope="scope">
  521. <elaudio
  522. style="margin-left:15%;width:35%"
  523. :theUrl="`${hostUrl}/${scope.row.filePath}`"
  524. ></elaudio>
  525. </template>
  526. </el-table-column>
  527. <el-table-column header-align="center" align="center" label="操作">
  528. <template slot-scope="scope">
  529. <el-button
  530. size="mini"
  531. @click="removeFile(scope.row.id,scope.$index)"
  532. type="danger"
  533. >删除</el-button>
  534. </template>
  535. </el-table-column>
  536. </el-table>
  537. </el-tab-pane>
  538. <el-tab-pane :label="videotabName">
  539. <el-table border :data="videoArray" style="width: 100%;margin: 0 auto;">
  540. <el-table-column header-align="center" align="center" label="视频">
  541. <template slot-scope="scope">
  542. <elaudio
  543. style="margin-left:15%;width:100px;"
  544. :theUrl="`${hostUrl}/${scope.row.filePath}`"
  545. ></elaudio>
  546. </template>
  547. </el-table-column>
  548. <el-table-column header-align="center" align="center" label="操作">
  549. <template slot-scope="scope">
  550. <el-button
  551. size="mini"
  552. @click="removeFile(scope.row.id,scope.$index)"
  553. type="danger"
  554. >删除</el-button>
  555. </template>
  556. </el-table-column>
  557. </el-table>
  558. </el-tab-pane>
  559. </el-tabs>
  560. </div>
  561. <!-- <upload ref="changeUploadFile" :url="`/pdcApi/file/insert?bizId=`" @uploadOver="removeNewSupervision"></upload> -->
  562. </div>
  563. <span slot="footer">
  564. <el-button
  565. type="primary"
  566. @click="changeSupervisionInfo"
  567. >保存</el-button>
  568. <el-button @click="changeSupervisionVisiblefalse">取消</el-button>
  569. </span>
  570. </el-dialog>
  571. </div>
  572. <!-- </el-card> -->
  573. </el-main>
  574. </el-container>
  575. </div>
  576. </template>
  577. <script>
  578. import {
  579. findPageInfoShuiKu,
  580. getSHProblemNew,
  581. findPageInfo,
  582. findPageInfoRenYin,
  583. getXSKProblemNew,
  584. removeSupervise,
  585. showDetailsXq,
  586. submitUpload,
  587. creatSupervise,
  588. getSupervisdByID,
  589. deleteFileById,
  590. updatelist,
  591. getEngId
  592. } from "../../api/duChaAPI.js";
  593. import request from "../../utils/gw_ajax_request.js";
  594. import { hostUrl } from "@util/global_variable.js";
  595. import elaudio from "../../widgets/elAudioShort.vue";
  596. import inuptWithDuChaTreeNode from "../../widgets/inuptWithDuChaTreeNode.vue";
  597. import inputWidthDuChaNodes from "../../widgets/inputWithDuChaNodes.vue";
  598. import inputWidthDuChaShuiKu from "../../widgets/inputWith_sk.vue";
  599. import Viewer from 'viewerjs';
  600. import 'viewerjs/dist/viewer.css';
  601. export default {
  602. props: ["codeId"],
  603. components: {
  604. upload: resolve => {
  605. require(["../../widgets/uploadFile.vue"], resolve);
  606. },
  607. //详情页
  608. supervisionDetails: resolve => {
  609. require(["./supervisionDetails_shuihui.vue"], resolve);
  610. },
  611. // 删除描述页
  612. ProblemDelete: resolve => {
  613. require(["./problemDelete.vue"], resolve);
  614. },
  615. elaudio: elaudio,
  616. inuptWithDuChaTreeNode: inuptWithDuChaTreeNode,
  617. inputWidthDuChaNodes: inputWidthDuChaNodes,
  618. inputWidthDuChaShuiKu: inputWidthDuChaShuiKu
  619. },
  620. data() {
  621. var validatePass1 = (rules1, value, callback) => {
  622. if (this.newSupervision.startTime > this.newSupervision.endTime) {
  623. callback(new Error("结束时间不能早于开始时间"));
  624. } else {
  625. callback();
  626. }
  627. };
  628. var validatePass2 = (rules1, value, callback) => {
  629. let startTime = this.changeSupervision.startTime.slice(0, 10);
  630. if (startTime > this.changeSupervision.endTime) {
  631. callback(new Error("结束时间不能早于开始时间"));
  632. } else {
  633. callback();
  634. }
  635. };
  636. var divisionList = (rules1, value, callback) => {
  637. if (this.newGroup.divisionList.length) {
  638. callback();
  639. } else {
  640. callback(new Error("至少要添加一个地区"));
  641. }
  642. };
  643. return {
  644. deleteId: "",
  645. addPicPanel: false,
  646. treeNodeArray: [],
  647. treeNodeSelectVisible: false,
  648. adNodeArray: [],
  649. adNodeSelectVisible: false,
  650. areaSelectVisible: false,
  651. rsvrNodeArray: [],
  652. rsvrNodeSelectVisible: false,
  653. skSelectVisible: false,
  654. currentProblemId: "",
  655. updateIdXiuGai: "",
  656. rules1: {
  657. inspPblmName: [
  658. {
  659. required: true,
  660. message: "请输入问题名称",
  661. trigger: "blur"
  662. },
  663. {
  664. min: 1,
  665. max: 999,
  666. message: "不超过100字符",
  667. trigger: "blur"
  668. }
  669. ],
  670. inspPblmDesc: [
  671. {
  672. required: true,
  673. message: "请输入问题描述",
  674. trigger: "blur"
  675. }
  676. ],
  677. recPers: [
  678. {
  679. required: true,
  680. message: "请输入记录人",
  681. trigger: "blur"
  682. },
  683. {
  684. min: 1,
  685. max: 999,
  686. message: "不超过100字符",
  687. trigger: "blur"
  688. }
  689. ],
  690. objType: [
  691. {
  692. required: true,
  693. message: "请选择督查对象类型",
  694. trigger: "change"
  695. }
  696. ],
  697. objId: [
  698. {
  699. required: true,
  700. message: "请选择督查对象类型",
  701. trigger: "change"
  702. }
  703. ],
  704. inspPblmType: [
  705. {
  706. required: true,
  707. message: "请选择督查问题类型",
  708. trigger: "change"
  709. }
  710. ],
  711. dataStat: [
  712. {
  713. required: true,
  714. message: "请选择数据状态",
  715. trigger: "change"
  716. }
  717. ],
  718. collTime: [
  719. {
  720. required: true,
  721. message: "请选择采集时间",
  722. trigger: "change"
  723. }
  724. ],
  725. ifCasePblm: [
  726. {
  727. required: true,
  728. message: "请选择是否典型",
  729. trigger: "change"
  730. }
  731. ],
  732. pblmStat: [
  733. {
  734. required: true,
  735. message: "请选择问题类型",
  736. trigger: "change"
  737. }
  738. ],
  739. inspPblmCate: [
  740. {
  741. required: true,
  742. message: "请选择问题程度",
  743. trigger: "change"
  744. },
  745. {
  746. trigger: "change"
  747. }
  748. ]
  749. },
  750. testHeight: window.innerHeight,
  751. supervisionStateList: [
  752. {
  753. value: "0",
  754. label: "暂存"
  755. },
  756. {
  757. value: "1",
  758. label: "上报"
  759. }
  760. ],
  761. supervisionState: [
  762. {
  763. value: "0",
  764. label: "一般"
  765. },
  766. {
  767. value: "1",
  768. label: "较重"
  769. },
  770. {
  771. value: "2",
  772. label: "严重"
  773. }
  774. ],
  775. supervision: [
  776. {
  777. value: "1",
  778. label: "是"
  779. },
  780. {
  781. value: "0",
  782. label: "否"
  783. }
  784. ],
  785. findUseOrgArray: [],
  786. areaInputValue: {},
  787. memberInputValue: {},
  788. multipleSelection: [], // 已选
  789. selectionType: {
  790. remove: 0,
  791. befor: 0,
  792. now: 0,
  793. after: 0
  794. },
  795. // 根据客户点击的督查类型查找督查对象ID
  796. // 新增
  797. listobjId: [],
  798. userId: localStorage.getItem("userid"),
  799. // 修改督查
  800. pictureArray: [],
  801. audioArray: [],
  802. videoArray: [],
  803. audiotabName: "",
  804. videotabName: "",
  805. picturetabName: "",
  806. playerOptions: {
  807. height: "120",
  808. autoplay: true,
  809. muted: true,
  810. language: "en",
  811. playbackRates: [0.7, 1.0, 1.5, 2.0],
  812. sources: [
  813. {
  814. type: "video/mp4",
  815. // mp4
  816. src: "http://vjs.zencdn.net/v/oceans.mp4"
  817. // webm
  818. // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
  819. },
  820. {
  821. type: "video/mp4",
  822. // mp4
  823. src: "http://vjs.zencdn.net/v/oceans.mp4"
  824. // webm
  825. // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
  826. },
  827. {
  828. type: "video/mp4",
  829. // mp4
  830. src: "http://vjs.zencdn.net/v/oceans.mp4"
  831. // webm
  832. // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
  833. },
  834. {
  835. type: "video/mp4",
  836. // mp4
  837. src: "http://vjs.zencdn.net/v/oceans.mp4"
  838. // webm
  839. // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
  840. }
  841. ]
  842. },
  843. changeSupervisionVisible: false,
  844. changeSupervisionLoading: false,
  845. changeSupervision: {
  846. nm: "",
  847. presId: localStorage.getItem("userid"),
  848. endTime: "",
  849. pblmId: "",
  850. objId: "",
  851. objType: "",
  852. inspGroupId: "",
  853. inspPblmName: "",
  854. inspPblmDesc: "",
  855. pblmLong: "",
  856. pblmLat: "",
  857. pblmStat: "",
  858. ifCasePblm: "",
  859. inspPblmOrgName: "",
  860. pblmPersName: "",
  861. inspPblmCate: "",
  862. reviOpin: "",
  863. reviConc: "",
  864. reviOrgGuid: "",
  865. collTime: "",
  866. recPers: "",
  867. gwComFiles: [
  868. {
  869. id: "",
  870. filePath: "",
  871. bizId: ""
  872. }
  873. ]
  874. },
  875. // 文件弹框
  876. fileList: [], // 当前文件列表
  877. flash: false,
  878. // 督查类型
  879. supervisionTypeList: [
  880. {
  881. value: "1",
  882. label: "小水库"
  883. }
  884. ],
  885. leibie: [],
  886. // 查询
  887. value6: [],
  888. hasVedio1: [
  889. {
  890. value: "1",
  891. label: "是"
  892. },
  893. {
  894. value: "0",
  895. label: "否"
  896. }
  897. ],
  898. findParams: {
  899. hasVedio:"",
  900. adCode: "",
  901. pblmStat: "",
  902. inspPblmCate: "",
  903. inspPblmName: "",
  904. ifCasePblm: "",
  905. nm: "",
  906. adFullName: "",
  907. startTime: "",
  908. endTime: "",
  909. objType: 1,
  910. persId: localStorage.getItem("userid")
  911. },
  912. currentPage: 1, // 页码
  913. pageSize: 20, // 条数
  914. loading: false,
  915. total: 0, // 总数
  916. searchResult: [], // 结果
  917. crId: "", // 当前督查id
  918. // 督查详情
  919. userid: localStorage.getItem("userid"),
  920. supervisionDetailsVisible: false,
  921. problemDeleteVisible: false,
  922. supervisionDetails: {},
  923. pblmId: "",
  924. gwComFiles: [],
  925. treeData: [],
  926. pblscr: "",
  927. pblscrList: [
  928. {
  929. lable: "我的问题",
  930. value: localStorage.getItem("userid")
  931. }
  932. ],
  933. pblscrGroup: "",
  934. tableHeight: window.innerHeight - 190,
  935. };
  936. },
  937. computed:{
  938. hostUrl(){
  939. return hostUrl
  940. }
  941. },
  942. created() {
  943. if (this.userId) {
  944. console.log("已经登录");
  945. this.search();
  946. } else {
  947. this.$router.push("/login");
  948. }
  949. let type = "3";
  950. let pguid = "";
  951. this.getLeftTreeData();
  952. this.addPicPanel = false;
  953. findPageInfoRenYin(type, pguid).then(res => {
  954. this.leibie = res.data;
  955. // console.log(this.leibie)
  956. });
  957. },
  958. watch: {
  959. codeId: function() {
  960. this.search();
  961. }
  962. },
  963. methods: {
  964. handleCheckChange(data, checked, indeterminate) {
  965. let cNarray = this.$refs["jigou_tree"].getCheckedNodes();
  966. console.log(cNarray);
  967. this.treeNodeArray = cNarray;
  968. },
  969. getLeftTreeData() {
  970. var _self = this;
  971. request
  972. .get("/dc/organization/base/getAllNode", {
  973. params: {
  974. userId: this.userId,
  975. orgType: "003"
  976. }
  977. })
  978. .then(res => {
  979. let data = res.data;
  980. data.forEach(ele => {
  981. if (ele.pid == null || ele.pid == "") {
  982. ele.pid = "001";
  983. }
  984. });
  985. data = _self.getTrees(data);
  986. _self.treeData = data;
  987. console.log(data);
  988. // _self.duChaType = _self.treeData[0].id.substring(2,3);
  989. });
  990. },
  991. //格式化树形数据
  992. getTrees(list) {
  993. //@wxcwater重写方法 适应多个树
  994. let highLevelLength = 99; //预设最大节点id长度,目前最大应该为12,所以设置为99保证正常
  995. let _self = this;
  996. list.forEach((item, index) => {
  997. item["pidLength"] = item.pid && item.pid != "" ? item.pid.length : 0;
  998. if (highLevelLength > item.pidLength) {
  999. highLevelLength = item.pidLength;
  1000. }
  1001. });
  1002. console.log(highLevelLength);
  1003. let heightLevelNode = [];
  1004. list.forEach((item, index) => {
  1005. if (highLevelLength >= item.pidLength) {
  1006. heightLevelNode.push(item);
  1007. }
  1008. });
  1009. list.forEach((item, index) => {
  1010. heightLevelNode.forEach(pItem => {
  1011. _self.addTreeNode(pItem, item);
  1012. });
  1013. });
  1014. console.log(heightLevelNode);
  1015. return heightLevelNode;
  1016. },
  1017. addTreeNode: function(treeNode, leafNode) {
  1018. let _self = this;
  1019. if (!treeNode.hasOwnProperty("children")) {
  1020. treeNode["children"] = [];
  1021. }
  1022. if (leafNode.pid == treeNode.id) {
  1023. treeNode.children.push(leafNode);
  1024. return;
  1025. }
  1026. treeNode.children.forEach(item => {
  1027. _self.addTreeNode(item, leafNode);
  1028. });
  1029. },
  1030. // 查询参数逻辑
  1031. insertTreeNode: function(params) {
  1032. this.treeNodeArray.push({
  1033. name: params.name,
  1034. code: params.code
  1035. });
  1036. this.treeNodeSelectVisible = false;
  1037. this.areaSelectVisible = false;
  1038. this.skSelectVisible = false;
  1039. },
  1040. deleteTreeNode: function(tag) {
  1041. let deleteIndex;
  1042. this.treeNodeArray.forEach((item, index) => {
  1043. if (item.code == tag.code) {
  1044. deleteIndex = index;
  1045. }
  1046. });
  1047. this.treeNodeArray.splice(deleteIndex, 1);
  1048. },
  1049. selectDuChaAreaNode(params) {
  1050. this.adNodeArray.push(params);
  1051. this.areaSelectVisible = false;
  1052. this.skSelectVisible = false;
  1053. },
  1054. deleteAreaNode(tag) {
  1055. let deleteIndex;
  1056. this.adNodeArray.forEach((item, index) => {
  1057. if (item.adCode == tag.adCode) {
  1058. deleteIndex = index;
  1059. return;
  1060. }
  1061. });
  1062. this.adNodeArray.splice(deleteIndex, 1);
  1063. },
  1064. selectSkNode(params) {
  1065. this.rsvrNodeArray.push(params);
  1066. this.skSelectVisible = false;
  1067. },
  1068. deleteSkNode(tag) {
  1069. let deleteIndex;
  1070. this.rsvrNodeArray.forEach((item, index) => {
  1071. if (item.rsCode == tag.rsCode) {
  1072. deleteIndex = index;
  1073. return;
  1074. }
  1075. });
  1076. this.rsvrNodeArray.splice(deleteIndex, 1);
  1077. },
  1078. // end
  1079. handleClose(tag) {
  1080. this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
  1081. },
  1082. showInput() {
  1083. this.inputVisible = true;
  1084. this.$nextTick(_ => {
  1085. this.$refs.saveTagInput.$refs.input.focus();
  1086. });
  1087. },
  1088. handleInputConfirm() {
  1089. // let inputValue = this.inputValue;
  1090. // if (inputValue) {
  1091. // this.dynamicTags.push(inputValue);
  1092. // }
  1093. // this.inputVisible = false;
  1094. // this.inputValue = '';
  1095. },
  1096. // 操作成功反馈
  1097. successInfo() {
  1098. this.$message({
  1099. type: "success",
  1100. message: "操作成功!"
  1101. });
  1102. },
  1103. // 操作失败反馈
  1104. failInfo(val) {
  1105. this.$message.error(val);
  1106. },
  1107. // 清空选择
  1108. toggleSelection(rows) {
  1109. this.$refs.multipleTable.clearSelection();
  1110. },
  1111. // 已选择项
  1112. handleSelectionChange(val) {
  1113. this.multipleSelection = val;
  1114. },
  1115. // 文件上传
  1116. submitUpload() {
  1117. this.$refs.upload.submit();
  1118. },
  1119. handleRemove(file, fileList) {
  1120. console.log(file, fileList);
  1121. },
  1122. handlePreview(file) {
  1123. console.log(file);
  1124. },
  1125. // 查询
  1126. exportExcel() {
  1127. // this.loading = true;
  1128. let _self = this;
  1129. request
  1130. .get("/dc/organization/base/getAllNode", {
  1131. params: {
  1132. userId: this.userId,
  1133. orgType: "001"
  1134. }
  1135. })
  1136. .then(res => {
  1137. let orgAllNode = res.data;
  1138. let data = _self.findParams;
  1139. data.pageNum = _self.currentPage;
  1140. // data.recPers = localStorage.getItem('userid');
  1141. data.pageSize = _self.pageSize;
  1142. data.villType = "0";
  1143. // data.adCode = this.codeId;
  1144. _self.findUseOrgArray = [];
  1145. _self.treeNodeArray.forEach(item => {
  1146. if (item.id.length < 12) {
  1147. orgAllNode.forEach(orgItem => {
  1148. if (orgItem.id.startsWith(item.id)) {
  1149. _self.findUseOrgArray.push(orgItem.id);
  1150. }
  1151. });
  1152. } else {
  1153. _self.findUseOrgArray.push(item.id);
  1154. }
  1155. });
  1156. if (_self.findUseOrgArray.length > 0) {
  1157. data["orgIds"] = _self.findUseOrgArray.join(",");
  1158. } else {
  1159. data["orgIds"] = "";
  1160. }
  1161. var xhr = new XMLHttpRequest();
  1162. xhr.open("post", "/pdcApi/dc/insp/pblm/page/track/export", true);
  1163. xhr.responseType = "blob";
  1164. xhr.setRequestHeader(
  1165. "Content-Type",
  1166. "application/json;charset=utf-8"
  1167. );
  1168. xhr.setRequestHeader(
  1169. "persId",
  1170. localStorage.getItem("userid") ? localStorage.getItem("userid") : ""
  1171. );
  1172. xhr.onload = function() {
  1173. if (this.status == 200) {
  1174. var blob = this.response;
  1175. var a = document.createElement("a");
  1176. var url = window.URL.createObjectURL(blob);
  1177. a.href = url;
  1178. //设置文件名称
  1179. a.download = "水毁工程问题列表.xls";
  1180. a.click();
  1181. }
  1182. };
  1183. xhr.send(JSON.stringify(data));
  1184. // getXSKProblemNewExport(data).then(res => {
  1185. // let headers = res.headers;
  1186. // let contentType = headers['content-type'];
  1187. // console.log('响应头信息', headers);
  1188. // if (!res.data) {
  1189. // console.error('响应异常:', res);
  1190. // return false;
  1191. // } else {
  1192. // console.error('下载文件:', res);
  1193. // let d = "\ufeff" + res.data;
  1194. // const blob = new Blob([d],{type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'});
  1195. // const contentDisposition = res.headers['content-disposition'];
  1196. // let fileName = 'unknown';
  1197. // if (contentDisposition) {
  1198. // fileName = window.decodeURI(res.headers['content-disposition'].split('=')[1]);
  1199. // }
  1200. // console.log('文件名称:', fileName);
  1201. // this.downFile(blob, fileName);
  1202. // }
  1203. // });
  1204. });
  1205. },
  1206. exportWord() {
  1207. let _self = this;
  1208. request
  1209. .get("/dc/organization/base/getAllNode", {
  1210. params: {
  1211. userId: this.userId,
  1212. orgType: "001"
  1213. }
  1214. })
  1215. .then(res => {
  1216. let orgAllNode = res.data;
  1217. let data = _self.findParams;
  1218. data.pageNum = _self.currentPage;
  1219. // data.recPers = localStorage.getItem('userid');
  1220. data.pageSize = _self.pageSize;
  1221. data.villType = "0";
  1222. // data.adCode = this.codeId;
  1223. _self.findUseOrgArray = [];
  1224. _self.treeNodeArray.forEach(item => {
  1225. if (item.id.length < 12) {
  1226. orgAllNode.forEach(orgItem => {
  1227. if (orgItem.id.startsWith(item.id)) {
  1228. _self.findUseOrgArray.push(orgItem.id);
  1229. }
  1230. });
  1231. } else {
  1232. _self.findUseOrgArray.push(item.id);
  1233. }
  1234. });
  1235. if (_self.findUseOrgArray.length > 0) {
  1236. data["orgIds"] = _self.findUseOrgArray.join(",");
  1237. } else {
  1238. data["orgIds"] = "";
  1239. }
  1240. // var xhr = new XMLHttpRequest();
  1241. // xhr.open('post', '/pdcApi/track/doc', true);
  1242. // xhr.responseType = 'blob';
  1243. // xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
  1244. // xhr.setRequestHeader('persId', localStorage.getItem('userid') ? localStorage.getItem('userid') : '');
  1245. // xhr.onload = function () {
  1246. // if (this.status == 200) {
  1247. // var blob = this.response;
  1248. // var a = document.createElement('a');
  1249. // var url = window.URL.createObjectURL(blob);
  1250. // a.href = url;
  1251. // //设置文件名称
  1252. // a.download = '水毁工程问题详情.doc';
  1253. // a.click();
  1254. // }
  1255. // }
  1256. // xhr.send(JSON.stringify(data));
  1257. //下载word文档2
  1258. request.post('/track/doc',data).then(res=>{
  1259. if(res.success){
  1260. console.log(this.response)
  1261. var a = document.createElement('a');
  1262. a.href = `${this.hostUrl}${res.data.downloadPath}`;
  1263. //设置文件名称
  1264. a.download = '水毁工程问题详情.doc';
  1265. a.click();
  1266. // window.open(`${this.hostUrl}${res.data.downloadPath}`)
  1267. }else{
  1268. _self.$mesage.error(res.message)
  1269. }
  1270. }).catch(res=>{
  1271. _self.$mesage.error(res.message)
  1272. })
  1273. // getXSKProblemNewExport(data).then(res => {
  1274. // let headers = res.headers;
  1275. // let contentType = headers['content-type'];
  1276. // console.log('响应头信息', headers);
  1277. // if (!res.data) {
  1278. // console.error('响应异常:', res);
  1279. // return false;
  1280. // } else {
  1281. // console.error('下载文件:', res);
  1282. // let d = "\ufeff" + res.data;
  1283. // const blob = new Blob([d],{type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'});
  1284. // const contentDisposition = res.headers['content-disposition'];
  1285. // let fileName = 'unknown';
  1286. // if (contentDisposition) {
  1287. // fileName = window.decodeURI(res.headers['content-disposition'].split('=')[1]);
  1288. // }
  1289. // console.log('文件名称:', fileName);
  1290. // this.downFile(blob, fileName);
  1291. // }
  1292. // });
  1293. });
  1294. },
  1295. search() {
  1296. this.loading = true;
  1297. let _self = this;
  1298. request
  1299. .get("/dc/organization/base/getAllNode", {
  1300. params: {
  1301. userId: this.userId,
  1302. orgType: "003"
  1303. }
  1304. })
  1305. .then(res => {
  1306. let orgAllNode = res.data;
  1307. _self.loading = true;
  1308. let data = _self.findParams;
  1309. data.startTime = this.value6[0];
  1310. data.endTime = this.value6[1];
  1311. data.pageNum = _self.currentPage;
  1312. data.recPers = _self.pblscr;
  1313. data.orgNm = _self.pblscrGroup;
  1314. // data.recPers = localStorage.getItem('userid');
  1315. data.pageSize = _self.pageSize;
  1316. // data.adCode = this.codeId;
  1317. _self.findUseOrgArray = [];
  1318. _self.treeNodeArray.forEach(item => {
  1319. if (item.id.length < 12) {
  1320. // orgAllNode.forEach((orgItem) => {
  1321. // if(orgItem.id.startsWith(item.code)){
  1322. // _self.findUseOrgArray.push(orgItem.id);
  1323. // }
  1324. // });
  1325. } else {
  1326. _self.findUseOrgArray.push(item.id);
  1327. }
  1328. });
  1329. if (_self.findUseOrgArray.length > 0) {
  1330. data["orgIds"] = _self.findUseOrgArray.join(",");
  1331. } else {
  1332. data["orgIds"] = "";
  1333. }
  1334. getSHProblemNew(data).then(res => {
  1335. _self.loading = false;
  1336. _self.multipleSelection = [];
  1337. if (res.success) {
  1338. _self.searchResult = res.data.list;
  1339. // console.log( "绝对是"+searchResult)
  1340. _self.total = res.data.total;
  1341. } else {
  1342. _self.failInfo();
  1343. }
  1344. });
  1345. });
  1346. },
  1347. handleSizeChange(pageSize) {
  1348. this.pageSize = pageSize;
  1349. this.search();
  1350. },
  1351. // 新增
  1352. getDuChaId() {
  1353. //新增中 获取督查对象id
  1354. getSupervisdByID(this.userid, 1).then(res => {
  1355. if (res.success) {
  1356. // alert(1)
  1357. this.listobjId = res.data;
  1358. } else {
  1359. this.failInfo();
  1360. }
  1361. });
  1362. },
  1363. // 获取engid
  1364. // getEngIdList(val) {
  1365. // getEngId(val, this.userid).then(res => {
  1366. // console.log(res)
  1367. // })
  1368. // },
  1369. // saveNewSupervision(formName) {
  1370. // this.$refs.newSupFrom.validate(valid => {
  1371. // if (valid) {
  1372. // this.newSupervisionLoading = true;
  1373. // let data = this.newSupervision;
  1374. // data.recPers = localStorage.getItem('userid');
  1375. // data.pblmStat = "0";
  1376. // creatSupervise(data).then(res => {
  1377. // this.newSupervisionLoading = false;
  1378. // if (res.success) {
  1379. // this.pblmId = res.data.pblmId;
  1380. // this.gwComFiles = [];
  1381. // this.pblmStat = res.data.pblmStat;
  1382. // this.successInfo();
  1383. // if (this.$refs.uploadFile.submitUpload(res.data.pblmId)) {
  1384. // this.removeNewSupervision();
  1385. // }
  1386. // }
  1387. // });
  1388. // } else {
  1389. // console.log("error submit!!!");
  1390. // }
  1391. // });
  1392. // },
  1393. // updatefilelist(arg) {
  1394. // updatelist({
  1395. // pblmId: this.pblmId,
  1396. // gwComFiles: arg,
  1397. // pblmStat: this.pblmStat
  1398. // }).then(res => {
  1399. // this.removeNewSupervision()
  1400. // });
  1401. // },
  1402. // 取消
  1403. removeNewSupervision(arg) {
  1404. if (arg) {
  1405. console.log(arg);
  1406. var args = this.gwComFiles.concat(arg);
  1407. this.updatefilelist(args);
  1408. }
  1409. this.search();
  1410. this.gwComFiles = [];
  1411. this.newSupervisionVisible = false;
  1412. this.changeSupervisionVisible = false;
  1413. this.newSupervision = {
  1414. id: "",
  1415. checkPoint: "",
  1416. presId: localStorage.getItem("userid"),
  1417. dataStat: "",
  1418. nm: "",
  1419. endTime: "",
  1420. pblmId: "",
  1421. objId: "",
  1422. objType: "",
  1423. inspGroupId: "",
  1424. inspPblmCate: "",
  1425. inspPblmName: "",
  1426. inspPblmDesc: "",
  1427. pblmLong: "",
  1428. pblmLat: "",
  1429. pblmStat: "",
  1430. ifCasePblm: "",
  1431. inspPblmOrgName: "",
  1432. pblmPersName: "",
  1433. reviOpin: "",
  1434. reviConc: "",
  1435. reviOrgGuid: "",
  1436. collTime: "",
  1437. recPers: "",
  1438. note: ""
  1439. };
  1440. // this.$refs.uploadFile.init();
  1441. },
  1442. // 详情弹框
  1443. showDetails(id) {
  1444. this.currentProblemId = id;
  1445. this.supervisionDetailsVisible = true;
  1446. // showDetailsXq(id).then(res => {
  1447. // this.supervisionDetails = res.data;
  1448. // this.supervisionDetailsVisible = true;
  1449. // });
  1450. },
  1451. // 删除弹窗
  1452. removeSuperviseOne(id) {
  1453. this.deleteId = id;
  1454. this.problemDeleteVisible = true;
  1455. // showDetailsXq(id).then(res => {
  1456. // // console.log("123" + res.data)
  1457. // this.persNameRen = res.data.persName;
  1458. // });
  1459. },
  1460. deleteSuccess() {
  1461. this.problemDeleteVisible = false;
  1462. this.search();
  1463. this.$emit("problemCount");
  1464. },
  1465. // 修改弹窗显示
  1466. changeSup(id) {
  1467. this.pictureArray = [];
  1468. this.audioArray = [];
  1469. this.videoArray = [];
  1470. this.updateIdXiuGai = id;
  1471. var _this = this;
  1472. showDetailsXq(this.updateIdXiuGai).then(res => {
  1473. // if(this.usersId==)
  1474. this.changeSupervision = res.data;
  1475. this.changeSupervisionVisible = true;
  1476. res.data.gwComFiles.forEach(item => {
  1477. if (
  1478. item.fileExt == "mp3" ||
  1479. item.fileExt == "MP3" ||
  1480. item.fileExt == "m4a"
  1481. ) {
  1482. this.audioArray.push(item);
  1483. } else if (
  1484. item.fileExt == "jpg" ||
  1485. item.fileExt == "JPG" ||
  1486. item.fileExt == "png" ||
  1487. item.fileExt == "PNG" ||
  1488. item.fileExt == "JPEG" ||
  1489. item.fileExt == "jpeg"
  1490. ) {
  1491. this.pictureArray.push(item);
  1492. } else if (item.fileExt == "mp4" || item.fileExt == "MP4") {
  1493. this.videoArray.push({
  1494. width: "130",
  1495. height: "130",
  1496. autoplay: false,
  1497. muted: true,
  1498. language: "en",
  1499. playbackRates: [0.7, 1.0, 1.5, 2.0],
  1500. sources: [
  1501. {
  1502. type: "video/mp4",
  1503. // mp4
  1504. src: `${this.hostUrl}/${item.filePath}`,
  1505. // webm
  1506. // src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
  1507. }
  1508. ]
  1509. });
  1510. }
  1511. });
  1512. _this.$nextTick(function(){
  1513. var ViewerDom = document.getElementById('imgView');
  1514. var viewer = new Viewer(ViewerDom, {})
  1515. });
  1516. this.picturetabName = "图片资料(" + this.pictureArray.length + ")";
  1517. this.audiotabName = "音频资料(" + this.audioArray.length + ")";
  1518. this.videotabName = "视频资料(" + this.videoArray.length + ")";
  1519. });
  1520. },
  1521. // 提交修改信息
  1522. changeSupervisionInfo() {
  1523. this.changeSupervisionVisible = true;
  1524. this.$refs.changeSupFrom.validate(valid => {
  1525. if (valid) {
  1526. this.changeSupervisionLoading = true;
  1527. let data = this.changeSupervision;
  1528. updatelist(data).then(res => {
  1529. this.pblmId = res.data.pblmId;
  1530. this.gwComFiles = res.data.gwComFiles;
  1531. this.changeSupervisionLoading = false;
  1532. if (res.success) {
  1533. this.removeNewSupervision();
  1534. this.successInfo();
  1535. if (this.$refs.uploadFile.submitUpload(data.pblmId)) {
  1536. this.removeNewSupervision();
  1537. this.successInfo();
  1538. this.addPicPanel = false;
  1539. this.changeSupervisionLoading = false;
  1540. }
  1541. } else {
  1542. this.failInfo();
  1543. }
  1544. });
  1545. }
  1546. });
  1547. },
  1548. // 时间格式化
  1549. timestampToTime(row, column) {
  1550. var date = new Date(row.collTime);
  1551. var Y = date.getFullYear() + "-";
  1552. var M =
  1553. (date.getMonth() + 1 < 10
  1554. ? "0" + (date.getMonth() + 1)
  1555. : "0" + date.getMonth() + 1) + "-";
  1556. var D =
  1557. (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
  1558. var h =
  1559. (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";
  1560. var m =
  1561. date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
  1562. return Y + M + D;
  1563. },
  1564. // 删除图片文件
  1565. removeFile(id, index) {
  1566. var _self = this;
  1567. this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
  1568. confirmButtonText: "确定",
  1569. cancelButtonText: "返回",
  1570. type: "warning"
  1571. }).then(
  1572. res => {
  1573. if (res === "confirm") {
  1574. deleteFileById(id, this.userId).then(res => {
  1575. if (res.success) {
  1576. // this.changeSupervision.gwComFiles.splice(index, 1);
  1577. this.changeSupervision.gwComFiles.forEach(item => {
  1578. if (
  1579. item.fileExt == "mp3" ||
  1580. item.fileExt == "MP3" ||
  1581. item.fileExt == "m4a"
  1582. ) {
  1583. this.audiotabName.splice(index, 1);
  1584. } else if (
  1585. item.fileExt == "jpg" ||
  1586. item.fileExt == "JPG" ||
  1587. item.fileExt == "png" ||
  1588. item.fileExt == "PNG" ||
  1589. item.fileExt == "JPEG" ||
  1590. item.fileExt == "jpeg"
  1591. ) {
  1592. this.pictureArray.splice(index, 1);
  1593. } else if (item.fileExt == "mp4" || item.fileExt == "MP4") {
  1594. this.videoArray.splice(index, 1);
  1595. }
  1596. });
  1597. _self.changeSup(this.updateIdXiuGai);
  1598. } else {
  1599. this.failInfo();
  1600. }
  1601. });
  1602. }
  1603. },
  1604. res => {
  1605. console.log("返回");
  1606. }
  1607. );
  1608. },
  1609. changeSupervisionVisiblefalse() {
  1610. this.$nextTick(() => {
  1611. if (this.flash) {
  1612. this.flash = false;
  1613. this.search();
  1614. }
  1615. });
  1616. this.changeSupervisionVisible = false;
  1617. this.changeSupervision = {
  1618. dataStat: "",
  1619. nm: "",
  1620. endTime: "",
  1621. pblmId: "",
  1622. objId: "",
  1623. objType: "",
  1624. inspGroupId: "",
  1625. inspPblmCate: "",
  1626. inspPblmName: "",
  1627. inspPblmDesc: "",
  1628. pblmLong: "",
  1629. pblmLat: "",
  1630. pblmStat: "",
  1631. ifCasePblm: "",
  1632. inspPblmOrgName: "",
  1633. pblmPersName: "",
  1634. reviOpin: "",
  1635. reviConc: "",
  1636. reviOrgGuid: "",
  1637. collTime: "",
  1638. recPers: "",
  1639. note: "",
  1640. gwComFiles: [
  1641. {
  1642. id: "",
  1643. filePath: "",
  1644. bizId: ""
  1645. }
  1646. ]
  1647. };
  1648. this.$refs.changeUploadFile.init();
  1649. this.addPicPanel = false;
  1650. },
  1651. addPic() {
  1652. this.addPicPanel = !this.addPicPanel;
  1653. }
  1654. //水库查询下拉框数据 wby
  1655. }
  1656. };
  1657. </script>
  1658. <style rel="stylesheet/scss" lang="scss">
  1659. @import "./base.css";
  1660. @import url("/src/assets/iconfont/iconfont.css");
  1661. @import url("/src/assets/css/mixin.scss");
  1662. .el-form-item--mini.el-form-item, {
  1663. margin-bottom: 8px;
  1664. }
  1665. .el-table__header tr,
  1666. .el-table__header th {
  1667. padding: 0;
  1668. height: 35px;
  1669. }
  1670. .upload-container {
  1671. width: 100%;
  1672. position: relative;
  1673. .image-uploader {
  1674. width: 35%;
  1675. float: left;
  1676. }
  1677. .image-preview {
  1678. width: 200px;
  1679. height: 200px;
  1680. position: relative;
  1681. border: 1px dashed #d9d9d9;
  1682. float: left;
  1683. // margin-left: 50px;
  1684. .image-preview-wrapper {
  1685. position: relative;
  1686. width: 100%;
  1687. height: 100%;
  1688. img {
  1689. width: 100%;
  1690. height: 100%;
  1691. }
  1692. }
  1693. .image-preview-action {
  1694. position: absolute;
  1695. width: 100%;
  1696. height: 30px;
  1697. left: 0;
  1698. bottom: 0;
  1699. cursor: default;
  1700. text-align: center;
  1701. color: #fff;
  1702. opacity: 0;
  1703. font-size: 20px;
  1704. background-color: rgba(0, 0, 0, 0.5);
  1705. transition: opacity 0.3s;
  1706. cursor: pointer;
  1707. text-align: center;
  1708. line-height: 30px;
  1709. .el-icon-delete {
  1710. font-size: 24px;
  1711. }
  1712. }
  1713. &:hover {
  1714. .image-preview-action {
  1715. opacity: 1;
  1716. }
  1717. }
  1718. }
  1719. .image-app-preview {
  1720. margin-bottom: 10px;
  1721. width: 40vh;
  1722. height: 180px;
  1723. position: relative;
  1724. border: 1px dashed #d9d9d9;
  1725. float: left;
  1726. // margin-left: 50px;
  1727. .app-fake-conver {
  1728. height: 44px;
  1729. position: absolute;
  1730. width: 100%; // background: rgba(0, 0, 0, .1);
  1731. text-align: center;
  1732. line-height: 64px;
  1733. color: #fff;
  1734. }
  1735. }
  1736. }
  1737. .shuihui .el-date-editor.el-input {
  1738. min-width: 180px !important;
  1739. }
  1740. .shuihui .header {
  1741. padding: 0px 10px;
  1742. }
  1743. .shuihui .el-row {
  1744. margin-bottom: 5px;
  1745. }
  1746. .shuihui .content {
  1747. margin: 10px;
  1748. }
  1749. .shuihui .search >>> .el-table .el-button:nth-child(odd) {
  1750. margin-left: 0 !important;
  1751. }
  1752. .custom_dialog .el-dialog {
  1753. width: 60% !important;
  1754. }
  1755. .custom_dialog .scroll300 {
  1756. max-height: 60vh !important;
  1757. }
  1758. .scroll300 .el-form{
  1759. padding-top: 5px;
  1760. padding-right: 5px;
  1761. }
  1762. .shuihui .el-tag + .el-tag {
  1763. margin-left: 10px;
  1764. }
  1765. .shuihui .button-new-tag {
  1766. margin-left: 10px;
  1767. height: 28px;
  1768. line-height: 28px;
  1769. padding-top: 0;
  1770. padding-bottom: 0;
  1771. }
  1772. .shuihui .input-new-tag {
  1773. width: 90px;
  1774. margin-left: 10px;
  1775. vertical-align: bottom;
  1776. }
  1777. .pages .el-select, .pages .el-input {
  1778. width: 100px;
  1779. }
  1780. #wenTiContainer_sh .el-select, #wenTiContainer_sh .el-input {
  1781. width: 100px;
  1782. }
  1783. #wenTiContainer_ry .el-dialog {
  1784. width: 72% !important;
  1785. }
  1786. </style>