e9c382a6039f51c559eb89ebddce71592e775b96.svn-base 57 KB

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