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