index.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  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 style="width: 70px;">名称:</div>
  8. <el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
  9. </div>
  10. <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
  11. 查询
  12. </el-button>
  13. </div>
  14. <div class="right">
  15. <el-button icon="el-icon-plus" type="primary" @click="handleAdd">
  16. 添加
  17. </el-button>
  18. <el-button icon="el-icon-delete" type="danger" @click="handleDelete">
  19. 删除
  20. </el-button>
  21. <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
  22. <ExportExcel :exportList="exportExcel" :useType="'export'" partsName="设备型号"></ExportExcel>
  23. <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="设备型号模板"></ExportExcel>
  24. </div>
  25. </div>
  26. <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
  27. :height="height" @selection-change="setSelectRows">
  28. <el-table-column show-overflow-tooltip type="selection" width="40"></el-table-column>
  29. <el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
  30. <el-table-column show-overflow-tooltip label="编码" prop="code" align="center" sortable></el-table-column>
  31. <el-table-column show-overflow-tooltip label="名称" prop="name" align="center" sortable></el-table-column>
  32. <el-table-column show-overflow-tooltip label="描述" prop="description" align="center" sortable></el-table-column>
  33. <el-table-column show-overflow-tooltip label="容量" prop="powerproduction" align="center" sortable>
  34. </el-table-column>
  35. <el-table-column show-overflow-tooltip label="厂商编号" prop="windturbinemanufacturerid" align="center" sortable>
  36. </el-table-column>
  37. <el-table-column show-overflow-tooltip label="图片" prop="photo" align="center" sortable>
  38. </el-table-column>
  39. <el-table-column show-overflow-tooltip label="传输总发电量单位" prop="unit" align="center" sortable></el-table-column>
  40. <el-table-column show-overflow-tooltip label="切入风速" prop="cutinwindspeed" align="center" sortable>
  41. </el-table-column>
  42. <el-table-column show-overflow-tooltip label="额定风速" prop="ratedwindspeed" align="center" sortable>
  43. </el-table-column>
  44. <el-table-column show-overflow-tooltip label="切出风速" prop="cutoutwindspeed" align="center" sortable>
  45. </el-table-column>
  46. <el-table-column show-overflow-tooltip label="叶片切入面积" prop="sweptarea" align="center" sortable>
  47. </el-table-column>
  48. <el-table-column show-overflow-tooltip label="设备类别" prop="equipmentcategory" align="center" sortable>
  49. </el-table-column>
  50. <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
  51. <template #default="{ row }">
  52. <el-button type="text" @click="handleEdit(row)">编辑</el-button>
  53. <el-button type="text" @click="handleDelete(row)">删除</el-button>
  54. </template>
  55. </el-table-column>
  56. </el-table>
  57. <el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
  58. :page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
  59. @size-change="handleSizeChange"></el-pagination>
  60. <table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
  61. </vab-query-form>
  62. </div>
  63. </template>
  64. <script>
  65. import UploadExcel from '@/components/UploadExcel/index'
  66. import ExportExcel from '@/components/ExportExcel/index'
  67. import api from '@/api/station'
  68. import TableEdit from './components/TableEdit'
  69. export default {
  70. components: {
  71. UploadExcel,
  72. ExportExcel,
  73. TableEdit,
  74. },
  75. data() {
  76. return {
  77. fuzzyQuery_name: '',
  78. listLoading: true,
  79. list: [],
  80. options: [],
  81. exportExcel: [],
  82. templateExcel: [],
  83. elementLoadingText: '正在加载...',
  84. selectRows: '',
  85. layout: 'total, sizes, prev, pager, next, jumper',
  86. total: 0,
  87. background: true,
  88. exportList: [],
  89. queryForm: {
  90. pageNo: 1,
  91. pageSize: 20,
  92. },
  93. stationList: [],
  94. selectValue: ''
  95. };
  96. },
  97. computed: {
  98. height() {
  99. return this.$baseTableHeight() + 50
  100. },
  101. },
  102. created() {
  103. // this.getStation()
  104. this.fetchData()
  105. },
  106. methods: {
  107. getMyExcelData(val) {
  108. val.forEach(item => {
  109. api.addEquipmentmodel(item).then(res => {
  110. if (res.code == 200) {
  111. this.$message({
  112. type: 'success',
  113. message: '添加成功!'
  114. });
  115. this.fetchData()
  116. }
  117. })
  118. })
  119. },
  120. getStation() {
  121. api.windpowerstationList({
  122. id: '',
  123. name: '',
  124. companyid: '',
  125. pageNum: 1,
  126. pageSize: 1000,
  127. }).then(res => {
  128. if (res.data) {
  129. this.listLoading = false
  130. this.stationList = res.data.records
  131. }
  132. })
  133. },
  134. fetchData() {
  135. api.equipmentmodel({
  136. name: this.fuzzyQuery_name,
  137. pageNum: this.queryForm.pageNo,
  138. pageSize: this.queryForm.pageSize,
  139. }).then(res => {
  140. if (res.data) {
  141. this.listLoading = false
  142. this.total = res.data.total
  143. this.list = res.data.records
  144. this.templateExcel = [
  145. {
  146. id: '',
  147. code: '',
  148. name: '',
  149. description: '',
  150. powerproduction: '',
  151. windturbinemanufacturerid: '',
  152. photo: '',
  153. unit: '',
  154. cutinwindspeed: '',
  155. ratedwindspeed: '',
  156. cutoutwindspeed: '',
  157. sweptarea: '',
  158. equipmentcategory: '',
  159. }
  160. ]
  161. // 导出
  162. let exportExcel = []
  163. res.data.records.forEach(item => {
  164. exportExcel.push({
  165. id: item.id,
  166. code: item.code,
  167. name: item.name,
  168. description: item.description,
  169. powerproduction: item.powerproduction,
  170. windturbinemanufacturerid: item.windturbinemanufacturerid,
  171. photo: item.photo,
  172. unit: item.unit,
  173. cutinwindspeed: item.cutinwindspeed,
  174. ratedwindspeed: item.ratedwindspeed,
  175. cutoutwindspeed: item.cutoutwindspeed,
  176. sweptarea: item.sweptarea,
  177. equipmentcategory: item.equipmentcategory,
  178. })
  179. })
  180. this.exportExcel = exportExcel
  181. }
  182. })
  183. },
  184. handleSizeChange(val) {
  185. this.queryForm.pageSize = val
  186. this.fetchData()
  187. },
  188. handleCurrentChange(val) {
  189. this.queryForm.pageNo = val
  190. this.fetchData()
  191. },
  192. handleAdd() {
  193. this.$refs['edit'].showEdit()
  194. },
  195. handleEdit(row) {
  196. this.$refs['edit'].showEdit(row)
  197. },
  198. handleDelete(row) {
  199. if (row.id || this.selectRows.length > 0) {
  200. this.$baseConfirm('你确定要删除吗', null, async () => {
  201. let ids = ''
  202. if (this.selectRows.length > 0) {
  203. ids = this.selectRows.map((item) => item.id).join()
  204. }
  205. api.deleteEquipmentmodel({
  206. id: row.id || ids
  207. }).then(res => {
  208. if (res.data) {
  209. this.$baseMessage('删除成功', 'success')
  210. this.fetchData()
  211. }
  212. })
  213. })
  214. } else {
  215. this.$baseMessage('未选中任何行', 'error')
  216. return false
  217. }
  218. },
  219. setSelectRows(val) {
  220. this.selectRows = val
  221. },
  222. },
  223. }
  224. </script>
  225. <style lang="less" scoped>
  226. .title {
  227. display: flex;
  228. flex-direction: row;
  229. align-items: center;
  230. justify-content: space-between;
  231. margin-bottom: 20px;
  232. }
  233. .left {
  234. display: flex;
  235. flex-direction: row;
  236. align-items: center;
  237. .left-item {
  238. display: flex;
  239. flex-direction: row;
  240. align-items: center;
  241. margin-right: 10px;
  242. }
  243. }
  244. </style>