浏览代码

首页统计

pengyh 1 年之前
父节点
当前提交
81a797b3f6

+ 10 - 0
src/api/workOrder/orderHome.js

@@ -0,0 +1,10 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+// 获取工单状态统计
+export function getCount(data) {
+  return request({
+    url: `/order/base/count/status/count`,
+    method: 'post',
+    data
+  })
+}

二进制
src/assets/orderHome/djs.png


二进制
src/assets/orderHome/dpg.png


二进制
src/assets/orderHome/ffz.png


二进制
src/assets/orderHome/pj.png


二进制
src/assets/orderHome/yc.png


+ 1 - 1
src/views/workOrder/basicConfiguration/settlementStandard/components/install.vue

@@ -247,7 +247,7 @@ export default {
 							this.$message.error(res.msg);
 						}
 					})
-				}): this.$refs.pageRef.deleteRowData(0)
+				}): this.$refs.pageRef.deleteRowData(0);this.editIndex = null
 			}}>删除</el-button>
         </div>
       )

+ 1 - 1
src/views/workOrder/basicConfiguration/settlementStandard/components/other.vue

@@ -189,7 +189,7 @@ export default {
 							this.$message.error(res.msg);
 						}
 					})
-				}): this.$refs.pageRef.deleteRowData(0)
+				}): this.$refs.pageRef.deleteRowData(0);this.editIndex = null
 			}}>删除</el-button>
         </div>
       )

+ 1 - 1
src/views/workOrder/basicConfiguration/settlementStandard/components/repair.vue

@@ -271,7 +271,7 @@ export default {
 							this.$message.error(res.msg);
 						}
 					})
-				}): this.$refs.pageRef.deleteRowData(0)
+				}): this.$refs.pageRef.deleteRowData(0);this.editIndex = null
 			}}>删除</el-button>
         </div>
       )

+ 86 - 47
src/views/workOrder/orderHome/index.vue

@@ -2,7 +2,7 @@
 	<div class="dashboard_container">
 		<div class="container_top">
 			<div class="tab" v-for="(item,index) in tabs" :key='index'>
-				<el-image :src="item.url" fit="fit"></el-image>
+				<img :src="item.url" fit="fit"></img>
 				<div class="text">
 					<div class="title">{{item.title}}</div>
 					<div class="num">{{item.num}}</div>
@@ -36,19 +36,74 @@
 </template>
 
 <script>
+	import { getCount } from "@/api/workOrder/orderHome";
 	export default{
 		data(){
 			return {
-				tabs: [{title: '待派工',num: 12,url: ''},{title: '待接收',num: 22,url: ''},{title: '服务中',num: 53,url: ''},{title: '异常待处理',num: 2,url: ''},{title: '差评统计',num: 0,url: ''}]
+				tabs: [{title: '待派工',num: 12,url: require('@/assets/orderHome/dpg.png')},{title: '待接收',num: 22,url: require('@/assets/orderHome/djs.png')},{title: '服务中',num: 53,url: require('@/assets/orderHome/ffz.png')},{title: '异常待处理',num: 2,url: require('@/assets/orderHome/yc.png')},{title: '差评统计',num: 0,url: require('@/assets/orderHome/pj.png')}],
+				qtsm: [],
+				qtddqs: {},
+				wglxfb: {}
+			}
+		},
+		computed: {
+			getDate(){
+				return function(d,t){
+					var date = new Date();
+					var base = Date.parse(date); // 转换为时间戳
+					var year = date.getFullYear(); //获取当前年份
+					var mon = date.getMonth() + 1; //获取当前月份
+					var day = date.getDate(); //获取当前日
+					var oneDay = 24 * 3600 *1000
+
+					var daytimeArr = []
+					for (var i = 0; i < d ; i++) { //前七天的时间
+						var now = new Date(t=='before'?(base - oneDay*i):(base + oneDay*i));
+						var myear = now.getFullYear();
+						var month = now.getMonth() + 1;
+						var mday = now.getDate()
+						daytimeArr.push([month >=10 ?month :'0'+ month, mday>=10?mday:'0'+mday].join('-'))
+					}
+					return t=='before'?daytimeArr.reverse():daytimeArr
+				}
+			},
+			filterOrderType(){
+				return function(obj,type){
+					let names = []
+					let series = []
+					for(let key in this[obj]){
+						names.push(key)
+						series.push({
+							name: key,
+							data: this[obj][key],
+							type: 'line',
+							smooth: true
+						})
+					}
+					return type=='name'?names:series
+				}
 			}
 		},
 		created() {
-			
+			this.getCount()
 		},
 		mounted() {
-			this.drawChat1()
+			// this.drawChat1()
 		},
 		methods: {
+			getCount(){
+				getCount().then(res => {
+					this.tabs[0].num = res.data.dpg
+					this.tabs[1].num = res.data.djs
+					this.tabs[2].num = res.data.fwz
+					this.tabs[3].num = res.data.ycdcl
+					this.tabs[4].num = res.data.cp
+					this.qtsm = res.data.qtsm
+					this.qtddqs = res.data.qtddqs
+					this.wglxfb = res.data.wglxfb
+					this.drawChat1()
+				})
+			},
 			drawChat1(){
 				let chart1 = this.$echarts.init(this.$refs.chart1)
 				let chart2 = this.$echarts.init(this.$refs.chart2)
@@ -58,46 +113,42 @@
 					    trigger: 'axis'
 					},
 					legend: {
-					    data: ['新增工单', '完工工单', '进行中']
+					    data: this.filterOrderType('qtddqs','name')
 					},
 					xAxis: {
 						type: 'category',
-						data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+						boundaryGap: false,
+						data: this.getDate(7,'before')
 					},
 					yAxis: {
 						type: 'value'
 					},
-					series: [
-						{
-							name: '新增工单',
-							data: [820, 932, 901, 934, 1290, 1330, 2320],
-							type: 'line',
-							smooth: true
-						},{
-							name: '完工工单',
-							data: [420, 532, 801, 234, 1790, 1030, 3320],
-							type: 'line',
-							smooth: true
-						},{
-							name: '进行中',
-							data: [120, 532, 901, 1234, 1790, 1530, 1920],
-							type: 'line',
-							smooth: true
-						}
-					]
+					min: 0,
+					max: (value) => {  // 百位起最大值向上取整
+						return Math.ceil(value.max / 100) * 100;
+					},
+					series: this.filterOrderType('qtddqs','series')
 				};
 				let option2 = {
+					tooltip: {
+					    trigger: 'axis'
+					},
 					xAxis: {
 						type: 'category',
-						data: ['12-17', '12-18', '12-19', '12-20', '12-21', '12-22', '12-23']
+						boundaryGap: false,
+						data: this.getDate(7,'after')
 					},
 					yAxis: {
 						type: 'value'
 					},
+					min: 0,
+					max: (value) => {  // 百位起最大值向上取整
+						return Math.ceil(value.max / 100) * 100;
+					},
 					series: [
 						{
-							name: '',
-							data: [820, 932, 901, 934, 1290, 1330, 2320],
+							name: '工单数',
+							data: this.qtsm,
 							type: 'line',
 							smooth: true
 						}
@@ -108,33 +159,21 @@
 					    trigger: 'axis'
 					},
 					legend: {
-					    data: ['安装', '维修', '清洗']
+					    data: this.filterOrderType('wglxfb','name')
 					},
 					xAxis: {
 						type: 'category',
-						data: ['11-24', '11-25', '11-26', '11-27', '11-28', '11-29', '11-30', '12-01', '12-02', '12-03', '12-04', '12-05', '12-06', '12-07', '12-08', '12-09', '12-10', '12-11', '12-12', '12-13', '12-14', '12-15', '12-16', '12-17', '12-18', '12-19', '12-20', '12-21', '12-22', '12-23']
+						boundaryGap: false,
+						data: this.getDate(30,'before')
+					},
+					min: 0,
+					max: (value) => {  // 百位起最大值向上取整
+						return Math.ceil(value.max / 100) * 100;
 					},
 					yAxis: {
 						type: 'value'
 					},
-					series: [
-						{
-							name: '安装',
-							data: [820, 932, 901, 934, 1290, 1330, 2320, 320, 632, 301, 234, 1230, 1330, 1320,1220, 932, 511, 994, 1290, 1130, 1520,1220, 1232, 951, 2134, 1290, 5210, 2220,3420, 1932],
-							type: 'line',
-							smooth: true
-						},{
-							name: '维修',
-							data: [420, 532, 801, 234, 1790, 1030, 3320, 820, 932, 901, 934, 1290, 1330, 2320,820, 932, 901, 934, 1290, 1330, 2320,820, 932, 901, 934, 1290, 1330, 2320,820, 932],
-							type: 'line',
-							smooth: true
-						},{
-							name: '清洗',
-							data: [120, 532, 901, 1234, 1790, 1530, 1920, 1120, 532, 201, 534, 1190, 1230, 2320,2520, 222, 1111, 934, 4390, 2230, 2320, 1520, 922, 551, 224, 3520, 1230, 1620, 1820, 232],
-							type: 'line',
-							smooth: true
-						}
-					]
+					series: this.filterOrderType('wglxfb','series')
 				};
 				chart1.setOption(option1)
 				chart2.setOption(option2)

+ 106 - 8
src/views/workOrder/settleAccountsManagement/summaryBill/detailList.vue

@@ -2,12 +2,78 @@
 	<div class="s-page">
 		<el-page-header @back="goBack" :content="title"></el-page-header>
 		<el-divider></el-divider>
-		<el-row style="margin-bottom: 10px;">
-			<el-col :span="24">
-				<el-button size="small" type="primary" @click="getList()">刷新</el-button>
-				<el-button size="small" type="primary" @click="derive()">导出</el-button>
-			</el-col>
-		</el-row>
+		<!-- 筛选条件 -->
+		<div class="screen-container">
+			<div class="top clearfix"><div class="title fl">条件筛选</div></div>
+			<el-form ref="screenForm" :model="screenForm" label-width="110px" size="small" label-position="left">
+				<el-row :gutter="20">
+					<el-col :span="6">
+						<el-form-item label="工单号" prop="orderBaseId">
+							<el-input v-model="screenForm.orderBaseId" placeholder="请输入工单号"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="工单类型" prop="orderSmallType">
+							<el-select v-model="screenForm.team_id" filterable placeholder="请选择工单类型">
+							   <el-option
+							     v-for="item in teamList"
+							     :key="item.id"
+							     :label="item.name"
+							     :value="item.id">
+							   </el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="结算单类型" prop="settleOrderType">
+							<el-select v-model="screenForm.settleOrderType" filterable placeholder="请选择结算单类型">
+							   <el-option
+							     v-for="item in [{id: 'INSTALL',name:'安装'},{id: 'REPAIR',name:'维修'},{id: 'OTHER',name:'其他'},{id: 'EXAMINE',name:'奖罚单'}]"
+							     :key="item.id"
+							     :label="item.name"
+							     :value="item.id">
+							   </el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="工程师姓名" prop="workerName">
+							<el-input v-model="screenForm.workerName" placeholder="请输入工程师姓名"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="工程师身份证" prop="idcard">
+							<el-input v-model="screenForm.idcard" placeholder="请输入工程师身份证"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="工程师联系电话" prop="mobile">
+							<el-input v-model="screenForm.mobile" placeholder="请输入工程师联系电话"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="客户姓名" prop="customerName">
+							<el-input v-model="screenForm.customerName" placeholder="请输入客户姓名"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="6">
+						<el-form-item label="客户电话" prop="customerMobile">
+							<el-input v-model="screenForm.customerMobile" placeholder="请输入客户电话"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row style="margin-bottom: 20px;" type="flex" justify="space-between">
+					<el-col :span="21">
+						<el-button size="small" type="primary" @click="getList()">刷新</el-button>
+						<el-button size="small" type="primary" @click="derive()">导出</el-button>
+					</el-col>
+					<el-col :span="3" style="display: flex;justify-content: flex-end;">
+						<el-button size="small" @click="resetScreenForm()">清空</el-button>
+						<el-button size="small" type="primary" @click="getList()">搜索</el-button>
+					</el-col>
+				</el-row>
+			</el-form>
+		</div>
 		<el-table :span-method="objectSpanMethod" :data="dataList" element-loading-text="Loading" border fit highlight-current-row stripe>
 			<el-table-column prop="poolId" label="账单编号" align="center" width="180"></el-table-column>
 			<el-table-column prop="month" align="center" label="月份"></el-table-column>
@@ -81,6 +147,16 @@
 				dataList: [],
 				cellList: [], // 单元格数组
 				count: null, // 计数
+				screenForm: {
+					customerMobile: '',
+					customerName: '',
+					idcard: '',
+					mobile: '',
+					orderSmallType: '',
+					orderBaseId: '',
+					settleOrderType: '',
+					workerName: '',
+				}
 			};
 		},
 		computed: {},
@@ -94,10 +170,27 @@
 			goBack() {
 				this.$emit('back');
 			},
+			derive(){
+				pageExport({id: this.id},'汇总结算单明细').then(res => {
+					
+				})
+			},
 			getList(){
-				listPageV2({id: this.id}).then(res => {
+				this.cellList = []
+				this.count = null
+				listPageV2({
+					id: this.id,
+					customerMobile: this.screenForm.customerMobile,
+					customerName: this.screenForm.customerName,
+					idcard: this.screenForm.idcard,
+					mobile: this.screenForm.mobile,
+					orderSmallType: this.screenForm.orderSmallType,
+					orderBaseId: this.screenForm.orderBaseId,
+					settleOrderType: this.screenForm.settleOrderType,
+					workerName: this.screenForm.workerName,
+				}).then(res => {
 					this.dataList = res.data
-					this.computeCell(res.data)
+					this.computeCell(this.dataList)
 				})
 			},
 			cancel(id){
@@ -127,6 +220,11 @@
 					message: '复制成功!'
 				});
 			},
+			// 重置筛选表单
+			resetScreenForm() {
+				this.$refs.screenForm.resetFields();
+				this.getList();
+			},
 			computeCell(tableBody) {
 				// 循环遍历表体数据
 				for (let i = 0; i < tableBody.length; i++) {