Selaa lähdekoodia

基本完成,除操作记录外。

soft5566 3 vuotta sitten
vanhempi
commit
d2b8234861

+ 64 - 62
package.json

@@ -1,63 +1,65 @@
 {
-  "name": "vue-admin-template",
-  "version": "4.4.0",
-  "description": "A vue admin template with Element UI & axios & iconfont & permission control & lint",
-  "author": "Pan <panfree23@gmail.com>",
-  "scripts": {
-    "dev": "vue-cli-service serve",
-    "build:prod": "vue-cli-service build",
-    "build:stage": "vue-cli-service build --mode staging",
-    "preview": "node build/index.js --preview",
-    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
-    "lint": "eslint --ext .js,.vue src",
-    "test:unit": "jest --clearCache && vue-cli-service test:unit",
-    "test:ci": "npm run lint && npm run test:unit"
-  },
-  "dependencies": {
-    "axios": "0.18.1",
-    "core-js": "3.6.5",
-    "echarts": "^5.3.3",
-    "element-ui": "2.13.2",
-    "js-cookie": "2.2.0",
-    "normalize.css": "7.0.0",
-    "nprogress": "0.2.0",
-    "path-to-regexp": "2.4.0",
-    "vue": "2.6.10",
-    "vue-router": "3.0.6",
-    "vuex": "3.1.0"
-  },
-  "devDependencies": {
-    "@vue/cli-plugin-babel": "4.4.4",
-    "@vue/cli-plugin-eslint": "4.4.4",
-    "@vue/cli-plugin-unit-jest": "4.4.4",
-    "@vue/cli-service": "4.4.4",
-    "@vue/test-utils": "1.0.0-beta.29",
-    "autoprefixer": "9.5.1",
-    "babel-eslint": "10.1.0",
-    "babel-jest": "23.6.0",
-    "babel-plugin-dynamic-import-node": "2.3.3",
-    "chalk": "2.4.2",
-    "connect": "3.6.6",
-    "eslint": "6.7.2",
-    "eslint-plugin-vue": "6.2.2",
-    "html-webpack-plugin": "3.2.0",
-    "mockjs": "1.0.1-beta3",
-    "runjs": "4.3.2",
-    "sass": "1.26.8",
-    "sass-loader": "8.0.2",
-    "script-ext-html-webpack-plugin": "2.1.3",
-    "serve-static": "1.13.2",
-    "svg-sprite-loader": "4.1.3",
-    "svgo": "1.2.2",
-    "vue-template-compiler": "2.6.10"
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions"
-  ],
-  "engines": {
-    "node": ">=8.9",
-    "npm": ">= 3.0.0"
-  },
-  "license": "MIT"
-}
+	"name": "vue-admin-template",
+	"version": "4.4.0",
+	"description": "A vue admin template with Element UI & axios & iconfont & permission control & lint",
+	"author": "Pan <panfree23@gmail.com>",
+	"scripts": {
+		"build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
+		"build:report": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build --report",
+		"build:prod": "vue-cli-service build",
+		"build:stage": "vue-cli-service build --mode staging",
+		"dev": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",
+		"preview": "node build/index.js --preview",
+		"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
+		"lint": "eslint --ext .js,.vue src",
+		"test:unit": "jest --clearCache && vue-cli-service test:unit",
+		"test:ci": "npm run lint && npm run test:unit"
+	},
+	"dependencies": {
+		"axios": "0.18.1",
+		"core-js": "3.6.5",
+		"echarts": "^5.3.3",
+		"element-ui": "2.13.2",
+		"js-cookie": "2.2.0",
+		"normalize.css": "7.0.0",
+		"nprogress": "0.2.0",
+		"path-to-regexp": "2.4.0",
+		"vue": "2.6.10",
+		"vue-router": "3.0.6",
+		"vuex": "3.1.0"
+	},
+	"devDependencies": {
+		"@vue/cli-plugin-babel": "4.4.4",
+		"@vue/cli-plugin-eslint": "4.4.4",
+		"@vue/cli-plugin-unit-jest": "4.4.4",
+		"@vue/cli-service": "4.4.4",
+		"@vue/test-utils": "1.0.0-beta.29",
+		"autoprefixer": "9.5.1",
+		"babel-eslint": "10.1.0",
+		"babel-jest": "23.6.0",
+		"babel-plugin-dynamic-import-node": "2.3.3",
+		"chalk": "2.4.2",
+		"connect": "3.6.6",
+		"eslint": "6.7.2",
+		"eslint-plugin-vue": "6.2.2",
+		"html-webpack-plugin": "3.2.0",
+		"mockjs": "1.0.1-beta3",
+		"runjs": "4.3.2",
+		"sass": "1.26.8",
+		"sass-loader": "8.0.2",
+		"script-ext-html-webpack-plugin": "2.1.3",
+		"serve-static": "1.13.2",
+		"svg-sprite-loader": "4.1.3",
+		"svgo": "1.2.2",
+		"vue-template-compiler": "2.6.10"
+	},
+	"browserslist": [
+		"> 1%",
+		"last 2 versions"
+	],
+	"engines": {
+		"node": ">=8.9",
+		"npm": ">= 3.0.0"
+	},
+	"license": "MIT"
+}

+ 8 - 0
src/api/userMgr.js

@@ -78,4 +78,12 @@ export function getRechargeClass() {
 		url: '/airManage/rechargequeryRelb.action',
 		method: 'post'
 	})
+}
+
+// 总余额
+export function getTotal_balance() {
+	return request({
+		url: '/airManage/usersqueryTongji.action',
+		method: 'post'
+	})
 }

+ 12 - 10
src/views/index/index.vue

@@ -338,10 +338,10 @@
 						let tmpData = [];
 						let rowData = {};
 						let columns = [{
-							prop: 'floor',  // 数据显示对应的列名
-							label: '楼层',  // 显示的标签
-							align: "center",  // 文本对齐方式
-							width: 40  // 列宽
+							prop: 'floor', // 数据显示对应的列名
+							label: '楼层', // 显示的标签
+							align: "center", // 文本对齐方式
+							width: 40 // 列宽
 						}];
 						for (var i = 0; i < data.length; i++) {
 							rowData = {
@@ -483,8 +483,7 @@
 						this.yujing_tableData = [];
 						for (var i = 0; i < res.monthT.length; i++) {
 							this.yujing_tableData.push({
-								deviceId: res.monthT[i].dom + ' ' + res.monthT[i].air_name + ' ' + res
-									.monthT[i].air_config,
+								deviceId: res.monthT[i].dom + ' ' + res.monthT[i].air_name + ' ' + res.monthT[i].air_config,
 								warningTime: res.monthT[i].time,
 								operator: res.monthT[i].user_name,
 								durationUse: res.monthT[i].duration_use,
@@ -534,7 +533,7 @@
 				this.showThisMonthRecharge.loading = true
 
 				thisMonthRecharge().then((res) => {
-					// console.log(res);
+					console.log(res);
 					if (typeof res.code == 'undefined' || res.code == '') {
 						this.$message.error('返回数据格式问题,code未获取到!')
 						return
@@ -542,12 +541,15 @@
 
 					if (res.code == 200) {
 						this.showThisMonthRecharge.time = res.time
-						this.showThisMonthRecharge.amount = res.zongRe.tong
+						this.showThisMonthRecharge.online_amount = res.zongRe // 线上充值
+						this.showThisMonthRecharge.offline_amount = res.zongRo // 线下充值
+						this.showThisMonthRecharge.amount = res.zongRe + res.zongRo // 总充值
 					} else if (res.code == 205) {
 						this.showThisMonthRecharge.time = getFormatDateTime('datetime');
-						// this.$message.error('本月充值:' + res.message)
+						this.$message.error('本月充值:' + res.message)
 					} else {
-						this.$message.error(res.message)
+						this.showThisMonthRecharge.time = getFormatDateTime('datetime');
+						this.$message.error('本月充值:' + res.message)
 					}
 				}).catch((err) => {
 					// console.log(err);

+ 11 - 26
src/views/rechargeRecord/index.vue

@@ -30,12 +30,9 @@
 							</el-form-item>
 							<el-form-item label="">
 								<el-select v-model="formInline.state" placeholder="支付状态" @change="search_state_change">
-									<!-- <el-option label="已支付已到账" value="2"></el-option>
-									<el-option label="已支付未到账" value="1"></el-option>
-									<el-option label="未支付" value="0"></el-option> -->
-									<el-option label="全部" value="0"></el-option>
-									<el-option label="线上" value="1"></el-option>
-									<el-option label="线下" value="2"></el-option>
+									<el-option label="全部" value="1"></el-option>
+									<el-option label="线上" value="2"></el-option>
+									<el-option label="线下" value="3"></el-option>
 								</el-select>
 							</el-form-item>
 						</el-form>
@@ -56,11 +53,6 @@
 									<span>{{ scope.row.phone }}</span>
 								</template>
 							</el-table-column>
-							<!-- <el-table-column label="身份证号" align="center" width="150">
-								<template slot-scope="scope">
-									{{scope.row.sfzh}}
-								</template>
-							</el-table-column> -->
 							<el-table-column label="充值金额(元)" align="center" width="200">
 								<template slot-scope="scope">
 									<span>{{ scope.row.account }}</span>
@@ -73,17 +65,16 @@
 							</el-table-column>
 							<el-table-column label="支付状态" align="center" width="150">
 								<template slot-scope="scope">
-									<!-- <span v-if="scope.row.state == 0" class="txt-cell-red">未支付</span>
-									<span v-else-if="scope.row.state == 1" class="txt-cell-red">已支付未到账</span>
-									<span v-else class="txt-cell-green">已支付已到账</span> -->
+									<span v-if="scope.row.state == '未支付'" class="txt-cell-red">{{scope.row.state}}</span>
+									<span v-else class="txt-cell-green">{{scope.row.state}}</span>
 									<!-- 线上 -->
-									<span v-if="scope.row.state == 1" class="txt-cell-green">充值己到账</span>
+									<!-- <span v-if="scope.row.state == 1" class="txt-cell-green">充值己到账</span>
 									<span v-else-if="scope.row.state == 2" class="txt-cell-red">充值未到账</span>
-									<span v-else-if="scope.row.state == 3" class="txt-cell-red">未到账</span>
+									<span v-else-if="scope.row.state == 3" class="txt-cell-red">未到账</span> -->
 									<!-- 线下 -->
-									<span v-else-if="scope.row.state == 4" class="txt-cell-green">补充</span>
+									<!-- <span v-else-if="scope.row.state == 4" class="txt-cell-green">补充</span>
 									<span v-else-if="scope.row.state == 5" class="txt-cell-green">赠送</span>
-									<span v-else class="txt-cell-red">未接收到值</span>
+									<span v-else class="txt-cell-red">未接收到值</span> -->
 								</template>
 							</el-table-column>
 							<el-table-column label="交易流水号" align="center">
@@ -149,7 +140,7 @@
 					user: '',
 					startTime: '',
 					endTime: '',
-					state: '0'
+					state: '1'
 				},
 				tableData: [],
 				cond_data: {},
@@ -228,13 +219,7 @@
 				getThreeData(this.cond_data).then((res) => {
 					// console.log(res);
 					if (res.code == 200) {
-						if (typeof res.zongRo == 'undefined') {
-							res.zongRo = 0; // 测试数据,以防undefined,上线需删除
-						}
-						if (typeof res.zongRo == 'undefined') {
-							res.numRo = 0; // 测试数据,以防undefined,上线需删除
-						}
-						this.total_balance = res.TotalYe.toFixed(2); // 总余额
+						this.total_balance = res.TotalYe;
 						// 总充值
 						this.recharge = {
 							online: res.zongRecharge.toFixed(2), // 线上总充值

+ 2 - 2
src/views/serveAC/index.vue

@@ -1596,8 +1596,8 @@
 						// 填充数据
 						this.open_number = res.onNum; // 已开启
 						this.warning_number = res.stateNum; // 预警台数
-						// this.offline_device_number = res.offlineNum; // 离线数量
-						// this.shutdown_device_number = res.shutDownNum​​; // 关机数量
+						this.offline_device_number = res.offlineNum // 离线数量
+						this.shutdown_device_number = res.shutDownNum // 关机数量
 					} else {
 						this.open_number = 0;
 						this.warning_number = 0;

+ 59 - 29
src/views/userMgr/index.vue

@@ -4,7 +4,10 @@
 			<el-col :span="24">
 				<div class="cell">
 					<div class="cell-title">
-						<div class="title">用户管理</div>
+						<div class="title-left">
+							<div class="title">用户管理</div>
+							<div class="title-detail">总余额:{{total_balance}}元</div>
+						</div>
 						<div class="title-right">
 							<el-button type="primary" @click="handler_download_excel">导出表单</el-button>
 							<el-button type="warning" @click="add_user">新增用户</el-button>
@@ -19,16 +22,14 @@
 								<el-button type="warning" @click="btn_search">查询</el-button>
 							</el-form-item>
 							<el-form-item label="">
-								<el-select v-model="formInline.category" placeholder="类别" @change="btn_search"
-									clearable>
-									<el-option v-for="item in formInline.options" :key="item.id" :label="item.lb"
-										:value="item.lb">
+								<el-select v-model="formInline.category" placeholder="类别" @change="btn_search" clearable>
+									<el-option v-for="item in formInline.options" :key="item.id" :label="item.lb" :value="item.lb">
 									</el-option>
 								</el-select>
 							</el-form-item>
 						</el-form>
-						<el-table :data="tableData" height="510" style="width: 100%" :cell-style="cell_style"
-							v-loading="loading" :header-cell-style="header_cell_style">
+						<el-table :data="tableData" height="510" style="width: 100%" :cell-style="cell_style" v-loading="loading"
+							:header-cell-style="header_cell_style">
 							<el-table-column label="序号" align="center" width="100">
 								<template slot-scope="scope">
 									<span>{{(pagination.currentPage - 1) * pagination.pageSize + scope.$index + 1}}</span>
@@ -77,8 +78,7 @@
 							</el-table-column>
 						</el-table>
 						<div class="pagination-table">
-							<el-pagination @current-change="currentPageChange"
-								:current-page.sync="pagination.currentPage" :page-size="pagination.pageSize"
+							<el-pagination @current-change="currentPageChange" :current-page.sync="pagination.currentPage" :page-size="pagination.pageSize"
 								layout="prev, pager, next, jumper" :total="pagination.total">
 							</el-pagination>
 						</div>
@@ -87,8 +87,8 @@
 			</el-col>
 		</el-row>
 		<!-- 新增用户对话框 -->
-		<el-dialog title="新增用户" custom-class="add-user-dialog" :visible.sync="dialogAddUserVisible"
-			:close-on-click-modal="false" :close-on-press-escape="false" @close="dialog_close('addUserForm')">
+		<el-dialog title="新增用户" custom-class="add-user-dialog" :visible.sync="dialogAddUserVisible" :close-on-click-modal="false" :close-on-press-escape="false"
+			@close="dialog_close('addUserForm')">
 			<el-form :model="addForm" ref="addUserForm" :rules="addFormRules">
 				<el-form-item label="姓  名:" :label-width="formLabelWidth" :required="true" prop="user_name">
 					<el-input v-model="addForm.user_name" autocomplete="off" maxlength="10" ref="username_focus">
@@ -102,21 +102,18 @@
 				</el-form-item>
 				<el-form-item label="类  别:" :label-width="formLabelWidth" :required="true" prop="classfy">
 					<el-select v-model="addForm.classfy" placeholder="类别">
-						<el-option v-for="item in addForm.options_class" :key="item.id" :label="item.lb"
-							:value="item.lb">
+						<el-option v-for="item in addForm.options_class" :key="item.id" :label="item.lb" :value="item.lb">
 						</el-option>
 					</el-select>
 				</el-form-item>
 				<el-form-item label="年  级:" :label-width="formLabelWidth" :required="true" prop="bj">
 					<el-select v-model="addForm.bj" placeholder="年级">
-						<el-option v-for="item in addForm.options_grade" :key="item.id" :label="item.nj"
-							:value="item.nj">
+						<el-option v-for="item in addForm.options_grade" :key="item.id" :label="item.nj" :value="item.nj">
 						</el-option>
 					</el-select>
 				</el-form-item>
 				<el-form-item label="备  注:" :label-width="formLabelWidth">
-					<el-input type="textarea" resize="none" :rows="4" placeholder="请输入内容" v-model="addForm.remark"
-						maxlength="100" show-word-limit></el-input>
+					<el-input type="textarea" resize="none" :rows="4" placeholder="请输入内容" v-model="addForm.remark" maxlength="100" show-word-limit></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
@@ -125,8 +122,8 @@
 			</div>
 		</el-dialog>
 		<!-- 充值对话框 -->
-		<el-dialog title="充值" custom-class="chongzhi-dialog" :visible.sync="dialogChongzhiVisible"
-			:close-on-click-modal="false" :close-on-press-escape="false" @close="dialog_close('chongzhiForm')">
+		<el-dialog title="充值" custom-class="chongzhi-dialog" :visible.sync="dialogChongzhiVisible" :close-on-click-modal="false" :close-on-press-escape="false"
+			@close="dialog_close('chongzhiForm')">
 			<el-form :model="form" ref="chongzhiForm" :rules="chongzhiRules">
 				<el-form-item label="充值账号:" :label-width="formLabelWidth">
 					<div>{{form.sfzh}}</div>
@@ -144,8 +141,7 @@
 					</el-select>
 				</el-form-item>
 				<el-form-item label="备  注:" :label-width="formLabelWidth">
-					<el-input type="textarea" resize="none" :rows="4" placeholder="请输入内容" v-model="form.desc"
-						maxlength="100" show-word-limit></el-input>
+					<el-input type="textarea" resize="none" :rows="4" placeholder="请输入内容" v-model="form.desc" maxlength="100" show-word-limit></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
@@ -167,7 +163,8 @@
 		downloadExcel,
 		getUserClass,
 		getUserGrade,
-		getRechargeClass
+		getRechargeClass,
+		getTotal_balance
 	} from '@/api/userMgr';
 	import {
 		option
@@ -256,6 +253,7 @@
 				}, 100);
 			};
 			return {
+				total_balance: 0.0.toFixed(2), // 总余额
 				// 当前用户的权限
 				currentUserLevel: this.$store.state.user.level,
 				// 弹出对话框数据
@@ -345,11 +343,31 @@
 			this.get_user_grade()
 			// 获取充值类别
 			this.get_recharge_class()
+			// 总余额
+			this.getTotal_balance()
 		},
 		mounted() {
 			document.getElementsByClassName("el-pagination__jump")[0].childNodes[0].nodeValue = "跳至";
 		},
 		methods: {
+			getTotal_balance() {
+				getTotal_balance().then((res) => {
+					// console.log(res);
+					if (typeof res.code == 'undefined' || res.code == '') {
+						this.$message.error('返回数据格式问题,code未获取到!')
+						return
+					}
+
+					if (res.code == 200) {
+						this.total_balance = res.TotalYe;
+					} else {
+						this.$message.error(res.message);
+					}
+				}).catch((err) => {
+					// console.log(err);
+					this.$message.error(err.message)
+				})
+			},
 			/**
 			 * 充值类别
 			 */
@@ -669,12 +687,24 @@
 						margin-bottom: 30px;
 						padding-bottom: 30px;
 						border-bottom: 1px solid #CCCCCC;
-
-						.title {
-							font-size: 22px;
-							font-family: Microsoft YaHei-3970(82674968);
-							font-weight: bold;
-							color: #1A202B;
+						
+						.title-left {
+							display: flex;
+							align-items: center;
+						
+							.title {
+								font-size: 22px;
+								font-family: Microsoft YaHei-3970(82674968);
+								font-weight: bold;
+								color: #1A202B;
+							}
+						
+							.title-detail {
+								margin-left: 50px;
+								font-size: 18px;
+								font-family: Microsoft YaHei-3970(82674968);
+								color: #1A202B;
+							}
 						}
 
 						.title-right {
@@ -847,4 +877,4 @@
 	.dialog-footer {
 		height: 68px !important;
 	}
-</style>
+</style>