| | |
| | | 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 }}); |
| | | } |
| | |
| | | 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 }}); |
| | | } |
| | |
| | | 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 }}); |
| | |
| | | // export function getCompanyList(data){ |
| | | // return http.get('/system/company/list',{params: data}, { custom: { loading: true }}); |
| | | // } |
| | | |
| | | // /enforce/order/confirm/{orderId} |
| | | export function confirmOrderId(data){ |
| | | return http.post(`/enforce/order/confirm/${data.orderId}`,{params: data}, { custom: { loading: true }}); |
| | | } |
| | |
| | | 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' |
| | | } |
| | |
| | | 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' |
| | | } |
New file |
| | |
| | | <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> |
| | |
| | | "navigationBarTitleText" : "信息公示详情", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/visitiorRegis/visitiorRegis", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "来访人员登记" |
| | | } |
| | | } |
| | | ], |
| | | "subPackages": [ |
| | |
| | | "navigationBarTitleText" : "审批详情", |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "applyLook/applyLook", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "" |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | |
| | | } |
| | | }, |
| | | { |
| | | "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" : "建议记录" |
| | | } |
| | | } |
| | | |
| | | ] |
| | |
| | | <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"> |
| | |
| | | uni.navigateTo({ |
| | | url: `/pages/companyLogin/companyLogin?code=${item}` |
| | | }) |
| | | }, |
| | | goLogin() { |
| | | uni.scanCode({ |
| | | success: (val) =>{ |
| | | uni.navigateTo({ |
| | | url: `/pages/visitiorRegis/visitiorRegis?value=${val.result}` |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | |
| | | margin-top: 110rpx; |
| | | margin-left: 32rpx; |
| | | margin-right: 32rpx; |
| | | img{ |
| | | image{ |
| | | width: 334rpx; |
| | | height: 208rpx; |
| | | } |
| | |
| | | width: 100%; |
| | | height: 518rpx; |
| | | } |
| | | .login-news{ |
| | | margin: 20rpx 32rpx; |
| | | image{ |
| | | width: 100%; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <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> |
New file |
| | |
| | | .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; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <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> |
| | |
| | | }) |
| | | }, |
| | | applyRecord() { |
| | | console.log(this.userAuth) |
| | | if(this.userAuth) { |
| | | uni.navigateTo({ |
| | | url: '/policy/applyLook/applyLook' |
| | | }) |
| | | } else { |
| | | uni.navigateTo({ |
| | | url: '/policy/applyRecord/applyRecord' |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | recordZhifa() { |
| | | uni.navigateTo({ |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | <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> |
| | |
| | | getCompanyCount, |
| | | getEnforceTypeCount |
| | | } from '@/api/data.js' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | likeData: {}, |
| | | option: {}, |
| | | typeItem: '', |
| | | currentValue: '', |
| | | show: false, |
| | |
| | | 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 |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.getCompanyCount() |
| | | this.getServerData(); |
| | | this.getServerData1() |
| | | |
| | | }, |
| | | methods: { |
| | | confirmDate(e) { |
| | |
| | | // 执法次数部门 |
| | | 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, |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logList } from '@/api/qiye.js' |
| | | import { complaintList } from '@/api/qiye.js' |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | 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] |
| | | }) |
| | |
| | | <template v-if="msg.orderStatus==2">待执法</template> |
| | | </view> |
| | | <view class="wbox"> |
| | | <view class="item"> |
| | | <view class="item" v-if="dictLabel"> |
| | | <view class="k"> |
| | | 执法类型 |
| | | </view> |
| | |
| | | {{dictLabel}} |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="item" v-if="details.executeUser"> |
| | | <view class="k"> |
| | | 执法人 |
| | | </view> |
| | |
| | | 投诉记录 |
| | | </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 == '已办结'"/> |
| | |
| | | |
| | | <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 { |
| | |
| | | }, |
| | | onLoad(options) { |
| | | this.complaint(options.id) |
| | | if(options.orderId) { |
| | | if(options.orderId && options.orderId !== 'null') { |
| | | this.orderId = options.orderId |
| | | this.orderDetails() |
| | | } else { |
| | |
| | | // 获取投诉类型 |
| | | getComtype() { |
| | | getDicts('complaint_type').then(val => { |
| | | console.log(val) |
| | | this.dictLabel1 = val.data.data.find(item => item.dictCode == this.details.complaintType).dictLabel |
| | | |
| | | }) |
| | |
| | | // 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() |
| | | }) |
| | | }, |
New file |
| | |
| | | <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? "正常" : "停业整顿" }} --> |
| | | {{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> |
| | |
| | | </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>
|
| | |
| | | <view class="set-flex"> |
| | | <image src="/static/policy/phone.png" mode="widthFix"></image> |
| | | <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> |
| | |
| | | url: '/qiye/complaint/complaint' |
| | | }) |
| | | },
|
| | | jianyi(){
|
| | | uni.navigateTo({
|
| | | url: '/qiye/proprsalRecord/proprsalRecord'
|
| | | })
|
| | | },
|
| | | switchPhone(){
|
| | | uni.navigateTo({
|
| | | url: "/qiye/switchPhone/switchPhone"
|
| | |
| | | } |
| | | } |
| | | }) |
| | | },
|
| | | goProposal() {
|
| | | uni.navigateTo({
|
| | | url: `/qiye/proposal/proposal`
|
| | | })
|
| | | },
|
| | | goProposal1() {
|
| | | uni.navigateTo({
|
| | | url: `/qiye/proposal1/proposal1`
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
New file |
| | |
| | | <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> |
New file |
| | |
| | | <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> |
New file |
| | |
| | | <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> |
| | |
| | | </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()">
|
| | | 投诉
|
| | |
| | | 我要评价
|
| | | </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">
|
| | |
| | | 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 {
|
| | |
| | | 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 => {
|
| | |
|
| | |
| | |
|
| | | }
|
| | | }, {
|
| | | name: '待评价',
|
| | | value: {
|
| | | isEva: 0
|
| | | }
|
| | | }, {
|
| | | name: '未执法',
|
| | | value: {
|
| | | orderStatus: 2
|
| | | }
|
| | | }, {
|
| | | name: '待确认',
|
| | | value: {
|
| | | orderStatus: 4
|
| | | }
|
| | | }, {
|
| | | name: '待评价',
|
| | | value: {
|
| | | isEva: 0,
|
| | | orderStatus: 5
|
| | | }
|
| | | },{
|
| | | name: '已评价',
|
| | | value: {
|
| | | isEva: 1
|
New file |
| | |
| | | ## 简介 |
| | | 基于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、组件props 及事件说明 |
| | | |
| | | ** props ** |
| | | ### canvasId: string - canvas id |
| | | ### chartList: chart list - 从echarts/chart按需引入的chart列表 |
| | | ### options: any - 图表数据配置 |
| | | ### width: string - 图表宽度,默认:100% 代表充满屏幕 |
| | | ### height: string - 图表高度,默认:1000rpx |
| | | |
| | | |
| | | ** 暴露的组件实例方法 ** |
| | | ### reStore 重绘图表 |
| | | ### saveImage 导出图片 |
| | | |
| | | |