index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. <template>
  2. <div class="content">
  3. <building-tree
  4. @buildingInformation="buildingInformation"
  5. :buildingType="2"
  6. ></building-tree>
  7. <div class="content-right">
  8. <div class="search">
  9. <el-input
  10. clearable
  11. placeholder="商铺号"
  12. class="search-input"
  13. v-trim
  14. v-model="mixins_query.roomNumber"
  15. ></el-input>
  16. <el-select
  17. v-model="mixins_query.useStatus"
  18. clearable
  19. placeholder="使用状态"
  20. >
  21. <el-option
  22. v-for="item in statusOptions"
  23. :label="item.label"
  24. :value="item.val"
  25. :key="item"
  26. >{{ item.label }}</el-option>
  27. </el-select>
  28. <el-button
  29. class="search-btn"
  30. type="primary"
  31. @click="mixins_search"
  32. :disabled="mixins_onQuery"
  33. :loading="mixins_onQuery"
  34. icon="el-icon-search"
  35. >查询
  36. </el-button>
  37. <div class="search-icon">
  38. <template>
  39. <el-dropdown
  40. type="primary"
  41. @command="addCommand"
  42. >
  43. <span class="zoniot_font zoniot-icon-tianjia2"></span>
  44. <el-dropdown-menu
  45. slot="dropdown"
  46. hide-on-click="false"
  47. class="device-search-dropdown"
  48. >
  49. <el-dropdown-item command="add">单个添加</el-dropdown-item>
  50. <el-dropdown-item command="batchAdd">
  51. <div class="upload_div">
  52. <xk-upload
  53. class="upload_class"
  54. @callback="mixins_search"
  55. :params="{ importType: 'HOUSE' }"
  56. >
  57. <span
  58. class="upload_text"
  59. slot="content"
  60. >批量添加</span>
  61. </xk-upload>
  62. </div>
  63. </el-dropdown-item>
  64. <el-dropdown-item command="template">下载模板</el-dropdown-item>
  65. </el-dropdown-menu>
  66. </el-dropdown>
  67. </template>
  68. <el-tooltip
  69. class="item"
  70. effect="light"
  71. placement="bottom"
  72. content="删除"
  73. >
  74. <i
  75. class="zoniot_font zoniot-icon-shanchu2"
  76. @click="deluserbyidsFn"
  77. ></i>
  78. </el-tooltip>
  79. <el-tooltip
  80. class="item"
  81. effect="light"
  82. placement="bottom"
  83. content="导出"
  84. >
  85. <i
  86. class="zoniot_font zoniot-icon-daochu2"
  87. @click="exportExcel()"
  88. ></i>
  89. </el-tooltip>
  90. </div>
  91. </div>
  92. <zz-table
  93. :settings="{ showCheckbox: true, showIndex: true, stripe: true }"
  94. :cols="cols"
  95. :loading="mixins_onQuery"
  96. :data="mixins_list"
  97. :pageset="mixins_pageset"
  98. @page-change="pageChange"
  99. @selection-change="selectionChange"
  100. >
  101. <template
  102. slot-scope="scope"
  103. slot="useStatus"
  104. >
  105. <span v-if="scope.row.useStatus == 0">空置</span>
  106. <span v-if="scope.row.useStatus == 1">居住</span>
  107. </template>
  108. <template
  109. slot-scope="scope"
  110. slot="opt"
  111. class="opt"
  112. >
  113. <div class="opt">
  114. <el-tooltip
  115. effect="light"
  116. placement="bottom"
  117. content="编辑"
  118. >
  119. <i
  120. class="zoniot_font zoniot-icon-bianji"
  121. @click="addOrEdit('edit', scope.row)"
  122. ></i>
  123. </el-tooltip>
  124. <el-tooltip
  125. effect="light"
  126. placement="bottom"
  127. content="删除"
  128. >
  129. <i
  130. class="zoniot_font zoniot-icon-shanchu redText"
  131. @click="deleteRow(scope.row)"
  132. ></i>
  133. </el-tooltip>
  134. <el-tooltip
  135. class="item"
  136. effect="light"
  137. placement="bottom"
  138. content="查看"
  139. >
  140. <i
  141. class="zoniot_font zoniot-icon-xiangqing"
  142. @click="lookPage(scope.row)"
  143. ></i>
  144. </el-tooltip>
  145. </div>
  146. </template>
  147. </zz-table>
  148. </div>
  149. <!-- <save-edits v-else :params="activeData" @clerOwnerStatus="clerOwnerStatus" :isAdd="isAdd"></save-edits> -->
  150. </div>
  151. </template>
  152. <script>
  153. import list from '@utils/list.js';
  154. import saveEdits from './saveEdits.vue';
  155. export default {
  156. mixins: [list],
  157. name: 'shopManagement',
  158. data () {
  159. return {
  160. statusOptions: [
  161. { label: '空置', val: 0 },
  162. { label: '居住', val: 1 }
  163. ],
  164. cols: [
  165. {
  166. label: '所属社区',
  167. prop: 'communityName',
  168. width: 120
  169. },
  170. {
  171. label: '楼栋名称',
  172. prop: 'buildingName'
  173. },
  174. {
  175. label: '单元',
  176. prop: 'unitName'
  177. },
  178. {
  179. label: '商铺号',
  180. prop: 'roomNumber'
  181. },
  182. {
  183. label: '建筑面积',
  184. prop: 'buildingArea',
  185. format (val) {
  186. if (!!val) {
  187. return val + '㎡';
  188. } else {
  189. return '--';
  190. }
  191. }
  192. },
  193. {
  194. label: '使用面积',
  195. prop: 'useArea',
  196. format (val) {
  197. if (!!val) {
  198. return val + '㎡';
  199. } else {
  200. return '--';
  201. }
  202. }
  203. },
  204. {
  205. label: '房屋类型',
  206. prop: 'buildingTypeDict',
  207. },
  208. {
  209. label: '商业类型',
  210. prop: 'residenceType',
  211. format (val) {
  212. if (val == '1') {
  213. return '高档住宅'
  214. } else if (val == '2') {
  215. return '普通住宅'
  216. } else if (val == '3') {
  217. return '公寓'
  218. } else if (val == '4') {
  219. return '别墅'
  220. } else if (val == '5') {
  221. return '复式'
  222. } else if (val == '6') {
  223. return '办公'
  224. } else if (val == '7') {
  225. return '酒店'
  226. } else if (val == '8') {
  227. return '厂房'
  228. } else if (val == '9') {
  229. return '商城'
  230. } else if (val == '10') {
  231. return '综合体'
  232. } else if (val == '11') {
  233. return '仓库'
  234. } else if (val == '12') {
  235. return '广告位'
  236. } else {
  237. return '-'
  238. }
  239. }
  240. },
  241. {
  242. label: '租售状态',
  243. prop: 'salesStatus',
  244. format (val) {
  245. if (val == '1') {
  246. return '可租可售'
  247. } else if (val == '2') {
  248. return '只租'
  249. } else if (val == '3') {
  250. return '只售'
  251. } else {
  252. return '-'
  253. }
  254. }
  255. },
  256. {
  257. label: '使用状态',
  258. slot: 'useStatus'
  259. },
  260. {
  261. label: '操作',
  262. slot: 'opt',
  263. width: 150
  264. }
  265. ],
  266. showaddDialog: '',
  267. selectRow: [],
  268. mixins_post: 'post',
  269. isAdd: true,
  270. activeData: {}
  271. };
  272. },
  273. components: {
  274. saveEdits
  275. },
  276. methods: {
  277. lookPage (row) {
  278. this.$router.push({
  279. path: '/shopManagement/details',
  280. query: {
  281. id: row.id
  282. }
  283. });
  284. },
  285. addCommand (command) {
  286. if (command === 'add') {
  287. this.addOrEdit('add');
  288. }
  289. if (command === 'template') {
  290. this.__exportExcel('/czc-community/excel/download/template', { importType: 'HOUSE' });
  291. return;
  292. }
  293. },
  294. clerOwnerStatus () {
  295. this.showaddDialog = '';
  296. this.activeData = {};
  297. this.isAdd = true;
  298. this.mixins_search();
  299. },
  300. addOrEdit (todo, data = {}) {
  301. new Promise((resolve) => {
  302. let title = '新增商铺';
  303. if (todo !== 'add') {
  304. title = '修改商铺';
  305. }
  306. this.$store.dispatch('addPopup', {
  307. url: '/assetManagement/shopManagement/saveEdits.vue',
  308. width: '850px',
  309. height: '500px',
  310. props: {
  311. data,
  312. todo,
  313. productOptions: this.productOptions,
  314. callback: resolve
  315. },
  316. title: title
  317. });
  318. }).then(() => {
  319. this.mixins_search();
  320. });
  321. // addPopup;
  322. // if (todo == 'edit') {
  323. // this.activeData = row;
  324. // this.isAdd = false;
  325. // }
  326. // this.showaddDialog = todo;
  327. },
  328. deleteRow (row) {
  329. const { communityName, buildingName, unitName, roomNumber } = row;
  330. let title = `您确定要删除“${communityName}${buildingName}${unitName}${roomNumber}”号房间`;
  331. this.$msgBox(title)
  332. .then(() => {
  333. this.$http
  334. .post('/czc-community/assets/house/delete', [row.id])
  335. .then(({ status, msg }) => {
  336. if (0 === status) {
  337. this.$message.success(msg);
  338. this.mixins_search();
  339. } else {
  340. this.$message.error(msg);
  341. }
  342. })
  343. .catch(() => { });
  344. })
  345. .catch(() => { });
  346. },
  347. selectionChange (val) {
  348. this.selectRow = val;
  349. },
  350. deluserbyidsFn () {
  351. //获取选中列表的ids
  352. let ids = [];
  353. if (!this.selectRow.length) {
  354. this.$message.error('您尚未选择要删除的记录,请选择后再操作批量删除');
  355. return;
  356. }
  357. this.selectRow.forEach((v) => {
  358. ids.push(v.id);
  359. });
  360. this.$msgBox(`删除`, '删除后将无法恢复,请问是否继续?')
  361. .then(() => {
  362. this.$http.post('/czc-community/assets/house/delete', ids).then(({ status, data, msg }) => {
  363. if (0 === status) {
  364. this.$message({
  365. type: 'success',
  366. message: '删除成功!'
  367. });
  368. this.mixins_search();
  369. } else {
  370. this.$message.error(msg);
  371. }
  372. });
  373. })
  374. .catch(() => { });
  375. },
  376. buildingInformation (data) {
  377. if (!!data.type && data.type == 'community') {
  378. this.mixins_query = { communityId: data.value, buildingType: 2 };
  379. } else {
  380. this.mixins_query.communityId = data.communityId;
  381. this.mixins_query.id = data.roomId;
  382. this.mixins_query.buildingId = data.buildingId;
  383. this.mixins_query.unitName = data.unitId;
  384. }
  385. this.mixins_search();
  386. },
  387. //导出
  388. exportExcel () {
  389. this.__exportExcel('/czc-community/assets/house/export/excel', this.mixins_query);
  390. },
  391. communityNameList () {
  392. this.$http.get('/czc-community/assets/community/list', {}).then((res) => {
  393. this.$store.commit('setCommunityArray', res.data);
  394. });
  395. }
  396. },
  397. created () {
  398. this.mixins_dataUrl = '/czc-community/assets/house/page'; // 分页查询接口
  399. this.mixins_query = {
  400. buildingType: 2
  401. };
  402. this.communityNameList();
  403. this.mixins_search('search');
  404. }
  405. };
  406. </script>
  407. <style lang="scss" scoped>
  408. .content {
  409. .content-right {
  410. width: calc(100% - 280px);
  411. float: right;
  412. }
  413. }
  414. </style>