index.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <template>
  2. <div class="table-container">
  3. <vab-query-form>
  4. <div class="title">
  5. <div class="left">
  6. <div class="left-item">
  7. <div>公司:</div>
  8. <el-select v-model="selectValue" placeholder="请选择" clearable>
  9. <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
  10. </el-option>
  11. </el-select>
  12. </div>
  13. <div class="left-item">
  14. <div style="width: 70px;">名称:</div>
  15. <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
  16. </div>
  17. <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
  18. 查询
  19. </el-button>
  20. </div>
  21. <div class="right">
  22. <el-button icon="el-icon-plus" type="primary" @click="handleAdd">
  23. 添加
  24. </el-button>
  25. <el-button icon="el-icon-delete" type="danger" @click="handleDelete">
  26. 删除
  27. </el-button>
  28. <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
  29. <ExportExcel :exportList="exportExcel" :useType="'export'" partsName="场站"></ExportExcel>
  30. <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="场站模板"></ExportExcel>
  31. </div>
  32. </div>
  33. <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
  34. :height="height" @selection-change="setSelectRows">
  35. <el-table-column show-overflow-tooltip type="selection" width="55" fixed></el-table-column>
  36. <el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable fixed width="100">
  37. </el-table-column>
  38. <el-table-column show-overflow-tooltip label="风场名称" prop="name" align="center" sortable fixed width="150">
  39. </el-table-column>
  40. <el-table-column show-overflow-tooltip label="别名" prop="aname" align="center" sortable width="160">
  41. </el-table-column>
  42. <el-table-column show-overflow-tooltip label="区域编号" prop="regionid" align="center" sortable width="160">
  43. </el-table-column>
  44. <el-table-column show-overflow-tooltip label="编码" prop="code" align="center" sortable width="100">
  45. </el-table-column>
  46. <el-table-column show-overflow-tooltip label="地址" prop="address" align="center" sortable width="180">
  47. </el-table-column>
  48. <el-table-column show-overflow-tooltip label="电话" prop="telephone" align="center" sortable width="120">
  49. </el-table-column>
  50. <el-table-column show-overflow-tooltip label="装机容量" prop="capacity" align="center" sortable width="100">
  51. </el-table-column>
  52. <el-table-column show-overflow-tooltip label="容量单位" prop="capacityunit" align="center" sortable width="100">
  53. </el-table-column>
  54. <el-table-column show-overflow-tooltip label="装机数量" prop="quantity" align="center" sortable width="100">
  55. </el-table-column>
  56. <el-table-column show-overflow-tooltip label="地球经度" prop="longitude" align="center" sortable width="100">
  57. </el-table-column>
  58. <el-table-column show-overflow-tooltip label="地球纬度" prop="latitude" align="center" sortable width="100">
  59. </el-table-column>
  60. <el-table-column show-overflow-tooltip label="图片" prop="photo" align="center" sortable></el-table-column>
  61. <el-table-column show-overflow-tooltip label="公司编号" prop="companyid" align="center" sortable width="100">
  62. </el-table-column>
  63. <el-table-column show-overflow-tooltip label="系统厂家" prop="systemmanufact" align="center" sortable width="100">
  64. </el-table-column>
  65. <el-table-column show-overflow-tooltip label="场长" prop="headfarm" align="center" sortable></el-table-column>
  66. <el-table-column show-overflow-tooltip label="场长电话" prop="headfarmphone" align="center" sortable width="120">
  67. </el-table-column>
  68. <el-table-column show-overflow-tooltip label="机型" prop="model" align="center" sortable width="120">
  69. </el-table-column>
  70. <el-table-column show-overflow-tooltip label="顺序" prop="ordernum" align="center" sortable></el-table-column>
  71. <el-table-column show-overflow-tooltip label="海拔高度" prop="height" align="center" sortable width="100">
  72. </el-table-column>
  73. <el-table-column fixed="right" label="操作" width="100">
  74. <template #default="{ row }">
  75. <el-button type="text" @click="handleEdit(row)">编辑</el-button>
  76. <el-button type="text" @click="handleDelete(row)">删除</el-button>
  77. </template>
  78. </el-table-column>
  79. </el-table>
  80. <el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
  81. :page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
  82. @size-change="handleSizeChange"></el-pagination>
  83. <table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
  84. </vab-query-form>
  85. </div>
  86. </template>
  87. <script>
  88. import UploadExcel from '@/components/UploadExcel/index'
  89. import ExportExcel from '@/components/ExportExcel/index'
  90. import api from '@/api/station'
  91. import TableEdit from './components/TableEdit'
  92. export default {
  93. components: {
  94. UploadExcel,
  95. ExportExcel,
  96. TableEdit,
  97. },
  98. data() {
  99. return {
  100. fuzzyQuery: '',
  101. listLoading: true,
  102. list: [],
  103. options: [],
  104. exportExcel: [],
  105. templateExcel: [],
  106. elementLoadingText: '正在加载...',
  107. selectRows: '',
  108. layout: 'total, sizes, prev, pager, next, jumper',
  109. total: 0,
  110. background: true,
  111. exportList: [],
  112. queryForm: {
  113. pageNo: 1,
  114. pageSize: 20,
  115. },
  116. stationList: [],
  117. selectValue: ''
  118. };
  119. },
  120. computed: {
  121. height() {
  122. return this.$baseTableHeight() + 50 + 50
  123. },
  124. },
  125. created() {
  126. this.getStation()
  127. this.fetchData()
  128. },
  129. methods: {
  130. getMyExcelData(val) {
  131. val.forEach(item => {
  132. api.addWindpowerstation(item).then(res => {
  133. if (res.code == 200) {
  134. this.$message({
  135. type: 'success',
  136. message: '添加成功!'
  137. });
  138. this.fetchData()
  139. }
  140. })
  141. })
  142. },
  143. getStation() {
  144. api.companys({
  145. id: '',
  146. name: '',
  147. pageNum: 1,
  148. pageSize: 1000,
  149. }).then(res => {
  150. if (res.data) {
  151. this.listLoading = false
  152. this.stationList = res.data.records
  153. }
  154. })
  155. },
  156. fetchData() {
  157. api.windpowerstationList({
  158. id: '',
  159. companyid: this.selectValue,
  160. name: this.fuzzyQuery,
  161. pageNum: this.queryForm.pageNo,
  162. pageSize: this.queryForm.pageSize,
  163. }).then(res => {
  164. if (res.data) {
  165. this.listLoading = false
  166. this.total = res.data.total
  167. this.list = res.data.records
  168. this.templateExcel = [
  169. {
  170. id: '',
  171. name: '',
  172. aname: '',
  173. code: '',
  174. address: '',
  175. telephone: '',
  176. capacity: '',
  177. capacityunit: '',
  178. quantity: '',
  179. longitude: '',
  180. latitude: '',
  181. photo: '',
  182. companyid: '',
  183. systemmanufact: '',
  184. headfarm: '',
  185. headfarmphone: '',
  186. model: '',
  187. ordernum: '',
  188. }
  189. ]
  190. // 导出
  191. let exportExcel = []
  192. res.data.records.forEach(item => {
  193. exportExcel.push({
  194. id: item.id,
  195. name: item.name,
  196. aname: item.aname,
  197. code: item.code,
  198. address: item.address,
  199. telephone: item.telephone,
  200. capacity: item.capacity,
  201. capacityunit: item.capacityunit,
  202. quantity: item.quantity,
  203. longitude: item.longitude,
  204. latitude: item.latitude,
  205. photo: item.photo,
  206. companyid: item.companyid,
  207. systemmanufact: item.systemmanufact,
  208. headfarm: item.headfarm,
  209. headfarmphone: item.headfarmphone,
  210. model: item.model,
  211. ordernum: item.ordernum,
  212. height: item.height,
  213. })
  214. })
  215. this.exportExcel = exportExcel
  216. }
  217. })
  218. },
  219. handleSizeChange(val) {
  220. this.queryForm.pageSize = val
  221. this.fetchData()
  222. },
  223. handleCurrentChange(val) {
  224. this.queryForm.pageNo = val
  225. this.fetchData()
  226. },
  227. handleAdd() {
  228. this.$refs['edit'].showEdit()
  229. },
  230. handleEdit(row) {
  231. this.$refs['edit'].showEdit(row)
  232. },
  233. handleDelete(row) {
  234. if (row.id || this.selectRows.length > 0) {
  235. this.$baseConfirm('你确定要删除吗', null, async () => {
  236. let ids = ''
  237. if (this.selectRows.length > 0) {
  238. ids = this.selectRows.map((item) => item.id).join()
  239. }
  240. api.deleteWindpowerstation({
  241. id: row.id || ids
  242. }).then(res => {
  243. if (res.data) {
  244. this.$baseMessage('删除成功', 'success')
  245. this.fetchData()
  246. }
  247. })
  248. })
  249. } else {
  250. this.$baseMessage('未选中任何行', 'error')
  251. return false
  252. }
  253. },
  254. setSelectRows(val) {
  255. this.selectRows = val
  256. },
  257. },
  258. }
  259. </script>
  260. <style lang="less" scoped>
  261. .title {
  262. display: flex;
  263. flex-direction: row;
  264. align-items: center;
  265. justify-content: space-between;
  266. margin-bottom: 20px;
  267. }
  268. .left {
  269. display: flex;
  270. flex-direction: row;
  271. align-items: center;
  272. .left-item {
  273. display: flex;
  274. flex-direction: row;
  275. align-items: center;
  276. margin-right: 10px;
  277. }
  278. }
  279. </style>