Browse Source

样式调整

master
parent
commit
a6ac1c6c6d
  1. 4
      components/cs-dict-tag/index.vue
  2. 19
      components/cs-text-more/index.vue
  3. 4
      config.js
  4. 15
      pages.json
  5. 174
      pages/enterprise.vue
  6. 207
      pages/index.vue
  7. 51
      pages/owner.vue
  8. 136
      pages/task.vue
  9. BIN
      static/favicon.png
  10. BIN
      static/images/owner/bill.png
  11. BIN
      static/images/owner/message-grey.png
  12. BIN
      static/images/owner/policy.png
  13. BIN
      static/images/tabbers/home-select.png
  14. BIN
      static/images/tabbers/home.png
  15. BIN
      static/images/tabbers/logo.png
  16. BIN
      static/images/tabbers/position-select.png
  17. BIN
      static/images/tabbers/position.png
  18. BIN
      static/images/tabbers/task-select.png
  19. BIN
      static/images/tabbers/task.png
  20. BIN
      static/images/tabbers/user-select.png
  21. BIN
      static/images/tabbers/user.png
  22. 24
      static/scss/global.scss
  23. 4
      static/scss/index.scss
  24. 72
      sub/enterprise/detail.vue
  25. 59
      sub/inspection/detail.vue
  26. 3
      sub/inspection/record.vue
  27. 242
      sub/owner/notic.vue
  28. 0
      sub/owner/notice-detail.vue
  29. 38
      sub/owner/policy-detail.vue
  30. 118
      sub/owner/policy.vue
  31. 206
      sub/task/detail.vue
  32. 33
      sub/task/enforce.vue
  33. 2
      sub/task/locate.vue
  34. 166
      sub/task/record.vue
  35. 1125
      uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue
  36. 4
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js
  37. 595
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js
  38. 14675
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js
  39. 7542
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js
  40. 51
      uni_modules/s-components/s-header/index.vue
  41. 17
      uni_modules/s-components/s-tabber/index.vue
  42. 330
      uni_modules/uview-ui/components/u-count-to/u-count-to.vue
  43. 1079
      uni_modules/uview-ui/components/u-upload/u-upload.vue
  44. 1
      utils/request.js
  45. 33
      wxcomponents/vant/dropdown-item/index.wxss
  46. 1
      wxcomponents/vant/dropdown-menu/index.wxml
  47. 7
      wxcomponents/vant/dropdown-menu/index.wxs
  48. 8
      wxcomponents/vant/dropdown-menu/index.wxss

4
components/cs-dict-tag/index.vue

@ -97,9 +97,9 @@ export default {
color: #99a1b7; color: #99a1b7;
} }
.dict-tag { .dict-tag {
min-width: 200rpx; min-width: 212rpx;
text-align: center; text-align: center;
font-size: 24rpx; font-size: 24rpx;
padding: 16rpx 40rpx; padding: 4rpx 40rpx;
} }
</style> </style>

19
components/cs-text-more/index.vue

@ -1,11 +1,10 @@
<template> <template>
<view :style="{ color }"> <view :style="{ color: color }">
<view <view
style=" style="
font-size: 26rpx; font-size: 28rpx;
line-height: 160%; line-height: 160%;
position: relative; position: relative;
transform: 0.2s all;
color: inherit; color: inherit;
white-space: normal; white-space: normal;
" "
@ -16,17 +15,16 @@
<view <view
v-else v-else
style=" style="
font-size: 26rpx; font-size: 28rpx;
line-height: 160%; line-height: 160%;
position: relative; position: relative;
transform: 0.2s all;
color: inherit; color: inherit;
white-space: normal; white-space: normal;
" "
@tap="isShowAllText = !isShowAllText" @tap.native.stop="isShowAllText = !isShowAllText"
> >
{{ isShowAllText ? value : `${value.slice(1, splitLength)}...` }} {{ isShowAllText ? value : `${value.slice(0, splitLength)}...` }}
<text style="color: #17c653; padding-left: 4px"> <text style="color: #17c653; padding-left: 8rpx">
{{ isShowAllText ? '收起' : '展开' }} {{ isShowAllText ? '收起' : '展开' }}
</text> </text>
</view> </view>
@ -47,11 +45,12 @@ export default {
default: '文本简介'.repeat(20) default: '文本简介'.repeat(20)
}, },
color: { color: {
type: String type: String,
default: '#4b5675'
}, },
splitLength: { splitLength: {
type: Number, type: Number,
default: 100 default: 62
} }
} }
} }

4
config.js

@ -1,8 +1,8 @@
// 应用全局配置 // 应用全局配置
module.exports = { module.exports = {
// baseUrl: 'http://188.188.5.188:48080', // baseUrl: 'http://188.188.5.188:48080',
baseUrl: 'https://hb.jzce.com', // baseUrl: 'https://hb.jzce.com',
// baseUrl: 'http://188.188.3.232:48080', baseUrl: 'http://188.188.3.232:48080',
// baseUrl: 'http://localhost:48080', // baseUrl: 'http://localhost:48080',
baseApi: '/admin-api', baseApi: '/admin-api',
imgUrl: 'https://hb.jzce.com', imgUrl: 'https://hb.jzce.com',

15
pages.json

@ -3,13 +3,15 @@
"path": "pages/login", "path": "pages/login",
"style": { "style": {
"navigationBarTitleText": "登录", "navigationBarTitleText": "登录",
"navigationStyle": "custom" "navigationStyle": "custom",
"disableScroll": true
} }
}, { }, {
"path": "pages/index", "path": "pages/index",
"style": { "style": {
"navigationBarTitleText": "首页", "navigationBarTitleText": "首页",
"navigationStyle": "custom", "navigationStyle": "custom",
"disableScroll": true,
"usingComponents": { "usingComponents": {
"van-dropdown-menu": "/wxcomponents/vant/dropdown-menu/index", "van-dropdown-menu": "/wxcomponents/vant/dropdown-menu/index",
"van-dropdown-item": "/wxcomponents/vant/dropdown-item/index" "van-dropdown-item": "/wxcomponents/vant/dropdown-item/index"
@ -21,6 +23,7 @@
"style": { "style": {
"navigationBarTitleText": "企业", "navigationBarTitleText": "企业",
"navigationStyle": "custom", "navigationStyle": "custom",
"disableScroll": true,
"usingComponents": { "usingComponents": {
"van-dropdown-menu": "/wxcomponents/vant/dropdown-menu/index", "van-dropdown-menu": "/wxcomponents/vant/dropdown-menu/index",
"van-dropdown-item": "/wxcomponents/vant/dropdown-item/index", "van-dropdown-item": "/wxcomponents/vant/dropdown-item/index",
@ -40,6 +43,7 @@
"style": { "style": {
"navigationBarTitleText": "任务", "navigationBarTitleText": "任务",
"navigationStyle": "custom", "navigationStyle": "custom",
"disableScroll": true,
"usingComponents": { "usingComponents": {
"van-dropdown-menu": "/wxcomponents/vant/dropdown-menu/index", "van-dropdown-menu": "/wxcomponents/vant/dropdown-menu/index",
"van-dropdown-item": "/wxcomponents/vant/dropdown-item/index", "van-dropdown-item": "/wxcomponents/vant/dropdown-item/index",
@ -117,7 +121,7 @@
"componentPlaceholder": {} "componentPlaceholder": {}
} }
}, },
{ {
"path": "enterprise/edit", "path": "enterprise/edit",
"style": { "style": {
@ -250,6 +254,13 @@
"style": { "style": {
"navigationBarTitleText": "" "navigationBarTitleText": ""
} }
},
{
"path": "owner/notic",
"style": {
"navigationBarTitleText": "消息通知",
"disableScroll": true
}
} }
] ]
}], }],

174
pages/enterprise.vue

@ -9,44 +9,47 @@
id="sreach" id="sreach"
@change="handleSearch" @change="handleSearch"
/> />
<van-dropdown-menu safe-area-tab-bar active-color="#17C653"> <view class="drop-box">
<van-dropdown-item <van-dropdown-menu active-color="#17C653">
:value="queryParams.region" <van-dropdown-item
:options="getDropdownOption('enterprises_area')" :value="queryParams.region"
@change=" :options="getDropdownOption('enterprises_area')"
v => { @change="
querySelect(v, 'region') v => {
} querySelect(v, 'region')
" }
/> "
<van-dropdown-item />
:value="queryParams.hy" <van-dropdown-item
:options="getDropdownOption('hy')" :value="queryParams.hy"
@change=" :options="getDropdownOption('hy')"
v => { @change="
querySelect(v, 'hy') v => {
} querySelect(v, 'hy')
" }
/> "
<van-dropdown-item />
:value="queryParams.st" <van-dropdown-item
:options="getDropdownOption('st')" :value="queryParams.st"
@change=" :options="getDropdownOption('st')"
v => { @change="
querySelect(v, 'st') v => {
} querySelect(v, 'st')
" }
/> "
<van-dropdown-item />
:value="queryParams.wr" <van-dropdown-item
:options="getDropdownOption('wr')" :value="queryParams.wr"
@change=" :options="getDropdownOption('wr')"
v => { @change="
querySelect(v, 'wr') v => {
} querySelect(v, 'wr')
" }
/> "
</van-dropdown-menu> />
</van-dropdown-menu>
</view>
<scroll-view <scroll-view
scroll-y="true" scroll-y="true"
:refresher-enabled="true" :refresher-enabled="true"
@ -68,11 +71,24 @@
shape="square" shape="square"
size="64" size="64"
></u-avatar> ></u-avatar>
<view class="wd-flex wd-flex-col" style="gap: 4px"> <view class="wd-flex wd-flex-col">
<text class="wd-font-800 wd-text-15"> <text
class="wd-font-800 wd-text-15"
style="
padding-right: 3rem;
margin-bottom: 4rpx;
white-space: nowrap;
text-overflow: ellipsis;
width: 432rpx;
overflow: hidden;
"
>
{{ enterprise.enterprisesName }} {{ enterprise.enterprisesName }}
</text> </text>
<view class="wd-flex wd-pb-8px"> <view
class="wd-flex"
style="margin-bottom: 16rpx; margin-top: 4rpx"
>
<u-icon name="map" size="14" color="#17C653"></u-icon> <u-icon name="map" size="14" color="#17C653"></u-icon>
<text class="address wd-text-12" style="margin-left: 4px"> <text class="address wd-text-12" style="margin-left: 4px">
{{ enterprise.address }} {{ enterprise.address }}
@ -206,35 +222,37 @@ export default {
getDropdownOption(key) { getDropdownOption(key) {
if (!this.dictMap[key]) return [] if (!this.dictMap[key]) return []
const keyMap = { const keyMap = {
enterprises_area: '区域', enterprises_area: '区域',
hy: '行业', hy: '行业',
st: '生态', st: '生态',
wr: '污染' wr: '污染'
} }
if (['enterprises_area'].includes(key)) { if (['enterprises_area'].includes(key)) {
return [ return [
{
value: '',
text: keyMap[key]
},
...this.dictMap[key].map(i => { ...this.dictMap[key].map(i => {
return { return {
value: i.value, value: i.value,
text: i.label text: i.label
} }
}), })
{
value: '',
text: keyMap[key]
}
] ]
} }
const data = this.dictMap[key].map(d => { const data = [
return { {
value: d.id, value: '',
text: d.tagName text: keyMap[key]
} },
}) ...this.dictMap[key].map(d => {
data.push({ return {
value: '', value: d.id,
text: keyMap[key] text: d.tagName
}) }
})
]
return data return data
}, },
querySelect(v, key) { querySelect(v, key) {
@ -328,26 +346,14 @@ export default {
font-size: 24rpx; font-size: 24rpx;
.address { .address {
color: $uni-text-color-grey; color: $uni-text-color-grey;
white-space: nowrap;
text-overflow: ellipsis;
width: 448rpx;
overflow: hidden;
} }
&:active { &:active {
background-color: $cs-color-touch; background-color: $cs-color-touch;
} }
.tagList {
margin-top: 16rpx;
display: flex;
gap: 8rpx;
color: $uni-text-color-grey;
flex-flow: row wrap;
.tag {
font-size: 24rpx;
display: flex;
padding: 4rpx 12rpx;
justify-content: center;
align-items: center;
border-radius: 4rpx;
background: #f9f9f9;
}
}
.audit { .audit {
position: absolute; position: absolute;
right: -38rpx; right: -38rpx;
@ -359,13 +365,17 @@ export default {
text-align: center; text-align: center;
} }
} }
::v-deep .van-dropdown-menu { .drop-box {
box-shadow: none; padding: 24rpx;
height: 70rpx; border-bottom: 2rpx solid #f1f1f4;
font-size: 26rpx; background-color: #fff;
border-bottom: 1px solid #f1f1f4; ::v-deep .van-dropdown-menu {
box-shadow: none;
height: fit-content !important;
font-size: 26rpx;
padding: 12rpx 24rpx;
}
} }
::v-deep .u-list { ::v-deep .u-list {
padding: 24rpx; padding: 24rpx;
} }

207
pages/index.vue

@ -1,33 +1,35 @@
<template> <template>
<cs-page :selected="0" title="智慧生态" isTab> <cs-page :selected="0" isTab title="智慧环保">
<view class="view-container"> <view class="view-container">
<van-dropdown-menu safe-area-tab-bar active-color="#17C653"> <view class="drop-box">
<van-dropdown-item <van-dropdown-menu active-color="#17C653">
:value="queryParams.deptId" <van-dropdown-item
:options="dropOption.dept" :value="queryParams.deptId"
use-before-toggle :options="dropOption.dept"
@before-toggle="dorpToggle" title="按部门"
@change=" @change="
v => { v => {
querySelect(v, 'deptId') querySelect(v, 'deptId')
} }
" "
/> ></van-dropdown-item>
<van-dropdown-item <van-dropdown-item
:value="queryParams.selectWeek" :value="queryParams.selectWeek"
:options="dropOption.select_week" :options="dropOption.select_week"
@change=" title="按周期"
v => { @change="
querySelect(v, 'selectWeek') v => {
} querySelect(v, 'selectWeek')
" }
/> "
</van-dropdown-menu> />
</van-dropdown-menu>
</view>
<scroll-view <scroll-view
:scroll-y="true" :scroll-y="true"
:style="{ maxHeight: `${viewHeigth}px` }" :style="{ maxHeight: `${viewHeigth}px` }"
class="view"
:refresher-enabled="true" :refresher-enabled="true"
class="view"
@refresherrefresh="refresherrefresh" @refresherrefresh="refresherrefresh"
:refresher-triggered="refresherTriggered" :refresher-triggered="refresherTriggered"
@refresherpulling="refresherpulling" @refresherpulling="refresherpulling"
@ -39,43 +41,43 @@
> >
<view <view
class="wd-flex wd-flex-col wd-flex-center" class="wd-flex wd-flex-col wd-flex-center"
style="gap: 4px" style="gap: 8rpx"
> >
<u-count-to <u-count-to
:start-val="0" :start-val="0"
:end-val="detail.taskCount" :end-val="detail.taskCount"
bold
font-size="24" font-size="24"
blod="500"
color="#071437" color="#071437"
class="number" class="number"
></u-count-to> ></u-count-to>
<view class="">任务数量</view> <view style="color: #4b5675">任务数量</view>
</view> </view>
<view <view
class="wd-flex wd-flex-col wd-flex-center" class="wd-flex wd-flex-col wd-flex-center"
style="gap: 4px" style="gap: 8rpx"
> >
<u-count-to <u-count-to
:start-val="0" :start-val="0"
:end-val="detail.inspectionsCount" :end-val="detail.inspectionsCount"
bold
font-size="24" font-size="24"
blod="500"
color="#071437" color="#071437"
></u-count-to> ></u-count-to>
<view class="">执法记录</view> <view style="color: #4b5675">执法记录</view>
</view> </view>
<view <view
class="wd-flex wd-flex-col wd-flex-center" class="wd-flex wd-flex-col wd-flex-center"
style="gap: 4px" style="gap: 8rpx"
> >
<u-count-to <u-count-to
:start-val="0" :start-val="0"
:end-val="detail.enterpriseCount" :end-val="detail.enterpriseCount"
bold
font-size="24" font-size="24"
blod="500"
color="#071437" color="#071437"
></u-count-to> ></u-count-to>
<view class="">企业数量</view> <view style="color: #4b5675">企业数量</view>
</view> </view>
</view> </view>
<qiun-data-charts <qiun-data-charts
@ -117,7 +119,6 @@
<u-count-to <u-count-to
:start-val="0" :start-val="0"
:end-val="Number(item.value)" :end-val="Number(item.value)"
bold
font-size="16" font-size="16"
color="#071437" color="#071437"
></u-count-to> ></u-count-to>
@ -130,13 +131,13 @@
<view class="box row-1"> <view class="box row-1">
<view <view
class="wd-flex" class="wd-flex"
style="margin-top: 12px; justify-content: center" style="margin-top: 24rpx; justify-content: center"
> >
<view <view
style=" style="
background-color: #f9f9f9; background-color: #f9f9f9;
display: inline-flex; display: inline-flex;
padding: 4px; padding: 8rpx;
" "
> >
<view <view
@ -158,7 +159,7 @@
? '#071437' ? '#071437'
: '#78829d', : '#78829d',
fontWeight: fontWeight:
queryParams.type == item.type ? '800' : 'normal' queryParams.type == item.type ? 'bold' : '400'
}" }"
> >
{{ item.name }} {{ item.name }}
@ -166,15 +167,15 @@
</view> </view>
</view> </view>
</view> </view>
<view style="min-height: 220px"> <view style="min-height: 440rpx">
<view <view
v-for="(item, index) in list" v-for="(item, index) in list"
:key="index" :key="index"
class="wd-flex" class="wd-flex"
style="justify-content: space-between; padding: 12px" style="justify-content: space-between; padding: 24rpx"
> >
<view class="wd-font-800">{{ item.name }}</view> <view class="wd-font-500">{{ item.name }}</view>
<view class="wd-font-800" style="color: #17c653"> <view class="wd-font-500" style="color: #17c653">
<view> <view>
<u-count-to <u-count-to
:start-val="0" :start-val="0"
@ -202,7 +203,7 @@ export default {
return { return {
dictMap: {}, dictMap: {},
queryParams: { queryParams: {
selectWeek: '', selectWeek: '3',
deptId: '', deptId: '',
type: 1 type: 1
}, },
@ -212,7 +213,7 @@ export default {
viewHeigth: 0, viewHeigth: 0,
tabs: [ tabs: [
{ {
name: '资质期', name: '资质期',
type: 1 type: 1
}, },
{ {
@ -223,7 +224,7 @@ export default {
refresherTriggered: false, refresherTriggered: false,
list: [], list: [],
dropOption: {}, dropOption: {},
color: ['#1B84FF', '#7239EA', '#F6B100', '#F8285A', '#17C653'] color: []
} }
}, },
onLoad: async function () { onLoad: async function () {
@ -231,11 +232,11 @@ export default {
uni.hideTabBar({ uni.hideTabBar({
animation: false animation: false
}) })
this.getDict() await this.getDict()
if (!this.$roles.checkRole(['director'])) { if (!this.$roles.checkRole(['director'])) {
this.queryParams.deptId = this.$store.getters.deptId this.queryParams.deptId = this.$store.getters.deptId
} }
this.init() await this.init()
}, },
onReady() { onReady() {
this.$nextTick(() => { this.$nextTick(() => {
@ -250,39 +251,55 @@ export default {
const query = uni.createSelectorQuery().in(this) const query = uni.createSelectorQuery().in(this)
query query
.select('.view-container') .select('.view-container')
.boundingClientRect(data => { .boundingClientRect()
this.viewHeigth = data.height - 35 - 25 .select('.drop-box')
.boundingClientRect()
.select('.cs-tabber-container')
.boundingClientRect()
.exec(res => {
this.viewHeigth = res[0].height - res[1].height
}) })
.exec()
}, },
async getDict() { async getDict() {
const dict = await getDictBatchByType({ const dict = await getDictBatchByType({
type: ['select_week'].join(',') type: ['select_week'].join(',')
}) })
const dept = await getDeptTree() const dept = await getDeptTree()
this.dropOption.dept = [ if (!this.$roles.checkRole(['director'])) {
...dept.data.map(i => { this.dropOption.dept = [
return { ...dept.data
value: i.id, .filter(i => {
text: i.name return i.id == this.$store.getters.deptId
})
.map(i => {
return {
value: i.id,
text: i.name
}
})
]
} else {
this.dropOption.dept = [
...dept.data.map(i => {
return {
value: i.id,
text: i.name
}
}),
{
value: '',
text: '全部'
} }
}), ]
{ }
value: '',
text: '全部'
}
]
this.dropOption.select_week = [ this.dropOption.select_week = [
...dict.data.select_week.map(i => { ...dict.data.select_week.map(i => {
return { return {
value: i.value, value: i.value,
text: i.label text: i.label
} }
}), })
{
value: '',
text: '全部'
}
] ]
}, },
async init() { async init() {
@ -305,6 +322,7 @@ export default {
colorMap.push(color) colorMap.push(color)
return res return res
}) })
colorMap.push('#F9F9F9')
this.color = colorMap this.color = colorMap
this.detail.legendData = data this.detail.legendData = data
this.setPieData(data, this.detail.taskCompletionRate) this.setPieData(data, this.detail.taskCompletionRate)
@ -322,10 +340,9 @@ export default {
} }
}) })
if (Number(max) < 100) { if (Number(max) < 100) {
pieData.push({ pieData.splice(pieData.length, 0, {
name: '', name: '',
value: 100 - Number(max), value: 100 - Number(max)
color: '#F9F9F9'
}) })
} }
this.opts = { this.opts = {
@ -341,9 +358,7 @@ export default {
title: { title: {
name: `${max}%`, name: `${max}%`,
fontSize: 24, fontSize: 24,
color: '#071437', color: '#071437'
fontWeight: 'bold',
fontFamily: 'Tahoma'
}, },
subtitle: { subtitle: {
name: '完成率', name: '完成率',
@ -366,7 +381,7 @@ export default {
this.chartData = { this.chartData = {
series: [ series: [
{ {
data: pieData data: [...pieData]
} }
] ]
} }
@ -394,13 +409,7 @@ export default {
refresherrefresh() { refresherrefresh() {
this.init() this.init()
}, },
dorpToggle(e) {
if (!this.$roles.checkRole(['director'])) {
e.detail.callback(false)
} else {
e.detail.callback(true)
}
},
numFilter(value) { numFilter(value) {
// //
let tempVal = parseFloat(value).toFixed(3) let tempVal = parseFloat(value).toFixed(3)
@ -420,33 +429,24 @@ export default {
.view-container { .view-container {
height: 100%; height: 100%;
} }
.number {
font-family: 'Tahoma';
}
::v-deep .u-count-num {
font-family: 'Tahoma';
}
.view { .view {
padding: 0 24rpx; padding: 0 24rpx 48rpx;
padding-bottom: 24rpx;
display: flex;
gap: 24rpx;
flex-flow: column nowrap;
.box { .box {
padding: 24rpx; padding: 24rpx;
background-color: #fff; background-color: #fff;
border: 2rpx solid #f9f9f9; border: 2rpx solid #f9f9f9;
border-radius: 24rpx; border-radius: 24rpx;
margin-top: 24rpx;
&:last-child {
margin-bottom: 24rpx;
}
} }
.row-1 { .row-1 {
display: flex; display: flex;
flex-flow: column nowrap; flex-flow: column nowrap;
gap: 24rpx; gap: 24rpx;
margin-top: 24rpx;
&:last-child {
margin-bottom: 84rpx;
}
} }
.people-name { .people-name {
max-width: 4rem; max-width: 4rem;
@ -454,10 +454,11 @@ export default {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
color: #4b5675;
} }
.tab { .tab {
position: relative; position: relative;
padding: 16rpx 32rpx; padding: 8rpx 32rpx;
.name { .name {
z-index: 2; z-index: 2;
position: inherit; position: inherit;
@ -474,10 +475,18 @@ export default {
} }
} }
} }
::v-deep .van-dropdown-menu { .drop-box {
box-shadow: none; padding: 24rpx;
height: 70rpx !important;
font-size: 26rpx;
border-bottom: 2rpx solid #f1f1f4; border-bottom: 2rpx solid #f1f1f4;
background-color: #fff;
::v-deep .van-dropdown-menu {
box-shadow: none;
height: fit-content !important;
font-size: 26rpx;
padding: 8rpx 24rpx;
}
::v-deep .van-dropdown-item {
margin-bottom: 64rpx;
}
} }
</style> </style>

51
pages/owner.vue

@ -26,13 +26,16 @@
<u-icon name="arrow-right"></u-icon> <u-icon name="arrow-right"></u-icon>
</view> </view>
</view> </view>
<view class="section wd-flex wd-flex-row wd-justify-between"> <view
<view class="wd-flex wd-flex-row" style="gap: 8px"> class="section wd-flex wd-flex-row wd-justify-between"
@click="openSubMessage"
>
<view class="wd-flex wd-flex-row" style="gap: 16rpx">
<u--image <u--image
src="/static/images/owner/message.png" src="/static/images/owner/message.png"
width="20px" width="40rpx"
height="20px" height="40rpx"
mode="aspectFit" mode="aspectFill"
></u--image> ></u--image>
<text class="wd-font-800">消息通知</text> <text class="wd-font-800">消息通知</text>
</view> </view>
@ -48,7 +51,6 @@
<view <view
class="wd-flex wd-flex-row wd-items-center" class="wd-flex wd-flex-row wd-items-center"
style="gap: 16rpx" style="gap: 16rpx"
@click="openSubMessage"
> >
<text></text> <text></text>
<u-icon name="arrow-right"></u-icon> <u-icon name="arrow-right"></u-icon>
@ -81,9 +83,9 @@
<view class="wd-flex wd-flex-row" style="gap: 16rpx"> <view class="wd-flex wd-flex-row" style="gap: 16rpx">
<u--image <u--image
src="/static/images/owner/list.png" src="/static/images/owner/list.png"
width="20px" width="40rpx"
height="20px" height="40rpx"
mode="aspectFit" mode="aspectFill"
></u--image> ></u--image>
<text class="wd-font-800">政策法规</text> <text class="wd-font-800">政策法规</text>
</view> </view>
@ -108,9 +110,9 @@
<view class="wd-flex wd-flex-row" style="gap: 16rpx"> <view class="wd-flex wd-flex-row" style="gap: 16rpx">
<u--image <u--image
src="/static/images/owner/edit.png" src="/static/images/owner/edit.png"
width="20px" width="40rpx"
height="20px" height="40rpx"
mode="aspectFit" mode="aspectFill"
></u--image> ></u--image>
<text class="wd-font-800">企业入驻</text> <text class="wd-font-800">企业入驻</text>
</view> </view>
@ -128,9 +130,9 @@
<view class="wd-flex wd-flex-row" style="gap: 16rpx"> <view class="wd-flex wd-flex-row" style="gap: 16rpx">
<u--image <u--image
src="/static/images/owner/phone.png" src="/static/images/owner/phone.png"
width="20px" width="40rpx"
height="20px" height="40rpx"
mode="aspectFit" mode="aspectFill"
></u--image> ></u--image>
<text class="wd-font-800">内部专线</text> <text class="wd-font-800">内部专线</text>
</view> </view>
@ -148,10 +150,10 @@
> >
<view class="wd-flex wd-flex-row" style="gap: 16rpx"> <view class="wd-flex wd-flex-row" style="gap: 16rpx">
<u--image <u--image
src="/static/images/owner/edit.png" src="/static/images/owner/bill.png"
width="20px" width="40rpx"
height="20px" height="40rpx"
mode="aspectFit" mode="aspectFill"
></u--image> ></u--image>
<text class="wd-font-800">工作汇报</text> <text class="wd-font-800">工作汇报</text>
</view> </view>
@ -215,8 +217,10 @@ export default {
uni.requestSubscribeMessage({ uni.requestSubscribeMessage({
//ID //ID
tmplIds: ['E8RK91cPLMios6ZHoKx6FJOV4H2kodx6yPWYp7jpLJY'], tmplIds: ['E8RK91cPLMios6ZHoKx6FJOV4H2kodx6yPWYp7jpLJY'],
success(res) { complete(res) {
console.log('requestSubscribeMessage', res) uni.navigateTo({
url: '/sub/owner/notic'
})
} }
}) })
}, },
@ -225,13 +229,12 @@ export default {
url: '/sub/owner/edit' url: '/sub/owner/edit'
}) })
}, },
invite() { invite() {
this.share = { this.share = {
title: '邀请企业入驻', // title: '邀请企业入驻', //
path: `/pages/login?inviteId=${this.$store.getters.userId}`, path: `/pages/login?inviteId=${this.$store.getters.userId}`,
imageUrl: imageUrl: 'https://hb.jzce.com/fx_qyrz.png'
'https://hb.jzce.com/fx_qyrz.png'
} }
}, },
callPhone() { callPhone() {

136
pages/task.vue

@ -1,44 +1,38 @@
<template> <template>
<cs-page :selected="1" title="执法任务" isTab> <cs-page :selected="1" title="执法任务" isTab>
<view class="page-container page"> <view class="page-container page">
<van-dropdown-menu safe-area-tab-bar active-color="#17C653"> <view class="drop-box">
<van-dropdown-item <van-dropdown-menu active-color="#17C653">
:value="queryParams.status" <van-dropdown-item
:options="getDropdownOption('task_state')" :value="queryParams.status"
@change=" :options="getDropdownOption('task_state')"
v => { @change="
querySelect(v, 'status') v => {
} querySelect(v, 'status')
" }
/> "
<van-dropdown-item />
:value="queryParams.priority" <van-dropdown-item
:options="getDropdownOption('task_priority')" :value="queryParams.zf_lx"
@change=" :options="getDropdownOption('zf_lx')"
v => { @change="
querySelect(v, 'priority') v => {
} querySelect(v, 'zf_lx')
" }
/> "
<van-dropdown-item />
:value="queryParams.zf_lx" <van-dropdown-item
:options="getDropdownOption('zf_lx')" :value="queryParams.select_week"
@change=" :options="getDropdownOption('select_week')"
v => { @change="
querySelect(v, 'zf_lx') v => {
} querySelect(v, 'select_week')
" }
/> "
<van-dropdown-item />
:value="queryParams.select_week" </van-dropdown-menu>
:options="getDropdownOption('select_week')" </view>
@change="
v => {
querySelect(v, 'select_week')
}
"
/>
</van-dropdown-menu>
<scroll-view <scroll-view
scroll-y="true" scroll-y="true"
:refresher-enabled="true" :refresher-enabled="true"
@ -72,19 +66,27 @@
fontSize="16" fontSize="16"
bold bold
duration="1000" duration="1000"
color="#071437"
></u-count-to> ></u-count-to>
% <text style="color: #071437; font-size: 24rpx">%</text>
</template> </template>
</van-circle> </van-circle>
</view> </view>
<view class="wd-flex wd-flex-col" style="gap: 8rpx"> <view class="wd-flex wd-flex-col">
<text <text
class="wd-font-800 wd-text-15 wd-pb-2px" class="wd-font-800 wd-text-15"
style="padding-right: 3rem" style="
padding-right: 3rem;
margin-bottom: 4rpx;
white-space: nowrap;
text-overflow: ellipsis;
width: 432rpx;
overflow: hidden;
"
> >
{{ task.title }} {{ task.title }}
</text> </text>
<view class="wd-flex wd-pb-8px"> <view class="wd-flex" style="margin-top: 4rpx">
<u-icon <u-icon
name="calendar" name="calendar"
size="18" size="18"
@ -92,7 +94,7 @@
></u-icon> ></u-icon>
<text <text
class="address wd-text-12" class="address wd-text-12"
style="margin-left: 8rpx" style="margin-left: 4rpx"
:style="{ :style="{
color: task.status == '2' ? '#17C653' : '#78829D' color: task.status == '2' ? '#17C653' : '#78829D'
}" }"
@ -102,7 +104,7 @@
}}结束 }}结束
</text> </text>
</view> </view>
<view class="tagList"> <view class="tagList" style="margin-top: 16rpx">
<view class="tag" v-if="task.deptName"> <view class="tag" v-if="task.deptName">
{{ task.deptName }} {{ task.deptName }}
</view> </view>
@ -223,28 +225,28 @@ export default {
const keyMap = { const keyMap = {
task_priority: '按等级', task_priority: '按等级',
zf_lx: '按类型', zf_lx: '按类型',
task_state: '按状态', task_state: '按发布',
select_week: '按周期' select_week: '按周期'
} }
if (['zf_lx'].includes(key)) { if (['zf_lx'].includes(key)) {
return [ return [
{ value: '', text: keyMap[key] },
...this.dictMap[key].map(d => { ...this.dictMap[key].map(d => {
return { return {
value: d.id, value: d.id,
text: d.tagName text: d.tagName
} }
}), })
{ value: '', text: keyMap[key] }
] ]
} else { } else {
return [ return [
{ value: '', text: keyMap[key] },
...this.dictMap[key].map(d => { ...this.dictMap[key].map(d => {
return { return {
value: d.value, value: d.value,
text: d.label text: d.label
} }
}), })
{ value: '', text: keyMap[key] }
] ]
} }
}, },
@ -322,44 +324,34 @@ export default {
position: relative; position: relative;
overflow: hidden; overflow: hidden;
font-size: 24rpx; font-size: 24rpx;
border: 1px solid var(--LightMode-Grey-Grey-100, #f9f9f9);
&:active { &:active {
background-color: $cs-color-touch; background-color: $cs-color-touch;
} }
.address { .address {
color: $uni-text-color-grey; color: $uni-text-color-grey;
} }
.tagList {
margin-top: 16rpx;
display: flex;
gap: 8rpx;
color: $uni-text-color-grey;
display: flex;
.tag {
font-size: 24rpx;
display: flex;
padding: 4rpx 12rpx;
justify-content: center;
align-items: center;
border-radius: 4rpx;
background: #f9f9f9;
}
}
.audit { .audit {
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
transform-origin: 50% 50%; transform-origin: 50% 50%;
transform: translateX(28px) translateY(9px) rotateZ(45deg); transform: translateX(33px) translateY(9px) rotateZ(45deg);
} }
.rate { .rate {
position: relative; position: relative;
} }
} }
::v-deep .van-dropdown-menu { .drop-box {
box-shadow: none; padding: 24rpx;
height: 70rpx !important; border-bottom: 2rpx solid #f1f1f4;
font-size: 26rpx; background-color: #fff;
border-bottom: 1px solid #f1f1f4; ::v-deep .van-dropdown-menu {
box-shadow: none;
height: fit-content !important;
font-size: 26rpx;
padding: 12rpx 24rpx;
}
} }
::v-deep .u-list { ::v-deep .u-list {

BIN
static/favicon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

BIN
static/images/owner/bill.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

BIN
static/images/owner/message-grey.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/images/owner/policy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 B

BIN
static/images/tabbers/home-select.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

After

Width:  |  Height:  |  Size: 792 B

BIN
static/images/tabbers/home.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/images/tabbers/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
static/images/tabbers/position-select.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 600 B

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/images/tabbers/position.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 873 B

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/images/tabbers/task-select.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 553 B

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/images/tabbers/task.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 B

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/images/tabbers/user-select.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 B

After

Width:  |  Height:  |  Size: 777 B

BIN
static/images/tabbers/user.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

After

Width:  |  Height:  |  Size: 1.2 KiB

24
static/scss/global.scss

@ -9,6 +9,10 @@ page {
color: #071437; color: #071437;
} }
view {
box-sizing: border-box;
}
button { button {
padding-left: 0; padding-left: 0;
padding-right: 0; padding-right: 0;
@ -23,3 +27,23 @@ button {
::v-deep .uni-calendar__box { ::v-deep .uni-calendar__box {
padding-bottom: 32px; padding-bottom: 32px;
} }
.tagList {
display: flex;
align-items: center;
gap: 16rpx;
.tag {
display: flex;
padding: 4rpx 12rpx;
justify-content: center;
align-items: center;
border-radius: 4rpx;
background: var(--LightMode-Grey-Grey-100, #f9f9f9);
color: var(--LightMode-Grey-Grey-600, #78829d);
text-align: center;
font-size: 24rpx;
font-style: normal;
font-weight: 400;
line-height: normal;
}
}

4
static/scss/index.scss

@ -10,3 +10,7 @@
border-radius: 50%; border-radius: 50%;
box-shadow: 0 0 4px 2px $cs-shadow-color; box-shadow: 0 0 4px 2px $cs-shadow-color;
} }
* {
box-sizing: border-box;
}

72
sub/enterprise/detail.vue

@ -7,8 +7,19 @@
</text> </text>
</view> </view>
<view class="address" @click="goView(detail)"> <view class="address" @click="goView(detail)">
<u-icon name="map" size="14" color="#17C653"></u-icon> <u-icon name="map" size="28rpx" color="#17C653"></u-icon>
<text style="text-decoration: underline"> <text
style="
text-decoration: underline;
color: #071437;
font-size: 26rpx;
padding-right: 3rem;
white-space: nowrap;
text-overflow: ellipsis;
width: 528rpx;
overflow: hidden;
"
>
{{ detail.address }} {{ detail.address }}
</text> </text>
</view> </view>
@ -25,28 +36,31 @@
</view> </view>
</view> </view>
<view class="wd-flex" style="align-items: center"> <view class="wd-flex" style="align-items: center">
<text class="address" style="margin-right: 12rpx">环保负责人</text> <text class="address" style="margin-right: 24rpx">环保负责人</text>
<text style="margin-right: 12rpx"> <text style="margin-right: 24rpx; color: #071437">
{{ detail.contactName }} {{ detail.contactName }}
</text> </text>
<text class="address" style="margin-right: 12rpx">联系方式</text> <text class="address" style="margin-right: 24rpx">联系方式</text>
<text style="text-decoration: underline" @click="callPhone(detail.environmentalContactPhone)"> <text
style="text-decoration: underline; color: #071437"
@click="callPhone(detail.environmentalContactPhone)"
>
{{ detail.environmentalContactPhone }} {{ detail.environmentalContactPhone }}
</text> </text>
</view> </view>
<view class="images-box"> <view
class="images-box"
@click="$util.perviewImage(detail.files.map(i => i.url))"
>
<image <image
v-for="(src, index) in detail.files" v-for="(src, index) in detail.files"
:key="index" :key="index"
:src="src.url" :src="src.url"
mode="aspectFit" mode="aspectFill"
class="image" class="image"
></image> ></image>
</view> </view>
<cs-text-more <cs-text-more :value="detail.introduction"></cs-text-more>
color="#4B5675"
:value="detail.introduction"
></cs-text-more>
<!-- <view class="status"> <!-- <view class="status">
<cs-dict-tag <cs-dict-tag
:dict="dictMap.enterprises_status" :dict="dictMap.enterprises_status"
@ -62,17 +76,18 @@
> >
<view class="wd-flex" style="gap: 18rpx; position: relative"> <view class="wd-flex" style="gap: 18rpx; position: relative">
<image <image
src="@/static/images/enterprise/zz.png" :src="prove.files[0].url"
style="width: 90px; height: 70px" style="width: 180rpx; height: 140rpx"
mode="aspectFit" mode="aspectFill"
@click="$util.perviewImage([prove.files[0].url])"
></image> ></image>
<view <view
style="flex: 1; justify-content: space-between" style="flex: 1; justify-content: space-between"
class="wd-flex wd-flex-col" class="wd-flex wd-flex-col"
> >
<view class="wd-flex" style="gap: 18rpx; align-items: center"> <view class="wd-flex" style="gap: 18rpx; align-items: center">
<text class="label">资质名称</text> <text class="label" style="color: #78829d">资质名称</text>
<view> <view style="color: #071437">
{{ {{
$dict.echoDicValue( $dict.echoDicValue(
dictMap.enterprise_qua, dictMap.enterprise_qua,
@ -83,13 +98,13 @@
</view> </view>
<view class="wd-flex" style="gap: 18rpx; align-items: center"> <view class="wd-flex" style="gap: 18rpx; align-items: center">
<text class="label">资质编号</text> <text class="label">资质编号</text>
<view> <view style="color: #071437">
{{ prove.enterpriseAuth }} {{ prove.enterpriseAuth }}
</view> </view>
</view> </view>
<view class="wd-flex" style="gap: 18rpx; align-items: center"> <view class="wd-flex" style="gap: 18rpx; align-items: center">
<text class="label">资质时限</text> <text class="label">资质时限</text>
<view> <view style="color: #071437">
{{ $util.formatDate(prove.expiryDate, 'YYYY年M月D日') }} {{ $util.formatDate(prove.expiryDate, 'YYYY年M月D日') }}
</view> </view>
</view> </view>
@ -203,11 +218,11 @@ export default {
...dict.data ...dict.data
} }
}, },
callPhone(number) { callPhone(number) {
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: number phoneNumber: number
}) })
}, },
async init() { async init() {
const res = await getEnterPrise(this.detail.id) const res = await getEnterPrise(this.detail.id)
this.detail = res.data this.detail = res.data
@ -316,13 +331,10 @@ export default {
overflow: hidden; overflow: hidden;
.status { .status {
position: absolute; position: absolute;
right: -38rpx; right: 0;
top: 12rpx; top: 0;
transform: rotateZ(45deg) translateX(40rpx) translateY(-40rpx); transform: rotateZ(45deg) translateX(60rpx) translateY(-41rpx);
transform-origin: 50% 50%; transform-origin: 50% 50%;
padding: 8rpx 40rpx;
font-size: 24rpx;
text-align: center;
} }
} }
.images-box { .images-box {

59
sub/inspection/detail.vue

@ -1,13 +1,21 @@
<template> <template>
<scroll-view scroll-y flex-enable class="view-container" st> <scroll-view scroll-y flex-enable class="view-container">
<view <view
class="box" class="box"
@tap="goDetail(task)" @tap="goDetail(task)"
v-for="task in list" v-for="task in list"
:key="task.id" :key="task.id"
> >
<view class="wd-font-800">{{ task.title }}</view> <view class="wd-font-bold" style="color: #071437">
{{ task.title }}
</view>
<view class="tagList"> <view class="tagList">
<view class="tag" v-if="task.deptName">
{{ task.deptName }}
</view>
<view class="tag" v-if="task.priority">
{{ $dict.echoDicValue(dictMap.task_priority, task.priority) }}
</view>
<view <view
v-for="(tag, index) in task.tagList" v-for="(tag, index) in task.tagList"
:key="index" :key="index"
@ -20,9 +28,9 @@
class="wd-flex wd-text-13" class="wd-flex wd-text-13"
style="justify-content: space-between" style="justify-content: space-between"
> >
<view class="wd-flex" style="align-items: center; gap: 4px"> <view class="wd-flex" style="align-items: center; gap: 8rpx">
<u-icon name="calendar" color="#17C653" /> <u-icon name="calendar" color="#17C653" />
<text class="wd-text-13 wd-ml-4px"> <text class="wd-text-13 wd-ml-4px" style="color: #252f4a">
{{ {{
`${$util.formatDate( `${$util.formatDate(
task.startDate, task.startDate,
@ -36,11 +44,16 @@
<view class="status"> <view class="status">
<cs-dict-tag <cs-dict-tag
:dict="dictMap.task_state" :dict="dictMap.task_state"
:value="task.taskType" :value="task.status"
></cs-dict-tag> ></cs-dict-tag>
</view> </view>
</view> </view>
<u-loadmore :status="load" marginTop="12" marginBottom="12" /> <u-loadmore
:status="load"
marginTop="12"
marginBottom="12"
v-if="load != 'nomore'"
/>
</scroll-view> </scroll-view>
</template> </template>
@ -80,7 +93,7 @@ export default {
*/ */
async getDict() { async getDict() {
const dict = await getDictBatchByType({ const dict = await getDictBatchByType({
type: ['task_state'].join(',') type: ['task_state', 'task_priority'].join(',')
}) })
this.dictMap = { this.dictMap = {
...dict.data ...dict.data
@ -128,39 +141,19 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.view-container { .view-container {
padding: 12px; padding: 24rpx;
flex-direction: column; flex-direction: column;
white-space: nowrap; white-space: nowrap;
.box { .box {
border-radius: 12px; border-radius: 24rpx;
padding: 12px; padding: 24rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 12px; gap: 24rpx;
background-color: #fff; background-color: #fff;
position: relative; position: relative;
margin-bottom: 12px; margin-bottom: 24rpx;
overflow: hidden; overflow: hidden;
.tagList {
display: flex;
align-items: center;
gap: var(--Number-4px, 4px);
.tag {
display: flex;
padding: var(--Number-2px, 2px) var(--Number-6px, 6px);
justify-content: center;
align-items: center;
gap: var(--Number-4px, 4px);
border-radius: var(--Number-2px, 2px);
background: var(--LightMode-Grey-Grey-100, #f9f9f9);
color: var(--LightMode-Grey-Grey-600, #78829d);
text-align: center;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
}
.status { .status {
position: absolute; position: absolute;
right: -19px; right: -19px;
@ -168,7 +161,7 @@ export default {
transform: rotateZ(45deg) translateX(20px) translateY(-20px); transform: rotateZ(45deg) translateX(20px) translateY(-20px);
transform-origin: 50% 50%; transform-origin: 50% 50%;
padding: 4px 20px; padding: 4px 20px;
font-size: 12px; font-size: 24rpx;
text-align: center; text-align: center;
} }
} }

3
sub/inspection/record.vue

@ -138,7 +138,8 @@ export default {
.image { .image {
width: 192rpx; width: 192rpx;
height: 192rpx; height: 192rpx;
border-radius: 8px; border-radius: 16rpx;
flex-shrink: 0;
} }
} }
} }

242
sub/owner/notic.vue

@ -0,0 +1,242 @@
<template>
<view class="container">
<!-- Tab 切换 -->
<view class="tab-container">
<view
v-for="(tab, index) in tabs"
:key="index"
class="tab-item"
:class="{ active: currentTab === index }"
@tap="switchTab(index)"
>
<text>{{ tab.name }}</text>
<text v-if="tab.count > 0" class="badge">{{ tab.count }}</text>
</view>
</view>
<!-- 列表内容 -->
<scroll-view
class="scroll-container"
scroll-y
@scrolltolower="loadMore"
@refresherrefresh="onRefresh"
refresher-enabled
:refresher-triggered="isRefreshing"
>
<view
v-for="(item, index) in list"
:key="index"
:class="['notice-item', !item.type ? 'is-read' : '']"
@tap="goDetail(item)"
>
<view :class="['notice-icon', !item.type ? 'green' : '']">
<image
:src="
!item.type
? '/static/images/owner/message.png'
: '/static/images/owner/message-grey.png'
"
mode="aspectFill"
></image>
</view>
<view class="notice-content">
<view class="notice-title">{{ item.title }}</view>
<view class="notice-time">{{ item.time }}</view>
</view>
<view class="notice-arrow">
<text class="iconfont icon-right"></text>
</view>
</view>
<cs-emty v-if="list.length == 0"></cs-emty>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
tabs: [
{ name: '任务通知', count: 4 },
{ name: '整改到期', count: 0 },
{ name: '资质逾期', count: 0 }
],
currentTab: 0,
list: [],
mock: [
{
id: 1,
title: '全区餐饮环保检查全区餐饮环保检查全区餐饮环保检查...',
time: '2025年3月18日 - 2025年3月18日',
icon: '/static/images/notice-icon.png',
type: 0
},
{
id: 2,
title: '餐饮店卫生检查通知',
time: '2025年3月15日 - 2025年3月20日',
icon: '/static/images/notice-icon.png',
type: 0
},
{
id: 3,
title: '消防安全整改通知',
time: '2025年3月10日 - 2025年3月25日',
icon: '/static/images/notice-icon.png',
type: 1
},
{
id: 4,
title: '营业执照即将到期提醒',
time: '2025年4月1日到期',
icon: '/static/images/notice-icon.png',
type: 1
}
],
page: 1,
isRefreshing: false,
hasMore: true //
}
},
onLoad() {
this.getList()
},
methods: {
switchTab(index) {
if (this.currentTab === index) return
this.currentTab = index
this.page = 1
this.list = []
this.getList()
},
async getList() {
if (this.currentTab == 0) {
this.list = [...this.mock, ...this.mock]
}
},
async loadMore() {
if (!this.hasMore) return //
this.page++
await this.getList()
},
async onRefresh() {
try {
this.isRefreshing = true
this.page = 1
await this.getList()
} finally {
this.isRefreshing = false
}
},
goDetail(item) {
// //
// uni.navigateTo({
// url: `/pages/notice-detail/notice-detail?id=${item.id}`,
// });
}
}
}
</script>
<style lang="scss" scoped>
.container {
height: 100vh;
display: flex;
flex-direction: column;
}
.tab-container {
display: flex;
background: #fff;
padding: 24rpx 32rpx;
gap: 24rpx;
border-bottom: 2rpx solid var(--LightMode-Grey-Grey-100, #f9f9f9);
.tab-item {
flex: 1;
text-align: center;
position: relative;
height: 64rpx;
line-height: 64rpx;
font-size: 28rpx;
color: #4b5675;
background: #f9f9f9;
border-radius: 240rpx;
&.active {
color: #07c160;
background: rgba(7, 193, 96, 0.1);
font-weight: bold;
}
.badge {
margin-left: 8rpx;
color: #07c160;
}
}
}
.scroll-container {
flex: 1;
box-sizing: border-box;
max-height: calc(100vh - 124rpx);
padding: 0 24rpx;
}
.notice-item {
display: flex;
align-items: center;
padding: 32rpx 24rpx;
border-radius: 16rpx;
border: 2rpx solid #f9f9f9;
background: #fff;
color: #4b5675;
margin-top: 24rpx;
&:last-child {
margin-bottom: 48rpx;
}
.notice-icon {
padding: 16rpx;
border-radius: 50%;
background-color: #f9f9f9;
box-sizing: border-box;
margin-right: 24rpx;
display: flex;
justify-content: center;
align-items: center;
image {
width: 40rpx;
height: 40rpx;
flex-shrink: 0;
z-index: 1;
}
}
.green {
background-color: #eafff1;
}
.notice-content {
flex: 1;
.notice-title {
margin-bottom: 10rpx;
font-weight: bold;
max-width: 486rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.notice-time {
}
}
.notice-arrow {
color: #c4cada;
font-size: 24rpx;
}
}
.is-read {
color: #071437;
}
</style>

0
sub/owner/notice-detail.vue

38
sub/owner/policy-detail.vue

@ -1,12 +1,12 @@
<template> <template>
<view class="policy-detail"> <view class="policy-detail">
<!-- 详情内容区 --> <!-- 详情内容区 -->
<view class="content-wrap"> <view class="content-wrap">
<view class="policy-title">{{ policyDetail.name }}</view> <view class="policy-title">{{ policyDetail.name }}</view>
<view class="policy-time">生效时间{{ policyDetail.effectiveDate }}</view> <view class="policy-time">
生效时间{{ policyDetail.effectiveDate }}
</view>
<!-- 富文本内容 --> <!-- 富文本内容 -->
<view class="policy-content"> <view class="policy-content">
<rich-text :nodes="policyDetail.context"></rich-text> <rich-text :nodes="policyDetail.context"></rich-text>
@ -59,13 +59,19 @@ export default {
formatTime(time) { formatTime(time) {
if (!time) return '' if (!time) return ''
const date = new Date(time) const date = new Date(time)
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}` return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
2,
'0'
)}-${String(date.getDate()).padStart(2, '0')}`
}, },
// //
formatRichText(html) { formatRichText(html) {
if (!html) return '' if (!html) return ''
// //
return html.replace(/<img/gi, '<img style="max-width:100%;height:auto;display:block;"') return html.replace(
/<img/gi,
'<img style="max-width:100%;height:auto;display:block;"'
)
}, },
// //
handleBack() { handleBack() {
@ -93,12 +99,12 @@ export default {
padding: 0 30rpx; padding: 0 30rpx;
border-bottom: 1rpx solid #eee; border-bottom: 1rpx solid #eee;
z-index: 100; z-index: 100;
.back-btn { .back-btn {
font-size: 28rpx; font-size: 28rpx;
color: #333; color: #333;
} }
.title { .title {
flex: 1; flex: 1;
text-align: center; text-align: center;
@ -107,37 +113,37 @@ export default {
padding-right: 60rpx; padding-right: 60rpx;
} }
} }
.content-wrap { .content-wrap {
padding: 30rpx 30rpx 30rpx; padding: 30rpx 30rpx 30rpx;
.policy-title { .policy-title {
font-size: 36rpx; font-size: 36rpx;
font-weight: bold; font-weight: bold;
color: #333; color: #333;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.policy-time { .policy-time {
font-size: 24rpx; font-size: 24rpx;
color: #999; color: #999;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
.policy-content { .policy-content {
font-size: 28rpx; font-size: 28rpx;
line-height: 1.8; line-height: 1.8;
color: #333; color: #071437;
:deep(img) { :deep(img) {
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }
:deep(p) { :deep(p) {
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
} }
} }
} }
</style> </style>

118
sub/owner/policy.vue

@ -3,19 +3,19 @@
<view class="policy-container"> <view class="policy-container">
<!-- 搜索框区域 --> <!-- 搜索框区域 -->
<view class="search-box"> <view class="search-box">
<van-search <van-search
:value="abc" :value="abc"
placeholder="输入关键字查询" placeholder="输入关键字查询"
id="sreach" id="sreach"
@clear="handleClear" @clear="handleClear"
@change="handleSearch" @change="handleSearch"
/> />
</view> </view>
<!-- 政策法规列表区域 --> <!-- 政策法规列表区域 -->
<!-- 修改列表项部分 --> <!-- 修改列表项部分 -->
<view class="policy-list"> <view class="policy-list">
<scroll-view <scroll-view
class="policy-scroll" class="policy-scroll"
scroll-y scroll-y
@scrolltolower="loadNextPage" @scrolltolower="loadNextPage"
@ -23,25 +23,31 @@
refresher-enabled refresher-enabled
:refresher-triggered="isRefreshing" :refresher-triggered="isRefreshing"
> >
<view <view
class="policy-item" class="policy-item"
v-for="item in policyList" v-for="item in policyList"
:key="item.id" :key="item.id"
@click="handlePolicyClick(item)" @click="handlePolicyClick(item)"
> >
<view class="item-left"> <view class="item-left">
<image :src="itemImgUrl" class="policy-icon"></image> <image
src="@/static/images/owner/policy.png"
class="policy-icon"
mode="aspectFit"
></image>
</view> </view>
<view class="item-right"> <view class="item-right">
<view class="policy-title">{{ item.title }}</view> <view class="policy-title">
<view class="policy-time">生效时间: {{ item.effectiveDate }}</view> {{ item.title }}
</view>
<view class="policy-time">
生效时间: {{ item.effectiveDate }}
</view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
<!-- 加载更多状态组件 --> <!-- 加载更多状态组件 -->
<uni-load-more :status="loadMoreStatus" /> <uni-load-more :status="loadMoreStatus" />
</view> </view>
@ -52,30 +58,29 @@ import { PolicyApi, formatPolicyContext } from '@/api/policy/index.js'
import { formatDate } from '@/utils/ruoyi.js' import { formatDate } from '@/utils/ruoyi.js'
import config from '@/config' import config from '@/config'
export default { export default {
data() { data() {
return { return {
isRefreshing: false, // isRefreshing: false, //
searchValue: '', // searchValue: '', //
abc: '', abc: '',
policyList: [], // policyList: [], //
pageNum: 1, // pageNum: 1, //
pageSize: 10, // pageSize: 10, //
total: 0, // total: 0, //
loadMoreStatus: 'more' ,// more- loading- noMore- loadMoreStatus: 'more', // more- loading- noMore-
itemImgUrl: config.imgUrl + '/miniohb/c103c92335bdd30d33ff8a062c219ead0626bf0a1898536bd7590285ca11c9db.png' itemImgUrl:
config.imgUrl +
'/miniohb/c103c92335bdd30d33ff8a062c219ead0626bf0a1898536bd7590285ca11c9db.png'
} }
}, },
// //
onShow() { onShow() {
console.log(this.itemImgUrl) console.log(this.itemImgUrl)
this.getPolicyList() this.getPolicyList()
}, },
methods: { methods: {
// //
onRefresh() { onRefresh() {
this.isRefreshing = true this.isRefreshing = true
@ -83,42 +88,45 @@ export default {
this.getPolicyList() this.getPolicyList()
}, },
loadNextPage() { loadNextPage() {
console.log('列表值',this.policyList.length) console.log('列表值', this.policyList.length)
if (this.policyList.length < this.total) { if (this.policyList.length < this.total) {
this.pageNum++ this.pageNum++
this.getPolicyList() this.getPolicyList()
}
} },
},
// //
async getPolicyList() { async getPolicyList() {
try { try {
console.log('PolicyApi',this.searchValue) console.log('PolicyApi', this.searchValue)
this.loadMoreStatus = 'loading' this.loadMoreStatus = 'loading'
const res = await PolicyApi.getPolicyPage({ const res = await PolicyApi.getPolicyPage({
pageNum: this.pageNum, pageNum: this.pageNum,
pageSize: this.pageSize, pageSize: this.pageSize,
name: this.searchValue // name: this.searchValue //
}) })
if (res.code === 0 && res.data.total > 0) { if (res.code === 0 && res.data.total > 0) {
// //
const formattedData = res.data.list.map(item => ({ const formattedData = res.data.list.map(item => ({
...item, ...item,
title: item.name.length > 15 ? item.name.slice(0, 15) + '...' : item.name, title:
effectiveDate: formatDate(item.effectiveDate,'YYYY年MM月DD日') item.name.length > 15
})) ? item.name.slice(0, 15) + '...'
: item.name,
effectiveDate: formatDate(item.effectiveDate, 'YYYY年MM月DD日')
}))
// //
if (this.pageNum === 1) { if (this.pageNum === 1) {
this.policyList = formattedData this.policyList = formattedData
} else { } else {
this.policyList = [...this.policyList, ...formattedData] this.policyList = [...this.policyList, ...formattedData]
} }
console.log('列表信息',res) console.log('列表信息', res)
this.total = res.data.total this.total = res.data.total
// //
this.loadMoreStatus = this.policyList.length >= this.total ? 'noMore' : 'more' this.loadMoreStatus =
this.policyList.length >= this.total ? 'noMore' : 'more'
} }
} catch (error) { } catch (error) {
console.error(error) console.error(error)
@ -127,24 +135,23 @@ export default {
title: '获取列表失败', title: '获取列表失败',
icon: 'none' icon: 'none'
}) })
} } finally {
finally { this.loadMoreStatus =
this.loadMoreStatus = this.policyList.length >= this.total? 'noMore' :'more' this.policyList.length >= this.total ? 'noMore' : 'more'
// //
// //
setTimeout(() => { setTimeout(() => {
this.isRefreshing = false this.isRefreshing = false
}, 300) // }, 300) //
} }
}, },
// //
handleSearch(e) { handleSearch(e) {
if(e.detail && e.detail.length > 1){ if (e.detail && e.detail.length > 1) {
this.pageNum = 1 // this.pageNum = 1 //
this.searchValue = e.detail // this.searchValue = e.detail //
this.getPolicyList() this.getPolicyList()
} }
}, },
// //
handleClear() { handleClear() {
@ -164,11 +171,11 @@ export default {
<style lang="scss"> <style lang="scss">
.policy-container { .policy-container {
background: var(--LightMode-Secondary-Secondary, #F9F9F9); background: var(--LightMode-Secondary-Secondary, #f9f9f9);
min-height: 100vh; min-height: 100vh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.search-box { .search-box {
padding: 20rpx; padding: 20rpx;
background: #fff; background: #fff;
@ -178,16 +185,17 @@ export default {
right: 0; right: 0;
z-index: 1; z-index: 1;
} }
.policy-list { .policy-list {
margin-top: 120rpx; // margin-top: 120rpx; //
flex: 1; flex: 1;
.policy-scroll { .policy-scroll {
height: calc(100vh - 120rpx); height: calc(100vh - 120rpx);
box-sizing: border-box; box-sizing: border-box;
padding-top: 24rpx;
} }
.policy-item { .policy-item {
display: flex; display: flex;
padding: 24rpx; padding: 24rpx;
@ -197,33 +205,33 @@ export default {
margin: 24rpx; margin: 24rpx;
margin-bottom: 0; margin-bottom: 0;
border-radius: 16rpx; border-radius: 16rpx;
border-bottom: 2rpx solid var(--LightMode-Grey-Grey-100, #f9f9f9);
.item-left { .item-left {
border-radius: 100rpx; border-radius: 100rpx;
background: var(--LightMode-Grey-Grey-100, #F9F9F9); background: var(--LightMode-Grey-Grey-100, #f9f9f9);
padding: 16rpx; padding: 16rpx;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
.policy-icon { .policy-icon {
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
flex-shrink: 0; flex-shrink: 0;
} }
} }
.item-right { .item-right {
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
.policy-title { .policy-title {
font-weight: bold;
margin-bottom: 8rpx;
font-size: 28rpx; font-size: 28rpx;
color: #333; color: #333;
margin-bottom: 12rpx;
line-height: 1.4; line-height: 1.4;
} }
.policy-time { .policy-time {
font-size: 24rpx; font-size: 24rpx;
color: #999; color: #999;
@ -238,4 +246,4 @@ export default {
::v-deep .uni-load-more { ::v-deep .uni-load-more {
padding: 24rpx 0; padding: 24rpx 0;
} }
</style> </style>

206
sub/task/detail.vue

@ -3,14 +3,22 @@
<view <view
class="detail-container" class="detail-container"
:style="{ :style="{
paddingBottom: isSelect.length > 0 ? '70px' : '20px' paddingBottom: isSelect.length > 0 ? '140rpx' : '40rpx'
}" }"
> >
<view class="box detail"> <view class="box detail">
<text class="wd-font-800 wd-text-16" style="margin-bottom: 4px"> <text class="wd-font-800 wd-text-16" style="color: #071437">
{{ detail.title }} {{ detail.title }}
</text> </text>
<view class="tagList"> <view class="tagList">
<view class="tag" v-if="detail.deptName">
{{ detail.deptName }}
</view>
<view class="tag">
{{
$dict.echoDicValue(dictMap.task_priority, detail.priority)
}}
</view>
<view <view
v-for="(tag, index) in detail.tagList" v-for="(tag, index) in detail.tagList"
:key="index" :key="index"
@ -23,48 +31,22 @@
class="wd-flex wd-text-13" class="wd-flex wd-text-13"
style="justify-content: space-between" style="justify-content: space-between"
> >
<view class="wd-flex" style="align-items: center; gap: 4px"> <view class="wd-flex" style="align-items: center; gap: 8rpx">
<u-icon name="calendar" color="#17C653" /> <u-icon name="calendar" color="#17C653" size="16" />
<text class="wd-text-13 wd-ml-4px"> <text
class="wd-text-13"
style="font-weight: bold; margin-right: 8rpx"
>
{{ {{
`${$util.formatDate( `${$util.formatDate(
detail.startDate, detail.startDate,
'YYYY/M/D' 'YYYY年M月D日'
)}~${$util.formatDate(detail.endDate, 'YYYY/M/D')}` )} ${$util.formatDate(detail.endDate, 'YYYY年M月D日')}`
}} }}
</text> </text>
</view> </view>
</view> </view>
<view <cs-text-more :value="detail.description" />
style="
font-size: 13px;
line-height: 160%;
position: relative;
transform: 0.2s all;
"
v-if="detail.description.length < 20"
>
{{ detail.description }}
</view>
<view
v-else
style="
font-size: 13px;
line-height: 160%;
position: relative;
transform: 0.2s all;
"
@tap="isShowAllText = !isShowAllText"
>
{{
isShowAllText
? detail.description
: `${detail.description.slice(1, 100)}...`
}}
<text style="color: #17c653; padding-left: 4px">
{{ isShowAllText ? '收起' : '展开' }}
</text>
</view>
<view class="audit"> <view class="audit">
<cs-dict-tag <cs-dict-tag
:dict="dictMap.task_state" :dict="dictMap.task_state"
@ -89,7 +71,7 @@
<van-dropdown-item <van-dropdown-item
v-if="showItem(['director'])" v-if="showItem(['director'])"
:value="queryParams.departmentId" :value="queryParams.departmentId"
:options="getDropdownOption('dept')" :options="dropOption.dept"
@change=" @change="
v => { v => {
querySelect(v, 'departmentId') querySelect(v, 'departmentId')
@ -110,7 +92,7 @@
/> />
<van-dropdown-item <van-dropdown-item
:value="queryParams.Inspections_status" :value="queryParams.Inspections_status"
:options="getDropdownOption('Inspections_status')" :options="dropOption.status"
@change=" @change="
v => { v => {
querySelect(v, 'inspectionsStatus') querySelect(v, 'inspectionsStatus')
@ -118,7 +100,7 @@
" "
/> />
</van-dropdown-menu> </van-dropdown-menu>
<view class="wd-font-600"> <view class="wd-font-600" style="flex: 0 0 200rpx">
(当前 (当前
<text style="color: #17c653">{{ list.length }}</text> <text style="color: #17c653">{{ list.length }}</text>
条记录) 条记录)
@ -139,15 +121,27 @@
@tap.native.stop="select(record.id)" @tap.native.stop="select(record.id)"
v-if="['3', null].includes(record.inspectionStatus)" v-if="['3', null].includes(record.inspectionStatus)"
> >
<u-icon name="checkbox-mark" size="16px" color="#fff"></u-icon> <u-icon name="checkbox-mark" size="16" color="#fff"></u-icon>
</view> </view>
<view class="disable" v-else></view> <view class="disable" v-else></view>
<view class="info"> <view class="info">
<view class="name">{{ record.enterpriseName }}</view> <view class="name">
<view style="font-size: 1 3px"> {{ record.enterpriseName }}
</view>
<view
style="
font-size: 26rpx;
padding-right: 3rem;
margin-bottom: 4rpx;
white-space: nowrap;
text-overflow: ellipsis;
width: 528rpx;
overflow: hidden;
"
>
{{ record.enterpriseAddress }} {{ record.enterpriseAddress }}
</view> </view>
<view class="tagList" style="margin-top: 8px"> <view class="tagList" style="margin-top: 16rpx">
<view <view
v-for="(item, index) in record.tagList" v-for="(item, index) in record.tagList"
:key="index" :key="index"
@ -164,7 +158,12 @@
></cs-dict-tag> ></cs-dict-tag>
</view> </view>
</view> </view>
<u-loadmore :status="load" marginTop="12" marginBottom="12" /> <u-loadmore
:status="load"
marginTop="12"
marginBottom="12"
v-if="load != 'nomore'"
/>
<view class="btn-box" v-if="isSelect.length > 0"> <view class="btn-box" v-if="isSelect.length > 0">
<view class="confirm-btn" @tap="replay"> <view class="confirm-btn" @tap="replay">
已选择({{ isSelect.length }}) 已选择({{ isSelect.length }})
@ -263,12 +262,18 @@ export default {
value: '', value: '',
text: '按人员' text: '按人员'
} }
] ],
//
dropOption: {
dept: [],
userList: [],
status: []
}
} }
}, },
onLoad(res) { async onLoad(res) {
this.detail.id = res.id this.detail.id = res.id
this.getDict() await this.getDict()
}, },
onPageScroll(e) { onPageScroll(e) {
this.OptionsOffset.isTop = e.scrollTop + 10 > this.OptionsOffset.top this.OptionsOffset.isTop = e.scrollTop + 10 > this.OptionsOffset.top
@ -304,13 +309,42 @@ export default {
*/ */
async getDict() { async getDict() {
const dict = await getDictBatchByType({ const dict = await getDictBatchByType({
type: ['task_state', 'Inspections_status'].join(',') type: ['task_state', 'Inspections_status', 'task_priority'].join(
','
)
}) })
const dept = await getDeptTree() const dept = await getDeptTree()
this.dictMap = { this.dictMap = {
...dict.data, ...dict.data,
dept: dept.data dept: dept.data
} }
this.dropOption = {
dept: [
{
value: '',
text: '按部门'
},
...dept.data.map(d => {
return {
value: d.id,
text: d.name
}
})
],
status: [
{
value: '',
text: '按状态'
},
...dict.data.task_state.map(d => {
return {
...d,
value: d.value,
text: d.label
}
})
]
}
}, },
getDropdownOption(key) { getDropdownOption(key) {
const keyMap = { const keyMap = {
@ -385,17 +419,17 @@ export default {
getUserOption({ detail }) { getUserOption({ detail }) {
this.getUser().then(res => { this.getUser().then(res => {
this.userList = [ this.userList = [
{
value: '',
text: '按人员'
},
...res.map(i => { ...res.map(i => {
return { return {
...i, ...i,
value: i.userId, value: i.userId,
text: i.realName text: i.realName
} }
}), })
{
value: '',
text: '按人员'
}
] ]
detail.callback(true) detail.callback(true)
}) })
@ -501,38 +535,18 @@ export default {
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
transform: translateX(23px) translateY(16px) rotateZ(45deg); transform: translateX(58rpx) translateY(24rpx) rotateZ(45deg);
transform-origin: 50% 50%; transform-origin: 50% 50%;
} }
} }
.tagList {
display: flex;
align-items: center;
gap: var(--Number-4px, 4px);
.tag {
display: flex;
padding: var(--Number-2px, 2px) var(--Number-6px, 6px);
justify-content: center;
align-items: center;
gap: var(--Number-4px, 4px);
border-radius: var(--Number-2px, 2px);
background: var(--LightMode-Grey-Grey-100, #f9f9f9);
color: var(--LightMode-Grey-Grey-600, #78829d);
text-align: center;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
}
.record { .record {
background-color: #fff; background-color: #fff;
display: flex; display: flex;
padding: 12px 16px; padding: 24rpx 32rpx;
align-items: center; align-items: center;
border-radius: var(--Number-8px, 8px); border-radius: var(--Number-8px, 8px);
border: 1px solid var(--LightMode-Grey-Grey-100, #f9f9f9); border: 2rpx solid var(--LightMode-Grey-Grey-100, #f9f9f9);
margin: 12px; margin: 24rpx;
margin-top: 0; margin-top: 0;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
@ -541,45 +555,49 @@ export default {
right: 0; right: 0;
top: 0; top: 0;
transform-origin: 50% 50%; transform-origin: 50% 50%;
transform: translateX(30px) translateY(10px) rotateZ(45deg); transform: translateX(64rpx) translateY(18rpx) rotateZ(45deg);
} }
.select { .select {
width: 24px; width: 44rpx;
height: 24px; height: 44rpx;
border: 2px solid $cs-color-main; border: 4rpx solid $cs-color-main;
border-radius: 6px; border-radius: 12rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
transition: 0.2s all; transition: 0.2s all;
margin-right: 16px; margin-right: 32rpx;
} }
.disable { .disable {
width: 24px; width: 44rpx;
height: 24px; height: 44rpx;
border: 2px solid #dbdfe9; border: 4rpx solid #dbdfe9;
margin-right: 16px; margin-right: 32rpx;
border-radius: 100%; border-radius: 100%;
position: relative; position: relative;
&::after { &::after {
content: ''; content: '';
position: absolute; position: absolute;
inset: 0; inset: 0;
border-left: 2px solid #dbdfe9; border-left: 4rpx solid #dbdfe9;
transform-origin: 0 50%; transform-origin: 0 50%;
transform: translateX(calc(50% - 1px)) rotateZ(45deg); transform: translateX(calc(50% - 2rpx)) rotateZ(45deg);
} }
} }
.isSelect { .isSelect {
background-color: $cs-color-main; background-color: $cs-color-main;
} }
.info { .info {
font-size: 13px; font-size: 26rpx;
.name { .name {
font-size: 16px; font-size: 32rpx;
font-weight: 600; font-weight: 600;
color: #071437; color: #071437;
margin-bottom: 4px; margin-bottom: 8rpx;
white-space: nowrap;
text-overflow: ellipsis;
width: 480rpx;
overflow: hidden;
} }
} }
&:active { &:active {
@ -641,7 +659,7 @@ export default {
display: flex; display: flex;
.info { .info {
.name { .name {
font-size: 16px; font-size: 30rpx;
font-weight: bold; font-weight: bold;
} }
.dept { .dept {

33
sub/task/enforce.vue

@ -46,7 +46,7 @@
> >
<view style="font-weight: bold"> <view style="font-weight: bold">
<text style="color: #f8285a; margin-right: 4px">*</text> <text style="color: #f8285a; margin-right: 4px">*</text>
上传证明 上传照片
</view> </view>
</view> </view>
<u-upload <u-upload
@ -54,9 +54,9 @@
@afterRead="addPhoto" @afterRead="addPhoto"
@delete="delPhoto" @delete="delPhoto"
multiple multiple
:maxCount="3" width="96"
width="96px" height="96"
height="96px" :maxCount="6"
></u-upload> ></u-upload>
</view> </view>
@ -272,29 +272,4 @@ export default {
::v-deep .uni-easyinput__content-textarea { ::v-deep .uni-easyinput__content-textarea {
min-height: 400rpx; min-height: 400rpx;
} }
::v-deep .u-upload__button {
border-radius: 16rpx !important;
border: 1px solid #f1f1f4;
background-color: #f9f9f9 !important;
}
::v-deep .u-upload__wrap {
.u-upload__wrap__preview {
width: 192rpx;
height: 192rpx;
border-radius: 16rpx !important;
overflow: visible !important;
.u-upload__wrap__preview__image {
border-radius: 16rpx !important;
}
.u-upload__deletable {
border-radius: 100% !important;
background-color: #f8285a !important;
transform: translateX(50%) translateY(-50%);
.u-upload__deletable__icon {
position: relative;
}
}
}
}
</style> </style>

2
sub/task/locate.vue

@ -230,7 +230,7 @@ export default {
scene: `aId=${this.inspectionsId}&bId=${this.enterpriseId}`, scene: `aId=${this.inspectionsId}&bId=${this.enterpriseId}`,
path: 'sub/task/locate', path: 'sub/task/locate',
checkPath: false, checkPath: false,
envVersion: 'trial', envVersion: 'develop',
isHyaline: true isHyaline: true
}) })
this.miniCode = `data:image/jpeg;base64,${res.data}` this.miniCode = `data:image/jpeg;base64,${res.data}`

166
sub/task/record.vue

@ -1,7 +1,7 @@
<template> <template>
<scroll-view class="view-container" scroll-y> <scroll-view class="view-container" scroll-y>
<view class="box detail" style="margin-bottom: 12px"> <view class="box detail" style="margin-bottom: 12px">
<text class="wd-font-800 wd-text-16" style="margin-bottom: 4px"> <text class="wd-font-800 wd-text-16">
{{ detail.title }} {{ detail.title }}
</text> </text>
<view class="tagList"> <view class="tagList">
@ -20,7 +20,7 @@
class="wd-flex wd-text-13" class="wd-flex wd-text-13"
style="justify-content: space-between" style="justify-content: space-between"
> >
<view class="wd-flex" style="align-items: center; gap: 4px"> <view class="wd-flex" style="align-items: center; gap: 8rpx">
<u-icon name="calendar" color="#17C653" /> <u-icon name="calendar" color="#17C653" />
<text class="wd-text-13 wd-ml-4px wd-font-800"> <text class="wd-text-13 wd-ml-4px wd-font-800">
{{ {{
@ -32,37 +32,7 @@
</text> </text>
</view> </view>
</view> </view>
<view <cs-text-more :value="detail.description"></cs-text-more>
style="
font-size: 26rpx;
line-height: 160%;
position: relative;
transform: 0.2s all;
"
v-if="detail.description.length < 20"
>
{{ detail.description }}
</view>
<view
v-else
style="
font-size: 26rpx;
line-height: 160%;
position: relative;
transform: 0.2s all;
"
@tap="isShowAllText = !isShowAllText"
>
{{
isShowAllText
? detail.description
: `${detail.description.slice(1, 100)}...`
}}
<text style="color: #17c653; padding-left: 8rpx">
{{ isShowAllText ? '收起' : '展开' }}
</text>
</view>
<view <view
class="wd-flex wd-items-center enterprise" class="wd-flex wd-items-center enterprise"
@tap="goEnterprise(detail.enterprise)" @tap="goEnterprise(detail.enterprise)"
@ -72,20 +42,17 @@
shape="square" shape="square"
size="64" size="64"
></u-avatar> ></u-avatar>
<view class="wd-flex wd-flex-col" style="gap: 4px"> <view class="wd-flex wd-flex-col">
<text class="wd-font-800 wd-text-15"> <text class="wd-font-800 wd-text-15">
{{ detail.enterprise.enterprisesName }} {{ detail.enterprise.enterprisesName }}
</text> </text>
<!-- @tap.native.stop="viewPosition(detail.enterprise)" --> <view class="wd-flex" style="margin-top: 4rpx">
<view <u-icon name="map" size="28rpx" color="#17C653"></u-icon>
class="wd-flex wd-pb-8px" <text class="address wd-text-12" style="margin-left: 8rpx">
>
<u-icon name="map" size="14" color="#17C653"></u-icon>
<text class="address wd-text-12" style="margin-left: 4px">
{{ detail.enterprise.address }} {{ detail.enterprise.address }}
</text> </text>
</view> </view>
<view class="tagList"> <view class="tagList" style="margin-top: 16rpx">
<view class="tag" v-if="detail.enterprise.region"> <view class="tag" v-if="detail.enterprise.region">
{{ {{
$dict.echoDicValue( $dict.echoDicValue(
@ -128,18 +95,20 @@
:key="item.id" :key="item.id"
@tap="goLog(item)" @tap="goLog(item)"
> >
<view style="margin-bottom: 12px"> <view style="margin-bottom: 24rpx">
<text <text
:style="{ :style="{
marginRight: '10px', marginRight: '20rpx',
fontWeight: 'bold', fontWeight: 'bold',
color: $dict.echoDictOption( color: $dict.echoDictOption(
dictMap.inspections_mark, dictMap.Inspections_status,
item.status item.status
).remark ).remark
}" }"
> >
{{ $dict.echoDicValue(dictMap.inspections_mark, item.status) }} {{
$dict.echoDicValue(dictMap.Inspections_status, item.status)
}}
</text> </text>
<text> <text>
{{ $util.formatDate(item.createTime, 'YYYY/M/D h:m') }} {{ $util.formatDate(item.createTime, 'YYYY/M/D h:m') }}
@ -153,14 +122,14 @@
class="row" class="row"
v-for="people in item.userList" v-for="people in item.userList"
:key="people.userId" :key="people.userId"
style="display: inline-flex; gap: 12px; margin-right: 12px" style="display: inline-flex; gap: 24rpx; margin-right: 24rpx"
> >
<u-avatar <u-avatar
:src="people.avtar" :src="people.avtar"
size="40px" size="80rpx"
shape="circle" shape="circle"
></u-avatar> ></u-avatar>
<view class="wd-flex wd-flex-col" style="gap: 2px"> <view class="wd-flex wd-flex-col" style="gap: 4rpx">
<text>{{ people.realName }}</text> <text>{{ people.realName }}</text>
<text>{{ people.deptName }}</text> <text>{{ people.deptName }}</text>
</view> </view>
@ -177,7 +146,7 @@
</view> </view>
<view class="audit"> <view class="audit">
<cs-dict-tag <cs-dict-tag
:dict="dictMap.Inspections_status" :dict="dictMap.inspections_mark"
:value="inspectionsState" :value="inspectionsState"
color="#fff" color="#fff"
:bgColor="setColor(inspectionsState)" :bgColor="setColor(inspectionsState)"
@ -326,94 +295,47 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.view-container { .view-container {
padding: 0 12px; padding: 0 24rpx;
position: relative; position: relative;
padding-bottom: 100px; padding-bottom: 200rpx;
.box { .box {
background-color: #fff; background-color: #fff;
border-radius: $cs-border-radius; border-radius: $cs-border-radius;
padding: 16px; padding: 32rpx;
margin-top: 12px; margin-top: 24rpx;
} }
.row { .row {
border-radius: $cs-border-radius; border-radius: $cs-border-radius;
padding: 12px; padding: 24rpx;
border: 1px solid #f9f9f9; border: 2rpx solid #f9f9f9;
} }
.detail { .detail {
display: flex; display: flex;
flex-flow: column nowrap; flex-flow: column nowrap;
gap: 12px; gap: 24rpx;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
.tagList {
display: flex;
align-items: center;
gap: var(--Number-4px, 4px);
.tag {
display: flex;
padding: var(--Number-2px, 2px) var(--Number-6px, 6px);
justify-content: center;
align-items: center;
gap: var(--Number-4px, 4px);
border-radius: var(--Number-2px, 2px);
background: var(--LightMode-Grey-Grey-100, #f9f9f9);
color: var(--LightMode-Grey-Grey-600, #78829d);
text-align: center;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
}
.enterprise { .enterprise {
border: 1px solid #f9f9f9; border: 2rpx solid #f9f9f9;
padding: 12px; padding: 24rpx;
border-radius: $cs-border-radius; border-radius: $cs-border-radius;
gap: 12px; gap: 24rpx;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
font-size: 12px; font-size: 24rpx;
.address { .address {
color: $uni-text-color-grey; color: $uni-text-color-grey;
text-decoration: underline;
} }
&:active { &:active {
background-color: $cs-color-touch; background-color: $cs-color-touch;
} }
.tagList {
margin-top: 8px;
display: flex;
gap: 4px;
color: $uni-text-color-grey;
display: flex;
flex-flow: row wrap;
.tag {
font-size: 12px;
display: flex;
padding: 2px 6px;
justify-content: center;
align-items: center;
border-radius: 2px;
background: #f9f9f9;
}
}
.audit {
position: absolute;
right: -19px;
top: 6px;
transform: rotateZ(45deg);
transform-origin: 50% 50%;
padding: 4px 20px;
font-size: 12px;
text-align: center;
}
} }
.audit { .audit {
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
transform: translateX(23px) translateY(16px) rotateZ(45deg); transform: translateX(36rpx) translateY(32rpx) rotateZ(45deg);
transform-origin: 50% 50%; transform-origin: 50% 50%;
} }
} }
@ -423,26 +345,26 @@ export default {
overflow: hidden; overflow: hidden;
display: flex; display: flex;
flex-flow: column nowrap; flex-flow: column nowrap;
gap: 12px; gap: 24rpx;
.emty { .emty {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
gap: 12px; gap: 24rpx;
border-radius: var(--Number-8px, 8px); border-radius: 16rpx;
border: 1px solid var(--LightMode-Grey-Grey-100, #f9f9f9); border: 2rpx solid var(--LightMode-Grey-Grey-100, #f9f9f9);
padding: 24px 12px; padding: 48rpx 24rpx;
border-radius: 8px; border-radius: 16rpx;
.image { .image {
width: 64px; width: 128rpx;
height: 64px; height: 128rpx;
} }
} }
.audit { .audit {
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
transform: translateX(30px) translateY(8px) rotateZ(45deg); transform: translateX(60rpx) translateY(16rpx) rotateZ(45deg);
transform-origin: 50% 50%; transform-origin: 50% 50%;
} }
} }
@ -452,16 +374,16 @@ export default {
} }
} }
.operation { .operation {
padding: 12px; padding: 24rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 12px; gap: 24rpx;
.btn { .btn {
flex: 1; flex: 1;
border-radius: 8px; border-radius: 16rpx;
display: flex; display: flex;
padding: 12px 0; padding: 24rpx 0;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }

1125
uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue

File diff suppressed because it is too large Load Diff

4
uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js

@ -285,8 +285,8 @@ const cfe = {
"trigger": 'item' "trigger": 'item'
}, },
"grid": { "grid": {
"top": 40, "top": 0,
"bottom": 30, "bottom": 0,
"right": 15, "right": 15,
"left": 15 "left": 15
}, },

595
uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js

@ -20,85 +20,106 @@
const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改 //事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
const formatDateTime = (timeStamp, returnType)=>{ const formatDateTime = (timeStamp, returnType) => {
var date = new Date(); var date = new Date();
date.setTime(timeStamp * 1000); date.setTime(timeStamp * 1000);
var y = date.getFullYear(); var y = date.getFullYear();
var m = date.getMonth() + 1; var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m; m = m < 10 ? ('0' + m) : m;
var d = date.getDate(); var d = date.getDate();
d = d < 10 ? ('0' + d) : d; d = d < 10 ? ('0' + d) : d;
var h = date.getHours(); var h = date.getHours();
h = h < 10 ? ('0' + h) : h; h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes(); var minute = date.getMinutes();
var second = date.getSeconds(); var second = date.getSeconds();
minute = minute < 10 ? ('0' + minute) : minute; minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second; second = second < 10 ? ('0' + second) : second;
if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;} if (returnType == 'full') {
if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;} return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
if(returnType == 'h:m'){return h +':' + minute;} }
if(returnType == 'h:m:s'){return h +':' + minute +':' + second;} if (returnType == 'y-m-d') {
return [y, m, d, h, minute, second]; return y + '-' + m + '-' + d;
}
if (returnType == 'h:m') {
return h + ':' + minute;
}
if (returnType == 'h:m:s') {
return h + ':' + minute + ':' + second;
}
return [y, m, d, h, minute, second];
} }
const cfu = { const cfu = {
//demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可 //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
"type":["pie","ring","rose","word","funnel","map","arcbar","line","column","mount","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"], "type": ["pie", "ring", "rose", "word", "funnel", "map", "arcbar", "line", "column", "mount", "bar", "area",
"range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","山峰图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"], "radar", "gauge", "candle", "mix", "tline", "tarea", "scatter", "bubble", "demotype"
//增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype" ],
//自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories "range": ["饼状图", "圆环图", "玫瑰图", "词云图", "漏斗图", "地图", "圆弧进度条", "折线图", "柱状图", "山峰图", "条状图", "区域图", "雷达图", "仪表盘", "K线图",
"categories":["line","column","mount","bar","area","radar","gauge","candle","mix","demotype"], "混合图", "时间轴折线", "时间轴区域", "散点图", "气泡图", "自定义类型"
//instance为实例变量承载属性,不要删除 ],
"instance":{}, //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
//option为opts及eopts承载属性,不要删除 //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
"option":{}, "categories": ["line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "demotype"],
//下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 //instance为实例变量承载属性,不要删除
"formatter":{ "instance": {},
"yAxisDemo1":function(val, index, opts){return val+'元'}, //option为opts及eopts承载属性,不要删除
"yAxisDemo2":function(val, index, opts){return val.toFixed(2)}, "option": {},
"xAxisDemo1":function(val, index, opts){return val+'年';}, //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
"xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')}, "formatter": {
"seriesDemo1":function(val, index, series, opts){return val+'元'}, "yAxisDemo1": function(val, index, opts) {
"tooltipDemo1":function(item, category, index, opts){ return val + '元'
if(index==0){ },
return '随便用'+item.data+'年' "yAxisDemo2": function(val, index, opts) {
}else{ return val.toFixed(2)
return '其他我没改'+item.data+'天' },
} "xAxisDemo1": function(val, index, opts) {
}, return val + '年';
"pieDemo":function(val, index, series, opts){ },
if(index !== undefined){ "xAxisDemo2": function(val, index, opts) {
return series[index].name+':'+series[index].data+'元' return formatDateTime(val, 'h:m')
} },
}, "seriesDemo1": function(val, index, series, opts) {
}, return val + '元'
//这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。 },
"demotype":{ "tooltipDemo1": function(item, category, index, opts) {
//我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置 if (index == 0) {
"type": "line", return '随便用' + item.data + '年'
"color": color, } else {
"padding": [15,10,0,15], return '其他我没改' + item.data + '天'
"xAxis": { }
"disableGrid": true, },
}, "pieDemo": function(val, index, series, opts) {
"yAxis": { if (index !== undefined) {
"gridType": "dash", return series[index].name + ':' + series[index].data + '元'
"dashLength": 2, }
}, },
"legend": { },
}, //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
"extra": { "demotype": {
"line": { //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
"type": "curve", "type": "line",
"width": 2 "color": color,
}, "padding": [15, 10, 0, 15],
} "xAxis": {
}, "disableGrid": true,
//下面是自定义配置,请添加项目所需的通用配置 },
"pie":{ "yAxis": {
"gridType": "dash",
"dashLength": 2,
},
"legend": {},
"extra": {
"line": {
"type": "curve",
"width": 2
},
}
},
//下面是自定义配置,请添加项目所需的通用配置
"pie": {
"type": "pie", "type": "pie",
"color": color, "color": color,
"padding": [5,5,5,5], "padding": [5, 5, 5, 5],
"extra": { "extra": {
"pie": { "pie": {
"activeOpacity": 0.5, "activeOpacity": 0.5,
@ -111,30 +132,33 @@ const cfu = {
}, },
} }
}, },
"ring":{ "ring": {
"type": "ring", "type": "ring",
"color": color, "color": color,
"padding": [5,5,5,5], "padding": [0, 0, 0, 0],
"rotate": false, "rotate": false,
"dataLabel": true, "dataLabel": true,
"legend": { "legend": {
"show": true, "show": true,
"position": "right", "position": "right",
"lineHeight": 25, "lineHeight": 25,
}, },
"title": { "title": {
"name": "收益率", "name": "收益率",
"fontSize": 15, "fontSize": 15,
"color": "#666666" "color": "#666666",
"fontFamoly": 'Tahoma',
"fontWeight": 'blod'
}, },
"subtitle": { "subtitle": {
"name": "70%", "name": "70%",
"fontSize": 25, "fontSize": 25,
"color": "#7cb5ec" "color": "#7cb5ec",
"fontFamoly": 'Tahoma'
}, },
"extra": { "extra": {
"ring": { "ring": {
"ringWidth":30, "ringWidth": 30,
"activeOpacity": 0.5, "activeOpacity": 0.5,
"activeRadius": 10, "activeRadius": 10,
"offsetAngle": 0, "offsetAngle": 0,
@ -145,14 +169,14 @@ const cfu = {
}, },
}, },
}, },
"rose":{ "rose": {
"type": "rose", "type": "rose",
"color": color, "color": color,
"padding": [5,5,5,5], "padding": [5, 5, 5, 5],
"legend": { "legend": {
"show": true, "show": true,
"position": "left", "position": "left",
"lineHeight": 25, "lineHeight": 25,
}, },
"extra": { "extra": {
"rose": { "rose": {
@ -168,9 +192,9 @@ const cfu = {
}, },
} }
}, },
"word":{ "word": {
"type": "word", "type": "word",
"color": color, "color": color,
"extra": { "extra": {
"word": { "word": {
"type": "normal", "type": "normal",
@ -178,10 +202,10 @@ const cfu = {
} }
} }
}, },
"funnel":{ "funnel": {
"type": "funnel", "type": "funnel",
"color": color, "color": color,
"padding": [15,15,0,15], "padding": [15, 15, 0, 15],
"extra": { "extra": {
"funnel": { "funnel": {
"activeOpacity": 0.3, "activeOpacity": 0.3,
@ -194,11 +218,11 @@ const cfu = {
}, },
} }
}, },
"map":{ "map": {
"type": "map", "type": "map",
"color": color, "color": color,
"padding": [0,0,0,0], "padding": [0, 0, 0, 0],
"dataLabel": true, "dataLabel": true,
"extra": { "extra": {
"map": { "map": {
"border": true, "border": true,
@ -211,9 +235,9 @@ const cfu = {
}, },
} }
}, },
"arcbar":{ "arcbar": {
"type": "arcbar", "type": "arcbar",
"color": color, "color": color,
"title": { "title": {
"name": "百分比", "name": "百分比",
"fontSize": 25, "fontSize": 25,
@ -235,98 +259,92 @@ const cfu = {
} }
} }
}, },
"line":{ "line": {
"type": "line", "type": "line",
"color": color, "color": color,
"padding": [15,10,0,15], "padding": [15, 10, 0, 15],
"xAxis": { "xAxis": {
"disableGrid": true, "disableGrid": true,
}, },
"yAxis": { "yAxis": {
"gridType": "dash", "gridType": "dash",
"dashLength": 2, "dashLength": 2,
},
"legend": {
}, },
"legend": {},
"extra": { "extra": {
"line": { "line": {
"type": "straight", "type": "straight",
"width": 2, "width": 2,
"activeType": "hollow" "activeType": "hollow"
}, },
} }
}, },
"tline":{ "tline": {
"type": "line", "type": "line",
"color": color, "color": color,
"padding": [15,10,0,15], "padding": [15, 10, 0, 15],
"xAxis": {
"disableGrid": false,
"boundaryGap":"justify",
},
"yAxis": {
"gridType": "dash",
"dashLength": 2,
"data":[
{
"min":0,
"max":80
}
]
},
"legend": {
},
"extra": {
"line": {
"type": "curve",
"width": 2,
"activeType": "hollow"
},
}
},
"tarea":{
"type": "area",
"color": color,
"padding": [15,10,0,15],
"xAxis": {
"disableGrid": true,
"boundaryGap":"justify",
},
"yAxis": {
"gridType": "dash",
"dashLength": 2,
"data":[
{
"min":0,
"max":80
}
]
},
"legend": {
},
"extra": {
"area": {
"type": "curve",
"opacity": 0.2,
"addLine": true,
"width": 2,
"gradient": true,
"activeType": "hollow"
},
}
},
"column":{
"type": "column",
"color": color,
"padding": [15,15,0,5],
"xAxis": { "xAxis": {
"disableGrid": true, "disableGrid": false,
"boundaryGap": "justify",
}, },
"yAxis": { "yAxis": {
"data":[{"min":0}] "gridType": "dash",
"dashLength": 2,
"data": [{
"min": 0,
"max": 80
}]
}, },
"legend": { "legend": {},
"extra": {
"line": {
"type": "curve",
"width": 2,
"activeType": "hollow"
},
}
},
"tarea": {
"type": "area",
"color": color,
"padding": [15, 10, 0, 15],
"xAxis": {
"disableGrid": true,
"boundaryGap": "justify",
},
"yAxis": {
"gridType": "dash",
"dashLength": 2,
"data": [{
"min": 0,
"max": 80
}]
},
"legend": {},
"extra": {
"area": {
"type": "curve",
"opacity": 0.2,
"addLine": true,
"width": 2,
"gradient": true,
"activeType": "hollow"
},
}
},
"column": {
"type": "column",
"color": color,
"padding": [15, 15, 0, 5],
"xAxis": {
"disableGrid": true,
}, },
"yAxis": {
"data": [{
"min": 0
}]
},
"legend": {},
"extra": { "extra": {
"column": { "column": {
"type": "group", "type": "group",
@ -336,63 +354,61 @@ const cfu = {
}, },
} }
}, },
"mount":{ "mount": {
"type": "mount", "type": "mount",
"color": color,
"padding": [15,15,0,5],
"xAxis": {
"disableGrid": true,
},
"yAxis": {
"data":[{"min":0}]
},
"legend": {
},
"extra": {
"mount": {
"type": "mount",
"widthRatio": 1.5,
},
}
},
"bar":{
"type": "bar",
"color": color,
"padding": [15,30,0,5],
"xAxis": {
"boundaryGap":"justify",
"disableGrid":false,
"min":0,
"axisLine":false
},
"yAxis": {
},
"legend": {
},
"extra": {
"bar": {
"type": "group",
"width": 30,
"meterBorde": 1,
"meterFillColor": "#FFFFFF",
"activeBgColor": "#000000",
"activeBgOpacity": 0.08
},
}
},
"area":{
"type": "area",
"color": color, "color": color,
"padding": [15,15,0,15], "padding": [15, 15, 0, 5],
"xAxis": { "xAxis": {
"disableGrid": true, "disableGrid": true,
}, },
"yAxis": { "yAxis": {
"gridType": "dash", "data": [{
"dashLength": 2, "min": 0
}]
}, },
"legend": { "legend": {},
"extra": {
"mount": {
"type": "mount",
"widthRatio": 1.5,
},
}
},
"bar": {
"type": "bar",
"color": color,
"padding": [15, 30, 0, 5],
"xAxis": {
"boundaryGap": "justify",
"disableGrid": false,
"min": 0,
"axisLine": false
}, },
"yAxis": {},
"legend": {},
"extra": {
"bar": {
"type": "group",
"width": 30,
"meterBorde": 1,
"meterFillColor": "#FFFFFF",
"activeBgColor": "#000000",
"activeBgOpacity": 0.08
},
}
},
"area": {
"type": "area",
"color": color,
"padding": [15, 15, 0, 15],
"xAxis": {
"disableGrid": true,
},
"yAxis": {
"gridType": "dash",
"dashLength": 2,
},
"legend": {},
"extra": { "extra": {
"area": { "area": {
"type": "straight", "type": "straight",
@ -400,19 +416,19 @@ const cfu = {
"addLine": true, "addLine": true,
"width": 2, "width": 2,
"gradient": false, "gradient": false,
"activeType": "hollow" "activeType": "hollow"
}, },
} }
}, },
"radar":{ "radar": {
"type": "radar", "type": "radar",
"color": color, "color": color,
"padding": [5,5,5,5], "padding": [5, 5, 5, 5],
"dataLabel": false, "dataLabel": false,
"legend": { "legend": {
"show": true, "show": true,
"position": "right", "position": "right",
"lineHeight": 25, "lineHeight": 25,
}, },
"extra": { "extra": {
"radar": { "radar": {
@ -425,7 +441,7 @@ const cfu = {
}, },
} }
}, },
"gauge":{ "gauge": {
"type": "gauge", "type": "gauge",
"color": color, "color": color,
"title": { "title": {
@ -465,10 +481,10 @@ const cfu = {
} }
} }
}, },
"candle":{ "candle": {
"type": "candle", "type": "candle",
"color": color, "color": color,
"padding": [15,15,0,15], "padding": [15, 15, 0, 15],
"enableScroll": true, "enableScroll": true,
"enableMarkLine": true, "enableMarkLine": true,
"dataLabel": false, "dataLabel": false,
@ -484,10 +500,8 @@ const cfu = {
"scrollColor": "#A6A6A6", "scrollColor": "#A6A6A6",
"scrollBackgroundColor": "#EFEBEF" "scrollBackgroundColor": "#EFEBEF"
}, },
"yAxis": { "yAxis": {},
}, "legend": {},
"legend": {
},
"extra": { "extra": {
"candle": { "candle": {
"color": { "color": {
@ -498,16 +512,15 @@ const cfu = {
}, },
"average": { "average": {
"show": true, "show": true,
"name": ["MA5","MA10","MA30"], "name": ["MA5", "MA10", "MA30"],
"day": [5,10,20], "day": [5, 10, 20],
"color": ["#1890ff","#2fc25b","#facc14"] "color": ["#1890ff", "#2fc25b", "#facc14"]
} }
}, },
"markLine": { "markLine": {
"type": "dash", "type": "dash",
"dashLength": 5, "dashLength": 5,
"data": [ "data": [{
{
"value": 2150, "value": 2150,
"lineColor": "#f04864", "lineColor": "#f04864",
"showLabel": true "showLabel": true
@ -521,12 +534,12 @@ const cfu = {
} }
} }
}, },
"mix":{ "mix": {
"type": "mix", "type": "mix",
"color": color, "color": color,
"padding": [15,15,0,15], "padding": [15, 15, 0, 15],
"xAxis": { "xAxis": {
"disableGrid": true, "disableGrid": true,
}, },
"yAxis": { "yAxis": {
"disabled": false, "disabled": false,
@ -539,8 +552,7 @@ const cfu = {
"showTitle": true, "showTitle": true,
"data": [] "data": []
}, },
"legend": { "legend": {},
},
"extra": { "extra": {
"mix": { "mix": {
"column": { "column": {
@ -549,57 +561,54 @@ const cfu = {
}, },
} }
}, },
"scatter":{ "scatter": {
"type": "scatter", "type": "scatter",
"color":color, "color": color,
"padding":[15,15,0,15], "padding": [15, 15, 0, 15],
"dataLabel":false, "dataLabel": false,
"xAxis": { "xAxis": {
"disableGrid": false, "disableGrid": false,
"gridType":"dash", "gridType": "dash",
"splitNumber":5, "splitNumber": 5,
"boundaryGap":"justify", "boundaryGap": "justify",
"min":0 "min": 0
}, },
"yAxis": { "yAxis": {
"disableGrid": false, "disableGrid": false,
"gridType":"dash", "gridType": "dash",
}, },
"legend": { "legend": {},
}, "extra": {
"extra": { "scatter": {},
"scatter": { }
},
}
}, },
"bubble":{ "bubble": {
"type": "bubble", "type": "bubble",
"color":color, "color": color,
"padding":[15,15,0,15], "padding": [15, 15, 0, 15],
"xAxis": { "xAxis": {
"disableGrid": false, "disableGrid": false,
"gridType":"dash", "gridType": "dash",
"splitNumber":5, "splitNumber": 5,
"boundaryGap":"justify", "boundaryGap": "justify",
"min":0, "min": 0,
"max":250 "max": 250
}, },
"yAxis": { "yAxis": {
"disableGrid": false, "disableGrid": false,
"gridType":"dash", "gridType": "dash",
"data":[{ "data": [{
"min":0, "min": 0,
"max":150 "max": 150
}] }]
}, },
"legend": { "legend": {},
}, "extra": {
"extra": { "bubble": {
"bubble": { "border": 2,
"border":2, "opacity": 0.5,
"opacity": 0.5, },
}, }
}
} }
} }

14675
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js

File diff suppressed because it is too large Load Diff

7542
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js vendored

File diff suppressed because one or more lines are too long

51
uni_modules/s-components/s-header/index.vue

@ -1,34 +1,18 @@
<template> <template>
<view class="container"> <view class="container">
<view class="fit-content"></view> <!-- <view class="fit-content"></view> -->
<view class="operation" v-if="isCustom"> <view class="operation" v-if="isCustom">
<slot></slot> <slot></slot>
</view> </view>
<view v-else> <view v-else>
<view class="operation" v-if="isTab"> <view class="operation" v-if="isTab">
<view <u--image
class="wd-flex wd-items-center" src="/static/images/tabbers/logo.png"
style="gap: 10px; padding: 4px 12px" width="48rpx"
> height="48rpx"
<u--image mode="aspectFit"
src="/static/favicon.png" ></u--image>
width="24px" <text class="title">{{ title }}</text>
height="24px"
mode="aspectFit"
></u--image>
<text class="title">{{ title }}</text>
</view>
</view>
<view
class="operation wd-flex wd-flex-row wd-items-center"
style="gap: 10px; padding: 4px 12px"
v-else
@tap="goback"
>
<view class="icon-box">
<u-icon name="arrow-left" size="12"></u-icon>
</view>
<text class="title wd-text-16 wd-font-800">{{ title }}</text>
</view> </view>
</view> </view>
</view> </view>
@ -63,18 +47,23 @@ export default {
.container { .container {
background-color: #fff; background-color: #fff;
z-index: 1; z-index: 1;
.fit-content { height: 176rpx;
height: 6vh; position: relative;
}
.operation { .operation {
padding: 12px 4px; position: absolute;
bottom: 14rpx;
padding: 8rpx 24rpx;
display: flex;
flex-flow: row nowrap;
align-items: center;
gap: 8rpx;
.title { .title {
color: #000; color: #071437;
font-size: 16px; font-size: 32rpx;
font-weight: bold; font-weight: bold;
} }
.icon-box { .icon-box {
padding: 5px; padding: 10rpx;
border-radius: 50%; border-radius: 50%;
} }
} }

17
uni_modules/s-components/s-tabber/index.vue

@ -19,12 +19,12 @@
height="24" height="24"
v-else v-else
></u--image> ></u--image>
<view class="name"> <view :class="[tab.code == selected ? 'isActive' : 'name']">
{{ tab.name }} {{ tab.name }}
</view> </view>
</view> </view>
</view> </view>
<view :style="{ height: isFit ? '50rpx' : '24rpx' }"></view> <view :style="{ height: isFit ? '68rpx' : '24rpx' }"></view>
</view> </view>
</template> </template>
@ -81,7 +81,7 @@ export default {
}, },
computed: { computed: {
setClass() { setClass() {
return this.$props.isTab ? 'container' : 'noTab' return this.$props.isTab ? 'cs-tabber-container' : 'noTab'
}, },
isFit() { isFit() {
return uni.getStorageSync('SYSTEM').includes('iOS') return uni.getStorageSync('SYSTEM').includes('iOS')
@ -101,7 +101,7 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
.container { .cs-tabber-container {
background-color: #fff; background-color: #fff;
} }
.noTab { .noTab {
@ -109,10 +109,10 @@ export default {
.tabber { .tabber {
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
justify-content: space-around;
align-items: center; align-items: center;
justify-content: space-around;
border-top: 2rpx solid #f1f1f4; border-top: 2rpx solid #f1f1f4;
padding: 24rpx 64rpx 0px 64rpx; padding: 24rpx 48rpx 0px 48rpx;
.tab { .tab {
display: flex; display: flex;
flex-flow: column nowrap; flex-flow: column nowrap;
@ -123,6 +123,11 @@ export default {
} }
.isActive { .isActive {
color: #22c55e; color: #22c55e;
font-weight: 500;
}
.name {
color: #99a1b7;
font-weight: 400;
} }
} }
</style> </style>

330
uni_modules/uview-ui/components/u-count-to/u-count-to.vue

@ -1,16 +1,18 @@
<template> <template>
<text <text
class="u-count-num" class="u-count-num"
:style="{ :style="{
fontSize: $u.addUnit(fontSize), fontSize: $u.addUnit(fontSize),
fontWeight: bold ? 'bold' : 'normal', fontWeight: bold ? bold : 'normal',
color: color color: color
}" }"
>{{ displayValue }}</text> >
{{ displayValue }}
</text>
</template> </template>
<script> <script>
import props from './props.js'; import props from './props.js'
/** /**
* countTo 数字滚动 * countTo 数字滚动
* @description 该组件一般用于需要滚动数字到某一个值的场景目标要求是一个递增的值 * @description 该组件一般用于需要滚动数字到某一个值的场景目标要求是一个递增的值
@ -30,155 +32,175 @@
* @example <u-count-to ref="uCountTo" :end-val="endVal" :autoplay="autoplay"></u-count-to> * @example <u-count-to ref="uCountTo" :end-val="endVal" :autoplay="autoplay"></u-count-to>
*/ */
export default { export default {
name: 'u-count-to', name: 'u-count-to',
data() { data() {
return { return {
localStartVal: this.startVal, localStartVal: this.startVal,
displayValue: this.formatNumber(this.startVal), displayValue: this.formatNumber(this.startVal),
printVal: null, printVal: null,
paused: false, // paused: false, //
localDuration: Number(this.duration), localDuration: Number(this.duration),
startTime: null, // startTime: null, //
timestamp: null, // timestamp: null, //
remaining: null, // remaining: null, //
rAF: null, rAF: null,
lastTime: 0 // lastTime: 0 //
}; }
}, },
mixins: [uni.$u.mpMixin, uni.$u.mixin,props], mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
computed: { computed: {
countDown() { countDown() {
return this.startVal > this.endVal; return this.startVal > this.endVal
} }
}, },
watch: { watch: {
startVal() { startVal() {
this.autoplay && this.start(); this.autoplay && this.start()
}, },
endVal() { endVal() {
this.autoplay && this.start(); this.autoplay && this.start()
} }
}, },
mounted() { mounted() {
this.autoplay && this.start(); this.autoplay && this.start()
}, },
methods: { methods: {
easingFn(t, b, c, d) { easingFn(t, b, c, d) {
return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b; return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b
}, },
requestAnimationFrame(callback) { requestAnimationFrame(callback) {
const currTime = new Date().getTime(); const currTime = new Date().getTime()
// 使setTimteout60 // 使setTimteout60
const timeToCall = Math.max(0, 16 - (currTime - this.lastTime)); const timeToCall = Math.max(0, 16 - (currTime - this.lastTime))
const id = setTimeout(() => { const id = setTimeout(() => {
callback(currTime + timeToCall); callback(currTime + timeToCall)
}, timeToCall); }, timeToCall)
this.lastTime = currTime + timeToCall; this.lastTime = currTime + timeToCall
return id; return id
}, },
cancelAnimationFrame(id) { cancelAnimationFrame(id) {
clearTimeout(id); clearTimeout(id)
}, },
// //
start() { start() {
this.localStartVal = this.startVal; this.localStartVal = this.startVal
this.startTime = null; this.startTime = null
this.localDuration = this.duration; this.localDuration = this.duration
this.paused = false; this.paused = false
this.rAF = this.requestAnimationFrame(this.count); this.rAF = this.requestAnimationFrame(this.count)
}, },
// //
reStart() { reStart() {
if (this.paused) { if (this.paused) {
this.resume(); this.resume()
this.paused = false; this.paused = false
} else { } else {
this.stop(); this.stop()
this.paused = true; this.paused = true
} }
}, },
// //
stop() { stop() {
this.cancelAnimationFrame(this.rAF); this.cancelAnimationFrame(this.rAF)
}, },
// () // ()
resume() { resume() {
if (!this.remaining) return if (!this.remaining) return
this.startTime = 0; this.startTime = 0
this.localDuration = this.remaining; this.localDuration = this.remaining
this.localStartVal = this.printVal; this.localStartVal = this.printVal
this.requestAnimationFrame(this.count); this.requestAnimationFrame(this.count)
}, },
// //
reset() { reset() {
this.startTime = null; this.startTime = null
this.cancelAnimationFrame(this.rAF); this.cancelAnimationFrame(this.rAF)
this.displayValue = this.formatNumber(this.startVal); this.displayValue = this.formatNumber(this.startVal)
}, },
count(timestamp) { count(timestamp) {
if (!this.startTime) this.startTime = timestamp; if (!this.startTime) this.startTime = timestamp
this.timestamp = timestamp; this.timestamp = timestamp
const progress = timestamp - this.startTime; const progress = timestamp - this.startTime
this.remaining = this.localDuration - progress; this.remaining = this.localDuration - progress
if (this.useEasing) { if (this.useEasing) {
if (this.countDown) { if (this.countDown) {
this.printVal = this.localStartVal - this.easingFn(progress, 0, this.localStartVal - this.endVal, this.localDuration); this.printVal =
} else { this.localStartVal -
this.printVal = this.easingFn(progress, this.localStartVal, this.endVal - this.localStartVal, this.localDuration); this.easingFn(
} progress,
} else { 0,
if (this.countDown) { this.localStartVal - this.endVal,
this.printVal = this.localStartVal - (this.localStartVal - this.endVal) * (progress / this.localDuration); this.localDuration
} else { )
this.printVal = this.localStartVal + (this.endVal - this.localStartVal) * (progress / this.localDuration); } else {
} this.printVal = this.easingFn(
} progress,
if (this.countDown) { this.localStartVal,
this.printVal = this.printVal < this.endVal ? this.endVal : this.printVal; this.endVal - this.localStartVal,
} else { this.localDuration
this.printVal = this.printVal > this.endVal ? this.endVal : this.printVal; )
} }
this.displayValue = this.formatNumber(this.printVal) || 0; } else {
if (progress < this.localDuration) { if (this.countDown) {
this.rAF = this.requestAnimationFrame(this.count); this.printVal =
} else { this.localStartVal -
this.$emit('end'); (this.localStartVal - this.endVal) *
} (progress / this.localDuration)
}, } else {
// this.printVal =
isNumber(val) { this.localStartVal +
return !isNaN(parseFloat(val)); (this.endVal - this.localStartVal) *
}, (progress / this.localDuration)
formatNumber(num) { }
// numNumbertoFixed }
num = Number(num); if (this.countDown) {
num = num.toFixed(Number(this.decimals)); this.printVal =
num += ''; this.printVal < this.endVal ? this.endVal : this.printVal
const x = num.split('.'); } else {
let x1 = x[0]; this.printVal =
const x2 = x.length > 1 ? this.decimal + x[1] : ''; this.printVal > this.endVal ? this.endVal : this.printVal
const rgx = /(\d+)(\d{3})/; }
if (this.separator && !this.isNumber(this.separator)) { this.displayValue = this.formatNumber(this.printVal) || 0
while (rgx.test(x1)) { if (progress < this.localDuration) {
x1 = x1.replace(rgx, '$1' + this.separator + '$2'); this.rAF = this.requestAnimationFrame(this.count)
} } else {
} this.$emit('end')
return x1 + x2; }
}, },
destroyed() { //
this.cancelAnimationFrame(this.rAF); isNumber(val) {
} return !isNaN(parseFloat(val))
} },
}; formatNumber(num) {
// numNumbertoFixed
num = Number(num)
num = num.toFixed(Number(this.decimals))
num += ''
const x = num.split('.')
let x1 = x[0]
const x2 = x.length > 1 ? this.decimal + x[1] : ''
const rgx = /(\d+)(\d{3})/
if (this.separator && !this.isNumber(this.separator)) {
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + this.separator + '$2')
}
}
return x1 + x2
},
destroyed() {
this.cancelAnimationFrame(this.rAF)
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../../libs/css/components.scss"; @import '../../libs/css/components.scss';
.u-count-num { .u-count-num {
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: inline-flex; display: inline-flex;
/* #endif */ /* #endif */
text-align: center; text-align: center;
} }
</style> </style>

1079
uni_modules/uview-ui/components/u-upload/u-upload.vue

File diff suppressed because it is too large Load Diff

1
utils/request.js

@ -60,7 +60,6 @@ const request = config => {
}) })
}, 500) }, 500)
} }
reject('无效的会话,或者会话已过期,请重新登录。') reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) { } else if (code === 500) {
toast(msg) toast(msg)

33
wxcomponents/vant/dropdown-item/index.wxss

@ -1 +1,32 @@
@import '../common/index.wxss';.van-dropdown-item{left:0;overflow:hidden;position:fixed;right:0}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} @import '../common/index.wxss';
.van-dropdown-item {
left: 0;
overflow: hidden;
position: fixed;
right: 0
}
.van-dropdown-item__option {
text-align: left
}
.van-dropdown-item__option--active .van-dropdown-item__icon,
.van-dropdown-item__option--active .van-dropdown-item__title {
color: var(--dropdown-menu-option-active-color, #ee0a24)
}
.van-dropdown-item--up {
top: 0
}
.van-dropdown-item--down {
/* bottom: 48rpx */
bottom: 0;
margin-bottom: 48rpx;
}
.van-dropdown-item__icon {
display: block;
line-height: inherit
}

1
wxcomponents/vant/dropdown-menu/index.wxml

@ -14,6 +14,7 @@
style="{{ item.showPopup ? 'color:' + activeColor : '' }}" style="{{ item.showPopup ? 'color:' + activeColor : '' }}"
> >
<view class="van-ellipsis"> <view class="van-ellipsis">
<text class='preffix'>{{item.title}}</text>
<text class="select-title" style="color:{{computed.setTitleColor(item)}}"> {{ computed.displayTitle(item) }}</text> <text class="select-title" style="color:{{computed.setTitleColor(item)}}"> {{ computed.displayTitle(item) }}</text>
<text class='arrow' style="border-color:#17c653"></text> <text class='arrow' style="border-color:#17c653"></text>
</view> </view>

7
wxcomponents/vant/dropdown-menu/index.wxs

@ -1,9 +1,8 @@
/* eslint-disable */ /* eslint-disable */
function displayTitle(item) { function displayTitle(item) {
if (item.title) { // if (!item.value) {
return item.title; // return item.title;
} // }
var match = item.options.filter(function(option) { var match = item.options.filter(function(option) {
return option.value === item.value; return option.value === item.value;
}); });

8
wxcomponents/vant/dropdown-menu/index.wxss

@ -1,8 +1,6 @@
@import '../common/index.wxss'; @import '../common/index.wxss';
.van-dropdown-menu { .van-dropdown-menu {
background-color: var(--dropdown-menu-background-color, #fff);
box-shadow: var(--dropdown-menu-box-shadow, 0 2px 12px hsla(210, 1%, 40%, .12));
display: flex; display: flex;
height: var(--dropdown-menu-height, 50px); height: var(--dropdown-menu-height, 50px);
-webkit-user-select: none; -webkit-user-select: none;
@ -61,15 +59,15 @@
flex: row nowrap; flex: row nowrap;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
gap: 4px; gap: 8rpx;
} }
.select-title { .select-title {
font-weight: 600; font-weight: bold;
transition: .2s all; transition: .2s all;
color: #071437;
} }
.van-dropdown-menu__title .arrow { .van-dropdown-menu__title .arrow {
border-style: solid; border-style: solid;
border-color: #000; border-color: #000;

Loading…
Cancel
Save