3f358a4adb18c7c920515b7971ac13d4edf1b30e.svn-base 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859
  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'"
  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. problemClass:{
  307. nm:'',
  308. objType:'',
  309. isDefault:'1'
  310. },
  311. dialogProblemClass:false,
  312. dataProblemclass:[
  313. ],
  314. form:{
  315. pblmChType: '',
  316. class1Name: '',
  317. class2Name: '',
  318. dataStat: '',
  319. pageSize: 20,
  320. pageNum: 1,
  321. isNew:"",
  322. sn:"",
  323. pblmsDesc:"",
  324. relativeLaw:"",
  325. lawContent:"",
  326. level:""
  327. },
  328. marjorClass: '',
  329. rgstrId: '',
  330. subclass: '',
  331. professionList:[
  332. {label: '前期与设计',value: '1'},
  333. {label: '建设管理',value: '2'},
  334. {label: '计划下达与执行',value: '3'},
  335. {label: '资金使用与管理',value: '4'},
  336. {label: '质量行为',value: '5'},
  337. {label: '质量实体',value: '6'},
  338. {label: '工程安全',value: '7'}
  339. ],
  340. marjorClassList:[
  341. ],
  342. subclassList:[
  343. ],
  344. problemType: [
  345. {label: '一般',value: '0'},
  346. {label: '较重',value: '1'},
  347. {label: '严重',value: '2'}
  348. ],
  349. pblmPasi: '', //严重程度
  350. pblmNm: '',
  351. subjectNames: '', //单位名称,多个单位逗号拼接字符串
  352. ifCasePblm: '',
  353. tableData: [],
  354. baseInfo:{
  355. nm:'',
  356. condition: '',
  357. comment: ''
  358. },
  359. problemId: '',
  360. pageIndex: 1,
  361. pageSize: 20,
  362. total: 0,
  363. loading: false,
  364. addFileVisiual: false,
  365. modifyFileVisiual: false,
  366. exportEvent: false,//导出对话框v-if
  367. exportWordDialog: false,
  368. problemId: '',
  369. name: '',
  370. tableHeight: window.innerHeight*0.8,
  371. dialogFormVisible: false,
  372. showProblemClass: false,
  373. titleType: '添加',
  374. pcode: '',
  375. changeClassForm: {
  376. class1: "",
  377. class2: "",
  378. class1Name: '',
  379. class2Name: '',
  380. ids: [],
  381. },
  382. rowData: {},
  383. proId:'',
  384. rules: {
  385. nm: [
  386. { required: true, message: '请输入名称', trigger: 'blur' }
  387. ],
  388. objType: [
  389. { required: true, message: '请选择问题小类', trigger: 'blur' }
  390. ],
  391. isDefault: [
  392. { required: true, message: '请选择问题小类', trigger: 'blur' }
  393. ]
  394. },
  395. rulesProblem: {
  396. type: [
  397. { required: true, message: '请选择问题类型', trigger: 'blur' }
  398. ],
  399. inspPblmsName: [
  400. { required: true, message: '请输入一级问题', trigger: 'blur' }
  401. ],
  402. checkPoint: [
  403. { required: true, message: '请输入二级问题', trigger: 'blur' }
  404. ],
  405. pblmDesc: [
  406. { required: true, message: '请输入三级问题', trigger: 'blur' }
  407. ],
  408. inspPblmCate: [
  409. { required: true, message: '请选择问题严重程度', trigger: 'blur' }
  410. ],
  411. sn: [
  412. { required: true, message: '请输入序号', trigger: 'blur' }
  413. ],
  414. sort1: [
  415. { required: true, message: '请输入一级排序', trigger: 'blur' }
  416. ],
  417. sort2: [
  418. { required: true, message: '请输入二级排序', trigger: 'blur' }
  419. ]
  420. },
  421. }
  422. },
  423. components:{
  424. addProblemCom,
  425. ExportExcel,
  426. ExportWord,
  427. editProblemClass,
  428. PblmMendUploadAutoSimple
  429. },
  430. computed: {
  431. persId() {
  432. return localStorage.getItem("userid") ? localStorage.getItem("userid") : "1098101939614724096";
  433. }
  434. },
  435. mounted(){
  436. this.getprolist()
  437. this.getProblemClasslist()
  438. },
  439. activated(){
  440. },
  441. methods:{
  442. showEditproblem(row){
  443. this.dialogProblem = true
  444. this.isAdd = false
  445. this.problemForm = row
  446. },
  447. editProblem(){
  448. this.$refs.form1.validate((valid) => {
  449. if (valid) {
  450. request.post(`/dc/insp/pblms/update`,this.problemForm).then(res=>{
  451. if(res.success){
  452. this.dialogProblem = false
  453. this.$message({
  454. type: 'success',
  455. message: '编辑成功!'
  456. });
  457. this.getProblemList()
  458. }
  459. })
  460. }
  461. });
  462. },
  463. addProblem(){
  464. this.$refs.form1.validate((valid) => {
  465. if (valid) {
  466. request.post(`/dc/insp/pblms`,this.problemForm).then(res=>{
  467. if(res.success){
  468. this.dialogProblem = false
  469. this.$message({
  470. type: 'success',
  471. message: '添加成功!'
  472. });
  473. this.getProblemList()
  474. }
  475. })
  476. }
  477. });
  478. },
  479. handleNodeClick(data,node){
  480. this.proId= data.id
  481. this.rgstrId = data.rgstrId
  482. this.uploadUrl=`/dc/insp/pblms/impExl/type=${this.proId}`
  483. this.getProblemList()
  484. },
  485. addProblemclass(){
  486. request.post(`/bis/insp/pblmP/add`,this.problemClass).then(res=>{
  487. if(res.success){
  488. this.dialogProblemClass = false
  489. this.$message({
  490. type: 'success',
  491. message: '添加成功!'
  492. });
  493. this.getprolist()
  494. }
  495. })
  496. },
  497. async getprolist(){
  498. await request.post('/bis/insp/pblmP/list').then(res=>{
  499. if(res.success){
  500. this.dataProblemclass = res.data
  501. }
  502. this.$nextTick(() => {
  503. if (this.dataProblemclass && this.dataProblemclass.length > 0) {
  504. const firstNodeId = this.dataProblemclass[0].id;
  505. this.$refs.myTree.setCurrentKey(firstNodeId);
  506. if (this.$refs.myTree.getCurrentNode()) {
  507. this.handleNodeClick(this.$refs.myTree.getCurrentNode());
  508. }
  509. }
  510. });
  511. })
  512. console.log(this.proId)
  513. this.getProblemList()
  514. },
  515. editClass(data){
  516. this.dialogProblemClass = true
  517. this.isAdd = false
  518. this.problemClass = data
  519. console.log(data)
  520. },
  521. async downloadMoban(){
  522. let url ='/dc/insp/pblms/getExl'
  523. this.currentNodeId;
  524. let downloadName = "问题清单模板.xls";
  525. let type = "get";
  526. let result = await exportModel(type,url,downloadName);
  527. },
  528. editProblemclass(){
  529. request.post(`/bis/insp/pblmP/update`,this.problemClass).then(res=>{
  530. if(res.success){
  531. this.dialogProblemClass = false
  532. this.$message({
  533. type: 'success',
  534. message: '编辑成功!'
  535. });
  536. this.getprolist()
  537. }
  538. })
  539. },
  540. delClass(data){
  541. this.$confirm('确认删除吗?', '提示', {
  542. confirmButtonText: '确定',
  543. cancelButtonText: '取消',
  544. type: 'warning'
  545. }).then(() => {
  546. request.post(`/bis/insp/pblmP/delete/${data.id}`).then(res=>{
  547. if(res.success){
  548. this.$message({
  549. type: 'success',
  550. message: '删除成功!'
  551. });
  552. this.getprolist()
  553. }else{
  554. this.$message({
  555. type: 'error',
  556. message: res.message
  557. });
  558. }
  559. })
  560. })
  561. },
  562. getProblemList(){
  563. request.get(`/dc/insp/pblms/getPblmType`,{params:{'type': this.proId}}).then(res=>{
  564. if(res.success){
  565. this.loading = false
  566. this.tableData = res.data
  567. }
  568. }).catch(err=>{
  569. this.$message.error(err)
  570. })
  571. },
  572. professionChange(){
  573. this.getMajorClassList()
  574. },
  575. getMajorClassList(){
  576. let majorParams = {
  577. spfsnlChType: this.form.pblmChType,
  578. type: '1',
  579. pageSize: 1000,
  580. }
  581. request.post(`/tac/pblm/class/dic/page`,majorParams).then(res=>{
  582. if(res.success){
  583. this.marjorClassList = res.data.list
  584. }else{
  585. this.$message.error(res.message)
  586. }
  587. })
  588. },
  589. majorChange(val){
  590. this.marjorClassList.forEach(ele=>{
  591. if(val == ele.className){
  592. this.pcode = ele.id
  593. }
  594. })
  595. this.getSubClassList()
  596. },
  597. getSubClassList(){
  598. let subParams = {
  599. spfsnlChType: this.form.pblmChType,
  600. type: '2',
  601. pageSize: 1000,
  602. pcode: this.pcode
  603. }
  604. request.post(`/tac/pblm/class/dic/page`,subParams).then(res=>{
  605. if(res.success){
  606. this.subclassList = res.data.list
  607. }else{
  608. this.$message.error(res.message)
  609. }
  610. })
  611. },
  612. toAddFile(){
  613. this.titleType = '添加'
  614. this.addFileVisiual = true
  615. },
  616. //导出Excel
  617. exportExcel(){
  618. this.exportEvent = true
  619. },
  620. //导出Word
  621. exportWord(){
  622. this.exportWordDialog = true
  623. },
  624. toEditProblem(row){
  625. this.titleType = '编辑'
  626. Object.assign(this.rowData,row)
  627. this.addFileVisiual = true
  628. },
  629. checkProblem(row){
  630. this.$confirm('确认审核通过该问题标准吗?', '提示', {
  631. confirmButtonText: '确定',
  632. cancelButtonText: '取消',
  633. type: 'warning'
  634. }).then(() => {
  635. let data = {
  636. id: row.id,
  637. dataStat: '1'
  638. }
  639. request.post(`/tac/obj/pblmstb/update`, data).then(res=>{
  640. if(res.success){
  641. this.$message({
  642. type: 'success',
  643. message: '审核成功!'
  644. });
  645. this.getProblemList()
  646. }else{
  647. this.$message({
  648. type: 'error',
  649. message: res.message
  650. });
  651. }
  652. })
  653. })
  654. },
  655. getProblemClasslist(){
  656. request.get(`/bis/insp/baseNew/getTypes`).then(res=>{
  657. if(res.success){
  658. res.data.forEach(ele=>{
  659. this.problemClasslist.push({
  660. value: ele,
  661. label: ele
  662. })
  663. })
  664. }
  665. })
  666. },
  667. deleteProblem(row){
  668. this.$confirm('确认删除该问题吗?', '提示', {
  669. confirmButtonText: '确定',
  670. cancelButtonText: '取消',
  671. type: 'warning'
  672. }).then(() => {
  673. var par = {
  674. id: row.guid
  675. }
  676. request.post(`/dc/insp/pblms/delete?id=${row.guid}`).then(res=>{
  677. if(res.success){
  678. this.$message({
  679. type: 'success',
  680. message: '删除成功!'
  681. });
  682. this.getProblemList()
  683. }else{
  684. this.$message({
  685. type: 'error',
  686. message: res.message
  687. });
  688. }
  689. })
  690. })
  691. },
  692. pageIndexChange(val) {
  693. this.form.pageNum = val;
  694. this.getProblemList();
  695. },
  696. handleSizeChange(val) {
  697. this.form.pageSize = val;
  698. this.getProblemList();
  699. },
  700. dialogClose(){
  701. this.addFileVisiual = false
  702. this.modifyFileVisiual = false
  703. this.exportEvent = false
  704. this.exportWordDialog = false
  705. this.getProblemList()
  706. },
  707. pblmPasiChange(val){
  708. this.getProblemList()
  709. },
  710. handleSelectionChange(val){
  711. let problemArr = []
  712. val.forEach(ele=>{
  713. problemArr.push(ele.id)
  714. })
  715. this.changeClassForm.ids = problemArr
  716. },
  717. // 批量删除
  718. toQueryDelete() {
  719. if(!this.changeClassForm.ids.length){
  720. this.$message.warning('请选择需要删除的问题')
  721. return
  722. }
  723. this.$confirm('请问是否删除已选问题?', '提示', {
  724. confirmButtonText: '确定',
  725. cancelButtonText: '取消',
  726. type: 'warning'
  727. }).then(() => {
  728. request.post(`/tac/obj/pblmstb/delList`,this.changeClassForm.ids).then(res=>{
  729. if(res.success){
  730. this.$message.success('删除成功')
  731. this.getProblemList()
  732. }else{
  733. this.$message.error(res.message)
  734. }
  735. })
  736. }).catch(() => {
  737. });
  738. },
  739. // 更改库别
  740. toChangeLibrary(){
  741. if(!this.changeClassForm.ids.length){
  742. this.$message.warning('请选择需要更改库别的问题')
  743. return
  744. }
  745. this.dialogFormVisible = true
  746. },
  747. changeClass(){
  748. this.$refs['form'].validate((valid) => {
  749. if(valid){
  750. this.marjorClassList.forEach(ele=>{
  751. if(this.changeClassForm.class1 == ele.classCode){
  752. this.changeClassForm.class1Name = ele.className
  753. }
  754. })
  755. this.subclassList.forEach(ele=>{
  756. if(this.changeClassForm.class2 == ele.classCode){
  757. this.changeClassForm.class2Name = ele.className
  758. }
  759. })
  760. request.post(`/tac/obj/pblmstb/updateList`,this.changeClassForm).then(res=>{
  761. if(res.success){
  762. this.$message.success('更改成功')
  763. this.dialogFormVisible = false
  764. this.getProblemList()
  765. }else{
  766. this.$message.error(res.message)
  767. }
  768. })
  769. } else {
  770. return false;
  771. }
  772. })
  773. },
  774. // 编辑问题类别
  775. toEditProblemClass(){
  776. this.showProblemClass = true
  777. },
  778. goBack(){
  779. this.showProblemClass = false
  780. },
  781. formatDate(date){
  782. return formatDateTime2(date)
  783. }
  784. },
  785. watch:{
  786. currentNodeId(val){
  787. this.getProblemList()
  788. },
  789. type(val){
  790. this.getProblemList()
  791. },
  792. backStatus(val){
  793. if(val){
  794. //回退状态为成功时
  795. this.getProblemList()
  796. }
  797. }
  798. }
  799. }
  800. </script>
  801. <style lang="scss">
  802. .problem_list{
  803. .project_title{
  804. line-height: 50px;
  805. text-align: center;
  806. color: #333;
  807. border-bottom: solid 1px #eee;
  808. }
  809. h4{
  810. line-height: 50px;
  811. color: #444;
  812. }
  813. .operate_btn{
  814. float: right;
  815. margin-bottom: 10px;
  816. }
  817. .inspPblmCate{
  818. padding: 2px 10px;
  819. border-radius:10px;
  820. color: #ffffff;
  821. -webkit-border-radius: 10px;
  822. -moz-border-radius: 10px;
  823. border-radius: 10px;
  824. }
  825. .el-form-item__label{
  826. font-size: large;
  827. color: #333;
  828. }
  829. .el-form--inline .el-form-item{
  830. margin-right: 6px;
  831. }
  832. .el-table__header th{
  833. font-size: large !important;
  834. }
  835. tr.el-table__row{
  836. font-size: large;
  837. }
  838. }
  839. </style>
  840. <style scoped>
  841. .custom-tree-node {
  842. display: flex; /* 启用 Flex 布局 */
  843. align-items: center; /* 垂直居中对齐 */
  844. justify-content: space-between; /* 左右两端对齐 */
  845. width: 100%; /* 确保节点宽度充满容器 */
  846. }
  847. /* 修改字体大小 */
  848. /deep/ .el-tree .el-tree-node__label {
  849. font-size: 16px; /* 调整为你需要的大小 */
  850. }
  851. </style>