123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438 |
- <template>
- <div class="chart-container">
- <div class="filter" >
- <div style="margin-left:-10px;">
- <!-- <el-button size="small" type="primary" @click="insertEvent"> 新增</el-button>-->
- <el-upload
- ref="upload"
- name="file"
- :http-request="this.readWindTurbinePowerCurve"
- class="link-block"
- action=""
- :show-file-list = false
- >
- <el-button size="small" type="primary" >导入</el-button>
- </el-upload>
- <el-button size="small" type="primary" @click="exportToExcel">导出</el-button>
- </div>
- <div class="toolbar" v-show="this.showToolBar">
- <div class="toolMenu">
- <el-row>
- <el-col :span="6">
- 风速
- <el-input type="text"
- v-model="speed"
- placeholder="请输入风速值"
- prefix-icon="el-icon-search"
- clearable
- style="max-width: 180px;"
- size="small"
- ></el-input>
- </el-col>
- <el-col :span="6">
- 功率
- <el-input type="text"
- v-model="power"
- placeholder="请输入功率值"
- prefix-icon="el-icon-search"
- clearable
- style="max-width: 180px;"
- size="small"
- ></el-input>
- </el-col>
- <el-col :span="6">
- 机组
- <el-input type="text"
- v-model="fanId"
- placeholder="请输入机组id"
- prefix-icon="el-icon-search"
- clearable
- style="max-width: 200px;"
- size="small"
- ></el-input>
- </el-col>
- <el-col :span="6">
- <el-button type="primary" size="small" :loading="loading" @click="findBySomeConditions">查询</el-button>
- <el-button type="primary" size="small" :loading="loading" @click="clearInput">清空</el-button>
- </el-col>
- </el-row>
- </div>
- <!-- <vxe-toolbar ref="fstToolBar" custom >-->
- <!-- <template v-slot:buttons>-->
- <!-- <vxe-button class="downloadButton" style="border:none;" @click="exportDataEvent"><i class="vxe-icon--download" ></i></vxe-button>-->
- <!-- </template>-->
- <!-- </vxe-toolbar>-->
- </div>
- <!-- <div class="toolbar" v-show="this.showToolBar"> <vxe-toolbar ref="nwpToolBar" custom></vxe-toolbar></div>-->
- </div>
- <div class="content">
- <el-tabs type="card" v-model="activeName" @tab-click="Byresize">
- <el-tab-pane label="图表" name="first">
- <chart :drawData = this.drawData :resizeKey=this.resizeKey />
- </el-tab-pane>
- <el-tab-pane label="表格" name="second">
- <div class="tableContent">
- <vxe-grid
- id="nwpTable"
- ref="windRef"
- border
- export-config
- :loading="loading"
- resizable
- keep-source
- :auto-resize="true"
- :header-cell-style="styleStr"
- max-height="90%"
- :cell-style="styleTableStr"
- align="center"
- :data="tableData"
- :columns="tableColumn"
- :edit-config="{trigger: 'manual', mode: 'row', showStatus: true, }"
- >
- <template v-slot:operate="{ row }">
- <template v-if="$refs.windRef.isActiveByRow(row)">
- <vxe-button content="保存" circle @click="saveRowEvent(row)"></vxe-button>
- </template>
- <template v-else>
- <vxe-button content="编辑" circle @click="editRowEvent(row)"></vxe-button>
- </template>
- <!-- <vxe-button content="删除" circle @click="removeRowEvent(row)"></vxe-button>-->
- </template>
- </vxe-grid>
- <div class="rtPageturning">
- <vxe-pager
- background
- :loading="loading"
- :current-page.sync="currentPage"
- :page-size.sync="pageSize"
- :page-sizes="pageSizes"
- :total="total"
- @page-change="handlePageChange"
- :layouts="['PrevJump', 'PrevPage', 'JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']">
- </vxe-pager>
- </div>
- </div>
- </el-tab-pane>
- </el-tabs>
- </div>
- <el-dialog
- title="风机曲线"
- :visible.sync="dialogVisible"
- width="30%"
- >
- <el-form ref="form" :model="form" label-width="120px" :rules="rules">
- <el-form-item label="风速(m/s)" prop="speed">
- <el-input v-model="form.speed" style="width: 70%"></el-input>
- </el-form-item>
- <el-form-item label="功率(Kw)" prop="power">
- <el-input v-model="form.power" style="width: 70%"></el-input>
- </el-form-item>
- <el-form-item label="所属机组" prop="fanId">
- <el-select v-model="form.fanId" style="width: 70%">
- <el-option v-for="item in fanIdData"
- :key="item.value"
- :label="item.fanIdStr"
- :value="item.fanId"></el-option>
- </el-select>
- </el-form-item>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="dialogVisible = false" style="color: #000000; border: 1px solid #000000">取 消</el-button>
- <el-button type="primary" @click="saveRowEvent1"
- style="color: #000000; border: 1px solid #000000">确 定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
- </template>
- <script>
- import Chart from './charts'
- import resize from '../../../components/Charts/mixins/resize'
- export default {
- components: { Chart},
- mixins: [resize],
- data(){
- return {
- fanIdStr: '',
- value: '',
- fanIdData: [],
- styleStr: {},
- styleTableStr: {},
- tableToolbar: {
- export: true,
- custom: true
- },
- tableColumn: [],
- chart: null,
- loading: true,
- drawLoading: true,
- tableLoading: true,
- resizeKey: 1,
- activeName: 'first',
- drawData: {},
- tableData: [],
- total: 0,
- pageSize: 10,
- pageSizes: [10, 50, 100, {label: '大量数据', value: 1000},],
- currentPage: 1,
- showToolBar: false,
- dialogVisible: false,
- form: {},
- rules: {
- fanId: [
- {required: true, message: '此处为必填项'},
- {pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: "填写数字", trigger: 'blur'},
- ],
- speed: [
- {required: true, message: '此处为必填项'},
- {pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: "填写数字", trigger: 'blur'}
- ],
- power: [
- {required: true, message: '此处为必填项'},
- {pattern: /^[+-]?(0|([1-9]\d*))(\.\d+)?$/, message: "填写数字", trigger: 'blur'}
- ],
- },
- speed: '',
- power: '',
- fanId: '',
- }
- },
- created () {
- if(sessionStorage.getItem('styleSwitch') === 'blue'){
- this.styleStr = {background:'black',color:'white',border:'white'}
- this.styleTableStr = {background:'black',color:'white'}
- }
- this.$nextTick(() => {
- // 手动将表格和工具栏进行关联
- this.$refs.nwpRef.connect(this.$refs.nwpToolBar)
- })
- },
- mounted() {
- this.init()
- this.$axios.get("/windTurbinePowerCurve/getFanId").then(res =>{
- this.fanIdData = res.data
- })
- },
- methods:{
- exportDataEvent() {
- this.loading = true
- this.$axios.get('export/powerStationStatus/'+this.startTime+'/'+this.endTime, {
- responseType: 'blob'// 用于解决中文乱码
- }).then((response) => {
- this.loading = false
- }).catch((error) => {
- this.loading = false
- this.$message.error('导出失败' + error)
- })
- },
- init(){
- this.loading = true
- this.getDraw()
- this.getTable()
- },
- getDraw(){
- this.drawLoading = true
- this.$axios.get('/windTurbinePowerCurve/new/').then((res) => {
- this.drawData = res.data
- this.drawLoading = false
- if(!this.drawLoading && !this.tableLoading){
- this.loading = false
- }
- }).catch((error) => {
- this.drawLoading = false
- if(!this.drawLoading && !this.tableLoading){
- this.loading = false
- }
- this.$message.error('查询出错' + error)
- })
- },
- getTable(){
- this.findBySomeConditions()
- // this.tableLoading = true
- // this.$axios.get('/windTurbinePowerCurve/'+this.currentPage+'/'+this.pageSize).then((res) => {
- // this.tableData = res.data.content
- // // 表分页格数据总条数
- // this.total = res.data.count
- // this.tableColumn = []
- // this.tableColumn = [
- // { field: 'id', title: 'id',minWidth:"150",width:"180"},
- // { field: 'speed', title: '风速',minWidth:"60",editRender: { name: 'input' }},
- // { field: 'power', title: '功率',minWidth:"60",editRender: { name: 'input' }},
- // { field: 'fanId', title: '机组',minWidth:"60",editRender: { name: 'input' }},
- // { title: '操作', width: 200, slots: { default: 'operate' } }
- // ]
- //
- // this.tableLoading = false
- // if(!this.drawLoading && !this.tableLoading){
- // this.loading = false
- // }
- // }).catch((error) => {
- // this.tableLoading = false
- // if(!this.drawLoading && !this.tableLoading){
- // this.loading = false
- // }
- // this.$message.error('查询table出错' + error)
- // })
- },
- handlePageChange ({ currentPage, pageSize }) {
- this.currentPage = currentPage
- this.pageSize = pageSize
- this.loading = true
- this.getTable();
- },
- readWindTurbinePowerCurve(obj) {
- this.$XModal.confirm('是否从Excel读取数据?').then(type => {
- if (type === 'confirm') {
- const formData = new FormData()
- formData.append("multipartFile",obj.file)
- this.loading = true
- this.$axios.post("/readToMysql/readWindTurbinePowerCurveMap",formData).then(res=>{
- this.$message.success(
- res.message
- )
- this.loading = false
- this.init()
- })
- }
- })
- },
- Byresize(tab){
- if(tab.name =='first'){
- this.resizeKey++
- this.showToolBar = false
- }else{
- this.showToolBar = true
- }
- },
- editRowEvent (row) {
- this.$refs.windRef.setActiveRow(row)
- },
- saveRowEvent (row) {
- this.$refs.windRef.clearActived().then(() => {
- this.loading = true
- this.$axios.put('/windTurbinePowerCurve/',row).then((res) => {
- this.$message.success(
- res.message
- )
- this.loading = false
- }).catch((error) => {
- this.$message.error('修改失败' + error)
- this.loading = false
- })
- })
- },
- removeRowEvent (row) {
- this.$XModal.confirm('您确定要删除该数据?').then(type => {
- if (type === 'confirm') {
- this.$axios.delete('/windTurbinePowerCurve/',{data:row}).then((res) => {
- this.$message.success(
- res.message
- )
- this.loading = false
- this.getTable()
- this.init()
- }).catch((error) => {
- this.$message.error('删除' + error)
- this.loading = false
- })
- }
- })
- },
- insertEvent() {
- this.form = {};
- this.dialogVisible = true;
- },
- saveRowEvent1() {
- this.$axios.post('/windTurbinePowerCurve', this.form).then(res => {
- this.$message.success(res.message)
- this.findBySomeConditions()
- }).catch(e => {
- this.$message.error(e)
- })
- this.dialogVisible = false;
- this.findBySomeConditions()
- },
- exportToExcel(){
- this.dialogVisible = true;
- this.$axios.get('/exportToExcel/windTurbinePowerCurveExport').then(res => {
- this.$XModal.message({status: 'success', message: res.message})
- })
- this.dialogVisible = false;
- },
- findBySomeConditions() {
- if (this.speed == '') {
- this.speed = null
- }
- if (this.power == '') {
- this.power = null
- }
- if (this.fanId == '') {
- this.fanId = null
- }
- // this.$axios.get("/windTurbinePowerCurve/bySomeConditions/" + this.currentPage + "/" + this.pageSize + "/" + this.speed + '/' + this.power + '/' + this.fanId).then(res => {
- // this.tableData = res.data.content
- // this.total = res.data.totalElements
- // })
- this.$axios.get("/windTurbinePowerCurve/bySomeConditions/" + this.currentPage + "/" + this.pageSize + "/" + this.speed + '/' + this.power + '/' + this.fanId).then(res => {
- this.tableData = res.data.content
- // 表分页格数据总条数
- this.total = res.data.totalElements
- this.tableColumn = []
- this.tableColumn = [
- { field: 'id', title: 'id',minWidth:"150",width:"180"},
- { field: 'speed', title: '风速',minWidth:"60",editRender: { name: 'input' }},
- { field: 'power', title: '功率',minWidth:"60",editRender: { name: 'input' }},
- { field: 'fanId', title: '机组',minWidth:"60",editRender: { name: 'input' }},
- { title: '操作', width: 200, slots: { default: 'operate' } }
- ]
- this.tableLoading = false
- if(!this.drawLoading && !this.tableLoading){
- this.loading = false
- }
- }).catch((error) => {
- this.tableLoading = false
- if(!this.drawLoading && !this.tableLoading){
- this.loading = false
- }
- this.$message.error('查询table出错' + error)
- })
- },
- clearInput(){
- this.speed = ''
- this.power = ''
- this.fanId = ''
- }
- }
- }
- </script>
- <style scoped>
- .link-block{
- display: inline-block;
- }
- </style>
|