main
parent
2dcdb0a1c3
commit
7e46121079
4
.env
4
.env
|
|
@ -1,5 +1 @@
|
||||||
|
|
||||||
|
|
||||||
VITE_COMMON_API_PREFIX = /api-base
|
|
||||||
|
|
||||||
VITE_COMMON_API_URL = http://store-manage.hmily.club
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
VITE_COMMON_API_PREFIX = /api-base
|
||||||
|
|
||||||
|
VITE_COMMON_API_URL = http://store-manage.hmily.club
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
VITE_COMMON_API_PREFIX = /api
|
VITE_COMMON_API_PREFIX = /api
|
||||||
|
|
||||||
VITE_COMMON_API_URL = http://store-manage.hmily.club
|
VITE_COMMON_API_URL = http://store-manage.hmily.club/api
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
|
||||||
|
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
||||||
|
"version": "0.0",
|
||||||
|
"configurations": [{
|
||||||
|
"app-plus" :
|
||||||
|
{
|
||||||
|
"launchtype" : "local"
|
||||||
|
},
|
||||||
|
"default" :
|
||||||
|
{
|
||||||
|
"launchtype" : "local"
|
||||||
|
},
|
||||||
|
"type" : "uniCloud"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -24,6 +24,8 @@
|
||||||
"@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
|
"@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
|
||||||
"@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
|
"@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
|
||||||
"@qiun/ucharts": "^2.5.0-20230101",
|
"@qiun/ucharts": "^2.5.0-20230101",
|
||||||
|
"esbuild-darwin-arm64": "^0.15.18",
|
||||||
|
"luch-request": "^3.1.1",
|
||||||
"pinia": "2.0.33",
|
"pinia": "2.0.33",
|
||||||
"pinia-plugin-persistedstate": "^3.2.1",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
"vue": "^3.2.45",
|
"vue": "^3.2.45",
|
||||||
|
|
@ -6280,6 +6282,20 @@
|
||||||
"@esbuild/win32-x64": "0.16.17"
|
"@esbuild/win32-x64": "0.16.17"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/esbuild-darwin-arm64": {
|
||||||
|
"version": "0.15.18",
|
||||||
|
"resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
|
||||||
|
"integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
|
||||||
|
|
@ -9412,6 +9428,19 @@
|
||||||
"yallist": "^3.0.2"
|
"yallist": "^3.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/luch-request": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/luch-request/-/luch-request-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-p7+mlcEtgRcd0OfXC4XZbyiwSr1XgCeqNT7LlVUjnk7InYl/8d5Rk7BUqAYNA2WRafI1wRIUQWRWZRpeUwWR0w==",
|
||||||
|
"dependencies": {
|
||||||
|
"@dcloudio/types": "^2.0.16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/luch-request/node_modules/@dcloudio/types": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@dcloudio/types/-/types-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-mrCMwcINy1IFjU9VUqLeWBkj404yWs5paLDttBcA+eqUjanuUQbBcTVPqlrGgkyzLXDcV2oDDZRSNxNpXi4kMQ=="
|
||||||
|
},
|
||||||
"node_modules/magic-string": {
|
"node_modules/magic-string": {
|
||||||
"version": "0.30.8",
|
"version": "0.30.8",
|
||||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz",
|
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz",
|
||||||
|
|
@ -17044,6 +17073,11 @@
|
||||||
"@esbuild/win32-x64": "0.16.17"
|
"@esbuild/win32-x64": "0.16.17"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"esbuild-darwin-arm64": {
|
||||||
|
"version": "0.15.18",
|
||||||
|
"resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
|
||||||
|
"integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA=="
|
||||||
|
},
|
||||||
"escalade": {
|
"escalade": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
|
||||||
|
|
@ -19445,6 +19479,21 @@
|
||||||
"yallist": "^3.0.2"
|
"yallist": "^3.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"luch-request": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/luch-request/-/luch-request-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-p7+mlcEtgRcd0OfXC4XZbyiwSr1XgCeqNT7LlVUjnk7InYl/8d5Rk7BUqAYNA2WRafI1wRIUQWRWZRpeUwWR0w==",
|
||||||
|
"requires": {
|
||||||
|
"@dcloudio/types": "^2.0.16"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@dcloudio/types": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@dcloudio/types/-/types-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-mrCMwcINy1IFjU9VUqLeWBkj404yWs5paLDttBcA+eqUjanuUQbBcTVPqlrGgkyzLXDcV2oDDZRSNxNpXi4kMQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"magic-string": {
|
"magic-string": {
|
||||||
"version": "0.30.8",
|
"version": "0.30.8",
|
||||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz",
|
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz",
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@
|
||||||
"@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
|
"@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
|
||||||
"@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
|
"@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
|
||||||
"@qiun/ucharts": "^2.5.0-20230101",
|
"@qiun/ucharts": "^2.5.0-20230101",
|
||||||
|
"esbuild-darwin-arm64": "^0.15.18",
|
||||||
"luch-request": "^3.1.1",
|
"luch-request": "^3.1.1",
|
||||||
"pinia": "2.0.33",
|
"pinia": "2.0.33",
|
||||||
"pinia-plugin-persistedstate": "^3.2.1",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
|
|
|
||||||
12
src/App.vue
12
src/App.vue
|
|
@ -1,7 +1,17 @@
|
||||||
<script>
|
<script>
|
||||||
// import { useUserStoreWithOut } from "@/store/modules/user";
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
export default {
|
export default {
|
||||||
onLaunch: function () {
|
onLaunch: function () {
|
||||||
|
const userStore = useUserStoreWithOut()
|
||||||
|
|
||||||
|
if (userStore.isLogin) {
|
||||||
|
userStore.fetchUserInfo()
|
||||||
|
} else {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/login/index',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
console.log('App Launch')
|
console.log('App Launch')
|
||||||
},
|
},
|
||||||
onShow: function () {
|
onShow: function () {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name" : "",
|
"name" : "aa",
|
||||||
"appid" : "",
|
"appid" : "__UNI__ADB6360",
|
||||||
"description" : "",
|
"description" : "",
|
||||||
"versionName" : "1.0.0",
|
"versionName" : "1.0.0",
|
||||||
"versionCode" : "100",
|
"versionCode" : "100",
|
||||||
|
|
@ -41,9 +41,13 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
/* ios打包配置 */
|
/* ios打包配置 */
|
||||||
"ios" : {},
|
"ios" : {
|
||||||
|
"dSYMs" : false
|
||||||
|
},
|
||||||
/* SDK配置 */
|
/* SDK配置 */
|
||||||
"sdkConfigs" : {}
|
"sdkConfigs" : {
|
||||||
|
"ad" : {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/* 快应用特有相关 */
|
/* 快应用特有相关 */
|
||||||
|
|
@ -65,8 +69,8 @@
|
||||||
"mp-toutiao" : {
|
"mp-toutiao" : {
|
||||||
"usingComponents" : true
|
"usingComponents" : true
|
||||||
},
|
},
|
||||||
"uniStatistics": {
|
"uniStatistics" : {
|
||||||
"enable": false
|
"enable" : false
|
||||||
},
|
},
|
||||||
"vueVersion" : "3"
|
"vueVersion" : "3"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
{
|
{
|
||||||
"pages": [
|
"pages": [
|
||||||
{
|
|
||||||
"path": "pages/login/index",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "登录"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"path": "pages/home/index",
|
"path": "pages/home/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "首页"
|
"navigationBarTitleText": "首页"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/login/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "登录"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/revert/index",
|
"path": "pages/revert/index",
|
||||||
"style": {
|
"style": {
|
||||||
|
|
@ -296,7 +297,8 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},{
|
},
|
||||||
|
{
|
||||||
"root": "pages/train-books",
|
"root": "pages/train-books",
|
||||||
"pages": [
|
"pages": [
|
||||||
{
|
{
|
||||||
|
|
@ -329,6 +331,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"root": "pages/audits",
|
||||||
|
"pages": [
|
||||||
|
{
|
||||||
|
"path": "detail",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "审核详情"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
<template>
|
||||||
|
<!-- <uv-list v-if="colums.length && data && Object.keys(data).length">
|
||||||
|
<template v-for="(item, i) in columsList" :key="i">
|
||||||
|
<slot :slotName="item.dataIndex" :data="item">
|
||||||
|
<uv-list-item :title="item.title" :right-text="item?.value">
|
||||||
|
</uv-list-item>
|
||||||
|
</slot>
|
||||||
|
</template>
|
||||||
|
</uv-list> -->
|
||||||
|
<uv-form labelWidth="160rpx">
|
||||||
|
<template v-for="(item, i) in columsList" :key="i">
|
||||||
|
<slot :slotName="item.dataIndex" :data="item">
|
||||||
|
<uv-form-item :label="item.title" :labelPosition="item.labelPosition">
|
||||||
|
<uv-input inputAlign="right" :border="`none`" v-model="item.value"></uv-input>
|
||||||
|
</uv-form-item>
|
||||||
|
</slot>
|
||||||
|
</template>
|
||||||
|
</uv-form>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { computed } from 'vue'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
colums: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const columsList = computed(() => {
|
||||||
|
const arr = []
|
||||||
|
props.colums.forEach((e) => {
|
||||||
|
const { dataIndex, format } = e
|
||||||
|
// console.log(props.data)
|
||||||
|
// props.data[dataIndex]
|
||||||
|
let str =getValue(props.data,dataIndex)
|
||||||
|
if (isFunction(format)) {
|
||||||
|
str = format(str)
|
||||||
|
}
|
||||||
|
arr.push({
|
||||||
|
...e,
|
||||||
|
value: str,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return arr
|
||||||
|
})
|
||||||
|
|
||||||
|
const getValue = (obj, path) => {
|
||||||
|
return path.split('.').reduce((acc, key) => (acc ? acc[key] : undefined), obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
const isFunction = (fn) => {
|
||||||
|
return typeof fn === 'function'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { timeFormat } from '@climblee/uv-ui/libs/function'
|
||||||
|
export default {
|
||||||
|
//清洁任务
|
||||||
|
task_hygienes: [
|
||||||
|
{
|
||||||
|
title: '申请人',
|
||||||
|
dataIndex: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所属门店',
|
||||||
|
dataIndex: 'taskable.store.address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电话号码',
|
||||||
|
dataIndex: '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '申请时间',
|
||||||
|
dataIndex: 'created_at',
|
||||||
|
format: timeFormat,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '清洁范围',
|
||||||
|
dataIndex: 'taskable.description',
|
||||||
|
labelPosition: 'top',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '清洁结果',
|
||||||
|
dataIndex: 'taskable.photos',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<CuNavbar title="任务详情">
|
||||||
|
<!-- <BaseData ></BaseData> -->
|
||||||
|
</CuNavbar>
|
||||||
|
{{ colums }}
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import CuNavbar from '@/components/cu-navbar/index'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { ref, computed } from 'vue'
|
||||||
|
import { http } from '@/utils/request'
|
||||||
|
import BaseData from './base-data.vue'
|
||||||
|
import datajson from './data.data'
|
||||||
|
|
||||||
|
const colums = computed(() => datajson[type.value] ?? [])
|
||||||
|
const id = ref(null)
|
||||||
|
const type = ref(null)
|
||||||
|
onLoad((opt) => {
|
||||||
|
id.value = opt.id
|
||||||
|
type.value = opt.type
|
||||||
|
getData()
|
||||||
|
})
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const resData = await http.get(`/workflow/${id.value}`, {
|
||||||
|
params: {
|
||||||
|
subject_type: type.value,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(resData)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -4,19 +4,27 @@
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue'
|
import { ref, watch, reactive } from 'vue'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
data: Array,
|
||||||
|
})
|
||||||
|
|
||||||
const opts = ref({
|
const opts = ref({
|
||||||
color: [
|
color: ['#ee2c37'],
|
||||||
'#ee2c37',
|
dataLabel: false,
|
||||||
|
dataPointShape: true,
|
||||||
],
|
|
||||||
padding: [15, 15, 0, 15],
|
|
||||||
enableScroll: false,
|
enableScroll: false,
|
||||||
legend: {
|
legend: {
|
||||||
show:false
|
show: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
xAxis: {
|
xAxis: {
|
||||||
disableGrid: true,
|
// disableGrid: true,
|
||||||
|
|
||||||
|
boundaryGap: 'justify',
|
||||||
|
|
||||||
|
format: 'ssss',
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
gridType: 'dash',
|
gridType: 'dash',
|
||||||
|
|
@ -31,15 +39,30 @@ const opts = ref({
|
||||||
gradient: true,
|
gradient: true,
|
||||||
activeType: 'hollow',
|
activeType: 'hollow',
|
||||||
},
|
},
|
||||||
|
tooltip: {
|
||||||
|
legendShow: false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
const chartData = ref({
|
|
||||||
categories: ['2016', '2017', '2018', '2019', '2020', '2021'],
|
const chartData = reactive({
|
||||||
|
categories: [],
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '目标值',
|
name: '金额',
|
||||||
data: [35, 36, 31, 33, 13, 34],
|
data: [],
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
watch(
|
||||||
|
() => props.data,
|
||||||
|
(e) => {
|
||||||
|
chartData.categories = e.map((el) => el.key)
|
||||||
|
chartData.series[0].data = e.map((el) => el.value)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
deep: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,18 @@
|
||||||
<uv-icon color="#fff" size="48rpx" name="chat"></uv-icon>
|
<uv-icon color="#fff" size="48rpx" name="chat"></uv-icon>
|
||||||
</view>
|
</view>
|
||||||
<view class="mt-60rpx">昨日累计金额</view>
|
<view class="mt-60rpx">昨日累计金额</view>
|
||||||
<view class="mt-20rpx">截止2024-03-21</view>
|
<view class="mt-20rpx">截止{{ yesterday }}</view>
|
||||||
<view class="flex items-center mt-40rpx">
|
<view class="flex items-center mt-40rpx">
|
||||||
<view class="flex-1 text-center">
|
<view class="flex-1 text-center">
|
||||||
<view>销售</view>
|
<view>销售</view>
|
||||||
<view>20000</view>
|
<view>{{ yesday_ledger.sales }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="h-80rpx flex-none flex-center">
|
<view class="h-80rpx flex-none flex-center">
|
||||||
<uv-line direction="vertical"></uv-line>
|
<uv-line direction="vertical"></uv-line>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex-1 text-center">
|
<view class="flex-1 text-center">
|
||||||
<view>支出</view>
|
<view>支出</view>
|
||||||
<view>20000</view>
|
<view>{{ yesday_ledger.expenditure }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -32,10 +32,12 @@
|
||||||
:activeStyle="{ color: '#ee2c37' }"
|
:activeStyle="{ color: '#ee2c37' }"
|
||||||
lineColor="#ee2c37"
|
lineColor="#ee2c37"
|
||||||
:list="list"
|
:list="list"
|
||||||
|
:current="tabIndex"
|
||||||
@click="onTabClick"
|
@click="onTabClick"
|
||||||
:scrollable="false"
|
:scrollable="false"
|
||||||
></uv-tabs>
|
></uv-tabs>
|
||||||
<ChartComp></ChartComp>
|
|
||||||
|
<ChartComp :data="countData"></ChartComp>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -43,17 +45,63 @@
|
||||||
import { ref, reactive, computed } from 'vue'
|
import { ref, reactive, computed } from 'vue'
|
||||||
import ChartComp from './components/chart.vue'
|
import ChartComp from './components/chart.vue'
|
||||||
import StoreDropDown from '@/pages/home/components/store-drop-down/index.vue'
|
import StoreDropDown from '@/pages/home/components/store-drop-down/index.vue'
|
||||||
|
import { http } from '@/utils/request'
|
||||||
|
import { onShow } from '@dcloudio/uni-app'
|
||||||
|
import { timeFormat } from '@climblee/uv-ui/libs/function'
|
||||||
const list = ref([
|
const list = ref([
|
||||||
{
|
{
|
||||||
name: '销售金额',
|
name: '销售金额',
|
||||||
|
key: 'sales',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '支出金额',
|
name: '支出金额',
|
||||||
|
key: 'expenditure',
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
const tabIndex = ref(0)
|
||||||
|
const detail = ref({
|
||||||
|
yesday_ledger: {
|
||||||
|
sales: 0,
|
||||||
|
expenditure: 0,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const yesday_ledger = computed(() => detail.value.yesday_ledger)
|
||||||
|
const trends_of_30days = computed(() => detail.value.trends_of_30days)
|
||||||
|
|
||||||
|
const yesterday = computed(() => {
|
||||||
|
return timeFormat(Number(new Date()) - 1000 * 60 * 60 * 24)
|
||||||
|
})
|
||||||
|
const tabObj = computed(() => list.value[tabIndex.value])
|
||||||
|
const countData = computed(() => {
|
||||||
|
const arr =
|
||||||
|
trends_of_30days?.value?.reduce((p, c) => {
|
||||||
|
p.push({
|
||||||
|
key: timeFormat(c.date, 'mm月dd日'),
|
||||||
|
value: c[tabObj.value.key],
|
||||||
|
})
|
||||||
|
return p
|
||||||
|
}, []) ?? []
|
||||||
|
return arr
|
||||||
|
})
|
||||||
|
|
||||||
const onTabClick = (e) => {
|
const onTabClick = (e) => {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
|
tabIndex.value = e.index
|
||||||
|
}
|
||||||
|
|
||||||
|
onShow(() => {
|
||||||
|
getData()
|
||||||
|
})
|
||||||
|
|
||||||
|
const getData = () => {
|
||||||
|
http
|
||||||
|
.get('/statistics/dashboard', {
|
||||||
|
params: {
|
||||||
|
date: yesterday.value,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
detail.value = res
|
||||||
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ const form = ref({
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleClick = async () => {
|
const handleClick = async () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { username, password } = form.value
|
const { username, password } = form.value
|
||||||
await userStore.login({
|
await userStore.login({
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<CuNavbar :isBack="isBack" title="上报"></CuNavbar>
|
<CuNavbar :isBack="isBack" title="上报"></CuNavbar>
|
||||||
|
|
||||||
<view
|
<view
|
||||||
:class="[
|
:class="[
|
||||||
checkPermission(['store']) && form.allow_rereport
|
checkPermission(['store']) && form.allow_rereport
|
||||||
|
|
@ -141,7 +142,7 @@
|
||||||
</view>
|
</view>
|
||||||
</uv-form>
|
</uv-form>
|
||||||
</view>
|
</view>
|
||||||
<view class="h-130rpx">
|
<view class="h-130rpx" v-if="checkPermission(['store']) && form.allow_rereport">
|
||||||
<view
|
<view
|
||||||
class="fixed bottom-0 left-0 right-0 h-120rpx bg-white flex-center box-border px-base"
|
class="fixed bottom-0 left-0 right-0 h-120rpx bg-white flex-center box-border px-base"
|
||||||
:style="style"
|
:style="style"
|
||||||
|
|
@ -238,8 +239,9 @@ const style = computed(() => {
|
||||||
return style
|
return style
|
||||||
})
|
})
|
||||||
|
|
||||||
onShow(() => {
|
onMounted(() => {
|
||||||
getData(endDate)
|
// console.log(endDate);
|
||||||
|
getData()
|
||||||
})
|
})
|
||||||
|
|
||||||
const submit = () => {
|
const submit = () => {
|
||||||
|
|
@ -249,6 +251,7 @@ const submit = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const onSubmit = async () => {
|
const onSubmit = async () => {
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
date: form.date,
|
date: form.date,
|
||||||
sales: form.sales,
|
sales: form.sales,
|
||||||
|
|
@ -279,6 +282,7 @@ const onSubmit = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
|
|
||||||
const resData = await http.get(`/ledgers/${form.date}`)
|
const resData = await http.get(`/ledgers/${form.date}`)
|
||||||
|
|
||||||
Object.assign(form, resData, {
|
Object.assign(form, resData, {
|
||||||
|
|
@ -359,6 +363,7 @@ const uploadFilePromise = (url) => {
|
||||||
.upload('/fileupload', {
|
.upload('/fileupload', {
|
||||||
filePath: url,
|
filePath: url,
|
||||||
name: 'file',
|
name: 'file',
|
||||||
|
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
resolve(res.url)
|
resolve(res.url)
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,20 @@
|
||||||
<view class="text-30rpx">{{ item.name }}</view>
|
<view class="text-30rpx">{{ item.name }}</view>
|
||||||
<view
|
<view
|
||||||
:style="{
|
:style="{
|
||||||
color: statusFun(item.taskable.status, item.taskable_type, 'color'),
|
color: statusFun(
|
||||||
|
item.taskable.status,
|
||||||
|
isCheck ? 'statusExpense' : item.taskable_type,
|
||||||
|
'color'
|
||||||
|
),
|
||||||
}"
|
}"
|
||||||
class="text-24rpx"
|
class="text-24rpx"
|
||||||
>{{ statusFun(item.taskable.status, item.taskable_type, 'name') }}</view
|
>{{
|
||||||
|
statusFun(
|
||||||
|
item.taskable.status,
|
||||||
|
isCheck ? 'statusExpense' : item.taskable_type,
|
||||||
|
'name'
|
||||||
|
)
|
||||||
|
}}</view
|
||||||
>
|
>
|
||||||
</view>
|
</view>
|
||||||
<view class="text-24rpx text-hex-999999">
|
<view class="text-24rpx text-hex-999999">
|
||||||
|
|
@ -25,21 +35,26 @@ import statusFun from '@/utils/status'
|
||||||
import { timeFormat } from '@climblee/uv-ui/libs/function/index'
|
import { timeFormat } from '@climblee/uv-ui/libs/function/index'
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
item: Object,
|
item: Object,
|
||||||
|
isCheck: Boolean,
|
||||||
|
type: String,
|
||||||
})
|
})
|
||||||
|
|
||||||
const onClick = () => {
|
const onClick = () => {
|
||||||
console.log(props.item)
|
|
||||||
const type = props.item.taskable_type
|
const type = props.item.taskable_type
|
||||||
const { status } = props.item.taskable
|
const { status } = props.item.taskable
|
||||||
let url
|
let url
|
||||||
if (type === 'task_hygienes') {
|
if (props.isCheck) {
|
||||||
if (status === 2 || status == 4) {
|
url = `/pages/audits/detail?id=${props.item.id}&type=${type}`
|
||||||
url = `/pages/task/task_hygienes_submit?id=${props.item.id}`
|
} else {
|
||||||
} else {
|
if (type === 'task_hygienes') {
|
||||||
url = `/pages/task/detail?id=${props.item.id}`
|
if (status === 2 || status == 4) {
|
||||||
|
url = `/pages/task/task_hygienes_submit?id=${props.item.id}`
|
||||||
|
} else {
|
||||||
|
url = `/pages/task/detail?id=${props.item.id}`
|
||||||
|
}
|
||||||
|
} else if (type === 'task_ledgers') {
|
||||||
|
url = `/pages/task/${type}_submit?id=${props.item.id}`
|
||||||
}
|
}
|
||||||
} else if (type === 'task_ledgers') {
|
|
||||||
url = `/pages/task/${type}_submit?id=${props.item.id}`
|
|
||||||
}
|
}
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: url,
|
url: url,
|
||||||
|
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
<template>
|
|
||||||
<view class="px-base">
|
|
||||||
<CuNavbar title="任务详情"></CuNavbar>
|
|
||||||
<view
|
|
||||||
class="mt-30rpx card-shadow bg-white rounded-19rpx px-base text-[#333333] text-27rpx"
|
|
||||||
>
|
|
||||||
<view class="py-20rpx flex items-center justify-between">
|
|
||||||
<view>申请人</view>
|
|
||||||
<view class="text-hex-999999">测试人</view>
|
|
||||||
</view>
|
|
||||||
<uv-line></uv-line>
|
|
||||||
<view class="py-20rpx flex items-center justify-between">
|
|
||||||
<view>所属门店</view>
|
|
||||||
<view class="text-hex-999999">具体门店名称</view>
|
|
||||||
</view>
|
|
||||||
<uv-line></uv-line>
|
|
||||||
<view class="py-20rpx flex items-center justify-between">
|
|
||||||
<view>电话号码</view>
|
|
||||||
<view class="text-hex-999999">具体门店名称</view>
|
|
||||||
</view>
|
|
||||||
<uv-line></uv-line>
|
|
||||||
<view class="py-20rpx flex items-center justify-between">
|
|
||||||
<view>申请时间</view>
|
|
||||||
<view class="text-hex-999999">具体门店名称</view>
|
|
||||||
</view>
|
|
||||||
<uv-line></uv-line>
|
|
||||||
<view class="py-20rpx">
|
|
||||||
<view>申请范围</view>
|
|
||||||
<view class="text-hex-999999 mt-20rpx">具体门店名称</view>
|
|
||||||
</view>
|
|
||||||
<uv-line></uv-line>
|
|
||||||
<view class="py-20rpx">
|
|
||||||
<view>清洁结果</view>
|
|
||||||
<view class="text-hex-999999 mt-20rpx">
|
|
||||||
<view class="bg-gray-50 b-solid w-130rpx h-130rpx"></view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="h-100rpx">
|
|
||||||
<view
|
|
||||||
class="fixed bottom-0 left-0 right-0 h-120rpx bg-white flex items-center px-base space-x-30rpx"
|
|
||||||
>
|
|
||||||
<view class="flex-1">
|
|
||||||
<uv-button color="#999999" shape="circle" plain block>
|
|
||||||
拒绝
|
|
||||||
</uv-button>
|
|
||||||
</view>
|
|
||||||
<view class="flex-1">
|
|
||||||
<uv-button type="primary" shape="circle" block> 通过 </uv-button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
<script setup>
|
|
||||||
import CuNavbar from '@/components/cu-navbar/index'
|
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
|
||||||
import { http } from '@/utils/request'
|
|
||||||
import { ref } from 'vue'
|
|
||||||
|
|
||||||
const id = ref(null)
|
|
||||||
onLoad((opt) => {
|
|
||||||
id.value = opt.id
|
|
||||||
|
|
||||||
getDetail()
|
|
||||||
})
|
|
||||||
|
|
||||||
const getDetail = async () => {
|
|
||||||
const resdata = await http.get(`/tasks/${id.value}`, {
|
|
||||||
params: {
|
|
||||||
id: id.value,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
console.log(resdata);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
<template>
|
||||||
|
<view class="px-base">
|
||||||
|
<CuNavbar title="任务详情"></CuNavbar>
|
||||||
|
|
||||||
|
<BaseCompApi :apiUrl="`/tasks/${id}`" :colums="baseColums">
|
||||||
|
<!-- <template v-slot="{ slotName, data }">
|
||||||
|
<view v-if="slotName == 'taskable.description'">
|
||||||
|
{{ data }}
|
||||||
|
</view>
|
||||||
|
</template> -->
|
||||||
|
</BaseCompApi>
|
||||||
|
|
||||||
|
<view class="h-100rpx">
|
||||||
|
<view
|
||||||
|
class="fixed bottom-0 left-0 right-0 h-120rpx bg-white flex items-center px-base space-x-30rpx"
|
||||||
|
>
|
||||||
|
<view class="flex-1">
|
||||||
|
<uv-button color="#999999" shape="circle" plain block>
|
||||||
|
拒绝
|
||||||
|
</uv-button>
|
||||||
|
</view>
|
||||||
|
<view class="flex-1">
|
||||||
|
<uv-button type="primary" shape="circle" block> 通过 </uv-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import CuNavbar from '@/components/cu-navbar/index'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import BaseCompApi from '@/components/base-comp/base-api.vue'
|
||||||
|
import { timeFormat } from '@climblee/uv-ui/libs/function'
|
||||||
|
const baseColums = [
|
||||||
|
{
|
||||||
|
title: '申请人',
|
||||||
|
dataIndex: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所属门店',
|
||||||
|
dataIndex: 'taskable.store.address',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电话号码',
|
||||||
|
dataIndex: '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '申请时间',
|
||||||
|
dataIndex: 'created_at',
|
||||||
|
format: timeFormat,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '清洁范围',
|
||||||
|
dataIndex: 'taskable.description',
|
||||||
|
labelPosition: 'top',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
const id = ref(null)
|
||||||
|
|
||||||
|
onLoad((opt) => {
|
||||||
|
id.value = opt.id
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
@ -1,16 +1,38 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="px-base">
|
<view class="px-base">
|
||||||
<CuNavbar title="任务详情"></CuNavbar>
|
<CuNavbar title="任务详情"></CuNavbar>
|
||||||
|
<view
|
||||||
<BaseCompApi :apiUrl="`/tasks/${id}`" :colums="baseColums">
|
class="mt-30rpx card-shadow bg-white rounded-19rpx px-base text-[#333333] text-27rpx"
|
||||||
<template v-slot="{ slotName, data }">
|
>
|
||||||
<view v-if="slotName == 'taskable.description'">
|
<template v-for="(item, i) in columsList" :key="i">
|
||||||
{{ data }}
|
<template v-if="item.dataIndex == 'taskable.photos'">
|
||||||
|
<view class="py-20rpx">
|
||||||
|
<view>{{ item.title }}</view>
|
||||||
|
<view class="grid grid-cols-3 gap-15rpx mt-20rpx">
|
||||||
|
<view class="" v-for="op in item.value" :key="op">
|
||||||
|
<image class="w-full" mode="widthFix" :src="op"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<view
|
||||||
|
v-else
|
||||||
|
class="py-20rpx flex"
|
||||||
|
:class="[
|
||||||
|
[
|
||||||
|
item.labelPosition == 'top'
|
||||||
|
? 'flex-col space-y-10rpx'
|
||||||
|
: 'items-center justify-between',
|
||||||
|
],
|
||||||
|
]"
|
||||||
|
>
|
||||||
|
<view>{{ item.title }}</view>
|
||||||
|
<view class="text-hex-999999">{{ item.value }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
<uv-line color="#f5f5f5" v-if="i != columsList.length - 1"></uv-line>
|
||||||
</template>
|
</template>
|
||||||
</BaseCompApi>
|
</view>
|
||||||
|
<!-- <view class="h-100rpx">
|
||||||
<view class="h-100rpx">
|
|
||||||
<view
|
<view
|
||||||
class="fixed bottom-0 left-0 right-0 h-120rpx bg-white flex items-center px-base space-x-30rpx"
|
class="fixed bottom-0 left-0 right-0 h-120rpx bg-white flex items-center px-base space-x-30rpx"
|
||||||
>
|
>
|
||||||
|
|
@ -23,14 +45,14 @@
|
||||||
<uv-button type="primary" shape="circle" block> 通过 </uv-button>
|
<uv-button type="primary" shape="circle" block> 通过 </uv-button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import CuNavbar from '@/components/cu-navbar/index'
|
import CuNavbar from '@/components/cu-navbar/index'
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
import { ref } from 'vue'
|
import { http } from '@/utils/request'
|
||||||
import BaseCompApi from '@/components/base-comp/base-api.vue'
|
import { ref, computed } from 'vue'
|
||||||
import { timeFormat } from '@climblee/uv-ui/libs/function'
|
import { timeFormat } from '@climblee/uv-ui/libs/function'
|
||||||
const baseColums = [
|
const baseColums = [
|
||||||
{
|
{
|
||||||
|
|
@ -55,10 +77,49 @@ const baseColums = [
|
||||||
dataIndex: 'taskable.description',
|
dataIndex: 'taskable.description',
|
||||||
labelPosition: 'top',
|
labelPosition: 'top',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '清洁结果',
|
||||||
|
dataIndex: 'taskable.photos',
|
||||||
|
},
|
||||||
]
|
]
|
||||||
const id = ref(null)
|
const id = ref(null)
|
||||||
|
const data = ref({})
|
||||||
|
|
||||||
|
const columsList = computed(() => {
|
||||||
|
const arr = []
|
||||||
|
baseColums.forEach((e) => {
|
||||||
|
const { dataIndex, format } = e
|
||||||
|
let str = getValue(data.value, dataIndex)
|
||||||
|
if (isFunction(format)) {
|
||||||
|
str = format(str)
|
||||||
|
}
|
||||||
|
arr.push({
|
||||||
|
...e,
|
||||||
|
value: str,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return arr
|
||||||
|
})
|
||||||
|
|
||||||
onLoad((opt) => {
|
onLoad((opt) => {
|
||||||
id.value = opt.id
|
id.value = opt.id
|
||||||
|
getDetail()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const getDetail = async () => {
|
||||||
|
const resdata = await http.get(`/tasks/${id.value}`, {
|
||||||
|
params: {
|
||||||
|
id: id.value,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
data.value = resdata
|
||||||
|
}
|
||||||
|
|
||||||
|
const getValue = (obj, path) => {
|
||||||
|
return path.split('.').reduce((acc, key) => (acc ? acc[key] : undefined), obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
const isFunction = (fn) => {
|
||||||
|
return typeof fn === 'function'
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,19 @@
|
||||||
:index="tabIndex"
|
:index="tabIndex"
|
||||||
:apiUrl="tabList[1].apiUrl"
|
:apiUrl="tabList[1].apiUrl"
|
||||||
:params="tabList[1].params"
|
:params="tabList[1].params"
|
||||||
></MescrollItem>
|
>
|
||||||
|
<template v-slot="{ list }">
|
||||||
|
<view class="space-y-15rpx p-base">
|
||||||
|
<view v-for="(item, i) in list" :key="i">
|
||||||
|
<Item
|
||||||
|
:item="item"
|
||||||
|
isCheck
|
||||||
|
:type="tabList[1].params.subject_type"
|
||||||
|
></Item>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</MescrollItem>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
@ -64,7 +76,7 @@ const tabList = ref([
|
||||||
name: '任务审核',
|
name: '任务审核',
|
||||||
apiUrl: '/workflow',
|
apiUrl: '/workflow',
|
||||||
params: {
|
params: {
|
||||||
// aaa:111
|
subject_type: 'task_hygienes'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ export const useUserStore = defineStore({
|
||||||
id: 'app-user',
|
id: 'app-user',
|
||||||
state: () => ({
|
state: () => ({
|
||||||
userInfo: null,
|
userInfo: null,
|
||||||
token: '22|ua3STGluZFzDeV1nOs4I3S9s2UCDtQp9AtVLT2jN0535e0a5',
|
token: null,
|
||||||
roles: []
|
roles: []
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
import { createPersistedState } from 'pinia-plugin-persistedstate';
|
import { createPersistedState } from 'pinia-plugin-persistedstate';
|
||||||
export const PERSIST_KEY_PREFIX = 'lottery';
|
export const PERSIST_KEY_PREFIX = 'lottery1';
|
||||||
|
|
||||||
export function registerPiniaPersistPlugin(pinia) {
|
export function registerPiniaPersistPlugin(pinia) {
|
||||||
pinia.use(createPersistedState(createPersistedStateOptions(PERSIST_KEY_PREFIX)));
|
pinia.use(createPersistedState(createPersistedStateOptions(PERSIST_KEY_PREFIX)));
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,10 @@ const cfu = {
|
||||||
//下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
|
//下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
|
||||||
"formatter":{
|
"formatter":{
|
||||||
"yAxisDemo1":function(val, index, opts){return val+'元'},
|
"yAxisDemo1":function(val, index, opts){return val+'元'},
|
||||||
|
"ssss":function(val,index,opts){
|
||||||
|
console.log((index % 5)==0?val:'');
|
||||||
|
return (index % 8)==0?val:''
|
||||||
|
},
|
||||||
"yAxisDemo2":function(val, index, opts){return val.toFixed(2)},
|
"yAxisDemo2":function(val, index, opts){return val.toFixed(2)},
|
||||||
"xAxisDemo1":function(val, index, opts){return val+'年';},
|
"xAxisDemo1":function(val, index, opts){return val+'年';},
|
||||||
"xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')},
|
"xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue