index.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <template>
  2. <div class="draught-fan-list">
  3. <div class="query mg-b-8">
  4. <div class="query-items">
  5. <div class="query-item">
  6. <div class="lable">场站:</div>
  7. <div class="search-input">
  8. <el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change="getProject(true)">
  9. <el-option v-for="item in wpArray" :key="item.id" :value="item.id" :label="item.name" />
  10. </el-select>
  11. </div>
  12. </div>
  13. <div class="query-item">
  14. <div class="lable">项目:</div>
  15. <div class="search-input">
  16. <el-select v-model="projectId" clearable placeholder="请选择" popper-class="select">
  17. <el-option v-for="item in projectArray" :key="item.id" :value="item.id" :label="item.name" />
  18. </el-select>
  19. </div>
  20. </div>
  21. <div class="query-item">
  22. <div class="lable">日期:</div>
  23. <div class="search-input">
  24. <el-date-picker v-model="recorddate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
  25. </el-date-picker>
  26. </div>
  27. </div>
  28. </div>
  29. <div class="query-actions">
  30. <button class="btn green" @click="search()">查询</button>
  31. <button class="btn green" @click="dialogShow = true">新增</button>
  32. <button class="btn green" @click="exportExcel()" v-if="tableData.data.length">导出</button>
  33. </div>
  34. </div>
  35. <div class="df-table">
  36. <ComTable height="78vh" :data="tableData"></ComTable>
  37. </div>
  38. <el-dialog title="新增计划发电量" v-model="dialogShow" width="85%" top="10vh" custom-class="modal" :close-on-click-modal="false">
  39. <el-form ref="form" :model="form" :rules="rules" inline label-width="80px">
  40. <el-form-item label="场站" prop="submitWpId">
  41. <el-select v-model="form.submitWpId" clearable placeholder="请选择" popper-class="select" @change="getProject(true)">
  42. <el-option v-for="item in wpArray" :key="item.id" :value="item.id" :label="item.name" />
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="项目" prop="submitProjectId">
  46. <el-select v-model="form.submitProjectId" clearable placeholder="请选择" popper-class="select">
  47. <el-option v-for="item in projectArray" :key="item.id" :value="item.id" :label="item.name" />
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="时间" prop="submitData">
  51. <el-date-picker v-model="form.submitData" type="date" value-format="YYYY-MM-DD" placeholder="选择日期"
  52. popper-class="date-select">
  53. </el-date-picker>
  54. </el-form-item>
  55. <!-- <el-form-item label="活动名称" prop="desc">
  56. <el-input v-model="form.name"></el-input>
  57. </el-form-item> -->
  58. </el-form>
  59. <span slot="footer" class="dialog-footer">
  60. <button class="btn green" @click="dialogShow = false">取消</button>
  61. <button class="btn green">提交</button>
  62. </span>
  63. </el-dialog>
  64. </div>
  65. </template>
  66. <script>
  67. import ComTable from "@com/coms/table/table.vue";
  68. export default {
  69. // 名称
  70. name: "cutAnalyse",
  71. // 使用组件
  72. components: {
  73. ComTable
  74. },
  75. // 数据
  76. data () {
  77. const that = this;
  78. return {
  79. isAsc: "asc",
  80. wpArray: [],
  81. wpId: "",
  82. projectArray: [],
  83. projectId: "",
  84. recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
  85. dialogShow: false,
  86. tableData: {
  87. column: [
  88. {
  89. name: "名称",
  90. field: "projectName",
  91. is_num: false,
  92. is_light: false,
  93. sortable: true
  94. },
  95. {
  96. name: "年",
  97. field: "year",
  98. is_num: false,
  99. is_light: false,
  100. sortable: true
  101. },
  102. {
  103. name: "1月",
  104. field: "gc01",
  105. is_num: false,
  106. is_light: false,
  107. sortable: true
  108. },
  109. {
  110. name: "2月",
  111. field: "gc02",
  112. is_num: false,
  113. is_light: false,
  114. sortable: true
  115. },
  116. {
  117. name: "3月",
  118. field: "gc03",
  119. is_num: false,
  120. is_light: false,
  121. sortable: true
  122. },
  123. {
  124. name: "4月",
  125. field: "gc04",
  126. is_num: false,
  127. is_light: false,
  128. sortable: true
  129. },
  130. {
  131. name: "5月",
  132. field: "gc05",
  133. is_num: false,
  134. is_light: false,
  135. sortable: true
  136. },
  137. {
  138. name: "6月",
  139. field: "gc06",
  140. is_num: false,
  141. is_light: false,
  142. sortable: true
  143. },
  144. {
  145. name: "7月",
  146. field: "gc07",
  147. is_num: false,
  148. is_light: false,
  149. sortable: true
  150. },
  151. {
  152. name: "8月",
  153. field: "gc08",
  154. is_num: false,
  155. is_light: false,
  156. sortable: true
  157. },
  158. {
  159. name: "9月",
  160. field: "gc09",
  161. is_num: false,
  162. is_light: false,
  163. sortable: true
  164. },
  165. {
  166. name: "10月",
  167. field: "gc10",
  168. is_num: false,
  169. is_light: false,
  170. sortable: true
  171. },
  172. {
  173. name: "11月",
  174. field: "gc11",
  175. is_num: false,
  176. is_light: false,
  177. sortable: true
  178. },
  179. {
  180. name: "12月",
  181. field: "gc12",
  182. is_num: false,
  183. is_light: false,
  184. sortable: true
  185. },
  186. {
  187. name: "合计",
  188. field: "generatingcapacity",
  189. is_num: false,
  190. is_light: false,
  191. sortable: true
  192. }
  193. ],
  194. data: [],
  195. },
  196. form: {
  197. submitWpId: "",
  198. submitProjectId: "",
  199. submitData: "",
  200. gc1:"",
  201. gc2:"",
  202. gc3:"",
  203. gc4:"",
  204. gc5:"",
  205. gc6:"",
  206. gc7:"",
  207. gc8:"",
  208. gc9:"",
  209. gc10:"",
  210. gc11:"",
  211. gc12:"",
  212. },
  213. rules: {
  214. submitWpId: [
  215. { required: true, message: '请选择场站', trigger: 'change' },
  216. ],
  217. submitProjectId: [
  218. { required: true, message: '请选择项目', trigger: 'change' },
  219. ],
  220. submitData: [
  221. { required: true, message: '请选择时间', trigger: 'change' },
  222. ],
  223. gc1: [
  224. { required: true, message: '该行数据不可为空', trigger: 'change' },
  225. ]
  226. }
  227. };
  228. },
  229. // 函数
  230. methods: {
  231. // 请求服务
  232. requestData () {
  233. let that = this;
  234. that.API.requestData({
  235. method: "GET",
  236. subUrl: "powercompare/windfarmAjax",
  237. success (res) {
  238. that.wpArray = res.data;
  239. that.wpId = res.data[0].id;
  240. that.getProject();
  241. }
  242. });
  243. },
  244. // 获取期数
  245. getProject (skipRequest) {
  246. let that = this;
  247. that.API.requestData({
  248. method: "GET",
  249. subUrl: "powercompare/projectAjax",
  250. data: {
  251. wpIds: that.wpId
  252. },
  253. success (res) {
  254. that.projectArray = res.data;
  255. that.projectId = res.data[0].id;
  256. if (!skipRequest) {
  257. that.getTableData();
  258. }
  259. }
  260. });
  261. },
  262. getTableData () {
  263. let that = this;
  264. if (!that.recorddate) {
  265. that.BASE.showMsg({
  266. msg: "时间不可为空"
  267. });
  268. } else {
  269. that.API.requestData({
  270. method: "POST",
  271. subUrl: "projectplan/getProjectPlanVo",
  272. data: {
  273. isAsc: that.isAsc,
  274. wpId: that.wpId || "",
  275. pjId: that.projectId || "",
  276. year: new Date(that.recorddate).getFullYear()
  277. },
  278. success (res) {
  279. that.tableData.data = res.data;
  280. }
  281. });
  282. }
  283. },
  284. // 导出excel
  285. exportExcel () {
  286. this.BASE.exportExcel(this.tableData);
  287. },
  288. search () {
  289. this.getTableData();
  290. }
  291. },
  292. created () {
  293. this.requestData();
  294. },
  295. mounted () { },
  296. unmounted () { },
  297. };
  298. </script>
  299. <style lang="less" scoped>
  300. .draught-fan-list {
  301. width: 100%;
  302. height: 100%;
  303. display: flex;
  304. flex-direction: column;
  305. .btn-group-tabs {
  306. display: flex;
  307. flex-direction: row;
  308. .photovoltaic {
  309. margin-left: 1.481vh;
  310. }
  311. }
  312. .df-table {
  313. border: 0.093vh solid fade(@darkgray, 50%);
  314. position: relative;
  315. overflow: auto;
  316. flex-grow: 1;
  317. margin-top: 1.481vh;
  318. &:before {
  319. content: '';
  320. width: 0.37vh;
  321. height: 0.37vh;
  322. background: @write;
  323. position: absolute;
  324. left: 0.278vh;
  325. top: 0.278vh;
  326. }
  327. tbody {
  328. height: calc(100vh - 166px);
  329. }
  330. }
  331. }
  332. </style>