1fe3443dd9d17c09a8a93d5be418ff756d4a8b70.svn-base 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904
  1. <template>
  2. <el-container class="problem_list">
  3. <el-main style="padding: 10px 10px;">
  4. <!-- <div class="content_wrapper" v-if="!showProblemClass"> -->
  5. <!-- <el-form ref="form" :inline="true" label-width="84px">
  6. <el-form-item label="专业">
  7. <el-select v-model="form.pblmChType" clearable placeholder="请选择" @change="professionChange" style="width: 200px;">
  8. <el-option
  9. v-for="item in professionList"
  10. :key="item.value"
  11. :label="item.label"
  12. :value="item.value">
  13. </el-option>
  14. </el-select>
  15. </el-form-item>
  16. <el-form-item label="问题大类">
  17. <el-select v-model="form.class1Name" clearable placeholder="请选择" @change="majorChange" style="width: 200px;">
  18. <el-option
  19. v-for="item in marjorClassList"
  20. :key="item.className"
  21. :label="item.className"
  22. :value="item.className">
  23. </el-option>
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item label="问题小类">
  27. <el-select v-model="form.class2Name" clearable placeholder="请选择" style="width: 200px;">
  28. <el-option
  29. v-for="item in subclassList"
  30. :key="item.className"
  31. :label="item.className"
  32. :value="item.className">
  33. </el-option>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label="序号">
  37. <el-input v-model="form.sn" placeholder="请输入内容" style="width: 200px;" clearable></el-input>
  38. </el-form-item>
  39. <el-form-item label="问题描述">
  40. <el-input v-model="form.pblmsDesc" placeholder="请输入内容" style="width: 200px;" clearable></el-input>
  41. </el-form-item>
  42. <el-form-item label="相关法规">
  43. <el-input v-model="form.relativeLaw" placeholder="请输入内容" style="width: 200px;" clearable></el-input>
  44. </el-form-item>
  45. <el-form-item label="法规内容">
  46. <el-input v-model="form.lawContent" placeholder="请输入内容" style="width: 200px;" clearable></el-input>
  47. </el-form-item>
  48. <el-form-item label="问题分类">
  49. <el-select v-model="form.level" placeholder="请选择" style="width: 200px;" clearable>
  50. <el-option label="一般" value="0"></el-option>
  51. <el-option label="较重" value="1"></el-option>
  52. <el-option label="严重" value="2"></el-option>
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item label="审核状态">
  56. <el-select v-model="form.dataStat" placeholder="请选择" style="width: 200px;" clearable>
  57. <el-option label="未审核" value="0"></el-option>
  58. <el-option label="已审核" value="1"></el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item label="清单类型">
  62. <el-select v-model="form.isNew" clearable placeholder="请选择" style="width: 200px;">
  63. <el-option label="清单内" value="0"></el-option>
  64. <el-option label="清单外" value="1"></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <div class="operate_btn">
  68. <el-button style="margin-left:0;padding:7px 10px;" type="primary" @click="getProblemList()">查询</el-button>
  69. <el-button style="margin-left:0;padding:7px 10px;" type="primary" @click="toAddFile" v-if="ownPriv('manage')">添加</el-button>
  70. <el-button style="margin-left:0;padding:7px 10px;" type="warning" @click="exportExcel()">下载模板</el-button>
  71. <el-button style="margin-left:0;padding:7px 10px;" type="success" @click="exportWord()">上传</el-button>
  72. </div>
  73. </el-form> -->
  74. <div style="width: 100%;display: flex;">
  75. <!-- <el-button style="margin-left:1%;" type="primary" @click="getProblemList()">查询</el-button>
  76. <el-button style="margin-left:0.5%;" type="primary" @click="toAddFile" v-if="ownPriv('manage')">添加</el-button> -->
  77. <el-button style="margin-left:0.5%;" type="warning" @click="downloadMoban">下载模板</el-button>
  78. <PblmMendUploadAutoSimple
  79. ref="ImportPlan"
  80. :limit=1
  81. :url="uploadUrl"
  82. @uploadOver="uploadOver"
  83. :accept="'.xls,.xlsx'"
  84. style="margin-left: 1%;"
  85. fileDesc="导入"
  86. ></PblmMendUploadAutoSimple>
  87. <el-button style="margin-left:auto;margin-right: 1%;" type="success" @click="dialogProblem = true,isAdd = true">添加问题</el-button>
  88. </div>
  89. <div style="display: flex;margin-top: 1%;">
  90. <div style="width: 19%;">
  91. <div style="font-size: 18px;width: 100%;display: flex;align-items: center;line-height: 1.5;">
  92. <div>问题类型</div>
  93. <el-button style="margin-left:2%;" type="success" size="mini" @click="dialogProblemClass = true,isAdd = true">新增</el-button>
  94. </div>
  95. <el-tree
  96. ref="myTree"
  97. :data="dataProblemclass"
  98. node-key="id"
  99. default-expand-all
  100. @node-click="handleNodeClick"
  101. style="margin-top: 2%;height: 80vh;"
  102. :highlight-current="true"
  103. :expand-on-click-node="false">
  104. <span class="custom-tree-node" slot-scope="{node, data}">
  105. <div v-if="node.data.isDefault!='0'">{{ node.data.nm }}(已启用)</div>
  106. <div v-if="node.data.isDefault=='0'">{{ node.data.nm }}</div>
  107. <span>
  108. <i class="el-icon-edit" style="cursor: pointer;" @click="editClass(data)"></i>
  109. <i class="el-icon-delete" style="cursor: pointer;color: red;margin-left: 10px;" @click="delClass(data)"></i>
  110. </span>
  111. </span>
  112. </el-tree>
  113. <!-- <el-tree :highlight-current="true" style="margin-top: 2%" :data="dataProblemclass" :props="defaultProps" @node-click="handleNodeClick"></el-tree> -->
  114. </div>
  115. <div style="width: 80%;margin-left: 1%;">
  116. <el-table
  117. :data="tableData"
  118. border
  119. stripe
  120. v-loading='loading'
  121. :height="tableHeight"
  122. style="width: 100%">
  123. <el-table-column
  124. prop="sn"
  125. label="序号"
  126. min-width="80">
  127. </el-table-column>
  128. <el-table-column
  129. prop="inspPblmsName"
  130. label="一级问题"
  131. min-width="120">
  132. </el-table-column>
  133. <el-table-column
  134. prop="checkPoint"
  135. label="二级问题"
  136. min-width="200">
  137. </el-table-column>
  138. <el-table-column
  139. prop="pblmDesc"
  140. label="三级问题"
  141. min-width="200">
  142. </el-table-column>
  143. <el-table-column
  144. prop="inspPblmOrgName"
  145. label="问题责任单位">
  146. </el-table-column>
  147. <el-table-column
  148. prop="inspPblmCate"
  149. label="问题严重程度">
  150. <template slot-scope="scope">
  151. <span v-if="scope.row.inspPblmCate == '0'" style="color: #67C23A">一般</span>
  152. <span v-if="scope.row.inspPblmCate == '1'" style="color: #E6A23C">较重</span>
  153. <span v-if="scope.row.inspPblmCate == '2'" style="color: #F56C6C">严重</span>
  154. <span v-if="scope.row.inspPblmCate == '3'" style="color: #F56C6C">特别严重</span>
  155. </template>
  156. </el-table-column>
  157. <el-table-column
  158. fixed="right"
  159. label="操作"
  160. width="130">
  161. <template slot-scope="scope">
  162. <el-button type="text" size="small" @click="showEditproblem(scope.row)">编辑</el-button>
  163. <el-button v-if="scope.row.dataStat == '0'" type="text" size="small" @click="checkProblem(scope.row)">审核</el-button>
  164. <el-button @click="deleteProblem(scope.row)" type="text" size="small">删除</el-button>
  165. </template>
  166. </el-table-column>
  167. </el-table>
  168. <!-- <el-pagination style="margin-left: 30px;" :pager-count="5" :current-page="pageIndex" background
  169. :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"
  170. :page-sizes="[10, 20, 50, 100]"
  171. @current-change="pageIndexChange" @size-change="handleSizeChange"
  172. ></el-pagination> -->
  173. </div>
  174. </div>
  175. <edit-problem-class v-if="showProblemClass" @goBack="goBack"></edit-problem-class>
  176. <add-problem-com v-if="addFileVisiual" :titleType="titleType" :rowData="rowData" :currentNodeId="currentNodeId" :objId="objId" :listType="type" :pertype="pertype" @dialogClose="dialogClose"></add-problem-com>
  177. <export-excel v-if="exportEvent" @dialogClose="dialogClose" :currentNodeId="currentNodeId" :listType="type"></export-excel>
  178. <export-word v-if="exportWordDialog" @dialogClose="dialogClose" :problemId="problemId" :professionType="type"></export-word>
  179. </el-main>
  180. <el-dialog title="请为已选问题选择问题大类和问题小类" :visible.sync="dialogFormVisible">
  181. <el-form :model="changeClassForm" :rules="rules" ref="form">
  182. <el-form-item label="请选择问题大类:" prop="class1">
  183. <el-select v-model="changeClassForm.class1" clearable placeholder="请选择">
  184. <el-option
  185. v-for="item in marjorClassList"
  186. :key="item.classCode"
  187. :label="item.className"
  188. :value="item.classCode">
  189. </el-option>
  190. </el-select>
  191. </el-form-item>
  192. <el-form-item label="请选择问题小类:" prop="class2">
  193. <el-select v-model="changeClassForm.class2" clearable placeholder="请选择">
  194. <el-option
  195. v-for="item in subclassList"
  196. :key="item.classCode"
  197. :label="item.className"
  198. :value="item.classCode">
  199. </el-option>
  200. </el-select>
  201. </el-form-item>
  202. </el-form>
  203. <div slot="footer" class="dialog-footer">
  204. <el-button @click="dialogFormVisible = false">取 消</el-button>
  205. <el-button type="primary" @click="changeClass">确 定</el-button>
  206. </div>
  207. </el-dialog>
  208. <el-dialog title="问题类型" :visible.sync="dialogProblemClass" width="30%" @close="problemClass = {nm:'',objType:'',isDefault:'1'}">
  209. <el-form :model="problemClass" :rules="rules" ref="form">
  210. <el-form-item label="名称:" prop="nm">
  211. <el-input v-model="problemClass.nm" placeholder="请输入内容" style="width: 200px;" clearable></el-input>
  212. </el-form-item>
  213. <el-form-item label="类型:" prop="objType">
  214. <el-select v-model="problemClass.objType" style="width: 200px;" clearable placeholder="请选择">
  215. <el-option
  216. v-for="item in problemClasslist"
  217. :key="item.value"
  218. :label="item.label"
  219. :value="item.value">
  220. </el-option>
  221. </el-select>
  222. </el-form-item>
  223. <el-form-item label="是否默认清单:" prop="isDefault">
  224. <el-select v-model="problemClass.isDefault" style="width: 200px;" clearable placeholder="请选择">
  225. <el-option label="是" value="1"></el-option>
  226. <el-option label="否" value="0"></el-option>
  227. </el-select>
  228. </el-form-item>
  229. </el-form>
  230. <div slot="footer" class="dialog-footer">
  231. <el-button @click="dialogProblemClass = false">取 消</el-button>
  232. <el-button type="primary" v-if="isAdd" @click="addProblemclass">确 定</el-button>
  233. <el-button type="primary" v-if="!isAdd" @click="editProblemclass">确 定</el-button>
  234. </div>
  235. </el-dialog>
  236. <el-dialog title="问题" :visible.sync="dialogProblem" width="30%" @close="problemClass = {nm:'',objType:'',isDefault:'1'}">
  237. <el-form :model="problemForm" :rules="rulesProblem" ref="form1" label-width="150px" position="right">
  238. <el-form-item label="问题类型:" prop="type">
  239. <!-- <el-select v-model="problemForm.type" style="width: 200px;" clearable placeholder="请选择">
  240. <el-option
  241. v-for="item in dataProblemclass"
  242. :key="item.nm"
  243. :label="item.nm"
  244. :value="item.id">
  245. </el-option>
  246. </el-select> -->
  247. <el-input v-model="problemForm.type" placeholder="" style="width: 200px;" clearable></el-input>
  248. </el-form-item>
  249. <el-form-item label="序号:" prop="sn">
  250. <el-input-number v-model="problemForm.sn" style="width: 200px;" controls-position="right" @change="handleChange"></el-input-number>
  251. </el-form-item>
  252. <el-form-item label="一级问题:" prop="inspPblmsName">
  253. <el-input v-model="problemForm.inspPblmsName" placeholder="" style="width: 200px;" clearable></el-input>
  254. </el-form-item>
  255. <el-form-item label="二级问题:" prop="checkPoint">
  256. <el-input v-model="problemForm.checkPoint" placeholder="" style="width: 200px;" clearable></el-input>
  257. </el-form-item>
  258. <el-form-item label="三级问题:" prop="pblmDesc">
  259. <el-input v-model="problemForm.pblmDesc" placeholder="" style="width: 200px;" clearable></el-input>
  260. </el-form-item>
  261. <el-form-item label="一级问题排序:" prop="sort1">
  262. <el-input-number v-model="problemForm.sort1" style="width: 200px;" controls-position="right" @change="handleChange"></el-input-number>
  263. </el-form-item>
  264. <el-form-item label="二级问题排序:" prop="sort2">
  265. <el-input-number v-model="problemForm.sort2" style="width: 200px;" controls-position="right" @change="handleChange"></el-input-number>
  266. </el-form-item>
  267. <el-form-item label="问题严重程度:" prop="inspPblmCate">
  268. <el-select v-model="problemForm.inspPblmCate" style="width: 200px;" clearable placeholder="请选择">
  269. <el-option label="一般" value="0"></el-option>
  270. <el-option label="较重" value="1"></el-option>
  271. <el-option label="严重" value="2"></el-option>
  272. <el-option label="特别严重" value="3"></el-option>
  273. </el-select>
  274. </el-form-item>
  275. </el-form>
  276. <div slot="footer" class="dialog-footer">
  277. <el-button @click="dialogProblem = false">取 消</el-button>
  278. <el-button type="primary" v-if="isAdd" @click="addProblem">确 定</el-button>
  279. <el-button type="primary" v-if="!isAdd" @click="editProblem">确 定</el-button>
  280. </div>
  281. </el-dialog>
  282. </el-container>
  283. </template>
  284. <script>
  285. import request from '@util/gw_ajax_request.js'
  286. import {formatDateTime2} from '@util/gw_date.js'
  287. import addProblemCom from './dialogCom/addInspectionProblem.vue'
  288. import editProblemClass from './dialogCom/editProblemClass.vue'
  289. import ExportExcel from './dialogCom/ExportExcel.vue'
  290. import { exportModel } from "@util/gw_exportModel";
  291. import ExportWord from './dialogCom/ExportWord.vue'
  292. import { downloadFile } from '../../api/duChaAPI'
  293. import PblmMendUploadAutoSimple from '../../widgets/pblm-mend-upload-auto-simple';
  294. export default {
  295. props:['currentNodeId','type','objId','projectName','pertype','backStatus'],
  296. data(){
  297. return{
  298. uploadUrl:'/pdcApi/dc/insp/pblms/impExl',
  299. isAdd: true,
  300. problemForm: {
  301. },
  302. dialogProblem: false,
  303. selectedOptions: [],
  304. problemClasslist: [
  305. {
  306. label: "小水库",
  307. value: "小水库"
  308. },
  309. {
  310. label: "大中型水库",
  311. value: "大中型水库"
  312. },
  313. {
  314. label: "在建水利工程",
  315. value: "在建水利工程"
  316. },
  317. {
  318. label: "水闸工程",
  319. value: "水闸工程"
  320. },
  321. {
  322. label: "堤防工程",
  323. value: "堤防工程"
  324. },
  325. {
  326. label: "小水电站",
  327. value: "小水电站"
  328. },
  329. {
  330. label: "水利工程设施水毁修复",
  331. value: "水利工程设施水毁修复"
  332. },
  333. {
  334. label: "山洪灾害监测预警",
  335. value: "山洪灾害监测预警"
  336. },
  337. {
  338. label: "水旱灾害防御",
  339. value: "水旱灾害防御"
  340. },
  341. {
  342. label: "在建涉河建设项目和“清四乱”",
  343. value: "在建涉河建设项目和“清四乱”"
  344. },
  345. {
  346. label: "水利风景区",
  347. value: "水利风景区"
  348. },
  349. ],
  350. problemClass:{
  351. nm:'',
  352. objType:'',
  353. isDefault:'1'
  354. },
  355. dialogProblemClass:false,
  356. dataProblemclass:[
  357. ],
  358. form:{
  359. pblmChType: '',
  360. class1Name: '',
  361. class2Name: '',
  362. dataStat: '',
  363. pageSize: 20,
  364. pageNum: 1,
  365. isNew:"",
  366. sn:"",
  367. pblmsDesc:"",
  368. relativeLaw:"",
  369. lawContent:"",
  370. level:""
  371. },
  372. marjorClass: '',
  373. rgstrId: '',
  374. subclass: '',
  375. professionList:[
  376. {label: '前期与设计',value: '1'},
  377. {label: '建设管理',value: '2'},
  378. {label: '计划下达与执行',value: '3'},
  379. {label: '资金使用与管理',value: '4'},
  380. {label: '质量行为',value: '5'},
  381. {label: '质量实体',value: '6'},
  382. {label: '工程安全',value: '7'}
  383. ],
  384. marjorClassList:[
  385. ],
  386. subclassList:[
  387. ],
  388. problemType: [
  389. {label: '一般',value: '0'},
  390. {label: '较重',value: '1'},
  391. {label: '严重',value: '2'}
  392. ],
  393. pblmPasi: '', //严重程度
  394. pblmNm: '',
  395. subjectNames: '', //单位名称,多个单位逗号拼接字符串
  396. ifCasePblm: '',
  397. tableData: [],
  398. baseInfo:{
  399. nm:'',
  400. condition: '',
  401. comment: ''
  402. },
  403. problemId: '',
  404. pageIndex: 1,
  405. pageSize: 20,
  406. total: 0,
  407. loading: false,
  408. addFileVisiual: false,
  409. modifyFileVisiual: false,
  410. exportEvent: false,//导出对话框v-if
  411. exportWordDialog: false,
  412. problemId: '',
  413. name: '',
  414. tableHeight: window.innerHeight*0.8,
  415. dialogFormVisible: false,
  416. showProblemClass: false,
  417. titleType: '添加',
  418. pcode: '',
  419. changeClassForm: {
  420. class1: "",
  421. class2: "",
  422. class1Name: '',
  423. class2Name: '',
  424. ids: [],
  425. },
  426. rowData: {},
  427. proId:'',
  428. rules: {
  429. nm: [
  430. { required: true, message: '请输入名称', trigger: 'blur' }
  431. ],
  432. objType: [
  433. { required: true, message: '请选择问题小类', trigger: 'blur' }
  434. ],
  435. isDefault: [
  436. { required: true, message: '请选择问题小类', trigger: 'blur' }
  437. ]
  438. },
  439. rulesProblem: {
  440. type: [
  441. { required: true, message: '请选择问题类型', trigger: 'blur' }
  442. ],
  443. inspPblmsName: [
  444. { required: true, message: '请输入一级问题', trigger: 'blur' }
  445. ],
  446. checkPoint: [
  447. { required: true, message: '请输入二级问题', trigger: 'blur' }
  448. ],
  449. pblmDesc: [
  450. { required: true, message: '请输入三级问题', trigger: 'blur' }
  451. ],
  452. inspPblmCate: [
  453. { required: true, message: '请选择问题严重程度', trigger: 'blur' }
  454. ],
  455. sn: [
  456. { required: true, message: '请输入序号', trigger: 'blur' }
  457. ],
  458. sort1: [
  459. { required: true, message: '请输入一级排序', trigger: 'blur' }
  460. ],
  461. sort2: [
  462. { required: true, message: '请输入二级排序', trigger: 'blur' }
  463. ]
  464. },
  465. }
  466. },
  467. components:{
  468. addProblemCom,
  469. ExportExcel,
  470. ExportWord,
  471. editProblemClass,
  472. PblmMendUploadAutoSimple
  473. },
  474. computed: {
  475. persId() {
  476. return localStorage.getItem("userid") ? localStorage.getItem("userid") : "1098101939614724096";
  477. }
  478. },
  479. mounted(){
  480. this.getprolist()
  481. this.getProblemClasslist()
  482. },
  483. activated(){
  484. },
  485. methods:{
  486. showEditproblem(row){
  487. this.dialogProblem = true
  488. this.isAdd = false
  489. this.problemForm = row
  490. },
  491. editProblem(){
  492. this.$refs.form1.validate((valid) => {
  493. if (valid) {
  494. request.post(`/dc/insp/pblms/update`,this.problemForm).then(res=>{
  495. if(res.success){
  496. this.dialogProblem = false
  497. this.$message({
  498. type: 'success',
  499. message: '编辑成功!'
  500. });
  501. this.getProblemList()
  502. }
  503. })
  504. }
  505. });
  506. },
  507. addProblem(){
  508. this.$refs.form1.validate((valid) => {
  509. if (valid) {
  510. request.post(`/dc/insp/pblms`,this.problemForm).then(res=>{
  511. if(res.success){
  512. this.dialogProblem = false
  513. this.$message({
  514. type: 'success',
  515. message: '添加成功!'
  516. });
  517. this.getProblemList()
  518. }
  519. })
  520. }
  521. });
  522. },
  523. handleNodeClick(data,node){
  524. this.proId= data.id
  525. this.rgstrId = data.rgstrId
  526. this.uploadUrl=`/dc/insp/pblms/impExl/${this.proId}`
  527. this.getProblemList()
  528. },
  529. addProblemclass(){
  530. request.post(`/bis/insp/pblmP/add`,this.problemClass).then(res=>{
  531. if(res.success){
  532. this.dialogProblemClass = false
  533. this.$message({
  534. type: 'success',
  535. message: '添加成功!'
  536. });
  537. this.getprolist()
  538. }
  539. })
  540. },
  541. async getprolist(){
  542. await request.post('/bis/insp/pblmP/list').then(res=>{
  543. if(res.success){
  544. this.dataProblemclass = res.data
  545. }
  546. this.$nextTick(() => {
  547. if (this.dataProblemclass && this.dataProblemclass.length > 0) {
  548. const firstNodeId = this.dataProblemclass[0].id;
  549. this.$refs.myTree.setCurrentKey(firstNodeId);
  550. if (this.$refs.myTree.getCurrentNode()) {
  551. this.handleNodeClick(this.$refs.myTree.getCurrentNode());
  552. }
  553. }
  554. });
  555. })
  556. console.log(this.proId)
  557. this.getProblemList()
  558. },
  559. editClass(data){
  560. this.dialogProblemClass = true
  561. this.isAdd = false
  562. this.problemClass = data
  563. console.log(data)
  564. },
  565. async downloadMoban(){
  566. let url ='/dc/insp/pblms/getExl'
  567. this.currentNodeId;
  568. let downloadName = "问题清单模板.xls";
  569. let type = "get";
  570. let result = await exportModel(type,url,downloadName);
  571. },
  572. editProblemclass(){
  573. request.post(`/bis/insp/pblmP/update`,this.problemClass).then(res=>{
  574. if(res.success){
  575. this.dialogProblemClass = false
  576. this.$message({
  577. type: 'success',
  578. message: '编辑成功!'
  579. });
  580. this.getprolist()
  581. }
  582. })
  583. },
  584. delClass(data){
  585. this.$confirm('确认删除吗?', '提示', {
  586. confirmButtonText: '确定',
  587. cancelButtonText: '取消',
  588. type: 'warning'
  589. }).then(() => {
  590. request.post(`/bis/insp/pblmP/delete/${data.id}`).then(res=>{
  591. if(res.success){
  592. this.$message({
  593. type: 'success',
  594. message: '删除成功!'
  595. });
  596. this.getprolist()
  597. }else{
  598. this.$message({
  599. type: 'error',
  600. message: res.message
  601. });
  602. }
  603. })
  604. })
  605. },
  606. getProblemList(){
  607. request.get(`/dc/insp/pblms/getPblmType`,{params:{'type': this.proId}}).then(res=>{
  608. if(res.success){
  609. this.loading = false
  610. this.tableData = res.data
  611. }
  612. }).catch(err=>{
  613. this.$message.error(err)
  614. })
  615. },
  616. professionChange(){
  617. this.getMajorClassList()
  618. },
  619. getMajorClassList(){
  620. let majorParams = {
  621. spfsnlChType: this.form.pblmChType,
  622. type: '1',
  623. pageSize: 1000,
  624. }
  625. request.post(`/tac/pblm/class/dic/page`,majorParams).then(res=>{
  626. if(res.success){
  627. this.marjorClassList = res.data.list
  628. }else{
  629. this.$message.error(res.message)
  630. }
  631. })
  632. },
  633. majorChange(val){
  634. this.marjorClassList.forEach(ele=>{
  635. if(val == ele.className){
  636. this.pcode = ele.id
  637. }
  638. })
  639. this.getSubClassList()
  640. },
  641. getSubClassList(){
  642. let subParams = {
  643. spfsnlChType: this.form.pblmChType,
  644. type: '2',
  645. pageSize: 1000,
  646. pcode: this.pcode
  647. }
  648. request.post(`/tac/pblm/class/dic/page`,subParams).then(res=>{
  649. if(res.success){
  650. this.subclassList = res.data.list
  651. }else{
  652. this.$message.error(res.message)
  653. }
  654. })
  655. },
  656. toAddFile(){
  657. this.titleType = '添加'
  658. this.addFileVisiual = true
  659. },
  660. //导出Excel
  661. exportExcel(){
  662. this.exportEvent = true
  663. },
  664. //导出Word
  665. exportWord(){
  666. this.exportWordDialog = true
  667. },
  668. toEditProblem(row){
  669. this.titleType = '编辑'
  670. Object.assign(this.rowData,row)
  671. this.addFileVisiual = true
  672. },
  673. checkProblem(row){
  674. this.$confirm('确认审核通过该问题标准吗?', '提示', {
  675. confirmButtonText: '确定',
  676. cancelButtonText: '取消',
  677. type: 'warning'
  678. }).then(() => {
  679. let data = {
  680. id: row.id,
  681. dataStat: '1'
  682. }
  683. request.post(`/tac/obj/pblmstb/update`, data).then(res=>{
  684. if(res.success){
  685. this.$message({
  686. type: 'success',
  687. message: '审核成功!'
  688. });
  689. this.getProblemList()
  690. }else{
  691. this.$message({
  692. type: 'error',
  693. message: res.message
  694. });
  695. }
  696. })
  697. })
  698. },
  699. getProblemClasslist(){
  700. request.get(`/bis/insp/baseNew/getTypes`).then(res=>{
  701. if(res.success){
  702. res.data.forEach(ele=>{
  703. this.problemClasslist.push({
  704. value: ele,
  705. label: ele
  706. })
  707. })
  708. }
  709. })
  710. },
  711. deleteProblem(row){
  712. this.$confirm('确认删除该问题吗?', '提示', {
  713. confirmButtonText: '确定',
  714. cancelButtonText: '取消',
  715. type: 'warning'
  716. }).then(() => {
  717. var par = {
  718. id: row.guid
  719. }
  720. request.post(`/dc/insp/pblms/delete?id=${row.guid}`).then(res=>{
  721. if(res.success){
  722. this.$message({
  723. type: 'success',
  724. message: '删除成功!'
  725. });
  726. this.getProblemList()
  727. }else{
  728. this.$message({
  729. type: 'error',
  730. message: res.message
  731. });
  732. }
  733. })
  734. })
  735. },
  736. pageIndexChange(val) {
  737. this.form.pageNum = val;
  738. this.getProblemList();
  739. },
  740. handleSizeChange(val) {
  741. this.form.pageSize = val;
  742. this.getProblemList();
  743. },
  744. dialogClose(){
  745. this.addFileVisiual = false
  746. this.modifyFileVisiual = false
  747. this.exportEvent = false
  748. this.exportWordDialog = false
  749. this.getProblemList()
  750. },
  751. pblmPasiChange(val){
  752. this.getProblemList()
  753. },
  754. handleSelectionChange(val){
  755. let problemArr = []
  756. val.forEach(ele=>{
  757. problemArr.push(ele.id)
  758. })
  759. this.changeClassForm.ids = problemArr
  760. },
  761. // 批量删除
  762. toQueryDelete() {
  763. if(!this.changeClassForm.ids.length){
  764. this.$message.warning('请选择需要删除的问题')
  765. return
  766. }
  767. this.$confirm('请问是否删除已选问题?', '提示', {
  768. confirmButtonText: '确定',
  769. cancelButtonText: '取消',
  770. type: 'warning'
  771. }).then(() => {
  772. request.post(`/tac/obj/pblmstb/delList`,this.changeClassForm.ids).then(res=>{
  773. if(res.success){
  774. this.$message.success('删除成功')
  775. this.getProblemList()
  776. }else{
  777. this.$message.error(res.message)
  778. }
  779. })
  780. }).catch(() => {
  781. });
  782. },
  783. // 更改库别
  784. toChangeLibrary(){
  785. if(!this.changeClassForm.ids.length){
  786. this.$message.warning('请选择需要更改库别的问题')
  787. return
  788. }
  789. this.dialogFormVisible = true
  790. },
  791. changeClass(){
  792. this.$refs['form'].validate((valid) => {
  793. if(valid){
  794. this.marjorClassList.forEach(ele=>{
  795. if(this.changeClassForm.class1 == ele.classCode){
  796. this.changeClassForm.class1Name = ele.className
  797. }
  798. })
  799. this.subclassList.forEach(ele=>{
  800. if(this.changeClassForm.class2 == ele.classCode){
  801. this.changeClassForm.class2Name = ele.className
  802. }
  803. })
  804. request.post(`/tac/obj/pblmstb/updateList`,this.changeClassForm).then(res=>{
  805. if(res.success){
  806. this.$message.success('更改成功')
  807. this.dialogFormVisible = false
  808. this.getProblemList()
  809. }else{
  810. this.$message.error(res.message)
  811. }
  812. })
  813. } else {
  814. return false;
  815. }
  816. })
  817. },
  818. // 编辑问题类别
  819. toEditProblemClass(){
  820. this.showProblemClass = true
  821. },
  822. goBack(){
  823. this.showProblemClass = false
  824. },
  825. formatDate(date){
  826. return formatDateTime2(date)
  827. }
  828. },
  829. watch:{
  830. currentNodeId(val){
  831. this.getProblemList()
  832. },
  833. type(val){
  834. this.getProblemList()
  835. },
  836. backStatus(val){
  837. if(val){
  838. //回退状态为成功时
  839. this.getProblemList()
  840. }
  841. }
  842. }
  843. }
  844. </script>
  845. <style lang="scss">
  846. .problem_list{
  847. .project_title{
  848. line-height: 50px;
  849. text-align: center;
  850. color: #333;
  851. border-bottom: solid 1px #eee;
  852. }
  853. h4{
  854. line-height: 50px;
  855. color: #444;
  856. }
  857. .operate_btn{
  858. float: right;
  859. margin-bottom: 10px;
  860. }
  861. .inspPblmCate{
  862. padding: 2px 10px;
  863. border-radius:10px;
  864. color: #ffffff;
  865. -webkit-border-radius: 10px;
  866. -moz-border-radius: 10px;
  867. border-radius: 10px;
  868. }
  869. .el-form-item__label{
  870. font-size: large;
  871. color: #333;
  872. }
  873. .el-form--inline .el-form-item{
  874. margin-right: 6px;
  875. }
  876. .el-table__header th{
  877. font-size: large !important;
  878. }
  879. tr.el-table__row{
  880. font-size: large;
  881. }
  882. }
  883. </style>
  884. <style scoped>
  885. .custom-tree-node {
  886. display: flex; /* 启用 Flex 布局 */
  887. align-items: center; /* 垂直居中对齐 */
  888. justify-content: space-between; /* 左右两端对齐 */
  889. width: 100%; /* 确保节点宽度充满容器 */
  890. }
  891. /* 修改字体大小 */
  892. /deep/ .el-tree .el-tree-node__label {
  893. font-size: 16px; /* 调整为你需要的大小 */
  894. }
  895. </style>