5e19f32c1cdb7ea36de01890fc11660f830c08e6.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. <template>
  2. <el-dialog
  3. :title="titleType + '问题标准'"
  4. @close="closeDialog"
  5. :visible.sync="dialogFormVisible"
  6. append-to-body
  7. >
  8. <el-form :model="form" :rules="rules" ref="form" label-width="100px">
  9. <el-form-item label="问题类别" prop="inspPblmsName">
  10. <el-select v-model="form.inspPblmsName" placeholder="请选择问题类别" @change="problemListChange">
  11. <el-option
  12. v-for="(item,index) in problemList"
  13. :key="index"
  14. :label="item.inspPblmsName"
  15. :value="item.inspPblmsName"
  16. ></el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="检查项目" prop="checkPoint">
  20. <el-select v-model="form.checkPoint" placeholder="请选择检查项目" value-key="checkPointName">
  21. <el-option
  22. v-for="(item,index) in currentCheckPointList"
  23. :key="index"
  24. :label="item.checkPointName"
  25. :value="item.checkPointName"
  26. ></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <!-- 问题小类 -->
  30. <!-- <el-form-item label="附件序号">
  31. <el-select v-model="form.attach" clearable placeholder="请输入附件序号">
  32. <el-option
  33. v-for="(item,index) in subclassList"
  34. :key="index"
  35. :label="item.className"
  36. :value="item.classCode">
  37. </el-option>
  38. </el-select>
  39. </el-form-item>-->
  40. <el-form-item label="附件序号" prop="attach">
  41. <el-input v-model="form.attach" placeholder="输入附件序号" clearable style="width: 140px"></el-input>
  42. </el-form-item>
  43. <el-form-item label="问题序号">
  44. <el-input v-model="form.snNum" autocomplete="off"></el-input>
  45. </el-form-item>
  46. <!-- <el-form-item label="入库时间">
  47. <el-date-picker type="date" value-format="yyyy-MM-dd" placeholder="选择日期" v-model="form.intm" style="width: 100%;"></el-date-picker>
  48. </el-form-item>-->
  49. <el-form-item label="问题描述">
  50. <el-input v-model="form.pblmDesc" type="textarea" :rows="5" autocomplete="off"></el-input>
  51. </el-form-item>
  52. <el-form-item label="严重程度">
  53. <div>
  54. <el-radio v-model="form.inspPblmCate" label="0">一般</el-radio>
  55. <span class="add_desc" @click="appearDes0cInput = !appearDes0cInput">添加描述</span>
  56. <div class="demo-input-suffix" v-if="appearDes0cInput">
  57. 描述信息:
  58. <el-input v-model="form.cate0Desc" autocomplete="off"></el-input>
  59. </div>
  60. </div>
  61. <div>
  62. <el-radio v-model="form.inspPblmCate" label="1">较重</el-radio>
  63. <span class="add_desc" @click="appearDes1cInput = !appearDes1cInput">添加描述</span>
  64. <div class="demo-input-suffix" v-if="appearDes1cInput">
  65. 描述信息:
  66. <el-input v-model="form.cate1Desc" autocomplete="off"></el-input>
  67. </div>
  68. </div>
  69. <div>
  70. <el-radio v-model="form.inspPblmCate" label="2">严重</el-radio>
  71. <span class="add_desc" @click="appearDes2cInput = !appearDes2cInput">添加描述</span>
  72. <div class="demo-input-suffix" v-if="appearDes2cInput">
  73. 描述信息:
  74. <el-input v-model="form.cate2Desc" autocomplete="off"></el-input>
  75. </div>
  76. </div>
  77. <!-- <div>
  78. <el-radio v-model="form.inspPblmCate" label="3">特别严重</el-radio>
  79. <span class="add_desc" @click="appearDes3cInput = !appearDes3cInput">添加描述</span>
  80. <div class="demo-input-suffix" v-if="appearDes3cInput">
  81. 描述信息:<el-input v-model="form.cate3Desc" autocomplete="off"></el-input>
  82. </div>
  83. </div>-->
  84. </el-form-item>
  85. </el-form>
  86. <div slot="footer" class="dialog-footer">
  87. <el-button @click="closeDialog">取 消</el-button>
  88. <el-button type="primary" @click="submitNewProblem">保 存</el-button>
  89. </div>
  90. </el-dialog>
  91. </template>
  92. <script>
  93. import request from "@util/gw_ajax_request.js";
  94. import { formatDateTime2 } from "@util/gw_date.js";
  95. //import {getNatureListApi,submitNewProblemApi} from '@api/InspectionReport.js'
  96. export default {
  97. props: ["titleType", "rowData", "listType"],
  98. data() {
  99. let _this = this;
  100. return {
  101. form: {
  102. checkPoint: "",
  103. inspPblmCate: "", //问题状态,0:一般,1:较重,2:严重
  104. inspPblmsName: "",
  105. pblmDesc: "", //问题描述
  106. snNum: "", //问题序号
  107. type: "1", //督查类型必传
  108. attach: "", //字段是附件
  109. cate0Desc: "",
  110. cate1Desc: "",
  111. cate2Desc: "",
  112. cate3Desc: ""
  113. },
  114. dialogFormVisible: true,
  115. currentCheckPointList: [],
  116. problemList: [],
  117. subclassList: [],
  118. faguiList: [],
  119. appearDes0cInput: false,
  120. appearDes1cInput: false,
  121. appearDes2cInput: false,
  122. appearDes3cInput: false,
  123. rules: {
  124. inspPblmsName: [
  125. { required: true, message: "请选择问题类别", trigger: "change" }
  126. ],
  127. checkPoint: [
  128. { required: true, message: "请选择检查项目", trigger: "change" }
  129. ],
  130. attach: [{ required: true, message: "请输入附件序号", trigger: "blur" }]
  131. }
  132. };
  133. },
  134. mounted() {
  135. if (this.titleType == "编辑") {
  136. // this.form = this.rowData
  137. for (var i in this.form) {
  138. this.form[i] = this.rowData[i];
  139. }
  140. this.form["guid"] = this.rowData["guid"];
  141. this.form.intm = formatDateTime2(this.form.intm);
  142. this.problemListChange();
  143. this.getPblmTypeMenu(); // 获取问题类型
  144. } else {
  145. this.getPblmTypeMenu(); // 获取问题类型
  146. if (this.listType) {
  147. this.form.inspPblmsName = this.listType;
  148. } else {
  149. this.form.inspPblmsName = "";
  150. }
  151. this.problemListChange();
  152. }
  153. },
  154. methods: {
  155. // add by luochenghai 20191129 后台获取问题类别
  156. getPblmTypeMenu() {
  157. var _self = this;
  158. let result = [];
  159. request
  160. .get("/dc/insp/pblms/getPblmType", {
  161. params: {
  162. type: "13",
  163. pguid: "13000000000000000000000000000000"
  164. }
  165. })
  166. .then(res => {
  167. if (res.success) {
  168. res.data.forEach(ele => {
  169. let haveinspPblmsName = false;
  170. result.forEach(inspPblm => {
  171. if (inspPblm["inspPblmsName"] == ele.inspPblmsName) {
  172. //
  173. let havechekPoint = false;
  174. inspPblm["checkPoints"].forEach(chekPoint => {
  175. if (chekPoint["checkPointName"] == ele.checkPoint) {
  176. //
  177. chekPoint["pblmDescs"].push({
  178. pblmDesc: ele.pblmDesc,
  179. sn: ele.sn,
  180. guid: ele.guid
  181. });
  182. havechekPoint = true;
  183. }
  184. });
  185. if (!havechekPoint) {
  186. let newCheckPoint = {};
  187. newCheckPoint["checkPointName"] = ele.checkPoint;
  188. newCheckPoint["sort2"] = ele.sort2;
  189. newCheckPoint["pblmDescs"] = [
  190. {
  191. pblmDesc: ele.pblmDesc,
  192. sn: ele.sn,
  193. guid: ele.guid
  194. }
  195. ];
  196. inspPblm["checkPoints"].push(newCheckPoint);
  197. }
  198. haveinspPblmsName = true;
  199. }
  200. });
  201. if (!haveinspPblmsName) {
  202. let haveinspPblmsObj = {};
  203. haveinspPblmsObj["inspPblmsName"] = ele.inspPblmsName;
  204. haveinspPblmsObj["sort1"] = ele.sort1;
  205. haveinspPblmsObj["checkPoints"] = [
  206. {
  207. checkPointName: ele.checkPoint,
  208. sort2: ele.sort2,
  209. pblmDescs: [
  210. {
  211. pblmDesc: ele.pblmDesc,
  212. sn: ele.sn,
  213. guid: ele.guid
  214. }
  215. ]
  216. }
  217. ];
  218. result.push(haveinspPblmsObj);
  219. }
  220. });
  221. _self.problemList = result;
  222. //console.log(_self.problemList);
  223. }
  224. });
  225. },
  226. problemListChange: function(item) {
  227. for (var i = 0; i < this.problemList.length; i++) {
  228. if (this.problemList[i].inspPblmsName == item) {
  229. this.currentCheckPointList = this.problemList[i].checkPoints;
  230. console.log(this.currentCheckPointList);
  231. }
  232. }
  233. },
  234. //小水库 添加问题分类
  235. submitNewProblemApi(data) {
  236. return request({
  237. url: `/dc/insp/pblms`,
  238. method: "POST",
  239. data: data
  240. });
  241. },
  242. //水闸 编辑问题分类
  243. submitEditProblemApi(data) {
  244. return request({
  245. url: `/dc/insp/pblms/update`,
  246. method: "POST",
  247. data: data
  248. });
  249. },
  250. // 保存
  251. submitNewProblem() {
  252. this.$refs["form"].validate(valid => {
  253. if (valid) {
  254. if (this.titleType == "编辑"){
  255. this.submitEditProblemApi(this.form)
  256. .then(res => {
  257. if (res.success) {
  258. this.$message.success("修改成功");
  259. this.$emit("dialogClose");
  260. } else {
  261. this.$message.error(res.message);
  262. }
  263. })
  264. .catch(err => {
  265. this.$message.error(err);
  266. });
  267. }
  268. // 添加问题
  269. else{
  270. this.submitNewProblemApi(this.form)
  271. .then(res => {
  272. if (res.success) {
  273. this.$message.success("添加成功");
  274. this.$emit("dialogClose");
  275. } else {
  276. this.$message.error(res.message);
  277. }
  278. })
  279. .catch(err => {
  280. this.$message.error(err);
  281. });
  282. }
  283. } else {
  284. return false;
  285. }
  286. });
  287. },
  288. // 取消
  289. closeDialog() {
  290. this.$emit("dialogClose");
  291. }
  292. },
  293. watch: {}
  294. };
  295. </script>
  296. <style lang="scss">
  297. .max_width {
  298. max-width: 1200px;
  299. }
  300. </style>