addoredit.vue 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. <template>
  2. <div class="device-info_install addinstall">
  3. <div class="device_content">
  4. <div class="left_content">
  5. <div class="form_head">
  6. <p>基本信息</p>
  7. </div>
  8. <div class="form_content">
  9. <el-scrollbar class="app-list-scroll" style="height: 100%">
  10. <div class="form_content_disform">
  11. <zz-form :cols="detailCols" :data="formdata" :rules="formrules" labelWidth="98" ref="detailform">
  12. <el-select v-model="formdata.communityId" placeholder="请选择社区名称" slot="communityId" class="width100">
  13. <el-option
  14. v-for="(item, index) in communityArray"
  15. :label="item.communityName"
  16. :value="item.id"
  17. :key="index"
  18. ></el-option>
  19. </el-select>
  20. <el-select
  21. v-model="formdata.buildingType"
  22. placeholder="请选择楼栋类型"
  23. slot="buildingTypeList"
  24. class="width100"
  25. >
  26. <el-option label="高层" :value="1"></el-option>
  27. <el-option label="底层" :value="2"></el-option>
  28. </el-select>
  29. <el-select
  30. v-model="formdata.buildingPurpose"
  31. placeholder="请选择楼栋用途"
  32. slot="buildingPurpose"
  33. class="width100"
  34. >
  35. <el-option
  36. v-for="(item, index) in buildingPurposeType"
  37. :label="item.label"
  38. :value="item.id"
  39. :key="index"
  40. ></el-option>
  41. </el-select>
  42. <el-select
  43. v-model="formdata.buildingStructure"
  44. placeholder="请选择楼栋用途"
  45. slot="buildingStructure"
  46. class="width100"
  47. >
  48. <el-option
  49. v-for="(item, index) in buildingStructureType"
  50. :label="item.label"
  51. :value="item.id"
  52. :key="index"
  53. ></el-option>
  54. </el-select>
  55. <el-input
  56. type="textarea"
  57. :rows="4"
  58. slot="remarks"
  59. show-word-limit
  60. v-model="formdata.remarks"
  61. maxlength="300"
  62. >
  63. </el-input>
  64. </zz-form>
  65. </div>
  66. </el-scrollbar>
  67. </div>
  68. </div>
  69. <div class="right_content">
  70. <div class="right_content_head">
  71. <span class="head_text">创建房屋</span>
  72. <span class="close" @click="close">
  73. <i class="el-icon-close"></i>
  74. </span>
  75. </div>
  76. <div class="right_content_info">
  77. <div class="head_fr" v-if="isAdd">
  78. <div class="head_content head_add">
  79. <div class="checkbox_style">
  80. <el-checkbox :disabled="!isAdd" @change="checkedUnit" v-model="initialUnitList.checkedUnit"></el-checkbox>
  81. </div>
  82. <div class="form_content">
  83. <zz-form
  84. :cols="unitCols"
  85. labelposition="left"
  86. :rules="unitrules"
  87. :data="formdata"
  88. :disabled="!isAdd"
  89. labelWidth="50"
  90. ref="unitform"
  91. >
  92. <template slot="unitRule" prop="unitRule">
  93. <div class="row_class">
  94. <el-radio-group
  95. :disabled="!initialUnitList.checkedUnit"
  96. v-model="initialUnitList.unit.type"
  97. @change="radioChange('unit', $event)"
  98. >
  99. <el-radio label="Number">按数字1-20生成</el-radio>
  100. <el-radio label="Letter">按字母A-Z生成</el-radio>
  101. </el-radio-group>
  102. <el-select
  103. :disabled="!initialUnitList.checkedUnit"
  104. class="w120 wfirst"
  105. v-model="initialUnitList.unit.start"
  106. prop="floorstart"
  107. placeholder="起始单元"
  108. >
  109. <el-option
  110. v-for="item in unitOptions"
  111. :key="item.value"
  112. :label="item.label"
  113. :value="item.value"
  114. >
  115. </el-option>
  116. </el-select>
  117. <el-select
  118. class="w120 wsecond"
  119. :disabled="!initialUnitList.checkedUnit"
  120. v-model="initialUnitList.unit.end"
  121. placeholder="单元数"
  122. >
  123. <el-option
  124. v-for="item in unitOptions"
  125. :key="item.value"
  126. :label="item.label"
  127. :value="item.value"
  128. >
  129. </el-option>
  130. </el-select>
  131. </div>
  132. <div class="row_class addfloo">
  133. <div class="last_level">
  134. <label class="label_text">每栋层数</label>
  135. <el-select class="w120" v-model="formdata.floorsNumber" placeholder="请选择楼栋层数">
  136. <el-option
  137. v-for="item in floorlevelOptions"
  138. :key="item.value"
  139. :label="item.label"
  140. :value="item.value"
  141. >
  142. </el-option>
  143. </el-select>
  144. </div>
  145. <div class="last_level">
  146. <label class="label_text">每层户数</label>
  147. <el-select class="w120" v-model="formdata.householdsPerFloor" placeholder="请选择每层户数">
  148. <el-option
  149. v-for="item in unithouseOptions"
  150. :key="item.value"
  151. :label="item.label"
  152. :value="item.value"
  153. >
  154. </el-option>
  155. </el-select>
  156. </div>
  157. <div class="last_level" v-if="isAdd">
  158. <label class="label_text">房屋类型</label>
  159. <el-select
  160. class="w120"
  161. v-model="formdata.houseType"
  162. @change="toggleUnithOptions"
  163. placeholder="请选择每层户数"
  164. >
  165. <el-option label="住宅" :value="1"></el-option>
  166. <el-option label="商业" :value="2"></el-option>
  167. </el-select>
  168. </div>
  169. </div>
  170. </template>
  171. </zz-form>
  172. </div>
  173. <div class="btn_unit">
  174. <el-button type="primary" class="el-mgRight-md" :disabled="!isAdd" @click="createDoor"
  175. >{{ doorData.length ? '重新' : '' }}生成房屋</el-button
  176. >
  177. <el-button @click="clearDoor" :disabled="!isAdd">清空房屋</el-button>
  178. </div>
  179. </div>
  180. <div class="title_class">
  181. <span class="title_txt">楼栋信息</span>
  182. <el-tooltip v-if="doorData && doorData.length > 0" class="item text-wrapper" effect="light" placement="right">
  183. <div slot="content">
  184. 双击可对楼栋、单元名称进行自定义修改<br />单击选中楼栋、单元、单元户信息根据选中的楼栋、单元进行展示
  185. </div>
  186. <img src="@/assets/img/menuicon/icon_tishi_zhengchang.png" alt="" />
  187. </el-tooltip>
  188. </div>
  189. </div>
  190. <div class="floorinfo">
  191. <div class="door-wrap door_install">
  192. <div class="top_content" :class="!isAdd ? 'is-disabled' : ''">
  193. <el-scrollbar class="app-list-scroll" style="height: 100%">
  194. <div class="floor_unit" v-if="doorData && doorData.length > 0">
  195. <div class="box clearfix">
  196. <div class="label_left">楼栋</div>
  197. <div class="el-fl-left tags">
  198. <el-tag :disable-transitions="false" data-code="build" class="active">
  199. {{ formdata.buildingName }}
  200. </el-tag>
  201. </div>
  202. </div>
  203. <div
  204. class="box clearfix"
  205. v-if="
  206. initialUnitList.enableUnit &&
  207. doorData[buildingIndex] &&
  208. doorData[buildingIndex].unitFloorList &&
  209. doorData[buildingIndex].unitFloorList.length
  210. "
  211. >
  212. <div class="label_left">单元</div>
  213. <div class="el-fl-left tags">
  214. <el-tag
  215. :key="index2"
  216. v-for="(unit, index2) in doorData"
  217. closable
  218. :disable-transitions="false"
  219. data-code="unit"
  220. @close="handleClose('unit', index2, doorData)"
  221. @click="unitIndex = index2"
  222. :class="{ active: unitIndex === index2 }"
  223. >
  224. <span @dblclick="showInput">{{ unit.unitName }}</span>
  225. <el-input
  226. style="display: none"
  227. v-model="unit.unitName"
  228. @keyup.enter.native="inputConfirm($event, doorData)"
  229. @blur="inputConfirm($event, doorData)"
  230. data-code="unit"
  231. maxlength="20"
  232. ></el-input>
  233. </el-tag>
  234. <el-button class="el-icon-plus button-new-tag" size="small" @click="showInput"></el-button>
  235. <el-input
  236. class="input-new-tag"
  237. style="display: none"
  238. size="small"
  239. placeholder="请输入单元号"
  240. v-model="inputValue.unit"
  241. @keyup.enter.native="handleInputConfirm($event, doorData)"
  242. @blur="handleInputConfirm($event, doorData)"
  243. data-code="unit"
  244. maxlength="20"
  245. >
  246. </el-input>
  247. </div>
  248. </div>
  249. </div>
  250. <div v-else class="empty_floor">
  251. <p>暂无相关信息</p>
  252. </div>
  253. <div class="title_class border_hr">
  254. <span class="title_txt">单元户信息</span>
  255. <el-tooltip
  256. v-if="
  257. doorData[buildingIndex] &&
  258. doorData[buildingIndex].unitFloorList &&
  259. doorData[buildingIndex].unitFloorList.length
  260. "
  261. class="item"
  262. effect="light"
  263. placement="right"
  264. :content="unitMsg"
  265. >
  266. <img src="@/assets/img/menuicon/icon_tishi_zhengchang.png" alt="" />
  267. </el-tooltip>
  268. </div>
  269. <div
  270. class="unit"
  271. v-if="
  272. doorData[buildingIndex] &&
  273. doorData[buildingIndex].unitFloorList &&
  274. doorData[buildingIndex].unitFloorList.length
  275. "
  276. >
  277. <div
  278. class="floor"
  279. v-if="
  280. doorData[buildingIndex].unitFloorList[unitIndex] &&
  281. doorData[buildingIndex].unitFloorList[unitIndex].roomList &&
  282. doorData[buildingIndex].unitFloorList[unitIndex].roomList.length
  283. "
  284. >
  285. <!-- <h2>单元户<span>鼠标双击修改名称; 修改楼层名称后,请自行修改单元户的名称</span></h2> -->
  286. <div
  287. class="box clearfix"
  288. :key="index3"
  289. v-for="(floor, index3) in doorData[buildingIndex].unitFloorList"
  290. >
  291. <!-- <span class="el-fl-left label">楼层:</span> -->
  292. <div class="unit_left">
  293. <el-tag
  294. closable
  295. :disable-transitions="false"
  296. data-code="floor"
  297. @close="handleClose('floor', index3, doorData[buildingIndex].unitFloorList)"
  298. >
  299. <span @dblclick="showInput">{{ floor.floorNumber }}</span>
  300. <el-input
  301. style="display: none"
  302. v-model="floor.floorNumber"
  303. @keyup.enter.native="
  304. inputConfirm($event, doorData[buildingIndex].unitFloorList)
  305. "
  306. @blur="inputConfirm($event, doorData[buildingIndex].unitFloorList)"
  307. data-code="floor"
  308. maxlength="20"
  309. ></el-input>
  310. </el-tag>
  311. <span class="unit_text">层</span>
  312. </div>
  313. <span class="el-fl-left tags">
  314. <div class="door" v-if="floor">
  315. <el-tag
  316. :key="index4"
  317. v-for="(door, index4) in floor.roomList"
  318. closable
  319. :disable-transitions="false"
  320. data-code="door"
  321. @close="handleClose('door', index4, floor.roomList)"
  322. >
  323. <span @dblclick="showInput">{{ door.roomNumber }}</span>
  324. <el-input
  325. style="display: none"
  326. v-model="door.roomNumber"
  327. @keyup.enter.native="inputConfirm($event, floor.roomList)"
  328. @blur="inputConfirm($event, floor.roomList)"
  329. data-code="door"
  330. maxlength="20"
  331. ></el-input>
  332. </el-tag>
  333. <el-button
  334. class="el-icon-plus button-new-tag"
  335. size="small"
  336. @click="showInput"
  337. ></el-button>
  338. <el-input
  339. class="input-new-tag"
  340. style="display: none"
  341. size="small"
  342. placeholder="请输入户号"
  343. v-model="inputValue.door"
  344. @keyup.enter.native="handleInputConfirm($event, floor.roomList)"
  345. @blur="handleInputConfirm($event, floor.roomList)"
  346. data-code="door"
  347. maxlength="20"
  348. >
  349. </el-input>
  350. </div>
  351. </span>
  352. </div>
  353. <div class="add-floor">
  354. <el-button class="el-icon-plus button-new-tag" size="small" @click="showInput"></el-button>
  355. <el-input
  356. class="input-new-tag"
  357. style="display: none"
  358. size="small"
  359. placeholder="请输入楼层号"
  360. v-model="inputValue.floor"
  361. @keyup.enter.native="handleInputConfirm($event, doorData[buildingIndex].unitFloorList)"
  362. @blur="handleInputConfirm($event, doorData[buildingIndex].unitFloorList)"
  363. data-code="floor"
  364. maxlength="20"
  365. >
  366. </el-input>
  367. </div>
  368. </div>
  369. </div>
  370. <div v-else class="unit_empty">
  371. <div class="center_text">
  372. <img src="@assets/img/menuicon/img_wuxiaoxi@2x.png" alt="" />
  373. <span>暂无相关信息</span>
  374. </div>
  375. </div>
  376. </el-scrollbar>
  377. </div>
  378. <div class="btns footer_btn">
  379. <el-button @click="resetForm">重置</el-button>
  380. <el-button @click="close">取消</el-button>
  381. <el-button type="primary" @click="submit">保存</el-button>
  382. </div>
  383. </div>
  384. </div>
  385. </div>
  386. </div>
  387. </div>
  388. </div>
  389. </template>
  390. <script>
  391. import initList from '../mixins/initList';
  392. import { initDoor, calcDoor } from './basedata';
  393. const createContinueData = (type, num) => {
  394. //type--类型,num生成的个数
  395. let objArr = [];
  396. if (type == 'Number') {
  397. [...new Array(Number(num)).keys()].map((idx) => {
  398. let obj = { label: Number(idx) + 1, value: Number(idx) + 1 };
  399. objArr.push(obj);
  400. });
  401. } else {
  402. for (let i = 0; i < num; i++) {
  403. let letter = String.fromCharCode(65 + i);
  404. let obj = { label: letter, value: letter };
  405. objArr.push(obj);
  406. }
  407. }
  408. return objArr;
  409. };
  410. const txtI18n = {
  411. build: '楼栋',
  412. unit: '单元',
  413. floor: '楼层',
  414. door: '单元户'
  415. };
  416. export default {
  417. mixins: [initList],
  418. name: 'editBuilding',
  419. data() {
  420. return {
  421. unitCols: [[{ label: '单元', slot: 'unitRule', prop: 'unitRule' }]],
  422. detailCols: [
  423. [
  424. {
  425. label: '所属社区',
  426. prop: 'communityId',
  427. slot: 'communityId'
  428. },
  429. {
  430. label: '楼栋名称',
  431. prop: 'buildingName',
  432. input: 'true'
  433. },
  434. {
  435. label: '楼栋编号',
  436. prop: 'buildingNumber',
  437. input: 'true'
  438. },
  439. {
  440. label: '楼栋类型',
  441. prop: 'buildingTypeList',
  442. slot: 'buildingTypeList'
  443. },
  444. {
  445. label: '楼栋用途',
  446. prop: 'buildingPurpose',
  447. slot: 'buildingPurpose'
  448. },
  449. {
  450. label: '建筑结构',
  451. prop: 'buildingStructure',
  452. slot: 'buildingStructure'
  453. },
  454. {
  455. label: '建成日期',
  456. prop: 'builtDate',
  457. date: 'true',
  458. widt: true
  459. },
  460. {
  461. label: '验收日期',
  462. prop: 'acceptanceDate',
  463. date: 'true',
  464. widt: true
  465. },
  466. {
  467. label: '建筑面积',
  468. prop: 'buildingArea',
  469. input: true
  470. },
  471. {
  472. label: '使用面积',
  473. prop: 'useArea',
  474. input: 'true'
  475. },
  476. {
  477. label: '备注信息',
  478. prop: 'remarks',
  479. slot: 'remarks'
  480. }
  481. ]
  482. ],
  483. formdata: {
  484. communityId: '',
  485. buildingName: '',
  486. buildingNumber: '', //楼栋编号
  487. buildingType: '',
  488. buildingPurpose: '',
  489. buildingStructure: '',
  490. builtDate: '',
  491. acceptanceDate: '',
  492. buildingArea: '',
  493. useArea: '',
  494. remarks: '',
  495. houseType: 1,
  496. floorsNumber: '1', //每栋层数
  497. unitNumber: 1, //单元数
  498. householdsPerFloor: '1' //每层户数
  499. },
  500. initialUnitList: {
  501. checkedUnit: false,
  502. enableUnit: 1, //勾选了复选框
  503. unit: {
  504. type: 'Number', // Number letter
  505. start: '1', // 1 A单元的起始单元
  506. end: '1'
  507. }
  508. },
  509. formrules: {
  510. communityId: this.$valid.selectRequired(['社区']),
  511. buildingName: [this.$valid.inputRequired('楼栋名称')]
  512. },
  513. buildingPurposeType: [
  514. {
  515. label: '住宅楼',
  516. id: 1
  517. },
  518. {
  519. label: '商场',
  520. id: 2
  521. },
  522. {
  523. label: '写字楼',
  524. id: 3
  525. },
  526. {
  527. label: '公寓',
  528. id: 4
  529. },
  530. {
  531. label: '别墅',
  532. id: 5
  533. },
  534. {
  535. label: '自建楼',
  536. id: 6
  537. },
  538. {
  539. label: '其他',
  540. id: 7
  541. }
  542. ],
  543. buildingStructureType: [
  544. {
  545. label: '钢结构',
  546. id: 1
  547. },
  548. {
  549. label: '钢筋混凝土结构',
  550. id: 2
  551. },
  552. {
  553. label: '筋混凝土结构',
  554. id: 3
  555. },
  556. {
  557. label: '混合结构',
  558. id: 4
  559. },
  560. {
  561. label: '砖木结构',
  562. id: 5
  563. },
  564. {
  565. label: '其他结构',
  566. id: 6
  567. }
  568. ]
  569. };
  570. },
  571. props: {
  572. params: {
  573. type: Object
  574. },
  575. isAdd: {
  576. type: Boolean,
  577. default: true
  578. }
  579. },
  580. methods: {
  581. radioChange(type, val) {
  582. let length = val == 'Number' ? '20' : '26';
  583. if (val == 'Letter') {
  584. this.unitOptions = createContinueData(val, length);
  585. this.initialUnitList.unit.type = 'Letter';
  586. this.initialUnitList.unit.start = 'A';
  587. this.initialUnitList.unit.end = 'A';
  588. } else {
  589. this.initialUnitList.unit = this.copyrules.unit;
  590. this.unitOptions = createContinueData(val, length);
  591. }
  592. },
  593. resetForm() {
  594. this.formdata = {};
  595. this.formdata = this.copyformdata;
  596. // this.doorData = [];
  597. this.$refs.detailform.validateField('communityId');
  598. },
  599. checkedUnit(val) {
  600. if (val) {
  601. this.initialUnitList.enableUnit = 1;
  602. } else {
  603. this.formdata.unitNumber = 1;
  604. this.initialUnitList.enableUnit = 0;
  605. }
  606. },
  607. createDoor() {
  608. if (this.formdata.buildingName == '') {
  609. this.$message.error('先输入楼栋名称');
  610. return;
  611. }
  612. new Promise((resolve) => {
  613. this.$refs.unitform.validate(resolve);
  614. }).then((v) => {
  615. if (this.initialUnitList.checkedUnit) {
  616. this.initialUnitList.enableUnit = 1;
  617. } else {
  618. this.formdata.unitNumber = 1;
  619. this.initialUnitList.enableUnit = 0;
  620. }
  621. let isNumberUnitFlag = this.initialUnitList.unit.type == 'Number' ? true : false;
  622. let checkUnit = this.initialUnitList.unit.start <= this.initialUnitList.unit.end ? true : false;
  623. if (this.initialUnitList.checkedUnit) {
  624. if (checkUnit && isNumberUnitFlag) {
  625. this.formdata.unitNumber = this.initialUnitList.unit.end - this.initialUnitList.unit.start + 1;
  626. } else if (!isNumberUnitFlag && checkUnit) {
  627. this.formdata.unitNumber =
  628. this.initialUnitList.unit.end.charCodeAt() - this.initialUnitList.unit.start.charCodeAt() + 1;
  629. } else {
  630. this.formdata.unitNumber = 1;
  631. this.$message.error('单元起始和结束设置出错');
  632. return;
  633. }
  634. }
  635. this.doorData = initDoor(this.formdata, this.initialUnitList).generateUnit;
  636. });
  637. },
  638. handleInputConfirm(e, arr) {
  639. const { value, dataset } = e.target;
  640. if (value && dataset) {
  641. const { code } = dataset;
  642. const querySame = () => _.isEmpty(_.filter(arr, (v) => v.name == value));
  643. const generate = {
  644. unit: initDoor(this.formdata, this.initialUnitList).generateUnit,
  645. floor: initDoor(this.formdata, this.initialUnitList).generateFloor,
  646. door: initDoor(this.formdata, this.initialUnitList).generateDoor(value)
  647. };
  648. if (querySame()) {
  649. if (code == 'unit') {
  650. arr.push({
  651. unitName: value,
  652. unitFloorList: code != 'door' ? generate['floor'] : undefined
  653. });
  654. } else if (code == 'door') {
  655. arr.push({
  656. roomNumber: value
  657. });
  658. } else if (code == 'floor') {
  659. arr.push({
  660. floorNumber: value,
  661. roomList: code != 'door' ? generate['door'] : undefined
  662. });
  663. }
  664. this.inputValue[code] = '';
  665. } else {
  666. this.$message.error(`${txtI18n[code]}名称重复,请重新添加`);
  667. }
  668. }
  669. e.target.parentElement.style.display = 'none';
  670. e.target.parentElement.previousElementSibling.style.display = 'inline-block';
  671. e.target.value = '';
  672. },
  673. submit() {
  674. new Promise((resolve) => {
  675. this.$refs.detailform.validate(resolve);
  676. }).then((v) => {
  677. debugger;
  678. const { buildNumber, unitNumber, floorNumber, doorNumber } = calcDoor(this.doorData, this.initialUnitList.checkedUnit);
  679. const txt = `请检查信息是否填写完整(包含重复名称,名称为空现象)<br>确认提交单元户信息:<br>总楼栋数:${buildNumber}${
  680. this.initialUnitList.enableUnit ? `<br>总单元数:${unitNumber}` : ''
  681. }<br>总楼层数:${floorNumber}<br>总单元户数:${doorNumber}`;
  682. this.__confirm(txt, '提交')
  683. .then((v) => {
  684. if (!this.initialUnitList.checkedUnit) {
  685. this.doorData[0].unitName = '';
  686. this.formdata.unitNumber = 0;
  687. }
  688. this.formdata.buildingUnitList = this.doorData;
  689. let url = '/sc-community/assets/building/add';
  690. if (!!this.params.id) {
  691. url = '/sc-community/assets/building/update';
  692. }
  693. this.$http
  694. .post(url, this.formdata)
  695. .then(({ msg, status }) => {
  696. this.$message({
  697. type: status === 0 ? 'success' : 'error',
  698. message: msg
  699. });
  700. if (status === 0) {
  701. this.close();
  702. }
  703. })
  704. .catch(() => {});
  705. })
  706. .catch(() => {});
  707. });
  708. },
  709. getDetailData(id) {
  710. this.$http.get('/sc-community/assets/building/house/find', { id: id }).then(({ status, data, msg }) => {
  711. if (0 === status) {
  712. if (data.buildingUnitList.length !== 0) {
  713. this.formdata = data;
  714. this.formdata.householdsPerFloor = data.buildingUnitList[0].unitFloorList[0].roomList.length;
  715. this.initialUnitList = {
  716. checkedUnit: false,
  717. enableUnit: 1, //勾选了复选框
  718. unit: {
  719. type: 'Number', // Number letter
  720. start: data.buildingUnitList[0]['unitName'], // 1 A单元的起始单元
  721. end: data.buildingUnitList[data.buildingUnitList.length - 1]['unitName']
  722. }
  723. };
  724. this.doorData = data.buildingUnitList;
  725. }
  726. }
  727. });
  728. }
  729. },
  730. mounted() {},
  731. created() {
  732. this.copyformdata = this.deepClone(this.formdata);
  733. if (!!this.params.id) {
  734. this.getDetailData(this.params.id);
  735. }
  736. this.copyrules = JSON.parse(JSON.stringify(this.initialUnitList));
  737. }
  738. };
  739. </script>
  740. <style lang="scss" >
  741. @import './popup.scss';
  742. </style>