index.vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <template>
  2. <div class="main">
  3. <div
  4. class="search"
  5. v-if="!ownerStatus"
  6. >
  7. <el-input
  8. v-model="mixins_query.buildingName"
  9. clearable
  10. placeholder="请输入楼栋名称"
  11. class="search-input"
  12. ></el-input>
  13. <el-select
  14. v-model="mixins_query.communityId"
  15. clearable
  16. placeholder="请选择社区名称"
  17. >
  18. <el-option
  19. v-for="(item, index) in communityList"
  20. :label="item.label"
  21. :value="item.id"
  22. :key="index"
  23. ></el-option>
  24. </el-select>
  25. <el-button
  26. type="primary"
  27. @click="mixins_search"
  28. class="search-btn"
  29. icon="el-icon-search"
  30. >查询</el-button>
  31. <div class="search-icon">
  32. <el-dropdown
  33. type="primary"
  34. @command="addCommand"
  35. >
  36. <span class="iconfont">&#xe641;</span>
  37. <el-dropdown-menu
  38. slot="dropdown"
  39. hide-on-click="false"
  40. class="device-search-dropdown"
  41. >
  42. <el-dropdown-item command="add">单个添加</el-dropdown-item>
  43. <el-dropdown-item command="batchAdd">
  44. <!-- 批量添加 -->
  45. <div class="upload_div">
  46. <xk-upload
  47. class="upload_class"
  48. @callback="mixins_search"
  49. :params="{ importType: 'BUILDING' }"
  50. >
  51. <span slot="content">批量添加</span>
  52. </xk-upload>
  53. </div>
  54. </el-dropdown-item>
  55. <el-dropdown-item command="addTemplate">下载模板</el-dropdown-item>
  56. </el-dropdown-menu>
  57. </el-dropdown>
  58. <!-- <el-tooltip
  59. class="item"
  60. effect="light"
  61. placement="bottom"
  62. content="新增"
  63. >
  64. <i
  65. class="zoniot_font zoniot-icon-tianjia2"
  66. @click="addOrEdit('add')"
  67. ></i>
  68. </el-tooltip> -->
  69. <el-tooltip
  70. class="item"
  71. effect="light"
  72. placement="bottom"
  73. content="导出"
  74. >
  75. <i
  76. class="zoniot_font zoniot-icon-daochu2"
  77. @click="exportExcel()"
  78. ></i>
  79. </el-tooltip>
  80. </div>
  81. </div>
  82. <div
  83. class="dictionarys-wrap"
  84. v-if="!ownerStatus"
  85. >
  86. <zz-table
  87. :cols="cols"
  88. :settings="{ showIndex: true, stripe: true }"
  89. :loading="mixins_onQuery"
  90. :data="mixins_list"
  91. :pageset="mixins_pageset"
  92. @page-change="pageChange"
  93. >
  94. <template
  95. slot-scope="scope"
  96. slot="opt"
  97. >
  98. <div class="opt">
  99. <el-tooltip
  100. effect="light"
  101. placement="bottom"
  102. content="编辑"
  103. >
  104. <i
  105. class="zoniot_font zoniot-icon-bianji"
  106. @click="addOrEdit('edit', scope.row)"
  107. ></i>
  108. </el-tooltip>
  109. <el-tooltip
  110. effect="light"
  111. placement="bottom"
  112. content="删除"
  113. >
  114. <i
  115. class="zoniot_font zoniot-icon-shanchu redText"
  116. @click="deleteOne(scope.row.id)"
  117. ></i>
  118. </el-tooltip>
  119. </div>
  120. </template>
  121. </zz-table>
  122. </div>
  123. <addplan
  124. v-else
  125. :params="activeData"
  126. :todoRow="todoRow"
  127. @clerOwnerStatus="clerOwnerStatus"
  128. :isAdd="isAdd"
  129. ></addplan>
  130. </div>
  131. </template>
  132. <script>
  133. import list from '@utils/list.js';
  134. import addplan from './pageJump/addoredit.vue';
  135. export default {
  136. mixins: [list],
  137. components: { addplan },
  138. name: 'buildingManagement',
  139. data () {
  140. return {
  141. ownerStatus: '',
  142. activeData: {},
  143. c: '',
  144. isAdd: true,
  145. communityList: [], //社区名称下拉列表
  146. query: {
  147. buildingName: '', //楼栋名称
  148. communityName: '' //社区名称
  149. },
  150. cols: [
  151. {
  152. label: '所属社区',
  153. prop: 'communityName'
  154. },
  155. {
  156. label: '楼栋名称',
  157. prop: 'buildingName'
  158. },
  159. {
  160. label: '单元数',
  161. prop: 'unitNumber',
  162. format (val) {
  163. if (val == 0) {
  164. return '-'
  165. } else {
  166. return val
  167. }
  168. }
  169. },
  170. {
  171. label: '楼栋类型',
  172. prop: 'buildingTypeDict'
  173. },
  174. {
  175. label: '建筑结构',
  176. prop: 'buildingStructureDict'
  177. },
  178. {
  179. label: '楼层',
  180. prop: 'floorsNumber'
  181. },
  182. {
  183. label: '楼栋用途',
  184. prop: 'buildingPurposeDict'
  185. },
  186. {
  187. label: '建成日期',
  188. prop: 'builtDate'
  189. },
  190. {
  191. label: '验收日期',
  192. prop: 'acceptanceDate'
  193. },
  194. {
  195. label: '建筑面积',
  196. prop: 'buildingArea'
  197. },
  198. {
  199. label: '使用面积',
  200. prop: 'useArea'
  201. },
  202. {
  203. label: '操作',
  204. prop: 'opt',
  205. slot: 'opt'
  206. }
  207. ]
  208. };
  209. },
  210. methods: {
  211. clerOwnerStatus () {
  212. this.ownerStatus = '';
  213. this.activeData = {};
  214. this.isAdd = true;
  215. this.mixins_search();
  216. },
  217. //获取社区名称下拉列表
  218. communityNameList () {
  219. this.communityList = [];
  220. let onOption = '';
  221. this.$http.get('/czc-community/assets/community/list', {}).then((res) => {
  222. res.data.map((res) => {
  223. onOption = {
  224. label: res.communityName,
  225. id: res.id
  226. };
  227. this.communityList.push(onOption);
  228. });
  229. this.$store.commit('setCommunityArray', res.data);
  230. });
  231. },
  232. addCommand (command) {
  233. if (command === 'add') {
  234. this.todoRow = command;
  235. this.addOrEdit('add');
  236. }
  237. if (command == 'addTemplate') {
  238. this.__exportExcel('/czc-community/excel/download/template', { importType: 'BUILDING' });
  239. return
  240. }
  241. },
  242. addOrEdit (todo, row) {
  243. if (todo == 'edit') {
  244. this.activeData = row;
  245. this.todoRow = todo;
  246. this.isAdd = false;
  247. }
  248. this.ownerStatus = todo;
  249. },
  250. exportExcel () {
  251. this.__exportExcel('/czc-community/assets/building/export/excel');
  252. },
  253. //单个删除
  254. deleteOne (ids) {
  255. this.$msgBox(`刪除`, '删除后将无法恢复,请问是否继续?')
  256. .then(() => {
  257. this.$http.get('/czc-community/assets/building/delete', { id: ids }).then(({ status, data, msg }) => {
  258. if (0 === status) {
  259. this.$message({
  260. type: 'success',
  261. message: '删除成功!'
  262. });
  263. this.mixins_search();
  264. } else {
  265. this.$message.error(msg);
  266. }
  267. });
  268. })
  269. .catch(() => {
  270. this.$message({
  271. type: 'info',
  272. message: '已取消删除'
  273. });
  274. });
  275. }
  276. },
  277. created () {
  278. this.communityNameList();
  279. this.mixins_dataUrl = '/czc-community/assets/building/page';
  280. this.mixins_post = 'post';
  281. this.mixins_search();
  282. }
  283. };
  284. </script>
  285. <style lang="scss" scoped></style>