From c3b2d6d35b77d11ff86d45926501493b7fc8886e Mon Sep 17 00:00:00 2001
From: wjt <1797368093@qq.com>
Date: 星期二, 23 七月 2024 10:30:20 +0800
Subject: [PATCH] 新功能添加

---
 policy/components/index.vue            |   14 
 qiye/complaint/details.vue             |   19 
 static/policy/personal.png             |    0 
 policy/applyLook/applyLook.vue         |  141 ++++
 qiye/proposal1/proposal1.vue           |  132 ++++
 api/qiye.js                            |   17 
 readme.md                              |   58 +
 common/config.js                       |   12 
 qiye/record/record.vue                 |   16 
 static/index-1.png                     |    0 
 qiye/proprsalRecord/proprsalRecord.vue |  256 ++++++++
 policy/dataLook/dataLook.scss          |   17 
 components/canvasOwn.vue               |   58 +
 pages/index/index.vue                  |   28 
 api/policy.js                          |    5 
 pages.json                             |   43 +
 qiye/complaint/complaint.vue           |    5 
 policy/dataLook/dataLook.vue           |   49 +
 qiye/complaint/details1.vue            |  418 +++++++++++++
 static/policy/jianyi-record.png        |    0 
 qiye/record/details.vue                |   34 +
 static/policy/jianyi.png               |    0 
 qiye/proposal/proposal.vue             |  183 +++++
 policy/applyLook/applyLook.scss        |  104 +++
 api/index.js                           |   12 
 qiye/my/my.vue                         |   36 +
 pages/visitiorRegis/visitiorRegis.vue  |  173 +++++
 27 files changed, 1,783 insertions(+), 47 deletions(-)

diff --git a/api/index.js b/api/index.js
index 2c75ae4..8f83188 100644
--- a/api/index.js
+++ b/api/index.js
@@ -20,4 +20,16 @@
 // 浼佷笟娉ㄥ唽
 export function companyRegister(data) {
 	return http.post('/system/company/add', {params: data}, { custom: { loading: true }});
+}
+// /system/dept/list
+export function deptList(data) {
+	return http.get('/system/dept/allList', {params: data}, { custom: { loading: true }});
+}
+// /enforce/company/log/add
+export function addLog(data) {
+	return http.post('/enforce/company/log/add', data, { custom: { loading: true }});
+}
+// enforce/complaint/log/add
+export function complaintAdd(data) {
+	return http.post('/enforce/complaint/log/add', data, { custom: { loading: true }});
 }
\ No newline at end of file
diff --git a/api/policy.js b/api/policy.js
index 70d60ba..fd8f0c0 100644
--- a/api/policy.js
+++ b/api/policy.js
@@ -62,3 +62,8 @@
 export function orderUpd(data) {
 	return http.post(`/enforce/order/doResultOrder`, data, { custom: { loading: true }});
 }
+
+// /commonList
+export function commonList(data) {
+	return http.get(`/enforce/order/commonList`, {params: data}, { custom: { loading: true }});
+}
\ No newline at end of file
diff --git a/api/qiye.js b/api/qiye.js
index 93dd7aa..21bcb2d 100644
--- a/api/qiye.js
+++ b/api/qiye.js
@@ -27,7 +27,15 @@
 export function logList(data){
 	return http.get('/enforce/complaint/log/list', {params: data}, { custom: { loading: true }});
 }
-
+// complaintList
+// 鎶曡瘔鍒楄〃
+export function complaintList(data){
+	return http.get('/enforce/complaint/log/complaintList', {params: data}, { custom: { loading: true }});
+}
+// 寤鸿鍒楄〃
+export function pleaseList(data){
+	return http.get('/enforce/complaint/log/pleaseList', {params: data}, { custom: { loading: true }});
+}
 // 鎶曡瘔璇︽儏
 export function complaint(id){
 	return http.get('/enforce/complaint/'+id, { custom: { loading: true }});
@@ -50,4 +58,9 @@
 // /system/company/list
 // export function getCompanyList(data){
 // 	return http.get('/system/company/list',{params: data}, { custom: { loading: true }});
-// }
\ No newline at end of file
+// }
+
+// /enforce/order/confirm/{orderId}
+export function confirmOrderId(data){
+	return http.post(`/enforce/order/confirm/${data.orderId}`,{params: data}, { custom: { loading: true }});
+}
\ No newline at end of file
diff --git a/common/config.js b/common/config.js
index ad8596c..2dcb83d 100644
--- a/common/config.js
+++ b/common/config.js
@@ -3,14 +3,14 @@
 	hasHead: true,
 	authCallBackUrl: 'https://wxbank.hnnx.com/mer/payOut/getAuthCode.do?authCallBackUrl=',
 	webURL: 'https://jmy.jinmingyuan.com/ecosphere-user',
-	serverTempl:"http://172.16.61.11:8089",
+	serverTempl:"http://172.16.60.184:8089",
 	socketTempl:"wss://yqzx.jinmingyuan.com/wsPerCode",
 	h5Temp:"https://yqzx.jinmingyuan.com/ecosphere-h5",
-	serverUrl: 'http://172.16.61.11:8089',
-	h5Url: 'http://172.16.61.11:8089/service-merchant',
+	serverUrl: 'http://172.16.60.184:8089',
+	h5Url: 'http://172.16.60.184:8089/service-merchant',
 	ftpUrl: 'https://yqzx.jinmingyuan.com/file',
 	// ftpUrl: 'https://echftp.jinmingyuan.com',
-	baseUrl: 'http://172.16.61.11:8089',
+	baseUrl: 'http://172.16.60.184:8089',
 	wx_appid: 'wxad8cc511da676bd4',
 	ali_appid: '2021003199690698'
 }
@@ -21,11 +21,11 @@
 	serverTempl:"https://jmy.jinmingyuan.com",
 	socketTempl:"wss://yqzx.jinmingyuan.com/wsPerCode",
 	h5Temp:"https://jmy.jinmingyuan.com/ecosphere-h5",
-	serverUrl: 'https://jmy.jinmingyuan.com/prod-api',
+	serverUrl: 'https://jmy.jinmingyuan.com/sqys-prod-api',
 	h5Url: 'https://jmy.jinmingyuan.com/service-merchant',
 	ftpUrl: 'https://jmy.jinmingyuan.com/file',
 	// ftpUrl: 'https://echftp.jinmingyuan.com',
-	baseUrl: 'https://jmy.jinmingyuan.com/prod-api',
+	baseUrl: 'https://jmy.jinmingyuan.com/sqys-prod-api',
 	wx_appid: 'wxad8cc511da676bd4',
 	ali_appid: '2021003199690698'
 }
diff --git a/components/canvasOwn.vue b/components/canvasOwn.vue
new file mode 100644
index 0000000..04f1051
--- /dev/null
+++ b/components/canvasOwn.vue
@@ -0,0 +1,58 @@
+<template>
+  <view>
+    <canvas canvas-id="bar-chart" style="width: 300px; height: 200px;"></canvas>
+  </view>
+</template>
+ 
+<script>
+export default {
+  data() {
+    return {
+      data: [50, 120, 200, 150, 50], // 绀轰緥鏁版嵁
+      barWidth: 20, // 鏉″舰鐨勫搴�
+      barGap: 5, // 鏉″舰涔嬮棿鐨勯棿闅�
+      maxData: 200, // 鏁版嵁鐨勬渶澶у�硷紝鐢ㄤ簬Y杞村埢搴�
+    };
+  },
+  mounted() {
+    this.drawBarChart();
+  },
+  methods: {
+    drawBarChart() {
+      const ctx = uni.createCanvasContext('bar-chart', this);
+      const canvasWidth = 300;
+      const canvasHeight = 200;
+      const xScale = this.barWidth + this.barGap; // x杞寸殑姣斾緥
+      const yScale = canvasHeight / this.maxData; // y杞寸殑姣斾緥
+ 
+      // 缁樺埗鑳屾櫙
+      ctx.fillStyle = '#f3f3f3';
+      ctx.fillRect(0, 0, canvasWidth, canvasHeight);
+ 
+      // 缁樺埗杈规
+      ctx.strokeStyle = '#000';
+      ctx.setLineWidth(1);
+      for (let i = 0; i < this.data.length; i++) {
+        const x = i * xScale;
+        const y = canvasHeight - this.data[i] * yScale;
+        const width = this.barWidth;
+        const height = this.data[i] * yScale;
+ 
+        // 缁樺埗鏉″舰
+        ctx.setFillStyle('#1890ff');
+        ctx.fillRect(x, y, width, height);
+ 
+        // 缁樺埗杈规
+        ctx.strokeRect(x, y, width, height);
+ 
+        // 鍙互娣诲姞鏁版嵁鏍囩
+        ctx.fillStyle = '#000';
+        ctx.font = '12px Arial';
+        ctx.fillText(this.data[i], x, y - 10);
+      }
+ 
+      ctx.draw();
+    }
+  }
+};
+</script>
\ No newline at end of file
diff --git a/pages.json b/pages.json
index a625c7a..b818743 100644
--- a/pages.json
+++ b/pages.json
@@ -67,6 +67,13 @@
 				"navigationBarTitleText" : "淇℃伅鍏ず璇︽儏",
 				"navigationStyle": "custom"
 			}
+		},
+		{
+			"path" : "pages/visitiorRegis/visitiorRegis",
+			"style" : 
+			{
+				"navigationBarTitleText" : "鏉ヨ浜哄憳鐧昏"
+			}
 		}
 	],
 	"subPackages": [
@@ -168,6 +175,13 @@
 						"navigationBarTitleText" : "瀹℃壒璇︽儏",
 						"navigationStyle": "custom"
 					}
+				},
+				{
+					"path" : "applyLook/applyLook",
+					"style" : 
+					{
+						"navigationBarTitleText" : ""
+					}
 				}
 			]
 		},
@@ -230,11 +244,40 @@
 				}
 			},
 			{
+				"path" : "complaint/details1",
+				"style" : 
+				{
+					"navigationBarTitleText" : "",
+					"navigationStyle": "custom"
+				}
+			},
+			{
 				"path" : "switchPhone/switchPhone",
 				"style" : 
 				{
 					"navigationBarTitleText" : "鍒囨崲浼佷笟"
 				}
+			},
+			{
+				"path" : "proposal/proposal",
+				"style" : 
+				{
+					"navigationBarTitleText" : "鎶曡瘔"
+				}
+			},
+			{
+				"path" : "proposal1/proposal1",
+				"style" : 
+				{
+					"navigationBarTitleText" : "寤鸿"
+				}
+			},
+			{
+				"path" : "proprsalRecord/proprsalRecord",
+				"style" : 
+				{
+					"navigationBarTitleText" : "寤鸿璁板綍"
+				}
 			}
 				
 			]
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 4d5e1b1..217be71 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -12,13 +12,16 @@
 			<img src="/static/i06.png" class="more"  alt="" style="width: 46rpx;height: 46rpx;"/>
 		</view>
 		<view class="btnbox">
-			<img src="/static/i01.png" class="more" alt="" style="margin-right: 18rpx;" @click="goMyCompany('01')"/>
-			<img src="/static/i02.png" class="more" alt="" @click="goMyCompany('02')"/>
-			<img src="/static/i03.png" class="more" alt="" style="margin-right: 18rpx;" @click="goMyCompany('01')"/>
-			<img src="/static/i04.png" class="more" alt="" @click="goMyCompany('00')"/>
+			<image mode="widthFix" src="/static/i01.png" class="more" alt="" style="margin-right: 18rpx;" @click="goMyCompany('01')"/>
+			<image mode="widthFix" src="/static/i02.png" class="more" alt="" @click="goMyCompany('02')"/>
+			<image mode="widthFix" src="/static/i03.png" class="more" alt="" style="margin-right: 18rpx;" @click="goMyCompany('01')"/>
+			<image mode="widthFix" src="/static/i04.png" class="more" alt="" @click="goMyCompany('00')"/>
 				<!-- <u-button @click="goMyCompany('01')">鎴戞槸鎵ф硶浜哄憳</u-button>
 				<u-button @click="goMyCompany('02')">鎴戞槸浼佷笟</u-button>
 				<u-button @click="goMyCompany('00')">杩愯惀绠$悊</u-button> -->
+		</view>
+		<view class="login-news" @click="goLogin">
+			<image src="/static/index-1.png" mode="widthFix" @click="goLogin"></image>
 		</view>
 		<view class="msgbox">
 			<view class="tit">
@@ -189,6 +192,15 @@
 				uni.navigateTo({
 					url: `/pages/companyLogin/companyLogin?code=${item}`
 				})
+			},
+			goLogin() {
+				uni.scanCode({
+					success: (val) =>{
+						uni.navigateTo({
+							url: `/pages/visitiorRegis/visitiorRegis?value=${val.result}`
+						})
+					}
+				})
 			}
 		}
 	};
@@ -240,7 +252,7 @@
 		margin-top: 110rpx;
 		margin-left: 32rpx;
 		margin-right: 32rpx;
-		img{
+		image{
 			width: 334rpx;
 			height: 208rpx;
 		}
@@ -314,4 +326,10 @@
 		width: 100%;
 		height: 518rpx;
 	}
+	.login-news{
+		margin: 20rpx 32rpx;
+		image{
+			width: 100%;
+		}
+	}
 </style>
\ No newline at end of file
diff --git a/pages/visitiorRegis/visitiorRegis.vue b/pages/visitiorRegis/visitiorRegis.vue
new file mode 100644
index 0000000..68f4a1d
--- /dev/null
+++ b/pages/visitiorRegis/visitiorRegis.vue
@@ -0,0 +1,173 @@
+<template>
+	<view class="page-box">
+		<u-form label-width="80" ref="uForm"  labelPosition="top" :model="form" :rules="rules">
+			<u-form-item label="璁块棶浼佷笟" prop="companyName">
+				<u-input placeholder="璇疯緭鍏�" disabled v-model="form.companyName"></u-input>
+			</u-form-item>
+			<u-form-item label="鏉ヨ鏃堕棿" prop="comeTime">
+				<u-input placeholder="璇疯緭鍏�" disabled v-model="form.comeTime"></u-input>
+			</u-form-item>
+			<u-form-item label="鏉ヨ鍗曚綅" @click="selectValue" prop="comeDeptName">
+				<u-input placeholder="璇疯緭鍏�" readonly :value="form.comeDeptName"></u-input>
+			</u-form-item>
+			<u-form-item label="鏉ヨ浜哄憳" prop="comeUser">
+				<u-input placeholder="璇疯緭鍏�" v-model="form.comeUser"></u-input>
+			</u-form-item>
+			<u-form-item label="鏉ヨ浜嬮」" prop="comeContent">
+				<u-textarea  placeholder="璇疯緭鍏�" v-model="form.comeContent"></u-textarea>
+			</u-form-item>
+			<u-form-item label="闅忚浜烘暟" prop="userNum">
+				<u-input placeholder="璇疯緭鍏�" v-model="form.userNum" type="number"></u-input>
+			</u-form-item>
+			<u-form-item label="澶囨敞" prop="remark">
+				<u-textarea  placeholder="璇疯緭鍏�" v-model="form.remark"></u-textarea>
+			</u-form-item>
+		</u-form>
+		<view class="down-options-button">
+			<view class="options">
+				<u-button type="primary" @click="addLog">鎻愪氦</u-button>
+			</view>
+			<view class="options">
+				<u-button type="info " @click="reset">閲嶇疆</u-button>
+			</view>
+		</view>
+		<u-picker :show="show" @close="show = false" @confirm="confirm" @cancel="show = false" keyName="deptName" :columns="columns"></u-picker>
+	</view>
+</template>
+
+<script>
+	import { companyList } from '@/api/policy.js'
+	import { deptList,addLog } from '@/api/index.js'
+	export default {
+		data() {
+			return {
+				code: '',
+				form: {
+					companyName: "",
+					comeTime: "",
+					comeDeptName: ""
+				},
+				show: false,
+				columns: [],
+				rules:{
+					'companyName': {
+						required: true,
+						message: '璇烽�夋嫨璁块棶浼佷笟',
+						trigger: ['blur', 'change']
+					},
+					comeTime: {
+						required: true,
+						message: '璇烽�夋嫨鏉ヨ鏃堕棿',
+						trigger: ['blur', 'change']
+					},
+					comeDeptName: {
+						required: true,
+						message: '璇烽�夋嫨鏉ヨ鍗曚綅',
+						trigger: ['blur', 'change']
+					},
+					comeUser: {
+						required: true,
+						message: '璇疯緭鍏ユ潵璁夸汉鍛�',
+						trigger: ['blur', 'change']
+					},
+					comeContent: {
+						required: true,
+						message: '璇疯緭鍏ユ潵璁夸簨椤�',
+						trigger: ['blur', 'change']
+					}
+				}
+			}
+		},
+		onLoad(options) {
+			this.code = options.value
+			this.companyList()
+			this.deptList()
+		},
+		methods: {
+			reset() {
+				const { companyName, comeTime, companyId, companyUser, companyPhone } = this.form
+				this.form = {
+					companyName: companyName,
+					companyId: companyId,
+					comeTime: comeTime,
+					companyUser: companyUser,
+					companyPhone: companyPhone,
+					comeDeptName: ""
+				}
+			},
+			addLog() {
+				this.$refs.uForm.validate().then(val => {
+					addLog(this.form).then(val => {
+						// console.log(val)
+						if(val.data.code == 200) {
+							uni.showToast({
+								title: '鐧昏鎴愬姛',
+								icon: 'none',
+								duration: 5000
+							})
+							setTimeout(() => {
+								uni.navigateBack()
+							}, 500)
+						}
+					})
+				}).catch(err => {
+					console.log(err)
+				})
+			
+			},
+			confirm(e) {
+				this.form.comeDeptName = e.value[0].deptName
+				this.form.comeDeptId = e.value[0].deptId
+				this.show = false
+			},
+			deptList(){
+				deptList({parentId: 100}).then(val => {
+					// console.log(val.data.data)
+					this.columns = [val.data.data]
+				})
+			},
+			companyList() {
+				companyList({companyCode: this.code}).then(val => {
+					if(val.data.rows.length) {
+						const details = val.data.rows[0]
+						this.form.companyName = details.companyName
+						this.form.companyId = details.companyId
+						this.form.companyUser = details.companyUser
+						this.form.companyPhone = details.companyPhone
+						// this.form.
+						this.form.comeTime = this.$u.timeFormat(new Date(), 'yyyy-mm-dd')
+					}
+				})
+			},
+			selectValue() {
+				this.show = true
+			}
+		}
+	}
+</script>
+<style>
+	page{
+		padding: 20rpx;
+		box-sizing: border-box;
+	}
+</style>
+<style lang="scss" scoped>
+	.page-box{
+		padding-bottom: 220rpx;
+	}
+.down-options-button{
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	position: fixed;
+	bottom: 0;
+	width:  100%;
+	background-color: white;
+	padding: 20rpx 20rpx 40rpx;
+	box-sizing: border-box;
+	left: 0;
+	.options{
+		width: 48%;
+	}
+}
+</style>
diff --git a/policy/applyLook/applyLook.scss b/policy/applyLook/applyLook.scss
new file mode 100644
index 0000000..2075fbc
--- /dev/null
+++ b/policy/applyLook/applyLook.scss
@@ -0,0 +1,104 @@
+.page-box{
+	padding-bottom: 40rpx;
+	.list{
+		margin: 20rpx 32rpx;
+		.list-item{
+			padding: 24rpx;
+			background-color: white;
+			border-radius: 10rpx;
+			margin-bottom: 20rpx;
+			.top-title{
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				font-size: 32rpx;
+				margin-bottom: 28rpx;
+				.status{
+					font-size: 28rpx;
+					color: #B4B9BF;
+				}
+				.status1{
+					color: #FE7B32;
+				}
+				.status2{
+					color: #3EB47A;
+				}
+				.status3{
+					color: #1171E0;
+				}
+				.status4{
+					color: #EB4746;
+				}
+			}
+			.user-info{
+				font-size: 28rpx;
+				color: #4A4E60;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				.driver{
+					width: 2rpx;
+					height: 20rpx;
+					background: #F1F1F1;
+					margin: 0 20rpx;
+				}
+			}
+			.set-line{
+				font-size: 26rpx;
+				color: #4A4E60;
+				margin-top: 12rpx;
+				text{
+					color: #C3C6CD;
+				}
+			}
+			.line{
+				border-bottom: 3rpx dashed  #F4F4F4;
+				margin: 24rpx 0;
+			}
+			.set-line1{
+				font-size: 24rpx;
+				color: #4A4E60;
+				margin-top: 12rpx;
+				text{
+					color: #C3C6CD;
+				}
+			}
+			.button{
+				background-color: #1171E0;
+				display: inline-block;
+				color: white;
+				padding: 10rpx 36rpx;
+				border-radius: 10rpx;
+			}
+			.set-start{
+				align-items: flex-end;
+			}
+		}
+	}
+	.down{
+		position: fixed;
+		background: white;
+		width: 100%;
+		bottom: 0;
+		padding: 32rpx 22rpx 40rpx;
+		text-align: center;
+		box-sizing: border-box;
+		.button{
+			border-radius: 20rpx;
+			border: 2rpx solid #ABD2FF;
+			background: #F0F8FF;
+			color: #1171E0;
+			padding: 20rpx 0;
+		}
+	}
+	.set-search{
+		margin: 0 32rpx 0;
+		padding-top: 26rpx;
+		
+	}
+	.border{
+		border-bottom: 2rpx solid #F6F6F6;
+		margin: 20rpx 0 0;
+	}
+
+}
\ No newline at end of file
diff --git a/policy/applyLook/applyLook.vue b/policy/applyLook/applyLook.vue
new file mode 100644
index 0000000..ad90e5a
--- /dev/null
+++ b/policy/applyLook/applyLook.vue
@@ -0,0 +1,141 @@
+<template>
+	<view class="page-box">
+		<u-sticky bgColor="white"  :offsetTop="0" style="    position: -webkit-sticky;">
+			<view class="set-search">
+				<u-search placeholder="璇疯緭鍏ョ敵璇疯褰曞叧閿瘝 " @search="search" @blur="search" shape="square" :showAction="false"></u-search>
+			</view>
+			<view class="border"></view>
+			<u-tabs :list="list1" @click="click" :current="current" :scrollable="false" bgColor="white"></u-tabs>
+		</u-sticky>
+		<view class="list">
+			<view class="list-item" @click="goReport(item.orderId)" v-for="(item,index) in dataList" :key="index">
+				<view class="top-title">
+					<text>{{item.enforceReason}}</text>
+					<text class="status" v-if="item.checkStatus != -1" :class="{status1: item.orderStatus == 1,status2: item.orderStatus == 2,status3: item.orderStatus == 3,status4: item.orderStatus == 4}">{{mapStatus[item.orderStatus]}}</text>
+					<text class="status status4" v-else >宸叉嫆缁�</text>
+				</view>
+				<view class="user-info">
+					<text>{{item.applyUser}}</text>
+					<!-- <view class="driver"></view> -->
+					
+				</view>
+				<view class="user-info">
+					<text>{{item.applyDeptName}}</text>
+				</view>
+				<view class="set-line">
+					<text>鎵ф硶瀵硅薄锛�</text>{{item.companyName}}
+				</view>
+				<view class="line"></view>
+				<view class="set-flex set-start set-flex-content-between">
+					<view>
+						<view class="set-line1">
+							<text>鎵ф硶鏃堕棿锛�</text>{{item.planTime}}
+						</view>
+						<view class="set-line1">
+							<text>鐢宠鏃堕棿锛�</text>{{item.applyTime}}
+						</view>
+					</view>
+				</view>
+			</view>
+			 <u-empty v-if="!dataList.length"></u-empty>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { commonList } from '@/api/policy.js'
+	export default {
+		data() {
+			return {
+				current: 0,
+				list1: [{
+					name: '鍏ㄩ儴',
+					value: {}
+				}, {
+					name: '寰呭鎵�',
+					value: {
+						orderStatus: 1,
+						checkStatus: 0
+					}
+				}, {
+					name: '寰呮墽琛�',
+					value: {
+						orderStatus: 2
+					}
+				}, {
+					name: '宸叉墽琛�',
+					value: {
+						orderStatus: 3
+					}
+				}, {
+					name: '宸茬粨鏉�',
+					value: {
+						orderStatus: 4
+					}
+				}],
+				queryParams: {
+					pageNum: 1,
+					pageSize: 10,
+					isAsc: "desc",
+					orderByColumn: "apply_time"
+				},
+				total: 1,
+				dataList: [],
+				mapStatus: {
+					1: '寰呭鎵�',
+					2: "寰呮墽琛�",
+					3: "寰呬笂鎶�",
+					'-1':"宸叉嫆缁�",
+					4: "宸茬粨鏉�"
+				}
+			}
+		},
+		onLoad() {
+			this.orderList()
+		},
+		onReachBottom() {
+			if(this.dataList.length == this.total) {
+				return
+			}
+			this.queryParams.pageNum++
+			this.orderList()
+		},
+		methods: {
+			goReport(id) {
+				uni.navigateTo({
+					url: `/policy/applyRecordDetails/applyRecordDetails?id=${id}`
+				})
+			},
+			click(e) {
+				this.dataList = []
+				this.queryParams.pageNum = 1
+				this.current = e.index
+				this.orderList()
+			},
+			orderList() {
+				const userInfo = uni.getStorageSync('userInfo')
+				commonList({...this.queryParams, ...this.list1[this.current].value, checkDeptId: userInfo.dept.parentId}).then(val => {
+					this.total = val.data.total
+					this.dataList = [...this.dataList,...val.data.rows]
+				})
+			},
+			search(e){
+				this.dataList = []
+				this.queryParams.pageNum =1
+				this.queryParams.companyName = e
+				this.orderList()
+			}
+		}
+	}
+</script>
+<style>
+	page {
+		background-color: #F4F4F4;
+	}
+</style>
+<style lang="scss" scoped>
+	@import "./applyLook.scss";
+	/deep/ .u-sticky{
+		    position: -webkit-sticky;
+	}
+</style>
\ No newline at end of file
diff --git a/policy/components/index.vue b/policy/components/index.vue
index 8c3c56b..381a0ca 100644
--- a/policy/components/index.vue
+++ b/policy/components/index.vue
@@ -89,9 +89,17 @@
 				})
 			},
 			applyRecord() {
-				uni.navigateTo({
-					url: '/policy/applyRecord/applyRecord'
-				})
+				console.log(this.userAuth)
+				if(this.userAuth) {
+					uni.navigateTo({
+						url: '/policy/applyLook/applyLook'
+					})
+				} else {
+					uni.navigateTo({
+						url: '/policy/applyRecord/applyRecord'
+					})
+				}
+			
 			},
 			recordZhifa() {
 				uni.navigateTo({
diff --git a/policy/dataLook/dataLook.scss b/policy/dataLook/dataLook.scss
index 5f55bec..487f4c2 100644
--- a/policy/dataLook/dataLook.scss
+++ b/policy/dataLook/dataLook.scss
@@ -103,4 +103,21 @@
 	.origin{
 		color: #FE7B32;
 	}
+}
+.set-y{
+
+}
+.set-flex-progress{
+	display: flex;
+	justify-content: flex-start;
+	align-items: flex-start;
+	.name{
+		text-align: right;
+		width: 25%;
+		font-size: 26rpx;
+		margin-right: 20rpx;
+	}
+	.progress{
+		width: calc(100% - 25% - 20rpx);
+	}
 }
\ No newline at end of file
diff --git a/policy/dataLook/dataLook.vue b/policy/dataLook/dataLook.vue
index 426dd7c..4e4efc1 100644
--- a/policy/dataLook/dataLook.vue
+++ b/policy/dataLook/dataLook.vue
@@ -43,11 +43,22 @@
 					<text>鎵ф硶鍗曚綅鎵ф硶娆℃暟</text>
 					<u-icon name="calendar" size="24" @click="openDate(1)"></u-icon>
 				</view>
-				<view class="number">
+				<view class="number set-height">
 					<view class="date">{{pageQuerm.beginTimeStr1}} <text class="margin-text">鑷�</text> {{pageQuerm.endTimeStr1}}</view>
-					<view class="progress-box">
-						<qiun-data-charts v-if="!show" key="11" type="bar"
-							:opts="opts" :chartData="chartData" />
+					<view class="progress-box"  style="margin-top: 20rpx;">
+						<!-- <qiun-data-charts v-if="!show" key="11" type="bar"
+							:opts="opts" :chartData="chartData" /> -->
+							<view v-for="(item,index) in likeData" style="margin-bottom: 20rpx;" class="set-flex-progress">
+								<view class="name">{{item.k}}</view> 
+								<view class="progress">
+									<u-line-progress activeColor="#1890FF"  :percentage="item.progress" height="20">
+										<template slot="default">
+											{{item.v}}
+										</template>
+									</u-line-progress>
+								</view>
+							</view>
+							<!-- <echarts ref="echarts" :option="option" canvasId="echarts"></echarts> -->
 					</view>
 				</view>
 			</view>
@@ -110,9 +121,12 @@
 		getCompanyCount,
 		getEnforceTypeCount
 	} from '@/api/data.js'
+	
 	export default {
 		data() {
 			return {
+				likeData: {},
+				option: {},
 				typeItem: '',
 				currentValue: '',
 				show: false,
@@ -138,31 +152,29 @@
 					enableScroll: false,
 					legend: {
 						show: false,
-						
 					},
 					xAxis: {
 						boundaryGap: "justify",
 						disableGrid: false,
 						min: 0,
 						axisLine: false,
-						max: 40,
-						gridColor: "#ededed"
+						gridColor: "#ededed",
 					},
 					yAxis: {
-						gridColor: "#ededed"
+						gridColor: "#ededed",
 					},
 					extra: {
 						bar: {
 							type: "group",
-							width: 10,
+							width: 15,
 							meterBorde: 1,
 							meterFillColor: "#FFFFFF",
 							activeBgColor: "#000000",
 							activeBgOpacity: 0.08,
 							linearType: "custom",
 							barBorderCircle: true,
-							seriesGap: 2,
-							categoryGap: 2
+							seriesGap: 20,
+							categoryGap: 20
 						}
 					}
 				},
@@ -207,6 +219,7 @@
 			this.getCompanyCount()
 			this.getServerData();
 			this.getServerData1()
+			
 		},
 		methods: {
 			confirmDate(e) {
@@ -262,8 +275,20 @@
 			// 鎵ф硶娆℃暟閮ㄩ棬
 			getServerData() {
 				getDeptCount(this.pageQuerm).then(val => {
+					
+					
 					const value = val.data.data
-					const label = value.map(item => item.k)
+					const label = value.map(item => {
+						return item.k
+					})
+					const max = Math.max(value)
+					this.likeData = val.data.data.map(item => {
+						const progress = (item / max).toFixed(2)
+						return {
+							...item,
+							progress
+						}
+					})
 					const data = value.map(item => item.v)
 					let res = {
 						categories: label,
diff --git a/qiye/complaint/complaint.vue b/qiye/complaint/complaint.vue
index 5c9498e..743ae5b 100644
--- a/qiye/complaint/complaint.vue
+++ b/qiye/complaint/complaint.vue
@@ -100,7 +100,7 @@
 </template>
 
 <script>
-	import { logList } from '@/api/qiye.js'
+	import { complaintList } from '@/api/qiye.js'
 	
 	export default {
 		data() {
@@ -149,8 +149,7 @@
 			getList() {
 				let data = uni.getStorageSync("qiyedata")
 				this.queryParams.companyId = data.companyId
-				logList({...this.queryParams}).then(val => {
-					console.log(val.data)
+				complaintList({...this.queryParams}).then(val => {
 					this.total = val.data.total
 					this.list1 = [...this.list1,...val.data.rows]
 				})
diff --git a/qiye/complaint/details.vue b/qiye/complaint/details.vue
index a5b1b47..48e1d70 100644
--- a/qiye/complaint/details.vue
+++ b/qiye/complaint/details.vue
@@ -13,7 +13,7 @@
 				<template v-if="msg.orderStatus==2">寰呮墽娉�</template>
 			</view>
 			<view class="wbox">
-				<view class="item">
+				<view class="item" v-if="dictLabel">
 					<view class="k">
 						鎵ф硶绫诲瀷
 					</view>
@@ -21,7 +21,7 @@
 						{{dictLabel}}
 					</view>
 				</view>
-				<view class="item">
+				<view class="item" v-if="details.executeUser">
 					<view class="k">
 						鎵ф硶浜�
 					</view>
@@ -91,7 +91,7 @@
 					鎶曡瘔璁板綍
 				</view>
 				<view class="jilu" :class="{start: item.nodeName == '鍙戣捣鎶曡瘔' || item.nodeName == '宸插姙缁�', handler: item.nodeName == '澶勭悊涓�', nonde: index == nodeList.length - 1}" v-for="(item,index) in nodeList" :key="index">
-					<image src="/static/policy/icon.png" class="img" alt="" mode="widthFix" v-if="item.nodeName == '鍙戣捣鎶曡瘔'"/>
+					<image src="/static/policy/icon.png" class="img" alt="" mode="widthFix" v-if="item.nodeName == '鍙戣捣鎶曡瘔' || item.nodeName == '鍙戣捣璇夋眰'"/>
 					<image src="/static/guocheng.png" class="img" alt=""  mode="widthFix"  v-if="item.nodeName == '澶勭悊涓�'"/>
 					<image src="/static/policy/refject.png" class="img"  mode="widthFix" alt="" v-if="item.nodeName == '宸查┏鍥�'"/>
 					<image src="/static/policy/icon.png" class="img" alt=""  mode="widthFix" v-if="item.nodeName == '宸插姙缁�'"/>
@@ -188,7 +188,7 @@
 
 <script>
 	import { complaintDetails, orderNodeList, orderComplaintNodeList } from '@/api/qiye.js'
-	import { orderDetails } from '@/api/policy.js'
+	import { orderDetails, orderDetailsLog } from '@/api/policy.js'
 	import { config } from '@/common/config.js'
 	import { getDicts } from '@/api/data.js'
 	export default {
@@ -204,8 +204,8 @@
 			}
 		},
 		onLoad(options) {
-			this.complaint(options.id)
-			if(options.orderId) {
+			this.complaint(options.id)
+			if(options.orderId && options.orderId !== 'null') {
 				this.orderId = options.orderId
 				this.orderDetails()
 			} else {
@@ -222,7 +222,6 @@
 			// 鑾峰彇鎶曡瘔绫诲瀷
 			getComtype() {
 				getDicts('complaint_type').then(val => {
-					console.log(val)
 					this.dictLabel1 = val.data.data.find(item => item.dictCode == this.details.complaintType).dictLabel
 					
 				})
@@ -251,8 +250,10 @@
 				orderDetails({ orderId: this.orderId}).then(val => {
 					// console.log(val.data.data)
 					val.data.data.regionImgs = val.data.data.regionImgs.split(",")
-					this.orderDetailsMsg = val.data.data
-					this.orderComplaintNodeList()
+					this.orderDetailsMsg = val.data.data
+					if(this.orderId) {
+						this.orderComplaintNodeList()
+					}
 					this.enforceType()
 				})
 			},
diff --git a/qiye/complaint/details1.vue b/qiye/complaint/details1.vue
new file mode 100644
index 0000000..df1dcbc
--- /dev/null
+++ b/qiye/complaint/details1.vue
@@ -0,0 +1,418 @@
+<template>
+	<view>
+		<u-navbar placeholder bgColor="#1171E0FF" leftIconColor="white" :autoBack="true">
+			<template slot="center">
+				<view style="color: white;">寤鸿璁板綍</view>
+			</template>
+		</u-navbar>
+		<view class="donw-box"></view>
+		<view class="page-main">
+			<view class="title">
+				<template v-if="msg.orderStatus>2&&msg.isEva==0">宸叉墽娉曞緟璇勪环</template>
+				<template v-if="msg.orderStatus>2&&msg.isEva==1">宸茶瘎浠�</template>
+				<template v-if="msg.orderStatus==2">寰呮墽娉�</template>
+			</view>
+			<view class="wbox">
+				<view class="item" v-if="dictLabel">
+					<view class="k">
+						鎵ф硶绫诲瀷
+					</view>
+					<view class="v">
+						{{dictLabel}}
+					</view>
+				</view>
+				<view class="item" v-if="details.executeUser">
+					<view class="k">
+						鎵ф硶浜�
+					</view>
+					<view class="v">
+						{{details.executeUser}}
+					</view>
+				</view>
+				<view class="item">
+					<view class="k">
+						浼佷笟
+					</view>
+					<view class="v">
+						{{details.companyName}}
+					</view>
+				</view>
+			</view>
+			<view style="height: 20rpx;"></view>
+			<template v-if="orderId">
+				<view class="wbox">
+					<view class="item">
+						<view class="k">
+							鎵ф硶涓婚
+						</view>
+						<view class="v">
+							{{details.enforceReason}}
+						</view>
+					</view>
+					<view class="item">
+						<view class="k">
+							鎵ф硶杩囩▼
+						</view>
+					</view>
+					<view class="imgbox">
+						<img :src="baseUrl+item" v-for="(item,index) in orderDetailsMsg.regionImgs" :key="index" class="more" @click="imgclick(item)" alt="" />
+						
+					</view>
+					<view class="item">
+						<view class="k">
+							鎵ф硶缁撴灉
+						</view>
+						<view class="v" style="color: #EB4746;">
+							<!-- {{details.regionStatus == 0? "姝e父" : "鍋滀笟鏁撮】" }} -->
+							{{orderDetailsMsg.regionReason}}
+						</view>
+					</view>
+					<view class="item">
+						<view class="k">
+							鎵ф硶鏃堕棿
+						</view>
+						<view class="v">
+							{{details.executeTime}}
+						</view>
+					</view>
+				</view>
+				<view style="height: 20rpx;"></view>
+			</template>
+			<view class="wbox2">
+				<view class="t">
+					寤鸿璁板綍
+				</view>
+				<view class="jilu" :class="{start: item.nodeName == '鍙戣捣璇夋眰' || item.nodeName == '宸插姙缁�', handler: item.nodeName == '澶勭悊涓�', nonde: index == nodeList.length - 1}" v-for="(item,index) in nodeList" :key="index">
+					<image src="/static/policy/icon.png" class="img" alt="" mode="widthFix" v-if="item.nodeName == '鍙戣捣璇夋眰'"/>
+					<image src="/static/guocheng.png" class="img" alt=""  mode="widthFix"  v-if="item.nodeName == '澶勭悊涓�'"/>
+					<image src="/static/policy/refject.png" class="img"  mode="widthFix" alt="" v-if="item.nodeName == '宸查┏鍥�'"/>
+					<image src="/static/policy/icon.png" class="img" alt=""  mode="widthFix" v-if="item.nodeName == '宸插姙缁�'"/>
+					<view class="font" style="width: calc(100% - 50rpx);">
+						<view class="h" >
+							<view class="s" >
+								{{item.nodeName}}
+							</view>
+							<view class="time">
+								{{item.nodeTime}}
+							</view>
+						</view>
+						<view class="b">
+							<view class="name" style="margin-bottom: 18rpx;">
+								{{item.nodeUser}}
+							</view>
+							<!-- <view class="p" style="margin-bottom: 18rpx;">
+								<span>鐢宠瘔涓婚锛�</span>
+								{{dictLabel1}}
+							</view> -->
+							<view class="p" style="margin-bottom: 18rpx;">
+								<span>鐢宠瘔鍐呭锛�</span>
+								{{details.complaintReason}}
+							</view>
+							<view class="p"  v-if="item.nodeName == '宸查┏鍥�'">
+								<span>椹冲洖鍘熷洜锛�</span>
+								{{item.nodeReason}}
+							</view>
+							<view class="p"  v-if="item.nodeName == '宸插姙缁�' && item.nodeReason">
+								<span>鍔炵粨缁撴灉锛�</span>
+								{{item.nodeReason}}
+							</view>
+						</view>
+					</view>
+				</view>
+				<!-- <view class="jilu">
+					<image src="/static/policy/refject.png" class="img" alt="" />
+					<view class="font">
+						<view class="h">
+							<view class="s">
+								{{item.nodeName}}
+							</view>
+							<view class="time">
+								{{item.nodeTime}}
+							</view>
+						</view>
+						<view class="b">
+							<view class="name">
+								{{details.companyUser}}
+							</view>
+							<view class="p">
+								<span>鐢宠瘔涓婚锛�</span>
+								{{dictLabel1}}
+							</view>
+							<view class="p">
+								<span>鐢宠瘔鍐呭锛�</span>
+								{{details.complaintReason}}
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="jilu">
+					<image src="/static/guocheng.png" class="img" alt=""  />
+					<view class="font">
+						<view class="h">
+							<view class="s">
+								澶勭悊涓�
+							</view>
+							<view class="time">
+								2024-06-07 12:14
+							</view>
+						</view>
+						<view class="b">
+							<view class="name">
+								{{details.companyUser}}
+							</view>
+							<view class="p">
+								<span>鐢宠瘔涓婚锛�</span>
+								{{dictLabel1}}
+							</view>
+							<view class="p">
+								<span>鐢宠瘔鍐呭锛�</span>
+								{{details.complaintReason}}
+							</view>
+						</view>
+					</view>
+				</view>
+			 -->
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import { complaintDetails, orderNodeList, orderComplaintNodeList } from '@/api/qiye.js'
+	import { orderDetails, orderDetailsLog } from '@/api/policy.js'
+	import { config } from '@/common/config.js'
+	import { getDicts } from '@/api/data.js'
+	export default {
+		data() {
+			return {
+				details: {},
+				orderId: "",
+				orderDetailsMsg: {},
+				baseUrl: config.baseUrl,
+				dictLabel: "",
+				dictLabel1: "",
+				nodeList: []
+			}
+		},
+		onLoad(options) {
+			this.complaint(options.id)
+			if(options.orderId && options.orderId !== 'null') {
+				this.orderId = options.orderId
+				this.orderDetails()
+			} else {
+				this.orderNodeList(options.id)
+			}
+		},
+		methods: {
+			orderNodeList(id) {
+				orderNodeList({id}).then(val => {
+					// console.log(val)
+					this.nodeList = val.data.data
+				})
+			},
+			enforceType() {
+				getDicts('enforce_type').then(val => {
+					console.log(val)
+					this.dictLabel = val.data.data.find(item => item.dictCode == this.orderDetailsMsg.enforceType).dictLabel
+					
+				})
+			},
+			imgclick(url) {
+				url = this.baseUrl + url
+				uni.previewImage({
+					urls: [url]
+				})
+			},
+			complaint(details) {
+				complaintDetails(details).then(val => {
+					// console.log(val.data.data)
+					this.details = val.data.data
+					// this.getComtype()
+				})
+			},
+			orderDetails() {
+				orderDetails({ orderId: this.orderId}).then(val => {
+					// console.log(val.data.data)
+					val.data.data.regionImgs = val.data.data.regionImgs.split(",")
+					this.orderDetailsMsg = val.data.data
+					if(this.orderId) {
+						this.orderComplaintNodeList()
+					}
+					this.enforceType()
+				})
+			},
+			orderComplaintNodeList() {
+				orderComplaintNodeList({ orderId: this.orderId }).then(val => {
+					console.log(val.data.data, 'val===')
+					this.nodeList = val.data.data
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+	page {
+		background: #F4F4F4;
+	}
+</style>
+<style lang="scss" scoped>
+	.page-main {
+		position: relative;
+		top: -380rpx;
+	}
+	
+	.donw-box {
+		width: 100%;
+		height: 380rpx;
+		flex-shrink: 0;
+		background: linear-gradient(180deg, #1171E0 42.5%, #F4F4F4 100%);
+	}
+	.wbox {
+		background: #fff;
+		border-radius: 5px;
+		padding: 24rpx;
+		box-sizing: border-box;
+		margin: 0 32rpx;
+	
+		.item {
+			display: flex;
+			margin-bottom: 20rpx;
+			font-size: 30rpx;
+	
+			.k {
+				color: #7E8596;
+				width: 30%;
+	
+			}
+	
+			.v {
+				color: #202D44;
+				width: 70%;
+	
+			}
+		}
+	
+		.item:last-child {
+			margin-bottom: 0;
+		}
+	
+		.imgbox {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			border-radius: 10rpx;
+	
+			img {
+				width: 198rpx;
+				height: 198rpx;
+				margin-bottom: 20rpx;
+	
+			}
+		}
+	}
+	.title {
+		color: #ffffff;
+		font-size: 44rpx;
+		font-weight: bold;
+		padding-left: 32rpx;
+		margin-top: 24rpx;
+		margin-bottom: 24rpx;
+	
+	}
+	
+	.wbox2 {
+		background: #fff;
+		border-radius: 5px;
+		box-sizing: border-box;
+		margin: 0 32rpx;
+		position: relative;
+		z-index: 10;
+		.t {
+			padding: 24rpx;
+			border-bottom: 1px solid #EEEEEE;
+			color: #202d44;
+			font-size: 36rpx;
+			font-weight: bold;
+		}
+	
+	}
+
+	.jilu{
+		display: flex;
+		justify-content: space-between;
+		padding: 24rpx;
+		position: relative;
+		&::before{
+			content: '';
+			display: inline-block;
+			width: 2rpx;
+			height: 100%;
+			background: #eb47460d;
+			position: absolute;
+			left: 44rpx;
+			top: 30rpx;
+			z-index: 99;
+		}
+		
+		.img{
+			width: 50rpx;
+			height: 50rpx;
+			margin-right: 24rpx;
+			position: relative;
+			z-index: 100;
+		}
+		.font{
+			width: calc(100% - 70rpx);
+			.h{
+				display: flex;
+				justify-content: space-between;
+				margin-bottom: 20rpx;
+				.s{
+					 color: #202d44;
+					 font-size: 32rpx;
+				}
+				.time{
+					color: #7e8596;
+					font-size: 24rpx;
+				}
+			}
+			.b{
+				// width: 289px;
+				// height: 111px;
+				// flex-shrink: 0;
+				border-radius: 4px;
+				background: #F6F6F6;
+				padding: 24rpx;
+				.name{
+					 color: #202d44;
+					 font-size: 32rpx;
+				}
+				.p{
+					color: #202d44;
+					font-size: 26rpx;
+					span{
+						color: #666666;
+						
+					}
+				}
+			}
+		}
+	}
+	.handler{
+		&::before {
+			background: #fe7b320d;
+		}
+	}
+	.start{
+		&::before{
+			background: #E7F8F0;
+		}
+	}
+	.nonde{
+		&::before{
+			background: none;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/qiye/my/my.vue b/qiye/my/my.vue
index eeb3b1e..814429d 100644
--- a/qiye/my/my.vue
+++ b/qiye/my/my.vue
@@ -27,6 +27,13 @@
 					</view>
 					<u-icon name="arrow-right"></u-icon>
 				</view>
+				<view class="item" @click="jianyi()">
+					<view class="set-flex">
+						<image src="/static/policy/jianyi-record.png" mode="widthFix" style="border-radius: 50%;"></image>
+						<text class="change">寤鸿璁板綍</text>
+					</view>
+					<u-icon name="arrow-right"></u-icon>
+				</view>
 				<view class="item" @click="switchPhone()" v-if="isShowChange">
 					<view class="set-flex">
 						<image src="/static/qiye/qiehuan.png" mode="widthFix"></image>
@@ -40,6 +47,20 @@
 						<text class="change">淇敼鎵嬫満鍙�</text>
 					</view>
 					<u-icon name="arrow-right"></u-icon>
+				</view>
+				<view class="item" @click="goProposal()">
+					<view class="set-flex">
+						<image src="/static/policy/personal.png" mode="widthFix"></image>
+						<text class="change">鎶曡瘔</text>
+					</view>
+					<u-icon name="arrow-right"></u-icon>
+				</view>
+				<view class="item" @click="goProposal1()">
+					<view class="set-flex">
+						<image src="/static/policy/jianyi.png" mode="widthFix"></image>
+						<text class="change">寤鸿</text>
+					</view>
+					<u-icon name="arrow-right"></u-icon>
 				</view>
 			</view>
 			<!-- <view class="show-phone-number">
@@ -111,6 +132,11 @@
 					url: '/qiye/complaint/complaint'
 				})
 			},
+			jianyi(){
+				uni.navigateTo({
+					url: '/qiye/proprsalRecord/proprsalRecord'
+				})
+			},
 			switchPhone(){
 				uni.navigateTo({
 					url: "/qiye/switchPhone/switchPhone"
@@ -129,6 +155,16 @@
 				      }
 				     }
 				    })
+			},
+			goProposal() {
+				uni.navigateTo({
+					url: `/qiye/proposal/proposal`
+				})
+			},
+			goProposal1() {
+				uni.navigateTo({
+					url: `/qiye/proposal1/proposal1`
+				})
 			}
 		}
 	}
diff --git a/qiye/proposal/proposal.vue b/qiye/proposal/proposal.vue
new file mode 100644
index 0000000..1976233
--- /dev/null
+++ b/qiye/proposal/proposal.vue
@@ -0,0 +1,183 @@
+<template>
+	<view>
+		<view class="page-box">
+			<view class="padding">
+				<view class="font">
+					鎶曡瘔閮ㄩ棬
+				</view>
+				<view style="margin-top: 20rpx;" @click="show = true">
+					<u-input placeholder="璇烽�夋嫨" readonly  :value="executeDeptName"	 suffixIcon="arrow-right"></u-input>
+				</view>
+				<view class="font">
+					鎶曡瘔涓婚
+				</view>
+				<view>
+					<u-radio-group v-model="complaintType">
+						<u-radio v-for="(aa, ii) in list" :key="ii" :name="aa.dictCode">
+							{{aa.dictLabel}}
+						</u-radio>
+					</u-radio-group>
+				</view>
+				<view class="font">
+					鎶曡瘔
+				</view>
+				<view class="margin-top">
+					<u-textarea :cursorSpacing="70" v-model="complaintReason" placeholder="璇疯緭鍏�..."></u-textarea>
+				</view>
+			</view>
+			<view class="down">
+				<view class="enter" @click="entery()">鎻愪氦</view>
+			</view>
+		</view>
+		<u-picker :show="show" @close="show = false" @confirm="confirm" @cancel="show = false" keyName="deptName" :columns="columns"></u-picker>
+		
+	</view>
+</template>
+
+<script>
+	import { getDicts } from '@/api/data.js'
+	import { deptList, complaintAdd } from '@/api/index'
+	import { orderComplaint } from '@/api/qiye.js'
+	export default {
+		data() {
+			return {
+				list: [],
+				show: false,
+				columns: [],
+				complaintReason: '',
+				complaintType: '',
+				executeDeptName: '',
+				executeId: ''
+			}
+		},
+		onLoad() {
+			getDicts('complaint_type').then(val => {
+				this.list = val.data.data
+			})
+			this.deptList()
+		},
+		methods: {
+			confirm(e) {
+				this.executeDeptName = e.value[0].deptName
+				this.executeId = e.value[0].deptId
+				this.show = false
+			},
+			deptList() {
+				deptList({parentId: 100}).then(val => {
+					// console.log(val)
+					this.columns = [val.data.data]
+				})
+			},
+			entery() {
+				if(this.executeDeptName == '') {
+					uni.showToast({
+						title: '璇烽�夋嫨鎶曡瘔瀵硅薄',
+						icon: 'none'
+					})
+					return
+				}
+				if(this.complaintType==''){
+					uni.showToast({
+						title: '璇烽�夋嫨鎶曡瘔涓婚',
+						icon: 'none'
+					})
+					return
+				}
+				if(this.complaintReason==''){
+					uni.showToast({
+						title: '璇疯緭鍏ユ姇璇夊唴瀹�',
+						icon: 'none'
+					})
+					return
+				}
+				const userInfo = uni.getStorageSync('qiyedata')
+				const companyId = uni.getStorageSync('companyId')
+				let data = {
+					complaintType:this.complaintType,
+					complaintReason:this.complaintReason,
+					executeDeptName: this.executeDeptName,
+					executeDeptId: this.executeId,
+					companyName: userInfo.companyName,
+					companyPhone: userInfo.companyPhone,
+					companyUser: userInfo.companyUser,
+					companyId: companyId
+				}
+				complaintAdd(data).then(val => {
+					if(val.data.code === 200) {
+						uni.showToast({
+							title: '鎻愪氦鎴愬姛',
+							icon: 'none'
+						})
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 500)
+					}
+		
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-radio-group {
+		margin-top: 20rpx;
+		flex-wrap: wrap;
+		.u-radio {
+			margin-right: 20rpx;
+			margin-bottom: 20rpx;
+		}
+	}
+	
+.page-box {
+		padding: 24rpx 0;
+		.font{
+			color: #4a4e60;
+			font-size: 32rpx;
+			margin-top: 20rpx;
+		}
+		.title1 {
+			font-size: 36rpx;
+			font-weight: 700;
+			padding: 0 32rpx;
+			border-bottom: 2rpx solid #F4F4F4;
+			padding-bottom: 24rpx;
+		}
+
+		.padding {
+			padding: 0 24rpx;
+		}
+
+		.margin-top {
+			margin-top: 20rpx;
+		}
+
+		.down {
+			padding: 34rpx 30rpx 30rpx;
+			display: flex;
+			justify-content: space-between;
+
+			>view {
+				display: inline-block;
+			}
+
+			.button {
+				padding: 20rpx 40rpx;
+				background: #F7F7F7;
+				border-radius: 20rpx;
+			}
+
+			.enter {
+				width: 100%;
+				background: #1171E0;
+				color: white;
+				border-radius: 20rpx;
+				padding: 20rpx 40rpx;
+				text-align: center;
+			}
+		}
+	}
+	/deep/ .u-textarea {
+		background-color: #F4F4F4;
+	}
+</style>
diff --git a/qiye/proposal1/proposal1.vue b/qiye/proposal1/proposal1.vue
new file mode 100644
index 0000000..aa4a069
--- /dev/null
+++ b/qiye/proposal1/proposal1.vue
@@ -0,0 +1,132 @@
+<template>
+	<view>
+		<view class="page-box">
+			<view class="padding">
+				<view class="font">
+					寤鸿
+				</view>
+				<view class="margin-top">
+					<u-textarea :cursorSpacing="70" v-model="complaintReason" placeholder="璇疯緭鍏�..."></u-textarea>
+				</view>
+			</view>
+			<view class="down">
+				<view class="enter" @click="entery()">鎻愪氦</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { getDicts } from '@/api/data.js'
+	import { orderComplaint, confirmOrderId } from '@/api/qiye.js'
+	import {  complaintAdd } from '@/api/index'
+	export default {
+		data() {
+			return {
+				list: [],
+				complaintReason: '',
+				complaintType: ''
+			}
+		},
+		onLoad() {
+			getDicts('complaint_type').then(val => {
+				this.list = val.data.data
+			})
+		},
+		methods: {
+			entery() {
+				if(this.complaintReason==''){
+					uni.showToast({
+						title: '璇疯緭鍏ユ姇璇夊唴瀹�',
+						icon: 'none'
+					})
+					return
+				}
+				const userInfo = uni.getStorageSync('qiyedata')
+				const companyId = uni.getStorageSync('companyId')
+				let data = {
+					complaintType: -1,
+					complaintReason:this.complaintReason,
+					companyName: userInfo.companyName,
+					companyPhone: userInfo.companyPhone,
+					companyUser: userInfo.companyUser,
+					companyId: companyId
+				}
+				complaintAdd(data).then(val => {
+					if(val.data.code == 200) {
+						uni.showToast({
+							title: '鎻愪氦鎴愬姛',
+							icon: 'none'
+						})
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 500)
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	/deep/ .u-radio-group {
+		margin-top: 20rpx;
+		flex-wrap: wrap;
+		.u-radio {
+			margin-right: 20rpx;
+			margin-bottom: 20rpx;
+		}
+	}
+	
+.page-box {
+		padding: 24rpx 0;
+		.font{
+			color: #4a4e60;
+			font-size: 32rpx;
+			margin-top: 20rpx;
+		}
+		.title1 {
+			font-size: 36rpx;
+			font-weight: 700;
+			padding: 0 32rpx;
+			border-bottom: 2rpx solid #F4F4F4;
+			padding-bottom: 24rpx;
+		}
+
+		.padding {
+			padding: 0 24rpx;
+		}
+
+		.margin-top {
+			margin-top: 20rpx;
+		}
+
+		.down {
+			padding: 34rpx 30rpx 30rpx;
+			display: flex;
+			justify-content: space-between;
+
+			>view {
+				display: inline-block;
+			}
+
+			.button {
+				padding: 20rpx 40rpx;
+				background: #F7F7F7;
+				border-radius: 20rpx;
+			}
+
+			.enter {
+				width: 100%;
+				background: #1171E0;
+				color: white;
+				border-radius: 20rpx;
+				padding: 20rpx 40rpx;
+				text-align: center;
+			}
+		}
+	}
+	/deep/ .u-textarea {
+		background-color: #F4F4F4;
+	}
+</style>
diff --git a/qiye/proprsalRecord/proprsalRecord.vue b/qiye/proprsalRecord/proprsalRecord.vue
new file mode 100644
index 0000000..12a14be
--- /dev/null
+++ b/qiye/proprsalRecord/proprsalRecord.vue
@@ -0,0 +1,256 @@
+<template>
+	<view>
+		<u-sticky bgColor="white">
+			<view class="set-search">
+				<u-search placeholder="璇疯緭鍏�" @search="search" @blur="search" shape="square" :showAction="false"></u-search>
+			</view>
+			<view class="border"></view>
+			<u-tabs :list="list" @change="click" :current="current" :scrollable="false" bgColor="white"></u-tabs>
+		</u-sticky>
+		<view class="item" v-for="(item,index) in list1">
+			<img src="/static/i05.png" class="img" alt="" />
+			<view class="right">
+				<view class="name">
+					<view class="l">
+						{{item.companyName}}
+					</view>
+					<template v-if="item.complaintStatus==0">
+						<view class="r color2">
+							寰呭搷搴�
+						</view>
+					</template>
+					<template v-if="item.complaintStatus==1">
+						<view class="r color1">
+							澶勭悊涓�
+						</view>
+					</template>
+					<template v-if="item.complaintStatus==2">
+						<view class="r color3">
+							宸插姙缁�
+						</view>
+					</template>
+					<!-- <view class="r color1">
+						寰呰瘎浠�
+					</view> -->
+					<template v-if="item.complaintStatus==-1">
+						<view class="r color4">
+							宸查┏鍥�
+						</view>
+					</template>
+				</view>
+				<view class="box">
+					<view class="l">
+						<p style="align-items: flex-start;display: flex;justify-content: flex-start;"><text style="display: inline-block;width: 35%;">鎵ф硶鍗曚綅锛�</text> <text style="display: inline-block;width: 65%;">{{item.executeDeptName}}</text></p>
+						<p>鎶曡瘔鏃堕棿锛� {{item.complaintTime}}</p>
+					</view>
+					<view class="r" @click="chakan(item.id, item.orderId)">
+						鍘绘煡鐪�
+					</view>
+				</view>
+			</view>
+		</view>
+		<u-empty v-if="!list1.length"></u-empty>
+		<!-- <view class="item">
+			<img src="/static/i05.png" class="img" alt="" />
+			<view class="right">
+				<view class="name">
+					<view class="l">
+						鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃
+					</view>
+					<view class="r color2">
+						寰呰瘎浠�
+					</view>
+				</view>
+				<view class="box">
+					<view class="l">
+						<p>鎵ф硶鍗曚綅锛氬啘涓氬啘鏉戝眬鍐滀笟鍐滄潙灞�鍐滀笟鍐滄潙灞�鍐滀笟鍐滄潙灞�鍐滀笟鍐滄潙灞�鍐滀笟鍐滄潙灞�s</p>
+						<p>鎵ф硶鏃堕棿锛�2024-06-03 12:30:67</p>
+					</view>
+					<view class="r">
+						鍘绘煡鐪�
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="item">
+			<img src="/static/i05.png" class="img" alt="" />
+			<view class="right">
+				<view class="name">
+					<view class="l">
+						鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃鍖椾含灏氱瓥浜掑姩绉戞妧鏈夐檺鍏徃
+					</view>
+					<view class="r color3">
+						寰呰瘎浠�
+					</view>
+				</view>
+				<view class="box">
+					<view class="l">
+						<p>鎵ф硶鍗曚綅锛氬啘涓氬啘鏉戝眬</p>
+						<p>鎵ф硶鏃堕棿锛�2024-06-03 12:30:67</p>
+					</view>
+					<view class="r">
+						鍘绘煡鐪�
+					</view>
+				</view>
+			</view>
+		</view> -->
+		<view style="height: 50rpx;"></view>
+		
+	</view>
+</template>
+
+<script>
+	import { pleaseList } from '@/api/qiye.js'
+	
+	export default {
+		data() {
+			return {
+				current: 0,
+				list: [{
+					name: '鍏ㄩ儴',
+					value: ''
+				}, {
+					name: '寰呭搷搴�',
+					value: 0
+				}, {
+					name: '澶勭悊涓�',
+					value: 1
+				}, {
+					name: '宸插姙缁�',
+					value: 2
+				}],
+				list1:[],
+				queryParams: {
+					pageNum: 1,
+					pageSize: 10,
+					companyId:'',
+				},
+				total: 1,
+			}
+		},
+		onLoad() {
+			this.list1 = []
+			this.queryParams.pageNum = 1
+			this.getList()
+		},
+		onReachBottom() {
+			if(this.list1.length == this.total) {
+				return
+			}
+			this.queryParams.pageNum++
+			this.getList()
+		},
+		methods: {
+			chakan(id,orderId){
+				uni.navigateTo({
+					url: `/qiye/complaint/details1?id=${id}&orderId=${orderId}`
+				})
+			},
+			getList() {
+				let data = uni.getStorageSync("qiyedata")
+				this.queryParams.companyId = data.companyId
+				pleaseList({...this.queryParams}).then(val => {
+					console.log(val.data)
+					this.total = val.data.total
+					this.list1 = [...this.list1,...val.data.rows]
+				})
+			},
+			search(e){
+				this.list1 = []
+				this.queryParams.pageNum =1
+				this.queryParams.companyName = e
+				this.getList()
+			},
+			click(i) {
+				this.list1 = []
+				this.queryParams.pageNum = 1
+				this.queryParams.complaintStatus = this.list[i.index].value
+				
+				this.getList()
+			}
+		}
+	}
+</script>
+
+<style>
+page {
+		background-color: #F4F4F4;
+	}
+</style>
+<style lang="scss" scoped>
+	.set-search{
+		margin: 0 32rpx 0;
+		padding-top: 26rpx;
+		
+	}
+	.border{
+		border-bottom: 2rpx solid #F6F6F6;
+		margin: 20rpx 0 0;
+	}
+	
+	.item{
+		background: #fff;
+		border-radius: 5px;
+		padding: 24rpx;
+		box-sizing: border-box;
+		margin: 20rpx 32rpx;
+		display: flex;
+		.img{
+			width: 56rpx;
+			height: 56rpx;
+		}
+		.right{
+			width: 90%;
+			.name{
+				display: flex;
+				justify-content: space-between;
+				.l{
+					color: #202d44;
+					font-size: 32rpx;
+					line-height: 44rpx;
+					margin-bottom: 24rpx;
+					width: 80%;
+				}
+				.r{
+					font-size: 28rpx;	
+					width: 20%;
+					text-align: right;
+				}
+			}
+			.box{
+				display: flex;
+				justify-content: space-between;
+				.l{
+					font-size: 26rpx;
+					 color: #7e8593;
+					 max-width: 80%;
+				}
+				.r{
+					width: 132rpx;
+					height: 64rpx;
+					line-height: 64rpx;
+					border-radius: 5px;
+					border: 1px solid #ABD2FF;
+					background: #F0F8FF;
+					color: #1171e0;
+					text-align: center;
+					font-size: 30rpx;
+				}
+			}
+		}
+	}
+	.color1{
+		color: #FE7B32;
+	}
+	.color2{
+		color: #EB4746;
+		
+	}
+	.color3{
+		color: #3EB47A;
+		
+	}
+	.color4{
+		color: gray;
+	}
+</style>
\ No newline at end of file
diff --git a/qiye/record/details.vue b/qiye/record/details.vue
index 9a88159..d851ff6 100644
--- a/qiye/record/details.vue
+++ b/qiye/record/details.vue
@@ -168,7 +168,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="bottom" v-if="msg.orderStatus==3 || msg.orderStatus== 4">
+		<view class="bottom" v-if=" msg.orderStatus== 5">
 			<view class="one" v-if="msg.isComplaint != 1 && msg.isEva == 1">
 				<view class="b1" @click="open()">
 					鎶曡瘔
@@ -187,6 +187,15 @@
 					鎴戣璇勪环
 				</view>
 			</view>
+		</view>
+		<view class="bottom" v-if=" msg.orderStatus == 4">
+			<view class="one" >
+				<view class="b1" style="background-color: #1171E0;color: white;" @click="enterOrder()">
+					纭
+				</view>
+			</view>
+			
+			
 		</view>
 		<u-popup :show="show" @close="close" mode="bottom" round="10" closeable>
 			<view class="page-box">
@@ -224,7 +233,7 @@
 	import { order } from '@/api/index.js'
 	import { getDicts } from '@/api/data.js'
 	import { config } from '@/common/config'
-	import { orderComplaint } from '@/api/qiye.js'
+	import { orderComplaint, confirmOrderId } from '@/api/qiye.js'
 	export default {
 		data() {
 			return {
@@ -259,6 +268,27 @@
 			this.getdata()
 		},
 		methods: {
+			enterOrder() {
+				uni.showModal({
+					title: '鎻愮ず',
+					content: '纭璇ヨ鍗曪紵',
+					success: val => {
+						if(val.confirm) {
+							confirmOrderId({orderId: this.msg.orderId}).then(val => {
+								if(val.data.code == 200) {
+									uni.showToast({
+										title: '纭鎴愬姛',
+										icon: 'none'
+									})
+									this.getdata()
+								}
+							})
+						}
+					}
+					
+				})
+			
+			},
 			getdata(){
 				order(this.id).then(val => {
 					
diff --git a/qiye/record/record.vue b/qiye/record/record.vue
index e923504..1451c9c 100644
--- a/qiye/record/record.vue
+++ b/qiye/record/record.vue
@@ -111,16 +111,22 @@
 
 					}
 				}, {
-					name: '寰呰瘎浠�',
-					value: {
-						isEva: 0
-					}
-				}, {
 					name: '鏈墽娉�',
 					value: {
 						orderStatus: 2
 					}
 				}, {
+					name: '寰呯‘璁�',
+					value: {
+						orderStatus: 4
+					}
+				}, {
+					name: '寰呰瘎浠�',
+					value: {
+						isEva: 0,
+						orderStatus: 5
+					}
+				},{
 					name: '宸茶瘎浠�',
 					value: {
 						isEva: 1
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..d0b6aa7
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,58 @@
+## 绠�浠�
+鍩轰簬uni-app ts, 灏佽echarts搴擄紝閫傞厤H5绔井淇″皬绋嬪簭绔紝鍏跺畠绔湭娴嬭瘯锛屾敮鎸佹寜闇�寮曞叆,鏀寔瀵煎嚭涓哄浘鐗囥��
+
+## 1銆佸畨瑁呴」鐩緷璧�
+```
+npm install echarts lodash -S
+```
+
+## 2銆佸皢涓嬭浇鎻掍欢涓殑com-echarts鏂囦欢澶瑰鍒跺埌椤圭洰components鐩綍涓�
+
+## 3銆佸湪闇�瑕佺敤鍒扮殑椤甸潰寮曞叆璇ョ粍浠�
+
+```
+<script setup lang="ts">
+  import { ref } from 'vue'
+
+  <!-- 鎸夐渶寮曞叆chart -->
+  import { PieChart } from 'echarts/charts'
+  <!-- 寮曞叆缁勪欢 -->
+  import comEcharts from '[XXXXX]/components/com-echarts/com-echarts.vue'
+  ...
+
+  const chartsRef = ref()
+
+  const refresh = () => {
+    chartsRef.value?.reStore()
+  }
+  const saveImg = () => {
+    chartsRef.value?.saveImage()
+  }
+
+<script setup lang="ts">
+
+
+<template>
+  <!-- 椤甸潰浣跨敤 -->
+  <com-echarts ref="echartsRef" height="850rpx" :chartList="[PieChart]" :options="options"></com-echarts>
+  ...
+<template>
+
+
+```
+
+## 4銆佺粍浠秔rops 鍙婁簨浠惰鏄�
+
+** props ** 
+### canvasId: string - canvas id
+### chartList: chart list - 浠巈charts/chart鎸夐渶寮曞叆鐨刢hart鍒楄〃
+### options: any - 鍥捐〃鏁版嵁閰嶇疆
+### width: string - 鍥捐〃瀹藉害锛岄粯璁わ細100% 浠h〃鍏呮弧灞忓箷
+### height: string - 鍥捐〃楂樺害锛岄粯璁わ細1000rpx
+
+
+** 鏆撮湶鐨勭粍浠跺疄渚嬫柟娉� ** 
+### reStore 閲嶇粯鍥捐〃
+### saveImage 瀵煎嚭鍥剧墖
+
+
diff --git a/static/index-1.png b/static/index-1.png
new file mode 100644
index 0000000..49f6be5
--- /dev/null
+++ b/static/index-1.png
Binary files differ
diff --git a/static/policy/jianyi-record.png b/static/policy/jianyi-record.png
new file mode 100644
index 0000000..f722eaa
--- /dev/null
+++ b/static/policy/jianyi-record.png
Binary files differ
diff --git a/static/policy/jianyi.png b/static/policy/jianyi.png
new file mode 100644
index 0000000..450d625
--- /dev/null
+++ b/static/policy/jianyi.png
Binary files differ
diff --git a/static/policy/personal.png b/static/policy/personal.png
new file mode 100644
index 0000000..7dd0680
--- /dev/null
+++ b/static/policy/personal.png
Binary files differ

--
Gitblit v1.9.1