dialog.edit.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. <template>
  2. <div class="rule-type">
  3. <DialogCom
  4. :title="id ? '编辑' : '新增'"
  5. :visible.sync="isShow"
  6. width="800px"
  7. >
  8. <div class="page-body">
  9. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  10. <el-row>
  11. <el-col :span="12">
  12. <el-form-item
  13. v-if="this.pId != -1"
  14. label="上级机构"
  15. prop="parentId"
  16. >
  17. <treeselect
  18. v-model="form.parentId"
  19. :options="deptOptions"
  20. :normalizer="normalizer"
  21. placeholder="选择上级机构"
  22. />
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="12">
  26. <el-form-item label="机构名称" prop="name">
  27. <el-input v-model="form.name" placeholder="请输入机构名称" maxlength="5" />
  28. </el-form-item>
  29. </el-col>
  30. </el-row>
  31. <el-row>
  32. <el-col :span="12">
  33. <el-form-item label="机构简称" prop="shortName">
  34. <el-input
  35. v-model="form.shortName"
  36. placeholder="请输入机构简称"
  37. maxlength="20"
  38. />
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="12">
  42. <el-form-item label="部门机构电话" prop="managerPhone">
  43. <el-input
  44. v-model="form.managerPhone"
  45. placeholder="请输入联系电话"
  46. maxlength="16"
  47. />
  48. </el-form-item>
  49. </el-col>
  50. </el-row>
  51. <el-row>
  52. <el-col :span="12">
  53. <el-form-item label="部门机构地址" prop="address">
  54. <el-input
  55. v-model="form.address"
  56. placeholder="请输入地址"
  57. maxlength="50"
  58. />
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="12">
  62. <el-form-item label="排序号" prop="sort">
  63. <el-input-number
  64. v-model="form.sort"
  65. controls-position="right"
  66. :min="0"
  67. />
  68. </el-form-item>
  69. </el-col>
  70. </el-row>
  71. <el-row>
  72. <el-col :span="12">
  73. <el-form-item label="机构类型" prop="type">
  74. <el-select
  75. prop="type"
  76. label="机构类型"
  77. v-model="form.type"
  78. placeholder="请选择机构类型"
  79. clearable
  80. >
  81. <el-option
  82. v-for="dict in dict.type.sys_org_type"
  83. :key="dict.value"
  84. :label="dict.label"
  85. :value="dict.value"
  86. />
  87. </el-select>
  88. </el-form-item>
  89. </el-col>
  90. </el-row>
  91. <el-row>
  92. <el-col :span="12">
  93. <el-form-item label="是否可用" prop="isLock">
  94. <el-switch
  95. v-model="form.isLock"
  96. :active-value="0"
  97. :inactive-value="1"
  98. >
  99. </el-switch>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="12">
  103. <el-form-item
  104. label="加钞间出入口远程控制"
  105. prop="cashAddingRoomRemoteControl"
  106. >
  107. <el-switch
  108. v-model="form.cashAddingRoomRemoteControl"
  109. :active-value="1"
  110. :inactive-value="0"
  111. >
  112. </el-switch>
  113. </el-form-item>
  114. </el-col>
  115. </el-row>
  116. <el-row>
  117. <el-col :span="12">
  118. <el-form-item
  119. label="离行式大堂设备"
  120. prop="detachedLobbyEquipment"
  121. >
  122. <el-input-number
  123. v-model="form.detachedLobbyEquipment"
  124. controls-position="right"
  125. :min="0"
  126. />
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="12">
  130. <el-form-item
  131. label="离行式穿墙设备"
  132. prop="detachedWallPenetratingEquipment"
  133. >
  134. <el-input-number
  135. v-model="form.detachedWallPenetratingEquipment"
  136. controls-position="right"
  137. :min="0"
  138. />
  139. </el-form-item>
  140. </el-col>
  141. </el-row>
  142. </el-form>
  143. <el-button @click="handleOrgAdd">新增物防建设</el-button>
  144. <el-table
  145. border
  146. size="small"
  147. v-loading="orgloading"
  148. :data="constructionList"
  149. @selection-change="handleOrgSelectionChange"
  150. >
  151. <el-table-column type="selection" width="55" align="center" />
  152. <el-table-column v-if="false" label="序号" align="center" prop="id" />
  153. <el-table-column label="标准" align="center" prop="standard" />
  154. <el-table-column
  155. label="达标日期"
  156. align="center"
  157. prop="dateOfCompliance"
  158. width="180"
  159. >
  160. <template slot-scope="scope">
  161. <span>{{ formatTime(scope.row.dateOfCompliance,"YYYY-MM-DD") }}</span>
  162. </template>
  163. </el-table-column>
  164. <el-table-column
  165. v-if="false"
  166. label="机构id"
  167. align="center"
  168. prop="orgId"
  169. />
  170. <el-table-column
  171. label="操作"
  172. align="center"
  173. class-name="small-padding fixed-width"
  174. >
  175. <template slot-scope="scope">
  176. <el-button
  177. size="mini"
  178. type="text"
  179. icon="el-icon-edit-outline"
  180. @click="handleOrgUpdate(scope.row)"
  181. v-hasPermi="['system:construction:edit']"
  182. >查看证书</el-button
  183. >
  184. <el-button
  185. size="mini"
  186. type="text"
  187. icon="el-icon-edit-outline"
  188. @click="handleOrgUpdate(scope.row)"
  189. v-hasPermi="['system:construction:edit']"
  190. >修改</el-button
  191. >
  192. <el-button
  193. size="mini"
  194. type="text"
  195. icon="el-icon-delete"
  196. @click="handleOrgDelete(scope.$index)"
  197. v-hasPermi="['system:construction:remove']"
  198. >删除</el-button
  199. >
  200. </template>
  201. </el-table-column>
  202. </el-table>
  203. </div>
  204. <div slot="footer" class="dialog-footer">
  205. <el-button @click="onHide">取消</el-button>
  206. <el-button type="primary" @click="onSubmit">确定</el-button>
  207. </div>
  208. </DialogCom>
  209. <DialogCom
  210. :title="orgtitle"
  211. :visible.sync="orgopen"
  212. width="500px"
  213. append-to-body
  214. >
  215. <el-form
  216. ref="orgform"
  217. :model="orgform"
  218. label-width="80px"
  219. :rules="rules2"
  220. >
  221. <el-form-item label="标准" prop="standard">
  222. <el-input v-model="orgform.standard" placeholder="请输入标准" />
  223. </el-form-item>
  224. <el-form-item label="达标日期" prop="dateOfCompliance">
  225. <el-date-picker
  226. clearable
  227. v-model="orgform.dateOfCompliance"
  228. type="date"
  229. value-format="yyyy-MM-dd HH:mm:ss"
  230. placeholder="请选择达标日期"
  231. >
  232. </el-date-picker>
  233. </el-form-item>
  234. <el-form-item label="证书佐证" prop="certificateEvidence">
  235. <el-switch
  236. v-model="orgform.certificateEvidence"
  237. active-text
  238. :active-value="1"
  239. :inactive-value="0"
  240. ></el-switch>
  241. </el-form-item>
  242. <el-form-item
  243. v-if="orgform.certificateEvidence"
  244. label="证书"
  245. prop="certificate"
  246. >
  247. <el-input
  248. v-if="false"
  249. v-model="orgform.certificate"
  250. placeholder="请输入证书"
  251. />
  252. <div class="image-container" style="margin-left: 20px">
  253. <p style="font-size: 12px; color: #999">上传证书</p>
  254. <image-upload :limit="1" :fileSize="2"></image-upload>
  255. </div>
  256. </el-form-item>
  257. <el-form-item v-if="false" label="佐证" prop="evidence">
  258. <el-input v-model="orgform.evidence" placeholder="请输入佐证" />
  259. </el-form-item>
  260. <el-form-item v-if="false" label="机构id" prop="orgId">
  261. <el-input v-model="orgform.orgId" placeholder="请输入机构id" />
  262. </el-form-item>
  263. </el-form>
  264. <div slot="footer" class="dialog-footer">
  265. <el-button type="primary" @click="submitOrgForm">确 定</el-button>
  266. <el-button @click="orgcancel">取 消</el-button>
  267. </div>
  268. </DialogCom>
  269. </div>
  270. </template>
  271. <script>
  272. import Treeselect from "@riophae/vue-treeselect";
  273. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  274. import {
  275. listOrgPhysicalDefenseConstruction,
  276. getOrgPhysicalDefenseConstruction,
  277. addOrgPhysicalDefenseConstruction,
  278. updateOrgPhysicalDefenseConstruction,
  279. delOrgPhysicalDefenseConstruction,
  280. } from "@/api/system/OrgPhysicalDefenseConstruction";
  281. import { deptTreeSelect } from "@/api/system/public";
  282. import {
  283. listExtend,
  284. getExtend,
  285. addExtend,
  286. updateExtend,
  287. delExtend,
  288. getExtendByOrgId,
  289. uploadFile,
  290. addOrUpdate,
  291. } from "@/api/system/extend";
  292. export default {
  293. dicts: ["sys_normal_disable", "sys_org_type"],
  294. data() {
  295. return {
  296. tempRow: null,
  297. // 查询参数
  298. queryParams: {
  299. pageNum: 1,
  300. pageSize: 10,
  301. name: "",
  302. status: undefined,
  303. parentId: undefined,
  304. },
  305. // 机构树选项
  306. deptOptions: [],
  307. pId: 0,
  308. orgid: "",
  309. // 表单参数
  310. orgform: {},
  311. //默认选中节点
  312. defaultKeys: [],
  313. //表单验证
  314. rules2: {
  315. standard: [{ required: true, message: "请输入标准", trigger: "blur" }],
  316. dateOfCompliance: [
  317. { required: true, message: "请输入达标日期", trigger: "blur" },
  318. ],
  319. },
  320. rules: {
  321. parentId: [
  322. { required: true, message: "上级机构不能为空", trigger: "blur" },
  323. ],
  324. sort: [{ required: true, message: "排序号不能为空", trigger: "blur" }],
  325. type: [
  326. { required: true, message: "机构类型不能为空", trigger: "blur" },
  327. ],
  328. isLock: [{ required: true, message: "状态不能为空", trigger: "blur" }],
  329. name: [
  330. { required: true, message: "机构名称不能为空", trigger: "blur" },
  331. ],
  332. // managerPhone: [
  333. // {
  334. // pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
  335. // message: "请输入正确的手机号码",
  336. // trigger: "blur",
  337. // },
  338. // ],
  339. },
  340. orgopen: false,
  341. orgtitle: "",
  342. form: {},
  343. constructionList: [],
  344. tableData: [],
  345. id: null,
  346. isShow: false,
  347. orgloading: false,
  348. };
  349. },
  350. watch: {},
  351. computed: {},
  352. created() {
  353. this.getDeptTree();
  354. },
  355. methods: {
  356. getOrgPhysicalDefenseConstructionInfo() {
  357. this.orgloading = true;
  358. let dat = { orgId: this.id, type: 4 };
  359. // console.log(dat,2222222222)
  360. listOrgPhysicalDefenseConstruction(dat).then((data) => {
  361. // console.log("机构信息获取成功");
  362. this.constructionList = data.rows;
  363. this.orgloading = false;
  364. });
  365. },
  366. // 多选框选中数据
  367. handleOrgSelectionChange(selection) {
  368. this.orgids = selection.map((item) => item.id);
  369. this.single = selection.length !== 1;
  370. this.multiple = !selection.length;
  371. },
  372. // 取消按钮
  373. orgcancel() {
  374. this.orgopen = false;
  375. this.orgreset();
  376. this.tempRow = "";
  377. },
  378. /** 提交按钮 */
  379. submitOrgForm() {
  380. this.$refs.orgform.validate((valid) => {
  381. if (valid) {
  382. // 表单验证通过,提交数据或执行其他操作
  383. let dat = {
  384. standard: this.orgform.standard,
  385. dateOfCompliance: this.orgform.dateOfCompliance,
  386. certificateEvidence: this.orgform.certificateEvidence,
  387. certificate: this.orgform.certificate,
  388. evidence: this.orgform.evidence,
  389. };
  390. this.constructionList.splice(this.tempRow, 1);
  391. this.constructionList.push(dat);
  392. this.orgopen = false;
  393. } else {
  394. // 表单验证未通过,显示错误信息
  395. }
  396. });
  397. // this.orgform.orgId = this.orgid;
  398. // this.$refs["orgform"].validate((valid) => {
  399. // if (valid) {
  400. // this.orgform.type = 4;
  401. // if (this.orgform.id != null) {
  402. // updateOrgPhysicalDefenseConstruction(this.orgform).then(
  403. // (response) => {
  404. // this.$modal.msgSuccess("修改成功");
  405. // this.orgopen = false;
  406. // this.getOrgPhysicalDefenseConstructionInfo();
  407. // }
  408. // );
  409. // } else {
  410. // addOrgPhysicalDefenseConstruction(this.orgform).then((response) => {
  411. // this.$modal.msgSuccess("新增成功");
  412. // this.orgopen = false;
  413. // this.getOrgPhysicalDefenseConstructionInfo();
  414. // });
  415. // }
  416. // }
  417. // });
  418. },
  419. /** 删除按钮操作 */
  420. handleOrgDelete(row) {
  421. this.constructionList.splice(row, 1);
  422. // this.$modal
  423. // .confirm('是否确认删除机构物防建设编号为"' + orgids + '"的数据项?')
  424. // .then(function () {
  425. // return delOrgPhysicalDefenseConstruction(orgids);
  426. // })
  427. // .then(() => {
  428. // this.getOrgPhysicalDefenseConstructionInfo();
  429. // this.$modal.msgSuccess("删除成功");
  430. // })
  431. // .catch(() => {});
  432. },
  433. /** 修改按钮操作 */
  434. handleOrgUpdate(row) {
  435. this.orgreset();
  436. this.tempRow = row;
  437. this.orgform = row;
  438. this.orgopen = true;
  439. this.orgtitle = "修改机构物防建设";
  440. // const id = row.id || this.orgids;
  441. // getOrgPhysicalDefenseConstruction(id).then((response) => {
  442. // // console.log(response)
  443. // this.orgform = response.data;
  444. // this.orgopen = true;
  445. // this.orgtitle = "修改机构物防建设";
  446. // });
  447. },
  448. /** 新增按钮操作 */
  449. handleOrgAdd() {
  450. this.orgreset();
  451. this.orgopen = true;
  452. this.orgtitle = "添加机构物防建设";
  453. },
  454. // 表单重置
  455. orgreset() {
  456. this.orgform = {
  457. id: null,
  458. standard: null,
  459. dateOfCompliance: null,
  460. certificateEvidence: null,
  461. certificate: null,
  462. evidence: null,
  463. createTime: null,
  464. updateTime: null,
  465. createBy: null,
  466. updateBy: null,
  467. orgId: null,
  468. };
  469. this.resetForm("orgform");
  470. },
  471. /** 转换机构数据结构 */
  472. normalizer(node) {
  473. if (node.children && !node.children.length) {
  474. delete node.children;
  475. }
  476. return {
  477. id: node.id,
  478. label: node.name,
  479. children: node.children,
  480. };
  481. },
  482. /** 查询机构下拉树结构 */
  483. getDeptTree() {
  484. deptTreeSelect().then((response) => {
  485. this.deptOptions = response.data;
  486. this.defaultKeys.push(response.data[0].id);
  487. this.queryParams.parentId = response.data[0].id;
  488. // this.handleQuery();
  489. });
  490. },
  491. async show(row) {
  492. this.form = {};
  493. this.id = 0;
  494. this.constructionList = [];
  495. if (row != 0) {
  496. // console.log(row,111111111111)
  497. this.orgid = row.orgid;
  498. this.form = row;
  499. // this.form.isLock2=row.isLock;
  500. this.id = row.id;
  501. if (row.id != null) {
  502. getExtendByOrgId(row.id).then((data) => {
  503. console.log(data.data);
  504. if (data.data != null) {
  505. (this.form.orgExtendId = data.data.id),
  506. (this.form.cashAddingRoomRemoteControl =
  507. data.data.cashAddingRoomRemoteControl);
  508. this.form.detachedLobbyEquipment =
  509. data.data.detachedLobbyEquipment;
  510. this.form.detachedWallPenetratingEquipment =
  511. data.data.detachedWallPenetratingEquipment;
  512. }
  513. });
  514. this.getOrgPhysicalDefenseConstructionInfo();
  515. }
  516. }
  517. this.isShow = true;
  518. },
  519. // 事件
  520. onHide() {
  521. this.$emit("success")
  522. this.isShow = false;
  523. },
  524. onSubmit() {
  525. this.$refs.form.validate((valid) => {
  526. if (valid) {
  527. // 表单验证通过,提交数据或执行其他操作
  528. this.form.isLock = this.form.isLock ? 1 : 0;
  529. this.form.cashAddingRoomRemoteControl = this.form
  530. .cashAddingRoomRemoteControl
  531. ? 1
  532. : 0;
  533. this.form.constructionList = this.constructionList;
  534. // console.log(this.form);
  535. addOrUpdate(this.form).then((data) => {
  536. this.$modal.msgSuccess("成功");
  537. this.$emit("success")
  538. this.onHide();
  539. });
  540. } else {
  541. // 表单验证未通过,显示错误信息
  542. }
  543. });
  544. // this.$refs.form.validate(async (isValidate) => {
  545. // // this.$emit("success");
  546. // });
  547. },
  548. // 事件
  549. //apimark//
  550. },
  551. mounted() {},
  552. components: { Treeselect },
  553. };
  554. </script>
  555. <style lang="scss" scoped>
  556. .brand_info {
  557. .el-form {
  558. width: 600px;
  559. padding-top: 40px;
  560. }
  561. }
  562. </style>