添加日志
parent
82329ccc01
commit
943b92878a
|
|
@ -41,6 +41,13 @@
|
||||||
<view v-else>支出</view>
|
<view v-else>支出</view>
|
||||||
<view>{{ yesday_ledger.expenditure }}</view>
|
<view>{{ yesday_ledger.expenditure }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="h-80rpx flex-none flex-center">
|
||||||
|
<uv-line direction="vertical"></uv-line>
|
||||||
|
</view>
|
||||||
|
<view class="flex-1 text-center">
|
||||||
|
<view>客户</view>
|
||||||
|
<view>{{ yesday_ledger.new_customers }}</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
<swiper-item>
|
<swiper-item>
|
||||||
|
|
@ -59,6 +66,13 @@
|
||||||
<view v-else>支出</view>
|
<view v-else>支出</view>
|
||||||
<view>{{ current_month_ledger.expenditure }}</view>
|
<view>{{ current_month_ledger.expenditure }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="h-80rpx flex-none flex-center">
|
||||||
|
<uv-line direction="vertical"></uv-line>
|
||||||
|
</view>
|
||||||
|
<view class="flex-1 text-center">
|
||||||
|
<view>客户</view>
|
||||||
|
<view>{{ current_month_ledger.new_customers }}</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
|
|
|
||||||
|
|
@ -22,40 +22,45 @@
|
||||||
></uv-tabs>
|
></uv-tabs>
|
||||||
|
|
||||||
<view class="h-40rpx flex-center" @click="openCalendars">
|
<view class="h-40rpx flex-center" @click="openCalendars">
|
||||||
<view class="text-center text-28rpx py-4rpx"
|
<view class="text-center text-28rpx py-4rpx">{{ showDate }} </view>
|
||||||
>{{ showDate }}
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="flex my-20rpx items-center table">
|
<view class="grid grid-cols-2 my-20rpx table1">
|
||||||
<view class="text-center flex-1 tr">
|
<view class="text-center flex-1 tr" @click="openLogPopup(0)">
|
||||||
<view class="flex-center h-80rpx">销售金额</view>
|
<view class="flex-center h-60rpx text-28rpx">销售金额</view>
|
||||||
<view class="font-600 flex-center h-80rpx">{{ ledger.sales }}</view>
|
<view class="font-600 flex-center h-60rpx">{{ ledger.sales }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="text-center flex-1 tr">
|
<view class="text-center flex-1 tr" @click="openLogPopup(0)">
|
||||||
<view
|
<view
|
||||||
class="flex-center h-80rpx"
|
class="flex-center h-60rpx"
|
||||||
v-if="isLotteryStore || checkPermission(['admin'])"
|
v-if="isLotteryStore || checkPermission(['admin'])"
|
||||||
>
|
>
|
||||||
<view>兑奖金额</view>
|
<view>兑奖金额</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex-center h-80rpx" v-else>支出金额</view>
|
<view class="flex-center h-60rpx text-28rpx" v-else>支出金额</view>
|
||||||
<view class="font-600 flex-center h-80rpx">{{
|
<view class="font-600 flex-center h-60rpx">{{
|
||||||
ledger.expenditure
|
ledger.expenditure
|
||||||
}}</view>
|
}}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="text-center flex-1 tr">
|
<view class="text-center flex-1 tr">
|
||||||
<view class="flex-center h-80rpx">销售涨幅</view>
|
<view class="flex-center h-60rpx text-28rpx">销售涨幅</view>
|
||||||
<view
|
<view
|
||||||
class="font-600 flex-center h-80rpx"
|
class="font-600 flex-center h-60rpx"
|
||||||
:class="[
|
:class="[
|
||||||
ledger.sales_growth_rate > 0 ? 'text-primary' : 'text-green',
|
ledger.sales_growth_rate > 0 ? 'text-primary' : 'text-green',
|
||||||
]"
|
]"
|
||||||
>{{ ledger.sales_growth_rate }}%</view
|
>{{ ledger.sales_growth_rate }}%</view
|
||||||
>
|
>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view class="text-center flex-1 tr">
|
||||||
|
<view class="flex-center h-60rpx text-28rpx">新增客户</view>
|
||||||
|
<view class="font-600 flex-center h-60rpx">{{
|
||||||
|
ledger.new_customers
|
||||||
|
}}</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<uv-tabs
|
<uv-tabs
|
||||||
@change="tabChange1"
|
@change="tabChange1"
|
||||||
|
|
@ -83,6 +88,22 @@
|
||||||
:allowSameDay="true"
|
:allowSameDay="true"
|
||||||
@confirm="confirm"
|
@confirm="confirm"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<uv-popup ref="logPopup" mode="center" round="16" :closeable="true">
|
||||||
|
<view class="w-600rpx">
|
||||||
|
<view class="h-60rpx"></view>
|
||||||
|
<view class="grid grid-cols-2 py-16rpx text-28rpx font-500">
|
||||||
|
<view class="text-center">明细</view>
|
||||||
|
<view class="text-center">金额</view>
|
||||||
|
</view>
|
||||||
|
<scroll-view scroll-y class="min-h-200rpx max-h-800rpx">
|
||||||
|
<view v-for="item in 13" :key="item" class="grid grid-cols-2 py-16rpx text-28rpx">
|
||||||
|
<view class="text-center">体彩</view>
|
||||||
|
<view class="text-center">{{item}}</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
</uv-popup>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
@ -100,6 +121,7 @@ import { sys } from '@climblee/uv-ui/libs/function/index'
|
||||||
|
|
||||||
import { useUserStore } from '@/store/modules/user'
|
import { useUserStore } from '@/store/modules/user'
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
const logPopup = ref(null)
|
||||||
|
|
||||||
const getRect = (selector, all) => {
|
const getRect = (selector, all) => {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
|
|
@ -140,11 +162,11 @@ const currentC = computed(() => {
|
||||||
const showDate = computed(() => {
|
const showDate = computed(() => {
|
||||||
let start = currentC.value.start
|
let start = currentC.value.start
|
||||||
let end = currentC.value.end
|
let end = currentC.value.end
|
||||||
if(isCalendar.value){
|
if (isCalendar.value) {
|
||||||
start = selected.value[0]
|
start = selected.value[0]
|
||||||
end = selected.value[1]
|
end = selected.value[1]
|
||||||
}
|
}
|
||||||
if(start===end) return start
|
if (start === end) return start
|
||||||
return `${start} 至 ${end}`
|
return `${start} 至 ${end}`
|
||||||
})
|
})
|
||||||
const currentL = computed(() => {
|
const currentL = computed(() => {
|
||||||
|
|
@ -164,7 +186,6 @@ if (!checkPermission(['admin'])) {
|
||||||
shoreInfo.value = { store_id: userStore?.userInfo?.store?.id }
|
shoreInfo.value = { store_id: userStore?.userInfo?.store?.id }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const ledger = ref({
|
const ledger = ref({
|
||||||
expenditure: '0',
|
expenditure: '0',
|
||||||
sales: '0',
|
sales: '0',
|
||||||
|
|
@ -182,6 +203,9 @@ onReady(() => {
|
||||||
getBox()
|
getBox()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const openLogPopup = (type) => {
|
||||||
|
logPopup.value.open()
|
||||||
|
}
|
||||||
const confirm = ({ range }) => {
|
const confirm = ({ range }) => {
|
||||||
isCalendar.value = true
|
isCalendar.value = true
|
||||||
const { before, after } = range
|
const { before, after } = range
|
||||||
|
|
@ -232,10 +256,13 @@ const getCount = async () => {
|
||||||
before_start_at: currentL.value.start,
|
before_start_at: currentL.value.start,
|
||||||
before_end_at: currentL.value.end,
|
before_end_at: currentL.value.end,
|
||||||
}
|
}
|
||||||
if(isCalendar.value) {
|
if (isCalendar.value) {
|
||||||
params.start_at = selected.value[0]
|
params.start_at = selected.value[0]
|
||||||
params.end_at = selected.value[1]
|
params.end_at = selected.value[1]
|
||||||
const { previousStart, previousEnd } = calculatePreviousPeriodByDays(params.start_at, params.end_at)
|
const { previousStart, previousEnd } = calculatePreviousPeriodByDays(
|
||||||
|
params.start_at,
|
||||||
|
params.end_at
|
||||||
|
)
|
||||||
params.before_start_at = previousStart
|
params.before_start_at = previousStart
|
||||||
params.before_end_at = previousEnd
|
params.before_end_at = previousEnd
|
||||||
}
|
}
|
||||||
|
|
@ -378,12 +405,11 @@ const getList = async () => {
|
||||||
end_at: currentC.value.end,
|
end_at: currentC.value.end,
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isCalendar.value) {
|
if (isCalendar.value) {
|
||||||
params.start_at = selected.value[0]
|
params.start_at = selected.value[0]
|
||||||
params.end_at = selected.value[1]
|
params.end_at = selected.value[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (tabIndex1.value == 0) {
|
if (tabIndex1.value == 0) {
|
||||||
params = {
|
params = {
|
||||||
...params,
|
...params,
|
||||||
|
|
@ -398,9 +424,9 @@ const getList = async () => {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.table {
|
.table1 {
|
||||||
display: flex;
|
// display: flex;//
|
||||||
// border: 1px solid;
|
border: 0.5px solid #f5f5f5;
|
||||||
}
|
}
|
||||||
.tr {
|
.tr {
|
||||||
border: 0.5px solid #f5f5f5;
|
border: 0.5px solid #f5f5f5;
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,21 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="px-base">
|
<view class="px-base">
|
||||||
<CuNavbar title="任务详情">
|
<CuNavbar title="任务详情">
|
||||||
<template #right>
|
<template v-if="actions.length > 0" #right>
|
||||||
<view v-if="data?.taskable?.status == 6" class="text-sm text-white" @click="checkLogs">修改</view>
|
<uv-icon color="white" @click="open" name="more-dot-fill"></uv-icon>
|
||||||
</template>
|
</template>
|
||||||
</CuNavbar>
|
</CuNavbar>
|
||||||
<view class="mt-30rpx card-shadow bg-white rounded-19rpx px-base text-[#333333] text-27rpx">
|
<view
|
||||||
|
class="mt-30rpx card-shadow bg-white rounded-19rpx px-base text-[#333333] text-27rpx"
|
||||||
|
>
|
||||||
<BaseData :data="data" :colums="baseColums" />
|
<BaseData :data="data" :colums="baseColums" />
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<uv-action-sheet
|
||||||
|
ref="pickerRef"
|
||||||
|
:actions="actions"
|
||||||
|
@select="confirmPicker"
|
||||||
|
/>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
@ -19,6 +27,12 @@ import { timeFormat } from '@climblee/uv-ui/libs/function'
|
||||||
import BaseData from '@/pages/audits/base-data'
|
import BaseData from '@/pages/audits/base-data'
|
||||||
import statusFun from '@/utils/status'
|
import statusFun from '@/utils/status'
|
||||||
|
|
||||||
|
const pickerRef = ref(null)
|
||||||
|
const actions = ref([
|
||||||
|
{ name: '修改', value: 'edit', disabled: false },
|
||||||
|
{ name: '审核流程', value: 'check-logs', disabled: false },
|
||||||
|
])
|
||||||
|
|
||||||
const baseColums = [
|
const baseColums = [
|
||||||
{
|
{
|
||||||
title: '审核状态',
|
title: '审核状态',
|
||||||
|
|
@ -50,7 +64,7 @@ const baseColums = [
|
||||||
title: '清洁结果',
|
title: '清洁结果',
|
||||||
dataIndex: 'taskable.photos',
|
dataIndex: 'taskable.photos',
|
||||||
labelPosition: 'top',
|
labelPosition: 'top',
|
||||||
type: 'album'
|
type: 'album',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '未通过原因',
|
title: '未通过原因',
|
||||||
|
|
@ -58,7 +72,7 @@ const baseColums = [
|
||||||
labelPosition: 'top',
|
labelPosition: 'top',
|
||||||
isShow: (row) => {
|
isShow: (row) => {
|
||||||
return row?.taskable?.status == 6
|
return row?.taskable?.status == 6
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
const id = ref(null)
|
const id = ref(null)
|
||||||
|
|
@ -69,16 +83,28 @@ onLoad((opt) => {
|
||||||
getDetail()
|
getDetail()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const open = () => {
|
||||||
|
pickerRef.value.open()
|
||||||
|
}
|
||||||
|
|
||||||
const getDetail = async () => {
|
const getDetail = async () => {
|
||||||
const resdata = await http.get(`/tasks/${id.value}`)
|
const resdata = await http.get(`/tasks/${id.value}`)
|
||||||
data.value = resdata
|
data.value = resdata
|
||||||
|
actions.value[0].disabled = resdata?.taskable?.status != 6
|
||||||
|
}
|
||||||
|
const confirmPicker = (e) => {
|
||||||
|
|
||||||
|
if (e.value == 'edit') {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/task/task_hygienes_submit?id=${id.value}`,
|
||||||
|
})
|
||||||
|
} else if (e.value == 'check-logs') {
|
||||||
|
return uni.navigateTo({
|
||||||
|
url: `/pages/audits/log?id=${data.value.taskable.workflow_check.id}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const checkLogs = () => {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/task/task_hygienes_submit?id=${id.value}`
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const getValue = (obj, path) => {
|
const getValue = (obj, path) => {
|
||||||
return path.split('.').reduce((acc, key) => (acc ? acc[key] : undefined), obj)
|
return path.split('.').reduce((acc, key) => (acc ? acc[key] : undefined), obj)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue