This commit is contained in:
ylj20011123 2025-07-28 18:54:09 +08:00
parent dce88d549e
commit d23f7a9109
12 changed files with 2636 additions and 351 deletions

View File

@ -29,7 +29,8 @@
"subPackages": [ //
{
"root": "pages/authorityApproval",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "权限审批",
@ -47,7 +48,8 @@
},
{
"root": "pages/auditingPop",
"pages": [{
"pages": [
{
"path": "jointlySign",
"style": {
"navigationBarTitleText": "会签"
@ -75,7 +77,8 @@
},
{
"root": "pages/settlementApproval",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"navigationStyle": "custom"
@ -118,7 +121,8 @@
},
{
"root": "pages/operatingStatements",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "经营报表",
@ -149,7 +153,8 @@
},
{
"root": "pages/walkAroundManager",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "上传走动式管理",
@ -173,7 +178,8 @@
},
{
"root": "pages/tender",
"pages": [{
"pages": [
{
"path": "tender",
"style": {
"enablePullDownRefresh": true,
@ -209,7 +215,8 @@
},
{
"root": "pages/mbwa",
"pages": [{
"pages": [
{
"path": "mbwa",
"style": {
"navigationBarTitleText": "走动式管理",
@ -238,7 +245,8 @@
},
{
"root": "pages/serviceAreaReimbursement",
"pages": [{
"pages": [
{
"path": "serviceAreaReimbursement",
"style": {
"enablePullDownRefresh": true,
@ -256,7 +264,8 @@
},
{
"root": "pages/dataSummary",
"pages": [{
"pages": [
{
"path": "dataSummary",
"style": {
"enablePullDownRefresh": true,
@ -280,7 +289,8 @@
},
{
"root": "pages/askForLeave",
"pages": [{
"pages": [
{
"path": "askForLeave",
"style": {
"enablePullDownRefresh": true,
@ -309,7 +319,8 @@
},
{
"root": "pages/officialDocManagement",
"pages": [{
"pages": [
{
"path": "officialDocManagement",
"style": {
"enablePullDownRefresh": true,
@ -338,7 +349,8 @@
},
{
"root": "pages/businessApproval",
"pages": [{
"pages": [
{
"path": "businessApproval",
"style": {
"enablePullDownRefresh": true,
@ -374,7 +386,8 @@
},
{
"root": "pages/everdayRenven",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": false,
@ -420,7 +433,8 @@
},
{
"root": "pages/suggestion",
"pages": [{
"pages": [
{
"path": "suggestion",
"style": {
"enablePullDownRefresh": true,
@ -437,7 +451,8 @@
},
{
"root": "pages/projectWarning",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "分润比例切换"
@ -455,7 +470,8 @@
},
{
"root": "pages/contract",
"pages": [{
"pages": [
{
"path": "contract",
"style": {
"enablePullDownRefresh": true,
@ -472,7 +488,8 @@
},
{
"root": "pages/cashAudit",
"pages": [{
"pages": [
{
"path": "list",
"style": {
"enablePullDownRefresh": true,
@ -495,7 +512,8 @@
},
{
"root": "pages/investment",
"pages": [{
"pages": [
{
"path": "investment",
"style": {
"enablePullDownRefresh": true,
@ -512,7 +530,8 @@
},
{
"root": "pages/publicity",
"pages": [{
"pages": [
{
"path": "publicity",
"style": {
"enablePullDownRefresh": true,
@ -529,7 +548,8 @@
},
{
"root": "pages/expenseApproval",
"pages": [{
"pages": [
{
"path": "expenseApproval",
"style": {
"enablePullDownRefresh": true,
@ -547,7 +567,8 @@
},
{
"root": "pages/commodity_temp",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -565,7 +586,8 @@
},
{
"root": "pages/autoTest/serverpartshoptotalsummary",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -582,7 +604,8 @@
},
{
"root": "pages/autoTest/shopmobilesummary",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -599,7 +622,8 @@
},
{
"root": "pages/autoTest/endaccountreport",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -616,7 +640,8 @@
},
{
"root": "pages/autoTest/abnormalauditreport",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -633,7 +658,8 @@
},
{
"root": "pages/autoTest/serverpartreport",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -650,7 +676,8 @@
},
{
"root": "pages/autoTest/abnormalauditsummary",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -667,7 +694,8 @@
},
{
"root": "pages/autoTest/abnormalaudit",
"pages": [{
"pages": [
{
"path": "index",
"style": {
"enablePullDownRefresh": true,
@ -681,6 +709,43 @@
}
}
]
},
{
"root": "pages/ProductReview",
"pages": [
{
"path": "ProductReview",
"style": {
"enablePullDownRefresh": true,
"navigationBarTitleText": "商品审批"
}
},
{
"path": "productDetail",
"style": {
"navigationBarTitleText": "商品审批"
}
},
{
"path": "newDetail",
"style": {
"navigationBarTitleText": "商品审批"
}
},
{
"path": "newApproval",
"style": {
"enablePullDownRefresh": true,
"navigationBarTitleText": "商品审批"
}
},
{
"path": "transferPage",
"style": {
"navigationBarTitleText": ""
}
}
]
}
],
"globalStyle": {
@ -694,7 +759,8 @@
"selectedColor": "#3295f9",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "static/images/tab/home.png",
"selectedIconPath": "static/images/tab/homeActive.png",

View File

@ -0,0 +1,166 @@
<template>
<view class="content">
<!-- <view style="flex: 1;overflow: hidden;" >
<scroll-view scroll-y="true" style="height: 100%;width: 100%;" @scrolltolower="loadMore"> -->
<view v-if="pageList.length > 0">
<list-unit v-for="(item, index) in pageList" :key="index" :item="item" :i="index"
@goDetail="goDetail"></list-unit>
</view>
<view v-else-if="!pageData.isLoading" style="height: 100%;">
<noFound :nodata="pageList.length > 0 ? false : true" />
</view>
<view class="load-more" v-if="pageList.length > 0">
<text>{{ !pageData.isEnd ? '正在加载,请稍后...' : '——— 我是有底线的 ———' }}</text>
</view>
<!-- </scroll-view>
</view> -->
</view>
</template>
<script>
import { mapGetters, mapMutations } from 'vuex'
import ListUnit from './components/businessUnit.vue'
export default {
data() {
return {
pageData: {
pageIndex: 1,
pageSize: 10,
isEnd: false,
isLoading: true
},
pageList: []
}
},
components: {
ListUnit
},
computed: {
...mapGetters({
reloading: 'shouldReLoadingList',
users: 'getUser'
})
},
methods: {
...mapMutations(['shouldReLoadingList']),
getList() {
let _this = this
let req = {
SearchParameter: {
Accept_Code: "",
BusinessProcess_StateSearch: "",
Operation_Type: 6,
UserId: this.users.UserId
},
PageIndex: _this.pageData.pageIndex,
PageSize: _this.pageData.pageSize,
}
console.log('reqreqreqreq', req);
this.$request.$webPost('EShangApiMain/BusinessProcess/GetBusinessProcessList', req).then(res => {
console.log('resada', res);
if (res.Result_Code === 100) {
let list = res.Result_Data.List
if (list.length > 0) {
_this.pageList = this.pageData.pageIndex == 1 ? list : [..._this.pageList, ...list]
}
if (list.length < _this.pageData.pageSize) { //
_this.pageData.isEnd = true
}
_this.$forceUpdate()
} else {
_this.pageList = []
}
uni.hideLoading()
setTimeout(function () {
_this.pageData.isLoading = false
}, 500)
})
// _this.$request.$get("GetCommdityFlowList",{
// pageIndex: _this.pageData.pageIndex,
// pageSize: _this.pageData.pageSize
// }).then(res => {
// if(!res.ResultCode ||res.ResultCode!='100'){
// _this.pageList = []
// }else{
// let list = res.Data.List
// if (list.length > 0) {
// _this.pageList = this.pageData.pageIndex==1 ? list : [..._this.pageList,...list]
// }
// if (list.length < _this.pageData.pageSize) { //
// _this.pageData.isEnd = true
// }
// _this.$forceUpdate()
// }
// })
},
loadMore() {
if (!this.pageData.isEnd) {
this.pageData.pageIndex += 1
this.getList()
}
},
goDetail(item) {
let pageName = ''
this.$util.toNextRoute('navigateTo', "/pages/businessApproval/productDetail?id=" + item.HIGHWAYPROINST_ID)
},
},
onPullDownRefresh() {
this.pageData.pageIndex = 1
this.pageData.isEnd = false
uni.showLoading({
title: '正在加载'
})
this.getList()
setTimeout(function () {
uni.stopPullDownRefresh()
}, 1000)
},
onReachBottom() {
this.loadMore()
},
onShow() {
let _this = this
if (this.reloading) {
uni.showLoading({
title: '正在加载'
})
_this.pageData.pageIndex = 1
_this.pageData.isEnd = false
_this.getList()
this.shouldReLoadingList(false)
}
},
onLoad() {
this.pageData.isLoading = true
uni.showLoading({
title: '正在加载'
})
this.getList()
},
onUnload() {
this.$util.addUserBehaviorNew()
},
onHide() {
}
}
</script>
<style scoped>
.content {
display: flex;
flex-direction: column;
justify-content: center;
/* height: 100%; */
}
</style>

View File

@ -0,0 +1,89 @@
<template>
<div class="card" :class="item.SORTNUM == 0 ? 'conten-border' : ''" @tap='goDetail' v-if="item">
<div class="uni-flex jc-between" >
<p class="contentName">
{{item.SERVERPART_NAME}}
<!-- <span v-if="item.HIGHWAYPROINST_NEXTID=='3000'" style="color:#D73535;">退</span>
<span v-else-if="item.HIGHWAYPROINST_NEXTID=='4000'" style="color:#D73535;"></span> -->
</p>
<text class="typeText" :class="item.HIGHWAYPROINST_NEXTID=='9000' ? 'typeText-color' : ''">{{item.SORTNUM==0 ? '待我处理': proStatus[item.HIGHWAYPROINST_NEXTID]}}</text>
</div>
<div class="content-index">{{i+1}}</div>
<view style="line-height: 1;" class="content-type-text">
{{item.PROINST_NAME}}
</view>
<view class="content-box-cashpay">
<text >{{item.PRODEF_NAME }}</text>
</view>
<view class="bb1"></view>
<view class="uni-flex align-center jc-between" v-if="item.ACTINST_NAME">
<view class="uni-flex jc-top" >
<i class="B-icon A-icon"></i>
<text class="content-span">{{item.ACTINST_NAME}}</text>
</view>
<text class="content-span" v-if="!item.STAFF_NAME">{{item.HIGHWAYPROINST_CREATEDATE}}</text>
</view>
<view class="uni-flex jc-between" v-if="item.STAFF_NAME">
<view class="uni-flex align-top" >
<text class="G-icon A-icon" ></text>
<text class="content-span staff-text">{{item.STAFF_NAME}}</text>
</view>
<text class="content-span lh15">{{item.HIGHWAYPROINST_CREATEDATE}}</text>
</view>
<view class="uni-flex jc-end" v-if="!item.ACTINST_NAME && !item.STAFF_NAME">
<text class="content-span">{{item.HIGHWAYPROINST_CREATEDATE}}</text>
</view>
</div>
</template>
<script>
export default {
props: {
item: {
type: Object,
required: true
},
i: {
type: Number,
required: true
}
},
data () {
return {
proStatus: {
1000: '待受理',
2000: '办理中',
3000: '已驳回',
4000: '已移交',
9000: '已审结'
}
}
},
computed: {
},
methods: {
goDetail () {
this.$emit('goDetail', this.item)
}
}
}
</script>
<style scoped>
@import url('../../../common/css/listUnit.css');
.content-box-cashpay {
margin-top: 40rpx;
font-size: 24rpx;
text-align: center;
padding-bottom: 16rpx;
}
.content-box-cashpay text {
font-size: 30rpx;
font-weight: 600;
line-height: 1.5;
}
</style>

View File

@ -0,0 +1,88 @@
<template>
<div class="card" :class="item.SORTNUM == 0 ? 'conten-border' : ''" @tap='goDetail' v-if="item">
<div class="uni-flex jc-between" >
<p class="contentName">
{{item.Serverpart_Name}}
<!-- <span v-if="item.HIGHWAYPROINST_NEXTID=='3000'" style="color:#D73535;">退</span>
<span v-else-if="item.HIGHWAYPROINST_NEXTID=='4000'" style="color:#D73535;"></span> -->
</p>
<text class="typeText" :class="item.BusinessProcess_State=='9000' ? 'typeText-color' : ''">{{proStatus[item.BusinessProcess_State]}}</text>
</div>
<div class="content-index">{{i+1}}</div>
<!-- <view style="line-height: 1;" class="content-type-text">-->
<!-- {{item.PROINST_NAME}}1-->
<!-- </view>-->
<view class="content-box-cashpay">
<text >{{item.BusinessProcess_Name}}</text>
</view>
<view class="bb1"></view>
<view class="uni-flex align-center jc-between" v-if="item.ACTINST_NAME">
<view class="uni-flex jc-top" >
<i class="B-icon A-icon"></i>
<text class="content-span">{{item.ACTINST_NAME}}2</text>
</view>
<text class="content-span" v-if="!item.STAFF_NAME">3{{item.HIGHWAYPROINST_CREATEDATE}}</text>
</view>
<view class="uni-flex jc-between" v-if="item.Staff_Name">
<view class="uni-flex align-top" >
<text class="G-icon A-icon" ></text>
<text class="content-span staff-text">{{item.Staff_Name}}</text>
</view>
<!-- <text class="content-span lh15">5{{item.HIGHWAYPROINST_CREATEDATE}}</text>-->
<view class="uni-flex jc-end" v-if="!item.ACTINST_NAME && !item.STAFF_NAME">
<text class="content-span">{{item.BusinessProcess_StartDate}}</text>
</view>
</view>
</div>
</template>
<script>
export default {
props: {
item: {
type: Object,
required: true
},
i: {
type: Number,
required: true
}
},
data () {
return {
proStatus: {
2000: '待我处理',
3000: '待我处理',
9000: '已审结',
9999: '已否决',
}
}
},
computed: {
},
methods: {
goDetail () {
this.$emit('goDetail', this.item)
}
}
}
</script>
<style scoped>
@import url('../../../common/css/listUnit.css');
.content-box-cashpay {
margin-top: 40rpx;
font-size: 24rpx;
text-align: center;
padding-bottom: 16rpx;
}
.content-box-cashpay text {
font-size: 30rpx;
font-weight: 600;
line-height: 1.5;
}
</style>

View File

@ -0,0 +1,147 @@
<template>
<view class="content">
<!-- <view style="flex: 1;overflow: hidden;" >
<scroll-view scroll-y="true" style="height: 100%;width: 100%;" @scrolltolower="loadMore"> -->
<view v-if="pageList.length>0">
<list-unit v-for="(item,index) in pageList" :key="index" :item="item" :i="index" @goDetail="goDetail"></list-unit>
</view>
<view v-else-if="!pageData.isLoading" style="height: 100%;">
<noFound :nodata="pageList.length>0 ? false : true"/>
</view>
<view class="load-more" v-if="pageList.length>0">
<text>{{!pageData.isEnd ? '正在加载,请稍后...':'——— 我是有底线的 ———'}}</text>
</view>
<!-- </scroll-view>
</view> -->
</view>
</template>
<script>
import {mapGetters,mapMutations} from 'vuex'
import ListUnit from './components/newBusinessUnit.vue'
export default {
data() {
return {
pageData: {
pageIndex:1,
pageSize:10,
isEnd: false,
isLoading: true,
list:[]
},
pageList:[]
}
},
components:{
ListUnit
},
computed:{
...mapGetters({reloading:'shouldReLoadingList'})
},
methods: {
...mapMutations(['shouldReLoadingList']),
loadMore(){
if(!this.pageData.isEnd) {
this.pageData.pageIndex += 1
this.getData()
}
},
goDetail(item) {
let pageName = ''
this.$util.toNextRoute('navigateTo', "/pages/businessApproval/newDetail?id=" + item.BusinessProcess_ID)
},
getData() {
let _this = this
this.$request.$webPost('EShangApiMain/BusinessProcess/GetBusinessProcessList', {
QueryType:"0",
SearchParameter:{
Operation_Type: "10",
BusinessProcess_StateSearch: "2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,3000,9000,9999",
},
ShowWholePower: true,
PageIndex:this.pageData.pageIndex,
PageSize: 10,
SortStr:'BUSINESSAPPROVAL_STATE,BUSINESS_STARTDATE desc'
// SortStr: 'BusinessProcess_State,BusinessProcess_StartDate desc'
}).then(res => {
console.log('res',res)
if(!res.Result_Code ||res.Result_Code!='100'){
_this.pageList = []
}else{
let list = res.Result_Data.List
if (list.length > 0) {
_this.pageList = this.pageData.pageIndex==1 ? list : [..._this.pageList,...list]
}
if (list.length < _this.pageData.pageSize) { //
_this.pageData.isEnd = true
}
_this.$forceUpdate()
}
uni.hideLoading()
setTimeout(function(){
_this.pageData.isLoading = false
},500)
})
},
},
onPullDownRefresh() {
this.pageData.pageIndex = 1
this.pageData.isEnd = false
uni.showLoading({
title:'正在加载'
})
this.getData()
setTimeout(function() {
uni.stopPullDownRefresh()
}, 1000)
},
onReachBottom(){
this.loadMore()
},
onShow() {
let _this = this
if(this.reloading) {
uni.showLoading({
title:'正在加载'
})
_this.pageData.pageIndex = 1
_this.pageData.isEnd = false
// _this.getData()
console.log('onShow')
_this.getData()
this.shouldReLoadingList(false)
}else{
console.log('onShow')
_this.getData()
}
},
onLoad() {
this.pageData.isLoading= true
uni.showLoading({
title:'正在加载'
})
// this.getData()
this.getData()
},
onUnload() {
this.$util.addUserBehaviorNew()
},
onHide() {
}
}
</script>
<style scoped>
.content {
display: flex;
flex-direction: column;
justify-content: center;
/* height: 100%; */
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,646 @@
<template>
<view>
<view class="base-info pb20">
<view class="content-title">{{baseData.HIGHWAYPROINST_DESC}}</view>
<view class="main-card">
<div class="card-title">
<h4>{{baseData.SERVERPART_NAME}}</h4>
<div class="card-status" :style="baseData.HIGHWAYPROINST_NEXTID!=9000 ?'color:#df7f42;':''">
{{proStatus[baseData.HIGHWAYPROINST_NEXTID]}}</div>
</div>
<div class="base-body" style="align-items: center;">
<i class="ico ico-user"></i><span class="item-title">申请人</span><text>{{baseData.STAFF_NAME}}</text>
</div>
<div class="base-body" style="align-items: center;">
<i class="ico ico-sjx"></i><span class="item-title">创建日期
</span><text>{{baseData.HIGHWAYPROINST_CREATEDATE}}</text>
</div>
<div class="base-body">
<view class="uni-flex" style="align-items: center;">
<i class="ico ico-bz"></i><span class="item-title">业务说明 </span>
</view>
<text>{{baseData.PROINST_NAME}}</text>
</div>
</view>
<div class="file-body" v-if="baseData.FileList && baseData.FileList.length>0">
<div class="uni-flex base-body" style="align-items: center;">
<i class="ico ico-fj"></i>
<span class="item-title">附件文件</span>
</div>
<div class="imgBox">
<filesUnit v-for="(file,i) in baseData.FileList" :fileItem="file" :key="i"></filesUnit>
</div>
</div>
<div class="file-body" v-if="baseData.QualificationList && baseData.QualificationList.length>0">
<div class="uni-flex base-body" style="align-items: center;">
<i class="ico ico-fj"></i>
<span class="item-title">资质文件</span>
</div>
<div class="imgBox">
<filesUnit v-for="(file,i) in baseData.QualificationList" :fileItem="file" :key="i"></filesUnit>
</div>
</div>
<view class="button-box" v-if="baseData.USER_ID==users.UserId">
<span @tap="showPop(4000)">
<image src="/static/images/yj-btn.png" mode="aspectFit"></image> 移交
</span>
<span @tap="showPop(2000)">
<image src="/static/images/sh-btn.png" mode="aspectFit"></image> 审核
</span>
<span @tap="showPop(3000)" v-if="baseData.CAN_REJECT===1">
<image src="/static/images/bh-btn.png" mode="aspectFit"></image> 驳回
</span>
</view>
</view>
<view class="base-info mt20" v-if="baseData.RejectApproved.length>0">
<div class="uni-list-cell uni-collapse">
<div class="cat-box uni-list-cell-navigate">
<b>驳回意见</b>
</div>
<div class="process-box uni-collapse-content uni-active">
<processUnit :item="baseData.RejectApproved[0]" :approveType="0" />
</div>
</div>
</view>
<view class="base-info">
<div class="uni-list-cell uni-collapse">
<div class="cat-box uni-list-cell-navigate"
:class="cardShow ? ' uni-navigate-bottom' : 'uni-navigate-right'" @tap="cardShow =!cardShow">
<b>审批流程</b>
</div>
<div class="process-box uni-collapse-content" :class="cardShow ? 'uni-active' : ''" v-show="cardShow">
<processUnit v-for="item in baseData.ApproveList" :item="item" :key="item.APPROVED_ID"
:approveType="1" />
</div>
</div>
</view>
<view class="page-title">{{baseData.ACCEPT_CODE == 100100 ? '商品新增' : '信息修改'}}详情</view>
<div class="uni-list-cell uni-collapse base-info" v-for="(item,index) in cateArr" :key="index">
<div class="cat-box uni-list-cell-navigate"
:class="cardShowMap[item.id] ? ' uni-navigate-bottom' : 'uni-navigate-right'" @tap="isShowCate(item)">
<b>{{item.name}}</b>
</div>
<div class="uni-collapse-content" :class="cardShowMap[item.id]? 'uni-active' : ''"
v-show="cardShowMap[item.id]">
<div class="main-card" v-for="(proUnit, cardIndex) in item.child" :key="cardIndex">
<div class="card-top">
<view class="uni-flex" style="justify-content: space-between;">
<div class="pro-name-box">
<p class="product-name">{{proUnit.COMMODITY_NAME}}</p>
<!-- <p class="product-detail"><i class="ico ico-cate"></i>{{proUnit.COMMODITY_BARCODE}}</p> -->
</div>
<div class="pro-orther-box ">
<p class="product-detail lh28">
<text class="unit-text-b1">售价</text> <b
class="product-price">{{$util.fmoney(proUnit.COMMODITY_RETAILPRICE,2)}}</b>
</p>
<!-- <p class="product-detail">{{proUnit.COMMODITY_RULE}} <text style="color: #CCCCCC;margin: 0 8upx;">|</text> {{proUnit.COMMODITY_UNIT}} <text style="color: #CCCCCC;margin: 0 8upx;">|</text> <text :class="proUnit.COMMODITY_STATE==1 ? 'product-status' : 'uni-text-gray'">{{proUnit.COMMODITY_STATE_NAME}}</text></p> -->
</div>
</view>
<div class="uni-flex" style="justify-content: space-between;">
<p class="product-detail"><i class="ico ico-cate"></i>{{proUnit.COMMODITY_BARCODE}}</p>
<div class="pro-orther-box">
<p class="product-detail">{{proUnit.COMMODITY_RULE}} <text
style="color: #CCCCCC;margin: 0 8upx;">|</text> {{proUnit.COMMODITY_UNIT}} <text
style="color: #CCCCCC;margin: 0 8upx;">|</text> <text
:class="proUnit.COMMODITY_STATE==1 ? 'product-status' : 'uni-text-gray'">{{proUnit.COMMODITY_STATE_NAME}}</text>
</p>
</div>
</div>
</div>
<ul :class="(baseData.ACCEPT_CODE==='100100') ? 'card-detail': (changeList[proUnit.COMMODITY_ID] ? 'card-change-detail' : 'no-show')">
<template v-if="baseData.ACCEPT_CODE==='100100'">
<li style="flex:2;">进货价格<text
style="color:#333;">{{proUnit.COMMODITY_PURCHASEPRICE ? '¥'+$util.fmoney(proUnit.COMMODITY_PURCHASEPRICE) : '-'}}</text></li>
<li style="text-align: center;flex:1;">是否散装<text
style="color:#333;">{{proUnit.ISBULK_NAME}}</text></li>
<li style="text-align: right;flex:1.5;">称重方式<text
style="color:#333;">{{proUnit.METERINGMETHOD_NAME}}</text></li>
</template>
<template v-else>
<!-- 调整的商品参数 -->
<li v-for='(changeItem, i) in changeList[proUnit.COMMODITY_ID]' :key="i">
{{changeItem.changeName}}:
<template v-if="changeItem.isprice">
<b class="product-price">{{changeItem.nowV}}</b>
<span class="through-line text-b9">{{changeItem.org}}</span>
<b class="uni-icon"
:class="(changeItem.org < changeItem.nowV) ?'uni-icon-arrowthinup': ' uni-icon-arrowthindown'"></b>
</template>
<template v-else>
<text class="uni-text-gray">{{changeItem.nowV}}</text>
<text class="through-line">{{changeItem.org}}</text>
</template>
</li>
</template>
<li v-if="baseData.HIGHWAYPROINST_NEXTID==='9000'">生效时间<text
class="uni-text-gray">{{proUnit.OPERATE_DATE}}</text></li>
</ul>
</div>
</div>
</div>
</view>
</template>
<script>
const json = {
COMMODITY_NAME: '品名',
COMMODITY_BARCODE: '条码',
COMMODITYTYPE_NAME: '类别',
COMMODITY_UNIT: '单位',
COMMODITY_RULE: '规格',
COMMODITY_STATE_NAME: '状态',
COMMODITY_ORI: '产地',
COMMODITY_RETAILPRICE: '售价',
COMMODITY_PURCHASEPRICE: '进价',
BUSINESSTYPE_NAME: '业态',
COMMODITY_GRADE_NAME: '质量等级',
ISBULK_NAME: '是否散装',
METERINGMETHOD_NAME: '称重方式',
}
import {
mapGetters
} from 'vuex'
import processUnit from '@/components/auditingProcess/item.vue'
import filesUnit from '@/components/filesComponent/fileUnit.vue'
export default {
components: {
filesUnit,
processUnit
},
computed: {
...mapGetters({
'users': 'getUser'
}),
},
data() {
return {
baseData: {},
pageData: [],
changeList: [],
cateArr: [],
cardShowMap: {},
commodityTree: {},
cardShow: true,
doUser: false,
proStatus: {
1000: '待受理',
2000: '办理中',
3000: '已驳回',
4000: '已移交',
9000: '已审结'
}
}
},
methods: {
isShowCate(item) {
this.cardShowMap[item.id] = !this.cardShowMap[item.id]
},
getYes(val) {
return val === 1 ? '是 ' : '否'
},
showPop(type) {
let _this = this
let url = ''
switch (type) {
case 4000:
url = '/pages/auditingPop/transfer?businessType=2000&PROINST_ID=' + _this.baseData
.HIGHWAYPROINST_ID + '&NOWACTINST_ID=' + _this.baseData.NOWACTINST_ID
break;
case 2000:
url = '/pages/auditingPop/toExamine?businessType=2000&PROINST_ID=' + _this.baseData
.HIGHWAYPROINST_ID + '&NOWACTINST_ID=' + _this.baseData.NOWACTINST_ID + '&ApproName=' + _this
.baseData.ACTINST_NAME + '&NeedApproved=1'
break;
case 3000:
url = '/pages/auditingPop/reject?businessType=2000&PROINST_ID=' + _this.baseData
.HIGHWAYPROINST_ID + '&NOWACTINST_ID=' + _this.baseData.NOWACTINST_ID
break;
}
this.$util.toNextRoute('navigateTo', url)
},
getDetail(id) {
let _this = this
_this.$request.$get("GetCommodityFlowDetail", {
HIGHWAYPROINST_ID: id
}).then(rs => {
// console.log(_this.loadingType)
if (!rs.ResultCode || rs.ResultCode != '100') {
_this.isShow = false
} else {
_this.isShow = true
}
uni.hideLoading()
let _data = rs.Data
_this.baseData = _data
//
if (_data.FileList) {
_data.FileList.map(v => {
let name = v.ATTACHMENT_URL.split('.')
v.type = name[name.length - 1]
v.name = v.ATTACHMENT_DESC
v.path = v.ATTACHMENT_URL
})
}
//
if (_data.QualificationList) {
_data.QualificationList.map(v => {
let name = v.IMAGE_URL.split('.')
v.type = name[name.length - 1]
v.name = v.IMAGE_TITLE
v.path = v.IMAGE_URL
})
}
_this.getChange()
_this.$forceUpdate()
})
},
getChange() { //
let _this = this
let itemName = Object.keys(json) //
let changeItem = {} //
let map = {}
let cateArr = []
let cardShowMap = {}
_this.baseData.CommodityList.forEach(item => {
if (!map[item.COMMODITY_TYPE]) {
map[item.COMMODITY_TYPE] = []
cardShowMap[item.COMMODITY_TYPE] = true
cateArr.push({
id: item.COMMODITY_TYPE,
name: item.COMMODITYTYPE_NAME,
child: map[item.COMMODITY_TYPE]
})
}
map[item.COMMODITY_TYPE].push(item)
itemName.forEach(el => {
let fName = 'F_' + el
// item[el] item[fName]
if (item[fName] && item[el] !== item[fName]) {
if (!changeItem[item.COMMODITY_ID]) {
changeItem[item.COMMODITY_ID] = []
}
let originValue = item[fName]
let nowValue = item[el]
let arr = {
changeName: json[el],
org: originValue,
nowV: nowValue,
isprice: false
}
if (json[el].indexOf('价') > -1) {
arr.org = _this.$util.fmoney(originValue, 2)
arr.nowV = _this.$util.fmoney(nowValue, 2)
arr.isprice = true
}
changeItem[item.COMMODITY_ID].push(arr)
}
})
})
_this.changeList = changeItem
// _this.commodityTree = map
_this.cateArr = cateArr
_this.cardShowMap = cardShowMap
}
},
onLoad(option) {
let _this = this
uni.showLoading({
title: '正在加载'
})
this.getDetail(option.id)
uni.$on('2000', function(data) {
if (data) {
uni.showLoading({
title: '正在加载'
})
_this.pageData.pageIndex = 1
_this.pageData.isEnd = false
_this.getDetail(_this.baseData.HIGHWAYPROINST_ID)
}
});
},
onUnload() {
this.$util.addUserBehaviorNew()
uni.$off('2000');
},
onShow() {
},
onHide() {
}
}
</script>
<style scoped>
.mt20 {
margin-top: 10upx;
}
.uni-icon {
font-size: 28upx;
font-weight: bold;
}
.uni-text-gray {
font-size: 24upx;
}
.uni-icon-arrowthindown {
color: #50b045;
}
.uni-icon-arrowthinup {
color: #ff4952;
}
.no-show {
display: none;
}
.pb20 {
padding-bottom: 40upx;
}
.pb8 {
padding-bottom: 8upx;
}
.lh28 {
line-height: 54upx;
}
.file-body {
padding: 12rpx 26rpx;
}
.imgBox {
padding: 0 28rpx;
}
.base-info {
background-color: #fff;
}
.base-info+.base-info {
margin-top: 20upx;
}
.content-title {
height: 115upx;
line-height: 115upx;
text-align: center;
position: relative;
}
.main-card {
/* border: 1upx solid #ddd; */
border-radius: 6upx;
box-shadow: 0 2upx 6upx rgba(0, 0, 0, 0.1);
margin-left: 24upx;
margin-right: 24upx;
margin-top: 2rpx;
}
.main-card+.main-card {
margin-top: 20upx;
}
.uni-collapse-content .main-card:nth-last-child(1) {
margin-bottom: 40upx;
}
.card-title {
display: flex;
justify-content: space-between;
align-items: center;
}
.card-title h4 {
padding: 20upx 0 15upx 20upx;
}
.card-status {
font-size: 22upx;
color: #999;
padding-right: 16upx;
}
.base-body {
font-size: 24upx;
display: flex;
justify-content: flex-start;
padding: 15upx 20upx;
align-items: flex-start;
}
.item-title {
color: #777;
width: 120upx;
/* text-align: justify; */
height: 40upx;
font-size: 24upx;
/* white-space: nowrap; */
}
.item-title:after {
display: inline-block;
content: '';
padding-left: 100%;
}
.base-body+.base-body {
border-top: 1upx dashed #eee;
}
.page-title {
padding: 15upx 0 15upx 30upx;
font-size: 26upx;
color: #949494;
background-color: #eee;
}
.cat-card {
padding: 30upx 0;
}
.cat-box {
justify-content: space-between;
display: flex;
margin-left: 30upx;
margin-right: 30upx;
}
.cat-title {
font-weight: bold;
}
.card-top {
padding: 16upx 24upx;
}
.card-top .product-name {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
max-width: 400upx;
font-size: 30upx;
padding-bottom: 8upx;
}
.card-top .pro-name-box {
flex: 2;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.product-detail {
color: #696969;
font-size: 24upx;
display: flex;
justify-content: flex-start;
align-items: center;
}
.card-top .pro-orther-box {
flex: 1;
}
.card-top .pro-orther-box .product-detail {
justify-content: flex-end;
}
.product-price {
color: #ee8437;
margin-left: 10upx;
}
.product-status {
color: #6dbf9c;
font-size: 24upx;
}
.card-detail {
border-top: 1upx dashed #eee;
display: flex;
flex-wrap: wrap;
padding: 0 24upx 24upx 24upx;
}
.card-detail li {
padding-top: 20upx;
line-height: 30upx;
/* flex: 33.3%; */
font-size: 24upx;
color: #888;
}
.card-change-detail {
border-top: 1upx dashed #eee;
padding: 0 20upx 20upx 20upx;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.card-change-detail li {
padding-top: 20upx;
line-height: 30upx;
font-size: 25upx;
padding-right: 20upx;
display: flex;
align-items: center;
}
.card-change-detail .through-line {
text-decoration: line-through;
color: #cbcbcb;
margin-left: 16upx;
}
.text-b9 {
color: #b9b9b9
}
.process-box {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
overflow: hidden;
}
.uni-list-cell:after {
height: 0;
}
.button-box {
padding-top: 36upx;
display: flex;
/* padding-bottom: 40upx; */
justify-content: space-around;
padding-bottom: 6upx;
}
.button-box image {
width: 100upx;
height: 100upx;
}
.button-box span {
font-size: 24upx;
display: flex;
flex-direction: column;
text-align: center;
}
.ico-user:before {
background-image: url('../../static/images/tender/lxr.png');
}
.ico-sjx:before {
background-image: url('../../static/images/expense/sjx.png');
}
.ico-cate:before {
width: 26upx;
height: 25upx;
background-image: url('../../static/images/txm_logo.png');
}
</style>

View File

@ -0,0 +1,47 @@
<template>
<view>
</view>
</template>
<script>
import {mapState} from "vuex";
export default {
data() {
return {}
},
computed: {
...mapState({
user: (state)=>{
return {
UserId: state.userData.UserId,
UserName: state.userData.UserName,
Membership_Phone: state.userData.Membership_Phone,
Membership_Id: state.userData.Membership_Id,
Membership_Type: state.userData.Membership_Type
}
},
toDoMsg: (state)=>{
return state.toDoMsg
},
menus: (state)=> {
return state.userData.AuthorityInfo
}
}),
},
onLoad(){
if (this.menus['d55da792-5edc-4b73-8635-07246121157f']===1){
this.$util.toNextRoute('redirectTo', "/pages/businessApproval/newApproval")
}else{
this.$util.toNextRoute('redirectTo', "/pages/businessApproval/businessApproval")
}
},
methods:{
}
}
</script>
<style scoped>
</style>

View File

@ -4,14 +4,8 @@
<template>
<div class="new-content">
<div class="header-card">
<image
:src="
'/static/images/revenue/' + theRequest.ProvinceCode + '.png'
"
mode="aspectFit"
class="head-log"
v-if="theRequest.ProvinceCode"
></image>
<image :src="'/static/images/revenue/' + theRequest.ProvinceCode + '.png'
" mode="aspectFit" class="head-log" v-if="theRequest.ProvinceCode"></image>
<view class="head-cost-text"> 实时营收 </view>
<div class="top-number">
<text>{{ today.timeMoney || "0.00" }}</text>
@ -20,8 +14,7 @@
<text class="fs12">客单交易&nbsp;&nbsp;&nbsp;&nbsp;</text>
<text class="ml10"> {{ today.totalTicketCount || 0 }}</text>
<text class="fs12">()</text>
<text class="ml-135 fs12"
>客单均价&nbsp;&nbsp;&nbsp;&nbsp;¥
<text class="ml-135 fs12">客单均价&nbsp;&nbsp;&nbsp;&nbsp;¥
</text>
<text>{{ today.avrticketCount || "0.00" }}</text>
</div>
@ -29,19 +22,10 @@
</div>
<div class="modle-title jc-between uni-flex ai-center">
<div class="uni-flex ai-center">
<image
src="/static/images/revenue/yestoday-an.png"
mode="aspectFit"
></image>
<image src="/static/images/revenue/yestoday-an.png" mode="aspectFit"></image>
<text class="strong-text ml10">营收汇总</text>
</div>
<picker
mode="date"
@change="bindDateChange"
:end="lastDay"
start="2019-12-01"
:value="theRequest.time"
>
<picker mode="date" @change="bindDateChange" :end="lastDay" start="2019-12-01" :value="theRequest.time">
<text class="revenue-date">{{ headMsg.dayOfShow }}</text>
</picker>
</div>
@ -52,20 +36,14 @@
<span></span>
</div>
<div class="uni-flex ai-center">
<div
v-if="theRequest.GroupType != '1000'"
style="margin-right: 8rpx"
>
<div v-if="theRequest.GroupType != '1000'" style="margin-right: 8rpx">
{{ headMsg.name }}
</div>
<div class="upLoad-text">{{ headMsg.uploadState }}</div>
</div>
</div>
<!-- 营收数据总览 -->
<div
class="uni-flex justify-around mode-content"
v-if="headMsg.MARKET_REVENUE"
>
<div class="uni-flex justify-around mode-content" v-if="headMsg.MARKET_REVENUE">
<div class="check-unit">
<text>商超营收</text>
<div class="check-price-color">
@ -143,10 +121,7 @@
</div>
</div>
</div>
<div
class="uni-flex justify-around mode-content"
v-if="headMsg.ShowTM"
>
<div class="uni-flex justify-around mode-content" v-if="headMsg.ShowTM">
<div class="check-unit">
<text>通美公司</text>
<div class="check-price-color">
@ -161,32 +136,18 @@
</template>
<view style="background-color: #fff">
<!-- 昨日日结上传 -->
<div
class="uni-inline-item modle-title jc-between"
v-if="regionList.length > 0"
>
<div class="uni-inline-item modle-title jc-between" v-if="regionList.length > 0">
<view class="uni-inline-item">
<image
src="/static/images/revenue/yestoday-region.png"
mode="aspectFit"
></image>
<image src="/static/images/revenue/yestoday-region.png" mode="aspectFit"></image>
<text class="strong-text">日结上传</text>
</view>
<view
style="font-size: 26rpx"
v-if="theRequest.ProvinceCode == '340000'"
>门店上传&nbsp;&nbsp;
<span class="upload-count">{{ headMsg.uploadState }}</span></view
>
<view style="font-size: 26rpx" v-if="theRequest.ProvinceCode == '340000'">门店上传&nbsp;&nbsp;
<span class="upload-count">{{ headMsg.uploadState }}</span>
</view>
</div>
<template v-if="theRequest && theRequest.GroupType == 1020">
<div
v-for="(item, i) in regionList"
:key="i"
class="region-cell"
@tap="toDetail(item)"
>
<div v-for="(item, i) in regionList" :key="i" class="region-cell" @tap="toDetail(item)">
<div class="region-cell-unit">
<text>{{ item.SERVERPART_NAME }}</text>
<div class="ct01">
@ -210,13 +171,10 @@
<text>%</text>
</div>
</div>
<div
class="region-cell-unit"
:class="{
<div class="region-cell-unit" :class="{
'ct-red': item.UPLOAD_COUNT != item.TOTAL_COUNT,
'weisc-ico': item.UPLOAD_COUNT != item.TOTAL_COUNT,
}"
>
}">
{{ item.UPLOADSTATE }}
</div>
<div class="region-cell-image">
@ -225,12 +183,8 @@
</div>
</template>
<template v-else-if="theRequest && theRequest.GroupType == 1000">
<div
class="region-title"
:class="{ active: regionShow1 }"
v-show="regionList.length > 1"
@tap="regionShow1 = !regionShow1"
>
<div class="region-title" :class="{ active: regionShow1 }" v-show="regionList.length > 1"
@tap="regionShow1 = !regionShow1">
省内区域
</div>
<div v-show="regionShow1">
@ -259,33 +213,21 @@
<text>%</text>
</div>
</div>
<div
class="region-cell-unit"
:class="{ 'ct-red': item.UPLOAD_COUNT != item.TOTAL_COUNT }"
>
<div class="region-cell-unit" :class="{ 'ct-red': item.UPLOAD_COUNT != item.TOTAL_COUNT }">
{{ item.UPLOADSTATE }}
</div>
<div class="region-cell-image">
<text
class="uni-icon-arrowright uni-icon"
:class="{ active: item.show }"
></text>
<text class="uni-icon-arrowright uni-icon" :class="{ active: item.show }"></text>
</div>
</div>
<ul class="region-cell-area" v-show="item.show">
<li
v-for="(child, index) in item.ServerpartList"
:class="{ visited: child.visited }"
:key="index"
@tap="toDetail(child)"
>
<li v-for="(child, index) in item.ServerpartList" :class="{ visited: child.visited }" :key="index"
@tap="toDetail(child)">
<div>{{ child.SERVERPART_NAME }}</div>
<div>{{ $util.fmoney(child.CASHPAY, 2) }}<text></text></div>
<div
:class="{
<div :class="{
'ct-red': child.UPLOAD_COUNT != child.TOTAL_COUNT,
}"
>
}">
{{ child.UPLOADSTATE }}
</div>
</li>
@ -293,12 +235,8 @@
</block>
</div>
<template v-if="regionList.length > 1">
<div
class="region-title"
:class="{ active: regionShow2 }"
v-show="regionList.length > 1"
@tap="regionShow2 = !regionShow2"
>
<div class="region-title" :class="{ active: regionShow2 }" v-show="regionList.length > 1"
@tap="regionShow2 = !regionShow2">
省外区域
</div>
<div v-show="regionShow2">
@ -327,10 +265,7 @@
<text>%</text>
</div>
</div>
<div
class="region-cell-unit"
:class="{ 'ct-red': item.UPLOAD_COUNT != item.TOTAL_COUNT }"
>
<div class="region-cell-unit" :class="{ 'ct-red': item.UPLOAD_COUNT != item.TOTAL_COUNT }">
{{ item.UPLOADSTATE }}
</div>
<div class="region-cell-image">
@ -338,19 +273,13 @@
</div>
</div>
<ul class="region-cell-area" v-show="item.show">
<li
v-for="(child, index) in item.ServerpartList"
:class="{ visited: child.visited }"
:key="index"
@tap="toDetail(child, '451200')"
>
<li v-for="(child, index) in item.ServerpartList" :class="{ visited: child.visited }" :key="index"
@tap="toDetail(child, '451200')">
<div>{{ child.SERVERPART_NAME }}</div>
<div>{{ child.CASHPAY }}<text></text></div>
<div
:class="{
<div :class="{
'ct-red': child.UPLOAD_COUNT != child.TOTAL_COUNT,
}"
>
}">
{{ child.UPLOADSTATE }}
</div>
</li>
@ -360,167 +289,96 @@
</template>
</template>
<template v-else>
<shopCell
v-for="(item, i) in regionList"
:key="i"
:item="item"
@toggleShow="toggleShow"
:i="i"
>
<shopCell v-for="(item, i) in regionList" :key="i" :item="item" @toggleShow="toggleShow" :i="i">
</shopCell>
</template>
<!-- 除安徽省外的 昨日营收占比 -->
<div
v-if="
<div v-if="
theRequest &&
theRequest.GroupType != 1010 &&
theRequest.ProvinceCode != '340000'
"
>
">
<div class="uni-inline-item modle-title">
<image
src="/static/images/revenue/type-operation.png"
mode="aspectFit"
></image>
<image src="/static/images/revenue/type-operation.png" mode="aspectFit"></image>
<text class="strong-text">营收占比</text>
</div>
<view class="box-operation">
<div class="operation-tab-box">
<div
class="operation-tab-unit"
v-if="modelProgress.length > 0"
@tap="selectTab('nowTab', 4)"
:class="{ active: nowTab == 4 }"
>
<div class="operation-tab-unit" v-if="modelProgress.length > 0" @tap="selectTab('nowTab', 4)"
:class="{ active: nowTab == 4 }">
经营模式
</div>
<div
class="operation-tab-unit"
v-if="regionProgress.length > 0"
@tap="selectTab('nowTab', 1)"
:class="{ active: nowTab == 1 }"
>
<div class="operation-tab-unit" v-if="regionProgress.length > 0" @tap="selectTab('nowTab', 1)"
:class="{ active: nowTab == 1 }">
经营业态
</div>
<div
class="operation-tab-unit"
v-if="tradeType.length > 0"
@tap="selectTab('nowTab', 2)"
:class="{ active: nowTab == 2 }"
>
<div class="operation-tab-unit" v-if="tradeType.length > 0" @tap="selectTab('nowTab', 2)"
:class="{ active: nowTab == 2 }">
经营类型
</div>
<div
class="operation-tab-unit"
v-if="areaProgress.length > 0"
@tap="selectTab('nowTab', 3)"
:class="{ active: nowTab == 3 }"
>
<div class="operation-tab-unit" v-if="areaProgress.length > 0" @tap="selectTab('nowTab', 3)"
:class="{ active: nowTab == 3 }">
区域营收
</div>
</div>
<div class="operation-content-box">
<div v-show="nowTab == 1" v-if="regionProgress.length > 0">
<canvas
canvas-id="businessCont"
id="businessCont"
class="operation-content"
@touchstart="touchPie($event, 'businessCont')"
></canvas>
<canvas canvas-id="businessCont" id="businessCont" class="operation-content"
@touchstart="touchPie($event, 'businessCont')"></canvas>
<div>
<div
class="operation-c-list"
v-for="(item, o) in regionProgress"
:key="o"
>
<div class="operation-c-list" v-for="(item, o) in regionProgress" :key="o">
<div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text>
</div>
<div class="progress">
<div
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
<div class="bgO" :style="{ width: item.bili + '%' }"></div>
</div>
</div>
</div>
</div>
<div v-show="nowTab == 2" v-if="tradeType.length > 0">
<canvas
canvas-id="typeCont"
id="typeCont"
class="operation-content"
@touchstart="touchPie($event, 'typeCont')"
></canvas>
<canvas canvas-id="typeCont" id="typeCont" class="operation-content"
@touchstart="touchPie($event, 'typeCont')"></canvas>
<div>
<div
class="operation-c-list"
v-for="(item, o) in tradeType"
:key="o"
>
<div class="operation-c-list" v-for="(item, o) in tradeType" :key="o">
<div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text>
</div>
<div class="progress">
<div
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
<div class="bgO" :style="{ width: item.bili + '%' }"></div>
</div>
</div>
</div>
</div>
<div v-show="nowTab == 3" v-if="areaProgress.length > 0">
<canvas
canvas-id="areaCont"
id="areaCont"
class="operation-content"
@touchstart="touchPie($event, 'areaCont')"
></canvas>
<canvas canvas-id="areaCont" id="areaCont" class="operation-content"
@touchstart="touchPie($event, 'areaCont')"></canvas>
<div>
<div
class="operation-c-list"
v-for="(item, o) in areaProgress"
:key="o"
>
<div class="operation-c-list" v-for="(item, o) in areaProgress" :key="o">
<div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text>
</div>
<div class="progress">
<div
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
<div class="bgO" :style="{ width: item.bili + '%' }"></div>
</div>
</div>
</div>
</div>
<div v-show="nowTab == 4" v-if="modelProgress.length > 0">
<canvas
canvas-id="modelCont"
id="modelCont"
class="operation-content"
@touchstart="touchPie($event, 'modelCont')"
></canvas>
<canvas canvas-id="modelCont" id="modelCont" class="operation-content"
@touchstart="touchPie($event, 'modelCont')"></canvas>
<div>
<div
class="operation-c-list"
v-for="(item, o) in modelProgress"
:key="o"
>
<div class="operation-c-list" v-for="(item, o) in modelProgress" :key="o">
<div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text>
</div>
<div class="progress">
<div
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
<div class="bgO" :style="{ width: item.bili + '%' }"></div>
</div>
</div>
</div>
@ -532,55 +390,39 @@
<view v-if="revenuelineList[0]">
<div class="uni-flex ai-center jc-between">
<view class="uni-inline-item modle-title">
<image
src="/static/images/revenue/ysqs.png"
mode="aspectFit"
></image>
<image src="/static/images/revenue/ysqs.png" mode="aspectFit"></image>
<text class="strong-text">营收趋势</text>
</view>
<view class="line-tab-unit active"> 近七日 </view>
</div>
<view class="revenue-line-box">
<view class="uni-flex ai-center">
<view
class="revenue-line-data"
:class="{ active: revenueLineType == 0 }"
@click="changeDate('revenueLineType', 0)"
>
<view class="revenue-line-data" :class="{ active: revenueLineType == 0 }"
@click="changeDate('revenueLineType', 0)">
<p>营收金额</p>
<p>{{ $util.fmoney(revenueLineMsg.Revenue_Amount, 2) }}</p>
</view>
<view
class="revenue-line-data"
:class="{ active: revenueLineType == 1 }"
@click="changeDate('revenueLineType', 1)"
>
<view class="revenue-line-data" :class="{ active: revenueLineType == 1 }"
@click="changeDate('revenueLineType', 1)">
<p>客单笔数</p>
<p>{{ $util.fmoney(revenueLineMsg.Ticke_Count, 2) }}</p>
</view>
<view
class="revenue-line-data"
:class="{ active: revenueLineType == 2 }"
@click="changeDate('revenueLineType', 2)"
>
<view class="revenue-line-data" :class="{ active: revenueLineType == 2 }"
@click="changeDate('revenueLineType', 2)">
<p>客单均价</p>
<p>{{ $util.fmoney(revenueLineMsg.Average_Amount, 2) }}</p>
</view>
</view>
<view class="text-title">
{{ typeName[revenueLineType] }}比上周
<text class="text-week"
>({{ `${sevenDate[0]}-${sevenDate[1]}` }})</text
></view
>
<view
:class="{
<text class="text-week">({{ `${sevenDate[0]}-${sevenDate[1]}` }})</text>
</view>
<view :class="{
'up-text-title':
revenuelineList[revenueLineType].Top_Difference > 0,
'down-text-title':
revenuelineList[revenueLineType].Top_Difference < 0,
}"
>
}">
{{
$util
.fmoney(revenuelineList[revenueLineType].Top_Difference, 2)
@ -589,46 +431,30 @@
</view>
<view class="text-title">{{ typeName[revenueLineType] }}趋势</view>
<view>
<canvas
canvas-id="revenueLine"
id="revenueLine"
class="operation-content"
@touchstart="touchPie($event, 'revenueLine')"
></canvas>
<canvas canvas-id="revenueLine" id="revenueLine" class="operation-content"
@touchstart="touchPie($event, 'revenueLine')"></canvas>
</view>
</view>
<view class="revenue-line-box">
<view class="title">客单交易</view>
<view class="text-title"> 客单数量比上周 </view>
<view
:class="{
<view :class="{
'up-text-title': revenueLineMsg.down_deff > 0,
'down-text-title': revenueLineMsg.down_deff < 0,
}"
>
}">
{{ $util.fmoney(revenueLineMsg.down_deff, 2).replace("-", "") }}%
</view>
<view>
<canvas
canvas-id="revenueClounm"
id="revenueClounm"
class="operation-content"
></canvas>
<canvas canvas-id="revenueClounm" id="revenueClounm" class="operation-content"></canvas>
</view>
</view>
</view>
<!-- 商品销售排行 -->
<div class="uni-inline-item modle-title">
<image
src="/static/images/revenue/product-ranking.png"
mode="aspectFit"
></image>
<image src="/static/images/revenue/product-ranking.png" mode="aspectFit"></image>
<text class="strong-text">商品销售排行</text>
</div>
<RankContent
:wechatPushSalesList="wechatPushSalesList"
v-if="!isLoading"
></RankContent>
<RankContent :wechatPushSalesList="wechatPushSalesList" v-if="!isLoading"></RankContent>
<!-- <div class="uni-inline-item ranking-tab-box">
<div class="ranking-tab-unit" @tap="selectTab('nowRank',1000)" :class="{'active':nowRank==1000}">商超
</div>
@ -654,10 +480,7 @@
</view>
</view>
<div v-if="!showPage && !isLoading">
<noFound
:nodata="!showPage && !isLoading"
:text="'您暂无' + lastDay + '营收数据'"
/>
<noFound :nodata="!showPage && !isLoading" :text="'您暂无' + lastDay + '营收数据'" />
</div>
</div>
</template>
@ -1526,7 +1349,7 @@ export default {
title: "正在加载...",
});
const toSnhuiPageProvinceCode = [
340000, 520000, 451200, 510000, 530000, 620000, 630000, 330200, 330300,
340000, 520000, 451200, 510000, 530000, 620000, 630000, 330200, 330300, 734100
]; //
if (option.ProvinceCode) {
@ -1599,6 +1422,7 @@ export default {
this.theRequest.ProvinceCode != 510000 &&
this.theRequest.ProvinceCode != 620000 &&
this.theRequest.ProvinceCode != 630000 &&
this.theRequest.ProvinceCode != 734100 &&
this.theRequest.ProvinceCode != 330200
) {
uni.setNavigationBarColor({

View File

@ -1,24 +1,13 @@
<template>
<view class="content" v-show="menus">
<menuModel
v-for="(menu, index) in modelMenu"
:key="index"
:title="menu.name"
:class="{ 'line-block': index != 0 }"
>
<menuModel v-for="(menu, index) in modelMenu" :key="index" :title="menu.name" :class="{ 'line-block': index != 0 }">
<view class="uni-flex align-top" name="slot">
<menuItem
v-for="item in menu.list"
:key="item.id"
:item="item"
:doCout="toDoMsg ? toDoMsg[item.id] : 0"
:active="
item.id == 'd5a9e3ef-3699-448f-abcc-819179df60bd' ||
<menuItem v-for="item in menu.list" :key="item.id" :item="item" :doCout="toDoMsg ? toDoMsg[item.id] : 0"
:active="item.id == 'd5a9e3ef-3699-448f-abcc-819179df60bd' ||
menus[item.id] == 1 ||
this.membershipType === 9999
"
@handleClick="toPage"
></menuItem>
" @handleClick="toPage">
</menuItem>
</view>
</menuModel>
<!-- <view class="home-model">
@ -166,11 +155,60 @@ export default {
uni.scanCode({
onlyFromCamera: true,
success: function (res) {
console.log("条码类型:" + res.scanType);
console.log("条码内容:" + res.result);
if (res.scanType.indexOf("QR_CODE") > -1) {
if (res.result.indexOf("pages/walkAroundManager/index") > -1) {
//
let pageUrl = res.result
console.log('res.resultres.resultres.result', res.result);
let pageObj = _this.handleGetId(res.result)
let CacheObj = uni.getStorageSync('CacheObj')
if (CacheObj) {
let title = ''
let content = ''
let same = false
console.log('CacheObj.id', CacheObj.id);
console.log('ididididid', pageObj.id);
//
if (Number(CacheObj.id) === Number(pageObj.id)) {
title = '发现未提交的巡查草稿'
content = '检测到您上次有未提交的巡查内容,是否恢复这些数据继续编辑?'
same = true
} else if (CacheObj.id) {
title = `发现未提交的巡查`
content = `点击跳转将跳转到【${CacheObj.title}】点位巡查`
same = false
}
uni.showModal({
title: title,
content: content,
cancelText: '重新开始',
confirmText: same ? '恢复草稿' : "跳转点位",
success: async function (res) {
if (same) {
if (res.confirm) {
_this.$util.toNextRoute("navigateTo", "/" + pageUrl + `&&pageType=1`);
} else if (res.cancel) {
uni.setStorageSync('CacheObj', null)
_this.$util.toNextRoute("navigateTo", "/" + pageUrl);
}
} else {
if (res.confirm) {
_this.$util.toNextRoute("navigateTo", `/pages/walkAroundManager/index?id=${CacheObj.id}&&pageType=1`);
} else if (res.cancel) {
uni.setStorageSync('CacheObj', null)
_this.$util.toNextRoute("navigateTo", "/" + pageUrl);
}
}
}
})
} else {
_this.$util.toNextRoute("navigateTo", "/" + res.result);
}
// _this.$util.toNextRoute("navigateTo", "/" + res.result);
} else {
let result = res.result.toLocaleLowerCase();
if (
@ -223,6 +261,16 @@ export default {
},
});
},
// ?id=388 id
handleGetId(url) {
const query = url.split('?')[1];
if (!query) return {};
return query.split('&').reduce((acc, item) => {
const [key, value] = item.split('=');
acc[key] = value;
return acc;
}, {});
},
recordBrowsing(item) {
//
let _this = this;
@ -322,6 +370,7 @@ export default {
flex-direction: column;
justify-content: center;
}
.uni-flex {
align-items: center;
flex-wrap: wrap;

View File

@ -65,7 +65,8 @@
<label class="choiceItem" v-for="(subItem, subIndex) in item.question.options" :key="subItem.text"
:style="{ marginBottom: subIndex + 1 === item.question.options.length ? '0' : '' }">
<view>
<radio :value="subItem.text" color="#409eff" style="transform: scale(0.8)" />
<radio :checked="item.choiceResponse[0] === subItem.text" :value="subItem.text" color="#409eff"
style="transform: scale(0.8)" />
<!-- :checked="subIndex === current" -->
</view>
<view>{{ subItem.text }}</view>
@ -165,7 +166,7 @@
<view class="bottomBtnBox">
<view class="bottomBtn" @click="submitUpload">提交</view>
</view>
<!--
<view v-if="false">
<div class="pageHeader">
<div class="hederContent">
@ -271,7 +272,7 @@
<button v-if="!submit" class="btn" @click="submitUpload">提交</button>
</div>
</view>
</view> -->
<uniPopup ref="checkPopup" type="bottom" :show="isShowPopup" @hidePopup="handleClosePopup">
<view class="popupBox">
@ -351,6 +352,7 @@ export default {
popupShowObj: {},
questionType: "", //
submiting: false, //
isSubmitted: false,//
};
},
components: {
@ -361,12 +363,91 @@ export default {
user: "getUser",
}),
},
onLoad(query) {
async onLoad(query) {
// pageType 1
console.log("query", query);
this.handleGetModalData(query.id);
await this.handleGetModalData(query.id);
let CacheObj = uni.getStorageSync('CacheObj')
if (CacheObj && query.pageType === '1') {
this.handleSetCacheDetial(CacheObj)
}
},
onUnload() {
//
if (!this.isSubmitted) {
//
let inspectionContent = this.uploadResult
//
let inspectionImgList = this.imgsList
//
let situation = this.current // 0 1
console.log('dsadasd', this.requestionRadioList);
//
let chooseAnswer = {}
if (this.requestionRadioList && this.requestionRadioList.length > 0) {
this.requestionRadioList.forEach((item) => {
if (item.choiceResponse) {
chooseAnswer[item.id] = {
choiceResponse: item.choiceResponse,
imageResponse: item.imageResponse
}
}
})
}
//
let CacheObj = {
inspectionContent: inspectionContent, //
inspectionImgList: inspectionImgList, //
situation: situation, // 0 1
chooseAnswer: chooseAnswer,//
id: this.detailObj.id,// id
title: this.detailObj.title
}
uni.setStorageSync('CacheObj', CacheObj)
}
},
methods: {
//
handleSetCacheDetial(CacheObj) {
//
this.uploadResult = CacheObj.inspectionContent
//
this.imgsList = CacheObj.inspectionImgList
//
this.current = CacheObj.situation
//
if (CacheObj.chooseAnswer) {
let obj = CacheObj.chooseAnswer
let list = JSON.parse(JSON.stringify(this.requestionRadioList))
for (let key in obj) {
if (list && list.length > 0) {
list.forEach(item => {
if (Number(item.id) === Number(key)) {
item.choiceResponse = obj[key].choiceResponse
item.imageResponse = obj[key].imageResponse
item.showAddImg = obj[key].imageResponse && obj[key].imageResponse.length > 0
}
})
}
}
this.requestionRadioList = list
}
},
//
handleOutRadioChange(e, obj) {
console.log('eeee', e);
@ -422,10 +503,6 @@ export default {
},
//
async submitUpload() {
if (this.submiting) {
return;
}
console.log("user", this.user);
console.log("this.detailObj", this.detailObj);
@ -517,9 +594,6 @@ export default {
});
return;
}
console.log("requestionRadioList", this.requestionRadioList);
console.log("requestionCheckedList", this.requestionCheckedList);
console.log("haveError", haveError);
if (!haveError && this.current === 1) {
uni.showToast({
@ -529,6 +603,11 @@ export default {
return;
}
if (this.submiting) {
return;
}
this.submiting = true;
let extendObj = {
uploadResult: this.uploadResult,
@ -554,7 +633,6 @@ export default {
};
console.log("req", req);
// return
// node
// const data = await this.$request.$webNodePOST(
// `questionnaire-responses`,
@ -567,7 +645,7 @@ export default {
);
console.log("data", data);
this.submiting = false;
console.log("data", data);
if (data.Result_Code === 100) {
this.submit = true;
@ -576,7 +654,16 @@ export default {
icon: "none",
});
let _this = this;
_this.isSubmitted = true
let CacheObj = uni.getStorageSync('CacheObj')
if (CacheObj) {
uni.setStorageSync('CacheObj', null)
}
setTimeout(() => {
_this.submiting = false;
_this.$util.toNextRoute(
"redirectTo",
`/pages/walkAroundManager/statusPage?id=${data.Result_Data.id}`

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB