index.vue 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <template>
  2. <div class="app-container">
  3. <!-- 筛选start -->
  4. <div class="filter-container mb-10">
  5. <div class="left">
  6. <div>
  7. <a class="" style="margin-right: 30px">计划停电列表</a>
  8. <el-button icon="el-icon-plus" type="success" @click="addItem()">
  9. 新增
  10. </el-button>
  11. </div>
  12. <div style="margin-top: 20px">
  13. <div class="filter-item planOutage">
  14. 选择时间范围:
  15. <el-date-picker
  16. v-model="dateTime"
  17. type="datetimerange"
  18. range-separator="至"
  19. start-placeholder="开始日期"
  20. end-placeholder="结束日期"
  21. style="width: auto"
  22. ></el-date-picker>
  23. </div>
  24. <div class="filter-item">
  25. 状态:
  26. <el-select
  27. v-model="region"
  28. placeholder="请选择"
  29. style="width: 200px"
  30. clearable
  31. >
  32. <el-option label="未执行" :value="1"></el-option>
  33. <el-option label="执行中" :value="2"></el-option>
  34. <el-option label="已执行" :value="3"></el-option>
  35. </el-select>
  36. </div>
  37. <el-button
  38. type="primary"
  39. icon="el-icon-search"
  40. @click="Select()"
  41. class="search-button"
  42. >
  43. 搜索
  44. </el-button>
  45. </div>
  46. </div>
  47. <div class="right">
  48. <el-button type="primary">导出</el-button>
  49. </div>
  50. </div>
  51. <!-- 筛选end -->
  52. <!-- 表格start -->
  53. <el-table
  54. :data="tableData"
  55. border
  56. stripe
  57. :header-cell-style="headClass"
  58. :cell-style="cellStyle"
  59. >
  60. <el-table-column type="index" label="序号" width=""></el-table-column>
  61. <el-table-column
  62. prop="siteName"
  63. label="站点名称"
  64. width=""
  65. ></el-table-column>
  66. <el-table-column
  67. prop="startTime"
  68. label="开始停电时间"
  69. width=""
  70. ></el-table-column>
  71. <el-table-column
  72. prop="endTime"
  73. label="结束停电时间"
  74. width=""
  75. ></el-table-column>
  76. <el-table-column
  77. prop="createTime"
  78. label="提交时间"
  79. width=""
  80. ></el-table-column>
  81. <el-table-column prop="creator" label="提交人" width=""></el-table-column>
  82. <el-table-column prop="type" label="状态" width="">
  83. <template #default="scope">
  84. <span
  85. :style="{
  86. color:
  87. scope.row.type == 3
  88. ? '#8DCF6E'
  89. : scope.row.type === 1
  90. ? '#FF747B'
  91. : '#5c88fa',
  92. }"
  93. >
  94. {{
  95. scope.row.type === 1
  96. ? '未执行'
  97. : scope.row.type === 2
  98. ? '执行中'
  99. : '已执行'
  100. }}
  101. </span>
  102. </template>
  103. </el-table-column>
  104. <el-table-column fixed="right" label="操作" width="180">
  105. <template #default="scope">
  106. <el-button
  107. type="text"
  108. size="small"
  109. @click.prevent="editRow(scope.row)"
  110. >
  111. 编辑
  112. </el-button>
  113. <el-popconfirm
  114. confirm-button-text="是"
  115. cancel-button-text="否"
  116. icon="el-icon-info"
  117. icon-color="red"
  118. title="确定删除?"
  119. @confirm="handleDelete(scope.row)"
  120. @cancel="cancelEvent"
  121. >
  122. <template #reference>
  123. <el-button type="text" size="small" class="delete-text">
  124. 删除
  125. </el-button>
  126. </template>
  127. </el-popconfirm>
  128. </template>
  129. </el-table-column>
  130. </el-table>
  131. <!-- 表格end -->
  132. <!-- 分页start -->
  133. <div class="paginationBlock">
  134. <el-pagination
  135. @size-change="handleSizeChange"
  136. @current-change="handleCurrentChange"
  137. :current-page="currentPage"
  138. :page-sizes="[15, 20, 25, 30]"
  139. :page-size="pageSize"
  140. layout="total, sizes, prev, pager, next, jumper"
  141. :total="total"
  142. ></el-pagination>
  143. </div>
  144. <!-- 分页end -->
  145. <!--弹框组件开始-----------------------start-->
  146. <dialog-component
  147. :dialog-title="dialogTitle"
  148. :item-info="tableItem"
  149. @closeDialog="closeDialog"
  150. :show_Dialog="showDialog"
  151. ></dialog-component>
  152. <!--弹框组件开始-----------------------end-->
  153. </div>
  154. </template>
  155. <script>
  156. import { useStore } from 'vuex'
  157. import { defineComponent, onMounted, ref } from 'vue'
  158. import DialogComponent from './dialogComponent'
  159. import * as api from '@/api/planOutage/index'
  160. import { ElMessage } from 'element-plus'
  161. export default defineComponent({
  162. name: 'VariableList',
  163. components: { DialogComponent },
  164. setup() {
  165. const store = useStore()
  166. const tableItem = ref()
  167. const dialogTitle = ref('')
  168. const showDialog = ref(false)
  169. const tableData = ref()
  170. const currentPage = ref(1)
  171. const pageSize = ref(15)
  172. const total = ref(0)
  173. const dateTime = ref([
  174. new Date(2021, 8, 10, 10, 10),
  175. new Date(2021, 10, 11, 10, 10),
  176. ])
  177. const select = ref(1)
  178. const tabPosition = ref('one')
  179. const input = ref('')
  180. const region = ref()
  181. // 添加操作
  182. const addItem = () => {
  183. tableItem.value = {
  184. siteId: '',
  185. time: ['', ''],
  186. startTime: '',
  187. endTime: '',
  188. phone: '',
  189. contacts: '',
  190. planType: '',
  191. type: '',
  192. }
  193. dialogTitle.value = '新增'
  194. showDialog.value = true
  195. }
  196. // 编辑操作
  197. const editRow = (row) => {
  198. console.log(row)
  199. tableItem.value = {
  200. id: row.id,
  201. siteId: row.siteId,
  202. time: [row.startTime, row.endTime],
  203. startTime: row.startTime,
  204. endTime: row.endTime,
  205. phone: row.phone,
  206. contacts: row.contacts,
  207. planType: row.planType,
  208. type: row.type,
  209. }
  210. dialogTitle.value = '编辑'
  211. showDialog.value = true
  212. }
  213. // 关闭操作
  214. const closeDialog = (flag) => {
  215. if (flag) {
  216. // 重新刷新表格内容
  217. this.fetchData()
  218. }
  219. showDialog.value = false
  220. Select()
  221. }
  222. //删除 是否删除 ---- 是
  223. const handleDelete = (row) => {
  224. api.plannedOutageDel({ id: row.id }).then((requset) => {
  225. if (requset.status === 'SUCCESS') {
  226. ElMessage.success({
  227. message: '删除成功',
  228. type: 'success',
  229. })
  230. Select()
  231. } else {
  232. ElMessage.error(requset.msg)
  233. }
  234. })
  235. }
  236. //是否删除 ---- 否
  237. const cancelEvent = () => {
  238. console.log('cancel!')
  239. }
  240. //查询设备列表
  241. function Select() {
  242. store.commit('TimeAll_function', dateTime.value)
  243. const time = store.state.Time_Data
  244. api
  245. .plannedOutageList({
  246. size: pageSize.value,
  247. current: currentPage.value,
  248. type: region.value,
  249. startTime: time[0],
  250. endTime: time[1],
  251. })
  252. .then((requset) => {
  253. if (requset.status === 'SUCCESS') {
  254. tableData.value = requset.data.records.map((val) => {
  255. store.commit('getTimestampAll', val.startTime)
  256. val.startTime = store.state.timeProcessing
  257. store.commit('getTimestampAll', val.endTime)
  258. val.endTime = store.state.timeProcessing
  259. store.commit('getTimestampAll', val.createTime)
  260. val.createTime = store.state.timeProcessing
  261. })
  262. tableData.value = requset.data.records
  263. total.value = requset.data.total
  264. } else {
  265. ElMessage.error(requset.msg)
  266. }
  267. })
  268. }
  269. onMounted(() => {
  270. Select()
  271. })
  272. const handleSizeChange = (val) => {
  273. pageSize.value = val
  274. Select()
  275. }
  276. const handleCurrentChange = (val) => {
  277. currentPage.value = val
  278. Select()
  279. }
  280. // 表头样式设置
  281. const goVariableList = () => {
  282. // 跳转至订单列表页面传参
  283. this.$router.push({
  284. path: '../siteManage/variableList/index.vue',
  285. })
  286. // this.$router.push({ name:'variableList'})
  287. }
  288. const headClass = () => {
  289. return 'background:#FAFAFA;'
  290. }
  291. //处理状态状态值变色
  292. const cellStyle = (row, column, rowIndex, columnIndex) => {
  293. column, rowIndex, columnIndex
  294. // console.log('rowIndex', row, column, rowIndex, columnIndex)
  295. // console.log(row.row.status)
  296. // console.log(row)
  297. if (row.column.status == '未执行') {
  298. return 'color:#FF747B'
  299. }
  300. if (row.column.label == '已执行') {
  301. return 'color:#8DCF6E'
  302. }
  303. }
  304. return {
  305. cellStyle,
  306. headClass,
  307. goVariableList,
  308. handleSizeChange,
  309. handleCurrentChange,
  310. handleDelete,
  311. cancelEvent,
  312. closeDialog,
  313. editRow,
  314. addItem,
  315. Select,
  316. store,
  317. total,
  318. pageSize,
  319. currentPage,
  320. tableData,
  321. showDialog,
  322. tabPosition,
  323. select,
  324. dateTime,
  325. tableItem,
  326. dialogTitle,
  327. input,
  328. region,
  329. }
  330. },
  331. })
  332. </script>
  333. <style lang="scss" scoped>
  334. </style>