my new 高精度模板【高精度】

本文介绍了一个大数运算类的实现,包括加减乘除等基本运算,并通过实例展示了其应用。该实现使用了模10的方式进行数据存储,以减少溢出风险。文章还提到了在洛谷试炼场上的测试情况。

几个小时码出来的东西。
还不错,貌似没什么bug,只不过有事会玄学水土不服(雾)(例如我校OJ上)。
几分钟就把洛谷试炼场过掉了。
只不过没有压位,有些遗憾,以后还要码一码。 

换了一种代码风格,感觉好一些,但是需要习惯习惯。 

2018.7.30:upd 查了一点bug

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int LEN=1005,MOD=10;
char STR[LEN];
struct bign{
	int len,num[LEN];
	bign(){
		memset(num,0,sizeof(num));
		len=1;
	}
	bign operator = (const char s[]){
		memset(num,0,sizeof(num));
		len=strlen(s);
		for(int i=len;i>=1;i--){
			if(s[len-i]<'0'||s[len-i]>'9'){
				num[i]=s[len-i]-'A'+10;
			}
			else num[i]=s[len-i]-'0';
		}
		return *this;
	}
	bign operator = (int n){
		memset(num,0,sizeof(num));
		len=0;
		do{
			num[++len]=n%MOD;
			n/=MOD;
		}while(n);
		return *this;
	}
	bign operator = (long long n){
		memset(num,0,sizeof(num));
		len=0;
		do{
			num[++len]=n%MOD;
			n/=MOD;
		}while(n);
		return *this;
	}
	bign(const char n[]){
		*this=n;
	}
	bign(const int n){
		*this=n;
	}
	bign(const long long n){
		*this=n;
	}
	bool operator < (const bign &b) const{
		if(len!=b.len) return len<b.len;
		for(int i=len;i>=1;i--){
			if(num[i]!=b.num[i]){
				return num[i]<b.num[i];
			}
		}
		return false;
	}
	bool operator > (const bign &n) const{
		return n<*this;
	}
	bool operator <= (const bign &n) const{
		return !(n<*this);
	}
	bool operator >= (const bign &n) const{
		return !(*this<n);
	}
	bool operator == (const bign &n) const{
		return !(n<*this||*this<n);
	}
	bool operator != (const bign &n) const{
		return n<*this||*this<n;
	}
	void clear(){
		while(!num[len]&&len>1) len--;
	}
	bign operator + (const bign &b){
		bign c;
		c.len=max(len,b.len);
		int jw=0;
		for(int i=1;i<=c.len;i++){
			c.num[i]=num[i]+b.num[i]+jw;
			jw=c.num[i]/MOD;
			c.num[i]%=MOD;
		}
		if(jw){
			c.num[++c.len]=jw;
		}
		c.clear();
		return c;
	}
	bign operator += (const bign &b){
		*this=*this+b;
		return *this;
	}
	bign operator - (const bign &b){
		bign a=*this,c;
		c.len=max(a.len,b.len);
		for(int i=1;i<=c.len;i++){
			if(a.num[i]<b.num[i]){
				a.num[i]+=MOD;
				a.num[i+1]--;
			}
			c.num[i]=a.num[i]-b.num[i];
		}
		c.clear();
		return c;
	}
	bign operator -= (const bign &b){
		*this=*this-b;
		return *this;
	}
	bign operator * (const int &b){
		bign c;
		c.len=len;
		int jw=0;
		for(int i=1;i<=len;i++){
			c.num[i]=num[i]*b+jw;
			jw=c.num[i]/MOD;
			c.num[i]%=MOD;
		}
		while(jw){
			c.num[++c.len]=jw%MOD;
			jw/=MOD;
		}
		c.clear();
		return c;
	}
	bign operator *= (const int &b){
		*this=*this*b;
		return *this;
	}
	bign operator * (const bign &b){
		bign c;
		c.len=len+b.len-1;
		for(int i=1;i<=len;i++){
			for(int j=1;j<=b.len;j++){
				c.num[i+j-1]+=num[i]*b.num[j];
			}
		}
		int jw=0;
		for(int i=1;i<=c.len;i++){
			c.num[i]+=jw;
			jw=c.num[i]/MOD;
			c.num[i]%=MOD;
		}
		while(jw!=0){
			c.num[++c.len]=jw%MOD;
			jw/=MOD;
		}
		c.clear();
		return c;
	}
	bign operator *= (const bign &b){
		*this=*this*b;
		return *this;
	}
	bign operator / (const int b){
		bign c;
		c.len=len;
		int yu=0;
		for(int i=len;i>=1;i--){
			yu=yu*10+num[i];
			c.num[i]=yu/b;
			yu%=b;
		}
		c.clear();
		return c;
	}
	bign operator /= (const int &b){
		*this=*this/b;
		return *this;
	}
	bign operator / (const bign &b){
		bign a=*this,c,tmpb=b;
		int now;
		c.len=1;
		while(tmpb*MOD<=a){
			tmpb*=MOD;
			c.len++;
		}
		now=c.len;
		while(a>=b){
			while(tmpb>a){
				tmpb/=MOD;
				now--;
			}
			a-=tmpb;
			c.num[now]++;
		}
		c.clear();
		return c;
	}
	bign operator /= (const bign &b){
		*this=*this/b;
		return *this;
	}
	int operator % (const int b)
	{
		int yu=0;
		for(int i=len;i>=1;i--){
			yu=(yu*10+num[i])%b;
		}
		return yu;
	}
	bign operator %= (const int &b){
		*this=*this%b;
		return *this;
	}
	bign operator % (const bign &b){
		bign a=*this,tmpb=b;
		while(tmpb*MOD<=a){
			tmpb*=MOD;
		}
		while(a>=b){
			while(tmpb>a){
				tmpb/=MOD;
			}
			a-=tmpb;
		}
		a.clear();
		return a;
	}
	bign operator %= (const bign &b){
		*this=*this%b;
		return *this;
	}
	bign operator ^ (int p){
		bign a=1,x=*this;
		while(p){
			if(p&1) a=a*x;
			x=x*x;
			p>>=1;
		}
		return a;
	}
	bign operator ^= (const int &b){
		*this=*this^b;
		return *this;
	}
	void in(){
		scanf("%s",STR);
		*this=STR;
	}
	void out(){
		for(int i=len;i>=1;i--){
			if(num[i]<10){
				putchar(num[i]+'0');
			}
			else{
				putchar(num[i]+'A'-10);
			}
		}
	}
};
bign a=1;
int main(){
	for(int i=2;i<=100;i++){
		a*=i;
	}
	a.out();
	return 0;
}

 

 

 

转载于:https://www.cnblogs.com/2016gdgzoi471/p/9476917.html

<template> <div class="mod-config"> <el-form :inline="true" :model="dataForm" ref="dataForm" @keyup.enter.native="onSubmit(0)"> <el-form-item label="项目" prop="projectId" v-if="projectIdShow" style="margin-left: 0.05rem;"> <el-select v-model="dataForm.projectId" placeholder="请选择项目" > <el-option v-for="item in projectIds" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="电池编码" prop="deviceId"> <!-- <el-input v-model="dataForm.deviceId" placeholder="设备编号" clearable></el-input> --> <el-autocomplete style="width:3.3rem" size="normal" v-model="dataForm.deviceId" :popper-append-to-body="false" :fetch-suggestions="querySearchAsync" @select="handleSelect" placeholder="电池编码,如U231221040200001"> </el-autocomplete> </el-form-item> <el-form-item label="数据来源" prop="flag"> <el-select v-model="dataForm.flag" placeholder="请选择" clearable> <el-option v-for="item in flagIds" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="上报时间"> <el-date-picker v-model="dataForm.starttime" type="datetime" placeholder="选择起始时间" align="right" :picker-options="pickerOptions" clearable> </el-date-picker> 至 <el-date-picker v-model="dataForm.endtime" type="datetime" placeholder="选择结束时间" default-time="00:00:00" clearable> </el-date-picker> </el-form-item> <el-form-item label="SN码" prop="sn"> <el-input v-model="dataForm.sn" placeholder="输入sn码" clearable></el-input> </el-form-item> <el-form-item> <el-input v-model="dataForm.key" placeholder="其他参数名" clearable></el-input> </el-form-item> </el-form-item> <el-form-item label="电池类型" style="margin-left: 0.25rem;"> <el-select v-model="dataForm.batteryKind" placeholder="电池类型" clearable style="width:1.5rem"> <el-option v-for="item in batteryKindOptions" :key="item.value" :label="item.label" :value="item.value" :disabled="item.disabled"> </el-option> </el-select> </el-form-item> <el-form-item> <el-button @click="onSubmit(0)" type="success" icon="el-icon-search">查询</el-button> <el-button @click="reset()" type="primary" icon="el-icon-refresh">重置</el-button> <!-- <el-button v-if="isAuth('maya:mybatteryinfolastest:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> --> <el-button v-if="isAuth('maya:mybatteryinfolastest:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> <el-button v-if="isAuth('maya:mybatteryinfolastest:list')" type="info" @click="list2Export()">导出</el-button> </el-form-item> </el-form> <el-table :height="tableHeight" :data="dataList" border v-loading="dataListLoading" @selection-change="selectionChangeHandle" style="width: 100%;"> <el-table-column type="selection" header-align="center" align="center" width="50"> </el-table-column> <!-- <el-table-column prop="id" header-align="center" align="center" label="ID"> </el-table-column> --> <el-table-column prop="batteryId" header-align="center" align="center" label="电池编码" width="140"> </el-table-column> <el-table-column prop="sn" header-align="center" align="center" label="sn码" show-overflow-tooltip> </el-table-column> <el-table-column align="center" prop="batteryKind" label="电池类型"> <template slot-scope="scope"> <el-button class="custom-size-my" :stroke-width="5" :type="getBatteryKindStyle(scope.row.batteryKind)" size="mini" round > {{ getBatteryKindText(scope.row.batteryKind) }} </el-button> </template> </el-table-column> <el-table-column prop="uploadTime" header-align="center" align="center" label="上报时间" width="140"> </el-table-column> <el-table-column prop="batteryVoltage" header-align="center" align="center" label="电压(mV)"> </el-table-column> <el-table-column prop="cellVoltage" header-align="center" align="center" label="电芯电压" show-overflow-tooltip> </el-table-column> <el-table-column prop="batteryCurrent" header-align="center" align="center" label="电流(mA)"> </el-table-column> <el-table-column prop="batterySoc" header-align="center" align="center" label="SOC(%)"> </el-table-column> <el-table-column prop="batteryHardVersion" header-align="center" align="center" label="硬件版本"> </el-table-column> <el-table-column prop="batterySoftVersion" header-align="center" align="center" label="软件版本" width="120"> </el-table-column> <el-table-column prop="batteryWorkModeValue" header-align="center" align="center" label="电池状态" width="140"> </el-table-column> <el-table-column prop="batteryProtectCode" header-align="center" align="center" label="保护状态"> </el-table-column> <el-table-column prop="batteryErrorCode" header-align="center" align="center" label="电池故障码" width="100" show-overflow-tooltip> </el-table-column> <el-table-column prop="batteryTemperatureMax" header-align="center" align="center" label="电芯最高温度(℃)" width="140"> </el-table-column> <el-table-column prop="batteryTemperatureMin" header-align="center" align="center" label="电芯最低温度(℃)" width="140"> </el-table-column> <el-table-column prop="batteryVoltageMax" header-align="center" align="center" label="电芯最高电压" width="140"> </el-table-column> <el-table-column prop="batteryVoltageMin" header-align="center" align="center" label="电芯最低电压" width="140"> </el-table-column> <el-table-column prop="mosStatus" header-align="center" align="center" label="MOS状态"> </el-table-column> <el-table-column prop="mosTemp" header-align="center" align="center" label="MOS温度(℃)" width="100"> </el-table-column> <el-table-column prop="batteryCycleTimes" header-align="center" align="center" label="循环次数"> </el-table-column> <el-table-column prop="soh" header-align="center" align="center" label="SOH"> </el-table-column> <el-table-column prop="batteryTemperatureAvg" header-align="center" align="center" label="平均温度(℃)" width="100"> </el-table-column> <el-table-column prop="chargeMode" header-align="center" align="center" label="充电模式" :formatter = "chargeModeFormat" > </el-table-column> <el-table-column prop="lowBatteryWarn" header-align="center" align="center" label="低电量提示" width="100" :formatter = "lowBatteryWarnFormat" > </el-table-column> <el-table-column prop="chargeCurrentMax" header-align="center" align="center" label="最大充电电流(mA)" width="140"> </el-table-column> <el-table-column prop="dischargeCurrentMax" header-align="center" align="center" label="最大放电电流(mA)" width="140"> </el-table-column> <el-table-column prop="chargeCurrentAvg" header-align="center" align="center" label="平均充电电流(mA)" width="140"> </el-table-column> <el-table-column prop="dischargeCurrentAvg" header-align="center" align="center" label="平均放电电流(mA)" width="140"> </el-table-column> <el-table-column prop="steadyStatus" header-align="center" align="center" label="均衡状态"> </el-table-column> <!-- <el-table-column prop="model" header-align="center" align="center" label="设备型号"> </el-table-column> <el-table-column prop="manufacture" header-align="center" align="center" label="设备厂家"> </el-table-column> --> <el-table-column prop="imei" header-align="center" align="center" label="IMEI" width="150"> </el-table-column> <el-table-column prop="imsi" header-align="center" align="center" label="IMSI" width="150"> </el-table-column> <el-table-column prop="iccid" header-align="center" align="center" label="ICCID" width="160"> </el-table-column> <!-- <el-table-column prop="trackerHardwareVersion" header-align="center" align="center" label="tracker硬件版本"> </el-table-column> --> <el-table-column prop="trackerSoftwareVersion" header-align="center" align="center" label="tracker软件版本" width="200"> </el-table-column> <!-- <el-table-column prop="csq" header-align="center" align="center" label="CSQ"> </el-table-column> <el-table-column prop="networkType" header-align="center" align="center" label="网络制式"> </el-table-column> --> <el-table-column prop="locationMode" header-align="center" align="center" label="定位模式"> </el-table-column> <el-table-column prop="longitude" header-align="center" align="center" label="经度" width="150"> </el-table-column> <el-table-column prop="longitudeDirection" header-align="center" align="center" label="经度方向"> </el-table-column> <el-table-column prop="latitude" header-align="center" align="center" label="纬度" width="150"> </el-table-column> <el-table-column prop="latitudeDirection" header-align="center" align="center" label="纬度方向"> </el-table-column> <el-table-column prop="gpsCog" header-align="center" align="center" label="对地航向角(°)" width="120"> </el-table-column> <el-table-column prop="gpsSpeed" header-align="center" align="center" label="gps速度(Km/h)" width="120"> </el-table-column> <el-table-column prop="gpsSignal" header-align="center" align="center" label="gps信号强度" width="120"> </el-table-column> <el-table-column prop="satelliteNum" header-align="center" align="center" label="定位卫星数" width="100"> </el-table-column> <!-- <el-table-column prop="accuracy" header-align="center" align="center" label="定位精度"> </el-table-column> --> <el-table-column prop="flag" header-align="center" align="center" label="数据来源" :formatter = "flagFormat"> </el-table-column> <!-- <el-table-column prop="businessmode" header-align="center" align="center" label="业务模式"> </el-table-column> --> <el-table-column prop="createTime" header-align="center" align="center" label="创建时间" width="140"> </el-table-column> <el-table-column prop="updateTime" header-align="center" align="center" label="更新时间" width="140"> </el-table-column> <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作"> <template slot-scope="scope"> <el-button v-if="isAuth('maya:mybatteryinfolastest:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button> <el-button v-if="isAuth('maya:mybatteryinfolastest:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button> </template> </el-table-column> </el-table> <el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalPage" layout="total, sizes, prev, pager, next, jumper"> </el-pagination> <!-- 弹窗, 新增 / 修改 --> <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> </div> </template> <script> import AddOrUpdate from './mybatteryinfolastest-add-or-update' import { debounce } from '@/utils' // 表格滚动 export default { data () { return { clientHeight: document.documentElement.clientHeight, tableHeight:640,// 定义table高度 // 1:设备主动请求或上报 2:平台主动推送或下指令 3:平台指令反馈的结果 flagIds:[ { value: '1', label: '设备主动请求或上报' }, // { // value: '2', // label: '平台主动推送或下指令' // }, { value: '3', label: '平台指令反馈的结果' }], batteryKindOptions: [ { value: '0', label: '运营' },{ value: '1', label: '售后' },{ value: '2', label: '内测' },{ value: '3', label: '报废' }], dataForm: { sn: '', starttime: '', endtime: '', batteryKind: '', flag: '', deviceId: '', key: '', projectId: '' }, projectIdShow: true, snExportShow: false, projectIds:[], dataList: [], pageIndex: 1, pageSize: 10, totalPage: 0, dataListLoading: false, dataListSelections: [], addOrUpdateVisible: false, updateVisible: false, resultShowVisible: false, pickerOptions: { shortcuts: [{ text: '今天', onClick(picker) { picker.$emit('pick', new Date()); } }, { text: '昨天', onClick(picker) { const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24); picker.$emit('pick', date); } }, { text: '一周前', onClick(picker) { const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', date); } }, { text: '一个月前', onClick(picker) { const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', date); } }, { text: '三个月前', onClick(picker) { const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24 * 90); picker.$emit('pick', date); } }] } } }, components: { AddOrUpdate }, activated () { this.getQueryMenus() this.getDataList() }, methods: { getQueryMenus () { this.$http({ url: this.$http.adornUrl(`/battery/bmsbatteryinfo/getmenus`), method: 'get', params: this.$http.adornParams() }).then(({data}) => { if (data && data.code === 0) { // this.provices = data.data.provices // this.sysStatuses = data.data.sysStatuses // this.alarmStatuses = data.data.alarmStatuses if(data.data.projectPerm===1){ this.dataForm.projectId = data.data.projectPermData //data.data.projectPerm this.projectIdShow = false // 这里只为马牙项目设置了导出功能,项目ID==38 if(data.data.projectPermData === 38 || data.data.projectPermData==='38' || data.data.projectPermData === 39 || data.data.projectPermData==='39' || data.data.projectPermData === 40 || data.data.projectPermData==='40'){ this.snExportShow = true }else{ this.snExportShow = false } }else{ this.dataForm.projectId = data.data.projectPermData //data.data.projectPerm this.projectIds = data.data.projectIds this.projectIdShow = true // 这里只为马牙项目设置了导出功能,项目ID==38 if(data.data.projectPermData === 38 || data.data.projectPermData==='38' || data.data.projectPermData === 39 || data.data.projectPermData==='39' || data.data.projectPermData === 40 || data.data.projectPermData==='40'){ this.snExportShow = true }else{ this.snExportShow = false } } if(this.dataForm.projectId === '' || this.dataForm.projectId === undefined || this.dataForm.projectId === null){ this.dataForm.projectId = 38; this.snExportShow = true } // this.customIds = data.data.customIds } }) }, // 充电模式 1--标准充;2--快充;3--盲充; chargeModeFormat (row, column) { console.log(row.chargeMode) if (row.chargeMode === 1) { return '标准充' } else if (row.chargeMode === 2) { return '快充' }else if (row.chargeMode === 3) { return '盲充' }else{ return '未知' } }, lowBatteryWarnFormat (row, column) { console.log(row.lowBatteryWarn) if (row.lowBatteryWarn === 1) { return '告警' } else{ return '否' } }, flagFormat (row, column) { console.log(row.flag) if (row.flag === 1) { return '设备上报' } else if (row.flag === 2) { return '平台指令' } }, reset(){ this.dataForm = { key: undefined, deviceId: undefined, starttime: undefined, endtime: undefined, flag: undefined, projectId: undefined, }; this.$refs["dataForm"].resetFields(); this.onSubmit(0) }, querySearchAsync(queryString, cb) { clearTimeout(1000); var results = [] // alert('queryString='+queryString) if (queryString == '') { cb(results); } else { //掉接口需要的参数 this.$http({ url: this.$http.adornUrl('/mqtt/mqtttriad/getDeviceIds'), method: 'get', params: this.$http.adornParams({ 'deviceId': queryString, 'projectParameter': this.dataForm.projectParameter }) }).then(({data}) => { if (data && data.code === 0) { // alert(data.data.length) var result = data.data //循环放到一个远程搜索需要的数组 for (let i = 0; i < result.length; i++) { const element = result[i]; // alert(element) results.push({ value: element, id: i }) } cb(results); } else { console.log('没有数据的显示') results = [] cb(results); } }) } }, //点击出现搜索后点击的每一项 handleSelect(item) { this.id = item.id this.name = item.value }, onSubmit(pgindex) { //alert("刷新一下") // 添加参数判断,防止总是跳到第一页 if (pgindex==1) { // alert(pgindex); this.getDataList() }else{ // alert(pgindex); this.pageIndex = 1 this.getDataList() } }, formatJson(filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => v[j])) }, // 导出当前列表 list2Export() { this.$confirm(`确定对数据进行导出操作?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.$http({ url: this.$http.adornUrl('/maya/mybatteryinfolastest/list2Export'), method: 'get', params: this.$http.adornParams({ 'key': this.dataForm.key, 'deviceId': this.dataForm.deviceId, 'starttime': this.dataForm.starttime, 'endtime': this.dataForm.endtime, 'sn': this.dataForm.sn, 'flag': this.dataForm.flag, 'projectId': this.dataForm.projectId }) }).then(({data}) => { if (data && data.code === 0) { this.exportList = data.data require.ensure([], () => { const { export_json_to_excel } = require('../../../vendor/Export2Excel') // const tHeader = ['ID','设备ID','IMEI','ICCID','IMSI','CSQ','经度标识','经度','纬度标识','纬度','GPS行驶速度(km/h)','BMS软件版本号','tracker软件版本','信号强度','GPS定位卫星数','SOC(%)','循环次数','温度最高(电芯℃)','温度最低(电芯℃)','均衡状态','MOS温度(℃)','MOS状态','电池整包电压(mV)','电压最高(单节电芯mV)','电压最低(单节电芯mV)','全电芯电压(mV)','电池包状态','电流(mA)','上传时间','保护状态码','原始数据','故障码','入库时间','更新时间']; // const filterVal = ['id','batteryId','imei','iccid','imsi','csq','longitudeDirection','longitude','latitudeDirection','latitude','gpsSpeed','batterySoftVersion','trackerSoftwareVersion','gpsSignal','satelliteNum','batterySoc','batteryCycleTimes','batteryTemperatureMax','batteryTemperatureMin','steadyStatus','mosTemp','mosStatus','batteryVoltage','batteryVoltageMax','batteryVoltageMin','cellVoltage','batteryWorkMode','batteryCurrent','uploadTime','batteryProtectCode','payload','batteryErrorCode','createTime','updateTime']; const tHeader = ['ID','设备ID','SN码','项目ID','IMEI','ICCID','IMSI','CSQ','经度标识','经度','纬度标识','纬度','GPS行驶速度(km/h)','对地航向角(°)','BMS软件版本号','tracker软件版本','信号强度','GPS定位卫星数','SOC(%)','循环次数','温度最高(电芯℃)','温度最低(电芯℃)','均衡状态','MOS温度(℃)','MOS状态','电池整包电压(mV)','电压最高(单节电芯mV)','电压最低(单节电芯mV)','全电芯电压(mV)','电池包状态','电流(mA)','上传时间','保护状态码','故障码','SOH','平均温度','充电模式(1标准充2快充3盲充)','低电量提示','最大充电电流','最大放电电流','平均充电电流','平均放电电流','入库时间','更新时间']; const filterVal = ['id','batteryId','sn','projectId','imei','iccid','imsi','csq','longitudeDirection','longitude','latitudeDirection','latitude','gpsSpeed','gpsCog','batterySoftVersion','trackerSoftwareVersion','gpsSignal','satelliteNum','batterySoc','batteryCycleTimes','batteryTemperatureMax','batteryTemperatureMin','steadyStatus','mosTemp','mosStatus','batteryVoltage','batteryVoltageMax','batteryVoltageMin','cellVoltage','batteryWorkMode','batteryCurrent','uploadTime','batteryProtectCode','batteryErrorCode','soh','batteryTemperatureAvg','chargeMode','lowBatteryWarn','chargeCurrentMax','dischargeCurrentMax','chargeCurrentAvg','dischargeCurrentAvg','createTime','updateTime']; const list = this.exportList; const data = this.formatJson(filterVal,list); export_json_to_excel(tHeader, data, '马牙电池最新数据导出-('+this.dataForm.key+'_'+this.dataForm.starttime+'-'+this.dataForm.endtime+')'); }) } else { this.$message.error(data.msg) } }) }) }, // 获取数据列表 getDataList () { this.dataListLoading = true this.$http({ url: this.$http.adornUrl('/maya/mybatteryinfolastest/list'), method: 'get', params: this.$http.adornParams({ 'page': this.pageIndex, 'limit': this.pageSize, 'key': this.dataForm.key, 'deviceId': this.dataForm.deviceId, 'starttime': this.dataForm.starttime, 'endtime': this.dataForm.endtime, 'sn': this.dataForm.sn, 'batteryKind': this.dataForm.batteryKind, 'flag': this.dataForm.flag, 'projectId': this.dataForm.projectId }) }).then(({data}) => { if (data && data.code === 0) { this.dataList = data.page.list this.totalPage = data.page.totalCount } else { this.dataList = [] this.totalPage = 0 } this.dataListLoading = false }) }, // 每页数 sizeChangeHandle (val) { this.pageSize = val this.pageIndex = 1 this.getDataList() }, // 当前页 currentChangeHandle (val) { this.pageIndex = val this.getDataList() }, // 多选 selectionChangeHandle (val) { this.dataListSelections = val }, // 新增 / 修改 addOrUpdateHandle (id) { this.addOrUpdateVisible = true this.$nextTick(() => { this.$refs.addOrUpdate.init(id) }) }, getBatteryKindStyle(kind) { const styleMap = { 0: 'success', 1: 'warning', 2: 'primary', 3: 'danger' }; return styleMap[kind] || 'info'; }, getBatteryKindText(kind) { const map = { 0: '运营', 1: '售后', 2: '内测', 3: '报废' }; return map[kind] || '未知类型'; }, // 删除 deleteHandle (id) { var ids = id ? [id] : this.dataListSelections.map(item => { return item.id }) this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.$http({ url: this.$http.adornUrl('/maya/mybatteryinfolastest/delete'), method: 'post', data: this.$http.adornData(ids, false) }).then(({data}) => { if (data && data.code === 0) { this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { this.getDataList() } }) } else { this.$message.error(data.msg) } }) }) } } } </script> 新增一个导入excel按钮,以deviceId为第一列,batteryKind为第二列,解析后以map传入后台,excel不需要表头
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值