dialog.edit.vue 15 KB

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