|
@@ -1,152 +1,331 @@
|
|
|
<template>
|
|
|
- <div class="rpt-page" ref="rpt_page">
|
|
|
- <div class="rpt-title" ref="rpt_title">
|
|
|
- <div class="main-title">采油厂稀油井站采油井生产日报表</div>
|
|
|
- <div class="sub-title">
|
|
|
- <div>采油厂</div>
|
|
|
- <div>2023年11月15日</div>
|
|
|
- </div>
|
|
|
+ <div class="out-page">
|
|
|
+ <div class="out-top">
|
|
|
+ <el-form :inline="true" :model="queryForm" class="query-form-inline" label-width="auto">
|
|
|
+ <el-form-item label="井站">
|
|
|
+ <div style="width:140px;">{{queryForm.orgName}}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="日期">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="queryForm.dailyDate"
|
|
|
+ type="date"
|
|
|
+ placeholder="请选择日报日期"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" :loading="btnStatTag==1" :disabled="btnStatTag>0" @click="queryHandle">检索</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="success" :loading="btnStatTag==2" :disabled="btnStatTag>0" title="汇总其它基础数据到该日报" @click="extractRpt">提取数据</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="warning" :loading="btnStatTag==3" :disabled="btnStatTag>0" @click="saveRpt">保存</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <!-- <el-button type="primary" plain icon="Edit">导出</el-button> -->
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="rpt-box">
|
|
|
- <div class="rpt-table-header" ref="rpt_header">
|
|
|
- <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
- <tr>
|
|
|
- <td rowspan="3"><div class="rpt-table-cell rpttab-cell-0">井号</div></td>
|
|
|
- <td rowspan="3"><div class="rpt-table-cell rpttab-cell-1">生产方式</div></td>
|
|
|
- <td colspan="5"><div class="rpt-table-cell colspan-center">工作制度</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-3">班次</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4 ">生产时间</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-5">巡检时间</div></td>
|
|
|
- <td colspan="3"><div class="rpt-table-cell colspan-center">压力(MPa)</div></td>
|
|
|
- <td colspan="4"><div class="rpt-table-cell colspan-center">温度(℃)</div></td>
|
|
|
- <td colspan="3"><div class="rpt-table-cell">伴热</div></td>
|
|
|
- <td colspan="5"><div class="rpt-table-cell">计量 </div></td>
|
|
|
- <td colspan="2"><div class="rpt-table-cell">电流(A) </div></td>
|
|
|
- <td rowspan="3"><div class="rpt-table-cell rpttab-cell-9">备注</div></td>
|
|
|
- <td patch><div class="rpt-table-cell rpt-patch-cell"></div></td>
|
|
|
- </tr>
|
|
|
-
|
|
|
- <tr>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">油嘴(mm)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">冲程(m)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">冲次(rpm)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">泵径(mm)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">泵深(m)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">h:min</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">h:min</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">h:min</div></td>
|
|
|
+ <div class="rpt-page" ref="rpt_page">
|
|
|
+ <div class="rpt-title" ref="rpt_title">
|
|
|
+ <div class="main-title">{{queryForm.orgName}}采油井生产日报表</div>
|
|
|
+ <div class="sub-title">
|
|
|
+ <div>{{queryForm.orgName}}</div>
|
|
|
+ <div>{{dailyDatefmt}}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="rpt-box">
|
|
|
+ <div class="rpt-table-header" ref="rpt_header">
|
|
|
+ <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
+ <tr>
|
|
|
+ <td rowspan="3"><div class="rpt-table-cell rpttab-cell-0">井号</div></td>
|
|
|
+ <td rowspan="3"><div class="rpt-table-cell rpttab-cell-1">生产方式</div></td>
|
|
|
+ <td colspan="5"><div class="rpt-table-cell colspan-center">工作制度</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-3">班次</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4 ">生产时间</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-5">巡检时间</div></td>
|
|
|
+ <td colspan="3"><div class="rpt-table-cell colspan-center">压力(MPa)</div></td>
|
|
|
+ <td colspan="4"><div class="rpt-table-cell colspan-center">温度(℃)</div></td>
|
|
|
+ <td colspan="3"><div class="rpt-table-cell">伴热</div></td>
|
|
|
+ <td colspan="5"><div class="rpt-table-cell">计量 </div></td>
|
|
|
+ <td colspan="2"><div class="rpt-table-cell">电流(A) </div></td>
|
|
|
+ <td rowspan="3"><div class="rpt-table-cell rpttab-cell-9">备注</div></td>
|
|
|
+ <td patch><div class="rpt-table-cell rpt-patch-cell"></div></td>
|
|
|
+ </tr>
|
|
|
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">油压</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">套压</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">回压</div></td>
|
|
|
+ <tr>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">油嘴(mm)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">冲程(m)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">冲次(rpm)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">泵径(mm)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">泵深(m)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">h:min</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">h:min</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">h:min</div></td>
|
|
|
+
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">油压</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">套压</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">回压</div></td>
|
|
|
+
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">井口</div></td>
|
|
|
+ <td colspan="2"><div class="rpt-table-cell colspan-center">加热炉</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">进站</div></td>
|
|
|
+
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">方式</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">配参量(m3/d)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">实参量(m3/d)</div></td>
|
|
|
+
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">量油标高/罐位(cm)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">计量起止时间 h:min-h:min</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">平均量油时间(s)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">计量液量(t/d)</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">计量气量(m3/d)</div></td>
|
|
|
+
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">上行</div></td>
|
|
|
+ <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">下行</div></td>
|
|
|
+ </tr>
|
|
|
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">井口</div></td>
|
|
|
- <td colspan="2"><div class="rpt-table-cell colspan-center">加热炉</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">进站</div></td>
|
|
|
+ <tr>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">进口</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">出口</div></td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <div class="rpt-table-body" @scroll="rptboxScrollHandler" ref="rpt_body">
|
|
|
+ <el-form :model="rptDatas" :show-message="false" @validate="formValidHandler" ref="rptform">
|
|
|
+ <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
+ <template v-for="(daily,index) in rptDatas " :key="index">
|
|
|
+ <tr class="dataRow dbl-line">
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-0">{{daily.wellName}}</div></td>
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-1">{{daily.produceMode}}</div></td>
|
|
|
+ <td rowspan="4"><el-form-item :prop="'['+index+'].oilMouth'" :rules="ruleFloat('油嘴')"><el-input v-model="daily.oilMouth" class="rpt-table-cell rpttab-cell-4"/></el-form-item></td>
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-3">{{daily.stroke}}</div></td>
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-4">{{daily.freq}}</div></td>
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{dutyTimes[0]}}</div></td>
|
|
|
+ <td><el-input v-model="daily.duties[dutyTimes[0]].produceTime"/></td>
|
|
|
+ <td><el-input v-model="daily.duties[dutyTimes[0]].patrolTime"/></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dutyTimes[0]]?.oilPress}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dutyTimes[0]]?.casingPress}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dutyTimes[0]]?.backPress}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dutyTimes[0]]?.tempWellport}}</div></td>
|
|
|
+
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].tempHotInput'" :rules="ruleFloat('加热炉进口温度')"><el-input v-model="daily.duties[dutyTimes[0]].tempHotInput"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].tempHotOutput'" :rules="ruleFloat('加热炉出口温度')"><el-input v-model="daily.duties[dutyTimes[0]].tempHotOutput"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].tempStationInput'" :rules="ruleFloat('进站温度')"><el-input v-model="daily.duties[dutyTimes[0]].tempStationInput"/></el-form-item></td>
|
|
|
+ <td><el-input v-model="daily.duties[dutyTimes[0]].tracingMode"/></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].tracingMixQuota'" :rules="ruleFloat('伴热配参量')"><el-input v-model="daily.duties[dutyTimes[0]].tracingMixQuota"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].tracingMixReal'" :rules="ruleFloat('伴热实参量')"><el-input v-model="daily.duties[dutyTimes[0]].tracingMixReal"/></el-form-item></td>
|
|
|
+
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].meterOilHeight'" :rules="ruleFloat('量油标高')"><el-input v-model="daily.duties[dutyTimes[0]].meterOilHeight"/></el-form-item></td>
|
|
|
+ <td><el-input v-model="daily.duties[dutyTimes[0]].meterPeriod"/></td>
|
|
|
+ <td><el-input v-model="daily.duties[dutyTimes[0]].meterAvgTime"/></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].meterLiquid'" :rules="ruleFloat('计量液量')"><el-input v-model="daily.duties[dutyTimes[0]].meterLiquid"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dutyTimes[0]+'].meterGas'" :rules="ruleFloat('计量气量')"><el-input v-model="daily.duties[dutyTimes[0]].meterGas"/></el-form-item></td>
|
|
|
+
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-4">{{daily.currentDown}}</div></td>
|
|
|
+ <td rowspan="4"><div class="rpt-table-cell rpttab-cell-4">{{daily.currentUp}}</div></td>
|
|
|
+ <td rowspan="4"><el-input v-model="daily.note" class="rpt-table-cell rpttab-cell-4"/></td>
|
|
|
+ </tr>
|
|
|
+ <tr v-for="dt in [dutyTimes[1],dutyTimes[2]]">
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{dt}}</div></td>
|
|
|
+ <td><el-input v-model="daily.duties[dt].produceTime"/></td>
|
|
|
+ <td><el-input v-model="daily.duties[dt].patrolTime"/></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dt]?.oilPress}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dt]?.casingPress}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dt]?.backPress}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{daily.duties[dt]?.tempWellport}}</div></td>
|
|
|
+
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].tempHotInput'" :rules="ruleFloat('加热炉进口温度')"><el-input v-model="daily.duties[dt].tempHotInput"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].tempHotOutput'" :rules="ruleFloat('加热炉出口温度')"><el-input v-model="daily.duties[dt].tempHotOutput"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].tempStationInput'" :rules="ruleFloat('进站温度')"><el-input v-model="daily.duties[dt].tempStationInput"/></el-form-item></td>
|
|
|
+ <td><el-input v-model="daily.duties[dt].tracingMode"/></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].tracingMixQuota'" :rules="ruleFloat('伴热配参量')"><el-input v-model="daily.duties[dt].tracingMixQuota"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].tracingMixReal'" :rules="ruleFloat('伴热实参量')"><el-input v-model="daily.duties[dt].tracingMixReal"/></el-form-item></td>
|
|
|
+
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].meterOilHeight'" :rules="ruleFloat('量油标高')"><el-input v-model="daily.duties[dt].meterOilHeight"/></el-form-item></td>
|
|
|
+ <td><el-input v-model="daily.duties[dt].meterPeriod"/></td>
|
|
|
+ <td><el-input v-model="daily.duties[dt].meterAvgTime"/></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].meterLiquid'" :rules="ruleFloat('计量液量')"><el-input v-model="daily.duties[dt].meterLiquid"/></el-form-item></td>
|
|
|
+ <td><el-form-item :prop="'['+index+'].duties['+dt+'].meterGas'" :rules="ruleFloat('计量气量')"><el-input v-model="daily.duties[dt].meterGas"/></el-form-item></td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <tr>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">小计</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{calcSum(daily,'tracingMixQuota')}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{calcSum(daily,'tracingMixReal')}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{calcSum(daily,'meterLiquid')}}</div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">{{calcSum(daily,'meterGas')}}</div></td>
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ </template>
|
|
|
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">方式</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">配参量(m3/d)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">实参量(m3/d)</div></td>
|
|
|
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">量油标高/罐位(cm)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">计量起止时间 h:min-h:min</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">平均量油时间(s)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">计量液量(t/d)</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">计量气量(m3/d)</div></td>
|
|
|
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">上行</div></td>
|
|
|
- <td rowspan="2"><div class="rpt-table-cell rpttab-cell-4">下行</div></td>
|
|
|
- </tr>
|
|
|
-
|
|
|
- <tr>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">进口</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">出口</div></td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="rpt-table-body" @scroll="rptboxScrollHandler" ref="rpt_body">
|
|
|
- <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
- <tr class="dataRow dbl-line" v-for=" d in 15 ">
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-0">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-1">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-2">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-3">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">d</div></td>
|
|
|
- </tr>
|
|
|
- <tr class="tab-foot-tr">
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-0">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-1">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">巡检人:</div></td>
|
|
|
- <td ><div class="rpt-table-cell edit-able-cell">dd</div></td>
|
|
|
- <td></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-4">计量人:</div></td>
|
|
|
- <td><div class="rpt-table-cell edit-able-cell">dd</div></td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="rpt-table-fixed">
|
|
|
- <div class="rpt-table-header" ref="fixed_header">
|
|
|
- <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
- <tr>
|
|
|
- <td rowspan="3"><div class="rpt-table-cell rpttab-cell-0">井号2</div></td>
|
|
|
- <td rowspan="3"><div class="rpt-table-cell rpttab-cell-1">生产方式2</div></td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- </div>
|
|
|
- <div class="rpt-table-body" ref="fixed_body">
|
|
|
- <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
- <tr class="dataRow dbl-line" v-for=" d in 15 ">
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-0">d</div></td>
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-1">d</div></td>
|
|
|
- </tr>
|
|
|
- <tr class="tab-foot-tr">
|
|
|
- <td><div class="rpt-table-cell rpttab-cell-0"> </div></td>
|
|
|
+ <tr class="tab-foot-tr" v-show="rptDatas&&rptDatas.length>0">
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-0"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-1"></div></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">白班巡检人:</div></td>
|
|
|
+ <td><el-input v-model="rptOth.dayPatrolBy"/></td>
|
|
|
+ <td></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">白班计量人:</div></td>
|
|
|
+ <td><el-input v-model="rptOth.dayMeterBy"/></td>
|
|
|
+ <td></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">夜班巡检人:</div></td>
|
|
|
+ <td><el-input v-model="rptOth.nightPatrolBy"/></td>
|
|
|
+ <td></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">夜班计量人:</div></td>
|
|
|
+ <td><el-input v-model="rptOth.nightMeterBy"/></td>
|
|
|
+ <td></td>
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-4">审核人:</div></td>
|
|
|
+ <td><el-input v-model="rptOth.auditor"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="rpt-table-fixed" style="display: none;">
|
|
|
+ <div class="rpt-table-header" ref="fixed_header">
|
|
|
+ <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
+ <tr>
|
|
|
+ <td rowspan="3"><div class="rpt-table-cell rpttab-cell-0">井号</div></td>
|
|
|
+ <td rowspan="3"><div class="rpt-table-cell rpttab-cell-1">生产方式</div></td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ <div class="rpt-table-body" ref="fixed_body">
|
|
|
+ <table cellpadding="0" cellspacing="0" class="rpt-table" align="center">
|
|
|
+ <tr class="dataRow dbl-line" v-for=" (daily,index) in rptDatas " :key="index">
|
|
|
+ <td rows="4"><div class="rpt-table-cell rpttab-cell-0">{{daily.wellName}}</div></td>
|
|
|
+ </tr>
|
|
|
+ <tr class="tab-foot-tr">
|
|
|
+ <td><div class="rpt-table-cell rpttab-cell-0"> </div></td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
</div>
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
</div>
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
</div>
|
|
|
|
|
|
+
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
- import {reactive,ref,onMounted} from 'vue'
|
|
|
+ import {reactive,ref,onMounted,watch,toRaw,nextTick,computed} from 'vue'
|
|
|
+ import {ElMessageBox,ElMessage} from 'element-plus'
|
|
|
+ import { storeToRefs } from 'pinia'
|
|
|
+ import { useHomeStore } from '../../store/home.js'
|
|
|
+
|
|
|
+ import oilDailyRptAPI from '../../api/oilDailyRpt.js'
|
|
|
+
|
|
|
+ const queryForm=reactive({
|
|
|
+ dailyDate:null,
|
|
|
+ orgId:null,
|
|
|
+ orgName:null
|
|
|
+ })
|
|
|
+
|
|
|
+ const dailyDatefmt=computed(()=>{
|
|
|
+ if(queryForm.dailyDate){
|
|
|
+ let ds=queryForm.dailyDate.split('-')
|
|
|
+ return `${ds[0]}年${ds[1]}月${ds[2]}日`
|
|
|
+ }
|
|
|
+ return null
|
|
|
+ })
|
|
|
+
|
|
|
+ const btnStatTag=ref(0)
|
|
|
+
|
|
|
+ const dutyTimes=ref(['08:00-16:00','16:00-00:00','00:00-08:00'])
|
|
|
+ const rptDatas=ref(null)
|
|
|
+ const rptOth=reactive({
|
|
|
+ dayPatrolBy:null,
|
|
|
+ dayMeterBy:null,
|
|
|
+ nightPatrolBy:null,
|
|
|
+ nightMeterBy:null,
|
|
|
+ auditor:null,
|
|
|
+ dailyDate:null
|
|
|
+ })
|
|
|
+
|
|
|
+ const calcSum=(daily,prop)=>{
|
|
|
+ let sum=0
|
|
|
+ dutyTimes.value.forEach(dt=>{
|
|
|
+ sum+=daily.duties[dt][prop]?parseFloat(daily.duties[dt][prop]):0
|
|
|
+ })
|
|
|
+ return sum
|
|
|
+ }
|
|
|
+
|
|
|
+ const clearRpt=()=>{
|
|
|
+ rptDatas.value=null
|
|
|
+ Object.assign(rptOth,{dayPatrolBy:null,dayMeterBy:null,nightPatrolBy:null,nightMeterBy:null,auditor:null,dailyDate:null})
|
|
|
+ }
|
|
|
+
|
|
|
+ const queryHandle=()=>{
|
|
|
+
|
|
|
+ if(queryForm.dailyDate==null || queryForm.orgId==null){
|
|
|
+ ElMessage.error('请选择井站、日期后再继续')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ clearRpt()
|
|
|
+
|
|
|
+ btnStatTag.value=1
|
|
|
+ oilDailyRptAPI.load(toRaw(queryForm)).then(resp=>{
|
|
|
+ btnStatTag.value=0
|
|
|
+ if(resp.code!=0){
|
|
|
+ ElMessage.error(resp.msg || "加载数据失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!resp.data || resp.data.length==0){
|
|
|
+ ElMessage.error("未找到对应数据")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let {dayPatrolBy,dayMeterBy,nightPatrolBy,nightMeterBy,auditor,dailyDate}=resp.data[0]
|
|
|
+
|
|
|
+ Object.assign(rptOth,{dayPatrolBy,dayMeterBy,nightPatrolBy,nightMeterBy,auditor,dailyDate})
|
|
|
+
|
|
|
+ rptDatas.value=resp.data
|
|
|
+
|
|
|
+ nextTick(()=>{
|
|
|
+ initSize()
|
|
|
+ })
|
|
|
+
|
|
|
+ }).catch(err=>{
|
|
|
+ btnStatTag.value=0
|
|
|
+ ElMessage.error('加载数据出错')
|
|
|
+ console.log(err)
|
|
|
+ })
|
|
|
+ }
|
|
|
|
|
|
+ const rptform=ref(null)
|
|
|
const rpt_page=ref(null)
|
|
|
const rpt_title=ref(null)
|
|
|
const rpt_body=ref(null)
|
|
@@ -157,41 +336,179 @@
|
|
|
const fixedBodyH=ref(283)
|
|
|
|
|
|
const rptboxScrollHandler=(evn)=>{
|
|
|
- //console.log(evn.target.scrollTop)
|
|
|
- //console.log(fixed_body.value)
|
|
|
fixed_body.value.scrollTop=evn.target.scrollTop
|
|
|
rpt_header.value.scrollLeft=evn.target.scrollLeft
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ const ruleFloat=(msg)=>{
|
|
|
+ return {
|
|
|
+ pattern:/^\d+(\.\d+)?$/,
|
|
|
+ message:`${msg}应为大于0的数值`,
|
|
|
+ trigger:'blur'
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ let formValiding=false //整体验证
|
|
|
+
|
|
|
+ const formValidHandler=(prop,isValid,message)=>{
|
|
|
+ //console.log(prop,isValid,message)
|
|
|
+ if(!isValid && !formValiding){
|
|
|
+ ElMessage.error(message)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const saveRpt=()=>{
|
|
|
+ formValiding=true
|
|
|
+ rptform.value.validate((isValid,invalidObj) => {
|
|
|
+ formValiding=false
|
|
|
+ if(!isValid){
|
|
|
+ ElMessage.error('还有数据不符合要求,请先修改再继续')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ btnStatTag.value=3
|
|
|
+ rptOth.dailyDate=queryForm.dailyDate
|
|
|
+ let saveData=toRaw(rptDatas.value)
|
|
|
+ saveData.forEach(daily=>{
|
|
|
+ Object.assign(daily,rptOth)
|
|
|
+ })
|
|
|
+ oilDailyRptAPI.saveRpt(JSON.stringify(saveData)).then(resp=>{
|
|
|
+ btnStatTag.value=0
|
|
|
+ if(resp.code!=0){
|
|
|
+ ElMessage.error(resp.msg || '保存失败')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ElMessage.success('保存成功')
|
|
|
+
|
|
|
+ }).catch(err=>{
|
|
|
+ btnStatTag.value=0
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ const extractRpt=()=>{
|
|
|
+ btnStatTag.value=2
|
|
|
+ clearRpt()
|
|
|
+ oilDailyRptAPI.extract(toRaw(queryForm)).then(resp=>{
|
|
|
+ //console.log(resp)
|
|
|
+ btnStatTag.value=0
|
|
|
+ if(resp.code!=0){
|
|
|
+ ElMessage.error(resp.msg || "提取数据失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //补齐班次数据
|
|
|
+ let blankDuty={
|
|
|
+ "dutyId": null,
|
|
|
+ "dutyTime": null,
|
|
|
+ "produceTime": null,
|
|
|
+ "patrolTime": null,
|
|
|
+ "oilPress": null,
|
|
|
+ "casingPress": null,
|
|
|
+ "backPress": null,
|
|
|
+ "tempWellport": null,
|
|
|
+ "tempHotInput": null,
|
|
|
+ "tempHotOutput": null,
|
|
|
+ "tempStationInput": null,
|
|
|
+ "tracingMode": null,
|
|
|
+ "tracingMixQuota": null,
|
|
|
+ "tracingMixReal": null,
|
|
|
+ "meterOilHeight": null,
|
|
|
+ "meterPeriod": null,
|
|
|
+ "meterAvgTime": null,
|
|
|
+ "meterLiquid": null,
|
|
|
+ "meterGas": null,
|
|
|
+ "wellId": null,
|
|
|
+ "dailyDate": null,
|
|
|
+ "displayNum": null
|
|
|
+ }
|
|
|
+ resp.data.forEach(daily=>{
|
|
|
+ let [dt1,dt2,dt3] = dutyTimes.value
|
|
|
+ if(!daily.duties){
|
|
|
+ daily.duties={
|
|
|
+ dt1:Object.assign({},blankDuty,{dutyTime:dt1}),
|
|
|
+ dt2:Object.assign({},blankDuty,{dutyTime:dt2}),
|
|
|
+ dt3:Object.assign({},blankDuty,{dutyTime:dt3})
|
|
|
+ }
|
|
|
+
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if(!daily.duties[dt1]){
|
|
|
+ daily.duties[dt1]=Object.assign({},blankDuty,{dutyTime:dt1})
|
|
|
+ }
|
|
|
+ if(!daily.duties[dt2]){
|
|
|
+ daily.duties[dt2]=Object.assign({},blankDuty,{dutyTime:dt2})
|
|
|
+ }
|
|
|
+ if(!daily.duties[dt3]){
|
|
|
+ daily.duties[dt3]=Object.assign({},blankDuty,{dutyTime:dt3})
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ rptDatas.value=resp.data
|
|
|
+
|
|
|
+ nextTick(()=>{
|
|
|
+ initSize()
|
|
|
+ })
|
|
|
+
|
|
|
+ }).catch(err=>{
|
|
|
+ btnStatTag.value=0
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
onMounted(()=>{
|
|
|
setTimeout(()=>{
|
|
|
- console.log(rpt_body.value.clientHeight,rpt_body.value.offsetHeight)
|
|
|
- console.log(rpt_page.value.offsetHeight)
|
|
|
initSize()
|
|
|
},100)
|
|
|
|
|
|
})
|
|
|
|
|
|
const initSize=()=>{
|
|
|
+
|
|
|
//报表内容区高度设置
|
|
|
rptBodyH.value=rpt_page.value.clientHeight-rpt_title.value.offsetHeight-rpt_header.value.offsetHeight-5
|
|
|
let diffH=rpt_body.value.offsetHeight-rpt_body.value.clientHeight
|
|
|
fixedBodyH.value=rptBodyH.value-diffH-1
|
|
|
- //固定列首格高度设置
|
|
|
|
|
|
+ //固定列首格高度设置
|
|
|
let hdtab=rpt_header.value.querySelector('table')
|
|
|
- console.log(hdtab.rows[0].cells[0].clientHeight)
|
|
|
-
|
|
|
let fixedHdtab=fixed_header.value.querySelector('table')
|
|
|
fixedHdtab.rows[0].cells[0].style.height=(hdtab.rows[0].cells[0].clientHeight+0.5)+'px'
|
|
|
}
|
|
|
+
|
|
|
+ const synFixedClmVal=()=>{
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ const store=useHomeStore()
|
|
|
+ const {currentTreeNode} = storeToRefs(store)
|
|
|
+ watch(currentTreeNode,(newNode, oldNode)=>{
|
|
|
+ if(newNode!=null && newNode.nodeType=='org'){
|
|
|
+ queryForm.orgId=newNode.id
|
|
|
+ queryForm.orgName=newNode.name
|
|
|
+ }
|
|
|
+
|
|
|
+ },{ immediate: true })
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
@import url('rpt.css');
|
|
|
-
|
|
|
- .rpt-page{
|
|
|
+ .out-page{
|
|
|
height: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+ .out-top{
|
|
|
+ height:60px;
|
|
|
+ padding:10px 20px;
|
|
|
+ border-bottom: 1px solid #e8e8e8;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+ .rpt-page{
|
|
|
+ height: calc(100% - 60px);
|
|
|
}
|
|
|
.sub-title{
|
|
|
display: flex;
|
|
@@ -218,4 +535,17 @@
|
|
|
.rpt-table-fixed .rpt-table-body{
|
|
|
height: v-bind(fixedBodyH+'px');
|
|
|
}
|
|
|
+
|
|
|
+ .rpt-table-body .el-form-item{
|
|
|
+ margin:0px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-input.rpt-table-cell{
|
|
|
+ height: 127px;
|
|
|
+ padding:0px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-input.rpt-table-cell:deep(.el-input__inner){
|
|
|
+ height:100%;
|
|
|
+ }
|
|
|
</style>
|