2f30d74b810ce85119225a2f8bbfb8398c875934.svn-base 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858
  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. import duChaclass from "../duChaWenTi/duchaClass.json"
  295. export default {
  296. props:['currentNodeId','type','objId','projectName','pertype','backStatus'],
  297. data(){
  298. return{
  299. uploadUrl:'/pdcApi/dc/insp/pblms/impExl',
  300. isAdd: true,
  301. problemForm: {
  302. },
  303. dialogProblem: false,
  304. selectedOptions: [],
  305. problemClasslist: duChaclass,
  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. },
  438. activated(){
  439. },
  440. methods:{
  441. showEditproblem(row){
  442. this.dialogProblem = true
  443. this.isAdd = false
  444. this.problemForm = row
  445. },
  446. editProblem(){
  447. this.$refs.form1.validate((valid) => {
  448. if (valid) {
  449. request.post(`/dc/insp/pblms/update`,this.problemForm).then(res=>{
  450. if(res.success){
  451. this.dialogProblem = false
  452. this.$message({
  453. type: 'success',
  454. message: '编辑成功!'
  455. });
  456. this.getProblemList()
  457. }
  458. })
  459. }
  460. });
  461. },
  462. addProblem(){
  463. this.$refs.form1.validate((valid) => {
  464. if (valid) {
  465. request.post(`/dc/insp/pblms`,this.problemForm).then(res=>{
  466. if(res.success){
  467. this.dialogProblem = false
  468. this.$message({
  469. type: 'success',
  470. message: '添加成功!'
  471. });
  472. this.getProblemList()
  473. }
  474. })
  475. }
  476. });
  477. },
  478. handleNodeClick(data,node){
  479. this.proId= data.id
  480. this.rgstrId = data.rgstrId
  481. this.uploadUrl=`/pacApi/dc/insp/pblms/impExl/${this.proId}`
  482. this.getProblemList()
  483. },
  484. addProblemclass(){
  485. request.post(`/bis/insp/pblmP/add`,this.problemClass).then(res=>{
  486. if(res.success){
  487. this.dialogProblemClass = false
  488. this.$message({
  489. type: 'success',
  490. message: '添加成功!'
  491. });
  492. this.getprolist()
  493. }
  494. })
  495. },
  496. async getprolist(){
  497. await request.post('/bis/insp/pblmP/list').then(res=>{
  498. if(res.success){
  499. this.dataProblemclass = res.data
  500. }
  501. this.$nextTick(() => {
  502. if (this.dataProblemclass && this.dataProblemclass.length > 0) {
  503. const firstNodeId = this.dataProblemclass[0].id;
  504. this.$refs.myTree.setCurrentKey(firstNodeId);
  505. if (this.$refs.myTree.getCurrentNode()) {
  506. this.handleNodeClick(this.$refs.myTree.getCurrentNode());
  507. }
  508. }
  509. });
  510. })
  511. console.log(this.proId)
  512. this.getProblemList()
  513. },
  514. editClass(data){
  515. this.dialogProblemClass = true
  516. this.isAdd = false
  517. this.problemClass = data
  518. console.log(data)
  519. },
  520. async downloadMoban(){
  521. let url ='/pdcApi/dc/insp/pblms/getExl'
  522. this.currentNodeId;
  523. let downloadName = "问题清单模板.xls";
  524. let type = "get";
  525. let result = await exportModel(type,url,downloadName);
  526. },
  527. editProblemclass(){
  528. request.post(`/bis/insp/pblmP/update`,this.problemClass).then(res=>{
  529. if(res.success){
  530. this.dialogProblemClass = false
  531. this.$message({
  532. type: 'success',
  533. message: '编辑成功!'
  534. });
  535. this.getprolist()
  536. }
  537. })
  538. },
  539. delClass(data){
  540. this.$confirm('确认删除吗?', '提示', {
  541. confirmButtonText: '确定',
  542. cancelButtonText: '取消',
  543. type: 'warning'
  544. }).then(() => {
  545. request.post(`/bis/insp/pblmP/delete/${data.id}`).then(res=>{
  546. if(res.success){
  547. this.$message({
  548. type: 'success',
  549. message: '删除成功!'
  550. });
  551. this.getprolist()
  552. }else{
  553. this.$message({
  554. type: 'error',
  555. message: res.message
  556. });
  557. }
  558. })
  559. })
  560. },
  561. getProblemList(){
  562. request.get(`/dc/insp/pblms/getPblmType`,{params:{'type': this.proId}}).then(res=>{
  563. if(res.success){
  564. this.loading = false
  565. this.tableData = res.data
  566. }
  567. }).catch(err=>{
  568. this.$message.error(err)
  569. })
  570. },
  571. professionChange(){
  572. this.getMajorClassList()
  573. },
  574. getMajorClassList(){
  575. let majorParams = {
  576. spfsnlChType: this.form.pblmChType,
  577. type: '1',
  578. pageSize: 1000,
  579. }
  580. request.post(`/tac/pblm/class/dic/page`,majorParams).then(res=>{
  581. if(res.success){
  582. this.marjorClassList = res.data.list
  583. }else{
  584. this.$message.error(res.message)
  585. }
  586. })
  587. },
  588. majorChange(val){
  589. this.marjorClassList.forEach(ele=>{
  590. if(val == ele.className){
  591. this.pcode = ele.id
  592. }
  593. })
  594. this.getSubClassList()
  595. },
  596. getSubClassList(){
  597. let subParams = {
  598. spfsnlChType: this.form.pblmChType,
  599. type: '2',
  600. pageSize: 1000,
  601. pcode: this.pcode
  602. }
  603. request.post(`/tac/pblm/class/dic/page`,subParams).then(res=>{
  604. if(res.success){
  605. this.subclassList = res.data.list
  606. }else{
  607. this.$message.error(res.message)
  608. }
  609. })
  610. },
  611. toAddFile(){
  612. this.titleType = '添加'
  613. this.addFileVisiual = true
  614. },
  615. //导出Excel
  616. exportExcel(){
  617. this.exportEvent = true
  618. },
  619. //导出Word
  620. exportWord(){
  621. this.exportWordDialog = true
  622. },
  623. toEditProblem(row){
  624. this.titleType = '编辑'
  625. Object.assign(this.rowData,row)
  626. this.addFileVisiual = true
  627. },
  628. checkProblem(row){
  629. this.$confirm('确认审核通过该问题标准吗?', '提示', {
  630. confirmButtonText: '确定',
  631. cancelButtonText: '取消',
  632. type: 'warning'
  633. }).then(() => {
  634. let data = {
  635. id: row.id,
  636. dataStat: '1'
  637. }
  638. request.post(`/tac/obj/pblmstb/update`, data).then(res=>{
  639. if(res.success){
  640. this.$message({
  641. type: 'success',
  642. message: '审核成功!'
  643. });
  644. this.getProblemList()
  645. }else{
  646. this.$message({
  647. type: 'error',
  648. message: res.message
  649. });
  650. }
  651. })
  652. })
  653. },
  654. getProblemClasslist(){
  655. request.get(`/bis/insp/baseNew/getTypes`).then(res=>{
  656. if(res.success){
  657. res.data.forEach(ele=>{
  658. this.problemClasslist.push({
  659. value: ele,
  660. label: ele
  661. })
  662. })
  663. }
  664. })
  665. },
  666. deleteProblem(row){
  667. this.$confirm('确认删除该问题吗?', '提示', {
  668. confirmButtonText: '确定',
  669. cancelButtonText: '取消',
  670. type: 'warning'
  671. }).then(() => {
  672. var par = {
  673. id: row.guid
  674. }
  675. request.post(`/dc/insp/pblms/delete?id=${row.guid}`).then(res=>{
  676. if(res.success){
  677. this.$message({
  678. type: 'success',
  679. message: '删除成功!'
  680. });
  681. this.getProblemList()
  682. }else{
  683. this.$message({
  684. type: 'error',
  685. message: res.message
  686. });
  687. }
  688. })
  689. })
  690. },
  691. pageIndexChange(val) {
  692. this.form.pageNum = val;
  693. this.getProblemList();
  694. },
  695. handleSizeChange(val) {
  696. this.form.pageSize = val;
  697. this.getProblemList();
  698. },
  699. dialogClose(){
  700. this.addFileVisiual = false
  701. this.modifyFileVisiual = false
  702. this.exportEvent = false
  703. this.exportWordDialog = false
  704. this.getProblemList()
  705. },
  706. pblmPasiChange(val){
  707. this.getProblemList()
  708. },
  709. handleSelectionChange(val){
  710. let problemArr = []
  711. val.forEach(ele=>{
  712. problemArr.push(ele.id)
  713. })
  714. this.changeClassForm.ids = problemArr
  715. },
  716. // 批量删除
  717. toQueryDelete() {
  718. if(!this.changeClassForm.ids.length){
  719. this.$message.warning('请选择需要删除的问题')
  720. return
  721. }
  722. this.$confirm('请问是否删除已选问题?', '提示', {
  723. confirmButtonText: '确定',
  724. cancelButtonText: '取消',
  725. type: 'warning'
  726. }).then(() => {
  727. request.post(`/tac/obj/pblmstb/delList`,this.changeClassForm.ids).then(res=>{
  728. if(res.success){
  729. this.$message.success('删除成功')
  730. this.getProblemList()
  731. }else{
  732. this.$message.error(res.message)
  733. }
  734. })
  735. }).catch(() => {
  736. });
  737. },
  738. // 更改库别
  739. toChangeLibrary(){
  740. if(!this.changeClassForm.ids.length){
  741. this.$message.warning('请选择需要更改库别的问题')
  742. return
  743. }
  744. this.dialogFormVisible = true
  745. },
  746. changeClass(){
  747. this.$refs['form'].validate((valid) => {
  748. if(valid){
  749. this.marjorClassList.forEach(ele=>{
  750. if(this.changeClassForm.class1 == ele.classCode){
  751. this.changeClassForm.class1Name = ele.className
  752. }
  753. })
  754. this.subclassList.forEach(ele=>{
  755. if(this.changeClassForm.class2 == ele.classCode){
  756. this.changeClassForm.class2Name = ele.className
  757. }
  758. })
  759. request.post(`/tac/obj/pblmstb/updateList`,this.changeClassForm).then(res=>{
  760. if(res.success){
  761. this.$message.success('更改成功')
  762. this.dialogFormVisible = false
  763. this.getProblemList()
  764. }else{
  765. this.$message.error(res.message)
  766. }
  767. })
  768. } else {
  769. return false;
  770. }
  771. })
  772. },
  773. // 编辑问题类别
  774. toEditProblemClass(){
  775. this.showProblemClass = true
  776. },
  777. goBack(){
  778. this.showProblemClass = false
  779. },
  780. formatDate(date){
  781. return formatDateTime2(date)
  782. }
  783. },
  784. watch:{
  785. currentNodeId(val){
  786. this.getProblemList()
  787. },
  788. type(val){
  789. this.getProblemList()
  790. },
  791. backStatus(val){
  792. if(val){
  793. //回退状态为成功时
  794. this.getProblemList()
  795. }
  796. }
  797. }
  798. }
  799. </script>
  800. <style lang="scss">
  801. .problem_list{
  802. .project_title{
  803. line-height: 50px;
  804. text-align: center;
  805. color: #333;
  806. border-bottom: solid 1px #eee;
  807. }
  808. h4{
  809. line-height: 50px;
  810. color: #444;
  811. }
  812. .operate_btn{
  813. float: right;
  814. margin-bottom: 10px;
  815. }
  816. .inspPblmCate{
  817. padding: 2px 10px;
  818. border-radius:10px;
  819. color: #ffffff;
  820. -webkit-border-radius: 10px;
  821. -moz-border-radius: 10px;
  822. border-radius: 10px;
  823. }
  824. .el-form-item__label{
  825. font-size: large;
  826. color: #333;
  827. }
  828. .el-form--inline .el-form-item{
  829. margin-right: 6px;
  830. }
  831. .el-table__header th{
  832. font-size: large !important;
  833. }
  834. tr.el-table__row{
  835. font-size: large;
  836. }
  837. }
  838. </style>
  839. <style scoped>
  840. .custom-tree-node {
  841. display: flex; /* 启用 Flex 布局 */
  842. align-items: center; /* 垂直居中对齐 */
  843. justify-content: space-between; /* 左右两端对齐 */
  844. width: 100%; /* 确保节点宽度充满容器 */
  845. }
  846. /* 修改字体大小 */
  847. /deep/ .el-tree .el-tree-node__label {
  848. font-size: 16px; /* 调整为你需要的大小 */
  849. }
  850. </style>