From 69a1b3bf45738f048361ee4ccb6bdc64fce35720 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 12 三月 2025 11:31:46 +0800
Subject: [PATCH] 更新
---
h5/pages/staff/task/index.vue | 749 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 749 insertions(+), 0 deletions(-)
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
new file mode 100644
index 0000000..eaa6655
--- /dev/null
+++ b/h5/pages/staff/task/index.vue
@@ -0,0 +1,749 @@
+<template>
+ <view class="box" :class="{ popupShow: showFilter }">
+ <scroll-view scroll-x class="box_head">
+ <view class="box_head_search">
+ <view class="box_head_search_ipt">
+ <image src="@/static/n/ic_search@2x.png" mode="widthFix"></image>
+ <input
+ v-model="search.title"
+ @blur="querylist"
+ type="text"
+ confirm-type="search"
+ placeholder="鎼滅储浠诲姟鍚嶇О"
+ />
+ </view>
+ <view class="box_head_search_sha" @click="showFilter = true">
+ <image src="@/static/n/ic_shaixuan@2x.png" mode="widthFix"></image>
+ <text>绛涢��</text>
+ </view>
+ </view>
+ <view class="box_head_list">
+ <view
+ @click="statusClick(0)"
+ :class="{ active: search.queryType === 0 }"
+ class="box_head_item"
+ >寰呭鐞� {{ headData.noticeWaitNum || "" }}</view
+ >
+ <view
+ @click="statusClick(1)"
+ :class="{ active: search.queryType === 1 }"
+ class="box_head_item"
+ >宸插鐞�</view
+ >
+ <view
+ @click="statusClick(2)"
+ :class="{ active: search.queryType === 2 }"
+ class="box_head_item"
+ >鎴戝彂璧风殑</view
+ >
+ <view
+ @click="statusClick(3)"
+ :class="{ active: search.queryType === 3 }"
+ class="box_head_item"
+ >鎶勯�佹垜鐨� {{ headData.noticeCopyNum || "" }}</view
+ >
+ </view>
+ </scroll-view>
+ <view class="box_list">
+ <view class="chaosong" v-if="search.queryType === 3">
+ <view class="left">
+ <image
+ @click="readySearch(0)"
+ v-if="search.noRead && search.noRead == 1"
+ src="@/static/meeting/icon/ic_choose_sel@2x.png"
+ class="checked"
+ />
+ <image
+ @click="readySearch(1)"
+ v-else
+ src="@/static/meeting/icon/ic_choose@2x.png"
+ class="checked"
+ />
+ <text>浠呯湅鏈</text>
+ </view>
+ <view class="right" @click="handleReady">鍏ㄩ儴鏍囪宸茶</view>
+ </view>
+ <view
+ class="box_list_item"
+ v-for="(item, index) in dataList"
+ @click="handleAppr(item)"
+ :key="index"
+ >
+ <view class="box_list_item_head">
+ <view class="df_ac">
+ <text v-if="item.readed == 0 && search.queryType === 3" class="readed"></text>
+ <text class="tt">{{ item.title }}</text>
+ </view>
+ <view class="info" :class="{ loading: search.queryType === 0 }">{{ item.info }}</view>
+ </view>
+ <view class="box_list_item_nr">
+ <view v-if="item.param1.arriveDate" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.arriveDate }}</text>
+ </view>
+ <view v-if="item.param1.inType" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.inType }}</text>
+ </view>
+ <view v-if="item.param1.totalNum" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.totalNum }}</text>
+ </view>
+ <view v-if="item.param1.carNum" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.carNum }}</text>
+ </view>
+
+ <view v-if="item.param1.name" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.name }}</text>
+ </view>
+ <view v-if="item.param1.area" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.area }}</text>
+ </view>
+ <view v-if="item.param1.cate" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.cate }}</text>
+ </view>
+ <view v-if="item.param1.sTime" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.sTime }}</text>
+ </view>
+ <view v-if="item.param1.eTime" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.eTime }}</text>
+ </view>
+ <view v-if="item.param1.usrNum" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.usrNum }}</text>
+ </view>
+ <view v-if="item.param1.reason" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.reason }}</text>
+ </view>
+ <view v-if="item.param1.carNos" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.carNos }}</text>
+ </view>
+ <view v-if="item.param1.mdd" class="box_list_item_nr_item">
+ <text></text>
+ <text>{{ item.param1.mdd }}</text>
+ </view>
+ <view class="box_list_item_nr_x"></view>
+ <view class="box_list_item_nr_text">
+ <text class="time">{{ item.createDate }}鎻愪氦</text>
+ <text v-if="search.queryType === 0" class="btn">鍘诲鐞�</text>
+ </view>
+ </view>
+ </view>
+ <view v-if="dataList.length === 0" style="text-align: center">
+ <image
+ src="@/static/empty.png"
+ style="width: 320rpx; margin: 120px auto 0"
+ mode="widthFix"
+ />
+ <view class="placeholder9 fs24">鏆傛棤鏁版嵁</view>
+ </view>
+ </view>
+ <!-- 绛涢�� -->
+ <u-popup
+ :show="showFilter"
+ mode="bottom"
+ :round="10"
+ :closeable="true"
+ @close="showFilter = false"
+ >
+ <view class="search">
+ <view class="search_head">绛涢��</view>
+ <view class="search_list">
+ <view class="search_list_item">
+ <view class="search_list_item_label">鍒涘缓鏃堕棿</view>
+ <view class="search_list_item_val">
+ <view
+ class="search_list_item_val_row"
+ @click="tiemShow = true"
+ :style="{ color: modelParam.startDate ? '#000' : '' }"
+ >{{
+ modelParam.startDate ? modelParam.startDate : "寮�濮嬫椂闂�"
+ }}</view
+ >
+ <view class="search_list_item_val_z">-</view>
+ <view
+ class="search_list_item_val_row"
+ @click="tiemShow1 = true"
+ :style="{ color: modelParam.endDate ? '#000' : '' }"
+ >{{
+ modelParam.endDate ? modelParam.endDate : "缁撴潫鏃堕棿"
+ }}</view
+ >
+ </view>
+ </view>
+ <view class="search_list_item">
+ <view class="search_list_item_label">浠诲姟绫诲瀷</view>
+ <view class="search_list_item_cates">
+ <view
+ :class="
+ item.id === modelParam.type
+ ? 'search_list_item_cates_row active'
+ : 'search_list_item_cates_row'
+ "
+ v-for="(item, index) in cateList"
+ :key="index"
+ @click="clickItem(index)"
+ >
+ {{ item.name }}
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="search_footer">
+ <view class="search_footer_item" @click="modalReset">閲嶇疆</view>
+ <view class="search_footer_item t" @click="modalSub">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ <u-datetime-picker
+ :show="tiemShow"
+ v-model="startDate"
+ mode="date"
+ :formatter="formatter"
+ @confirm="confirmLeft"
+ @cancel="tiemShow = false"
+ ></u-datetime-picker>
+ <u-datetime-picker
+ :show="tiemShow1"
+ :minDate="
+ modelParam.startDate ? new Date(modelParam.startDate).getTime() : null
+ "
+ v-model="startDate"
+ mode="date"
+ :formatter="formatter"
+ @confirm="confirmRight"
+ @cancel="tiemShow1 = false"
+ ></u-datetime-picker>
+ </view>
+</template>
+
+<script>
+import { stagingHead, stagingTaskPage, signReadTask } from '@/api'
+import dayjs from 'dayjs'
+export default {
+ data() {
+ return {
+ showFilter: false,
+ search: {
+ queryType: 0
+ },
+ modelParam: {},
+ tiemShow: false,
+ tiemShow1: false,
+
+ pagination: {
+ capacity: 20,
+ page: 0
+ },
+ headData: {},
+ dataList: [],
+ total: 0,
+ cateList: [
+ { name: '璁垮鐢宠', id: 0 },
+ { name: '璁垮鎶ュ', id: 1 },
+ { name: '鐢ㄨ溅鐢宠', id: 2 },
+ { name: '闅愭偅闅忔墜鎷�', id: 3 },
+ { name: '鐗╂祦杞︾敵璇�', id: 6 },
+ { name: '鑰冨嫟浠e姙', id: 7 },
+ ],
+ startDate: dayjs().format('YYYY-MM-DD'),
+ }
+ },
+ // onLoad() {
+ // this.getHeadList()
+ // this.pagination.page = 0
+ // this.getList()
+ // },
+ onReachBottom() {
+ const { total, dataList} = this
+ if(dataList.length < total){
+ this.getList()
+ } else {
+ this.showToast('鏆傛棤鏇村鏁版嵁')
+ }
+ },
+ onBackPress(options) {
+ setTimeout(()=>{
+ this.$eventBus.$emit('taskBack')
+ })
+ return false
+ },
+ onShow() {
+ this.pagination.page = 0
+ this.dataList = []
+ this.getHeadList()
+ },
+ methods: {
+ formatter(type, value) {
+ if (type === 'year') {
+ return `${value}骞碻
+ }
+ if (type === 'month') {
+ return `${value}鏈坄
+ }
+ if (type === 'day') {
+ return `${value}鏃
+ }
+ if (type === 'hour') {
+ return `${value}鏃禶
+ }
+ if (type === 'minute') {
+ return `${value}鍒哷
+ }
+ return value
+ },
+ statusClick(val) {
+ this.pagination.page = 0
+ this.dataList = []
+ this.$set(this.search, 'queryType', val)
+ this.getList()
+ },
+ readySearch(val) {
+ this.pagination.page = 0
+ this.dataList = []
+ this.$set(this.search, 'noRead', val)
+ this.getList()
+ },
+ modalReset() {
+ this.modelParam = {}
+ this.search = {
+ queryType: 0
+ }
+ this.pagination.page = 0
+ this.dataList = []
+ this.showFilter = false
+ this.getList()
+ },
+ modalSub() {
+ this.search = { ...this.search, ...this.modelParam }
+ this.pagination.page = 0
+ this.dataList = []
+ this.getList()
+ this.showFilter = false
+ },
+ querylist() {
+ this.pagination.page = 0
+ this.dataList = []
+ this.getList()
+ },
+ getList() {
+ const { pagination, search } = this
+ pagination.page++
+ stagingTaskPage({
+ ...pagination,
+ model: {
+ ...search
+ }
+ }).then(res => {
+ if(res.data && res.data.records){
+ res.data.records.forEach(i => {
+ if (i.param1) {
+ i.param1 = JSON.parse(i.param1)
+ }
+ })
+ }
+ this.dataList = [...this.dataList, ...res.data.records]
+ this.total = res.data.total
+
+ })
+ },
+ getHeadList() {
+ stagingHead({
+ isDetail: '1'
+ }).then(res => {
+ this.headData = res.data
+ this.getList()
+ })
+ },
+ handleReady() {
+ signReadTask({
+ signType: 1
+ }).then(res => {
+ this.getHeadList()
+ })
+ },
+ handleAppr(item) {
+ const { objType, objId, info, readed } = item
+ if (readed === 0) {
+ signReadTask({
+ noticesId: item.id,
+ signType: 0
+ }).then(res => {
+ this.getHeadList()
+ })
+ }
+ if (item.type == 7) {
+ window.open('https://atwl.ahzyssl.com/dps/web/wxAuth/loginV2?oaId=atwl&redirectId=index')
+ return
+ }
+ if (objType === 2) {
+ uni.navigateTo({
+ url: `/pages/staff/vehicle/sendACarDetail?id=${objId}&info=${info}`
+ })
+ } else if (objType === 1) {
+ uni.navigateTo({
+ url: `/pages/staff/task/visitorReport?id=${objId}&objType=${objType}&info=${info}`
+ })
+ } else if (objType === 3) {
+ uni.navigateTo({
+ url: `/pages/staff/task/vDangetAppr?id=${objId}&objType=${objType}&info=${info}`
+ })
+ }else if (objType === 6 || objType === 5) {
+ uni.navigateTo({
+ url: `/pages/staff/task/driver?id=${objId}&objType=${objType}&info=${info}`
+ })
+ }else {
+ uni.navigateTo({
+ url: `/pages/staff/task/visitorApprove?id=${objId}&objType=${objType}&info=${info}`
+ })
+ }
+ },
+ clickItem(index) {
+ if (this.cateList[index].id === this.modelParam.type) {
+ this.$set(this.modelParam, 'type', null)
+ } else {
+ this.$set(this.modelParam, 'type', this.cateList[index].id)
+ }
+ },
+ confirmLeft(e) {
+ setTimeout(() => {
+ this.$set(this.modelParam, 'startDate', uni.$u.timeFormat(e.value, 'yyyy-mm-dd'))
+ })
+ this.tiemShow = false
+ },
+ confirmRight(e) {
+ setTimeout(() => {
+ this.$set(this.modelParam, 'endDate', uni.$u.timeFormat(e.value, 'yyyy-mm-dd'))
+ })
+ this.tiemShow1 = false
+ }
+ }
+}
+</script>
+<style>
+page {
+ background-color: #f7f7f7 !important;
+}
+</style>
+<style lang="scss" scoped>
+.box {
+ width: 100%;
+ .box_head {
+ width: 100%;
+ height: 190rpx;
+ padding: 12rpx 30rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ position: sticky;
+ top: 0;
+ left: 0;
+ .box_head_search {
+ width: 100%;
+ height: 76rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 24rpx;
+ .box_head_search_ipt {
+ flex: 1;
+ height: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ background: #f7f7f7;
+ border-radius: 50rpx;
+ margin-right: 30rpx;
+ image {
+ flex-shrink: 0;
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 16rpx;
+ }
+ input {
+ flex: 1;
+ height: 100%;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #b2b2b2;
+ }
+ }
+ .box_head_search_sha {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ margin-right: 8rpx;
+ }
+ text {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ .box_head_list {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .active {
+ border: 2rpx solid #4c99a8 !important;
+ color: #4c99a8 !important;
+ }
+ .box_head_item {
+ text-align: center;
+ flex: 1;
+ height: 60rpx;
+ line-height: 60rpx;
+ box-sizing: border-box;
+ border-radius: 30rpx;
+ border: 2rpx solid #999999;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ margin-right: 10rpx;
+ &:nth-last-child(1) {
+ margin-right: 0;
+ }
+ }
+ }
+ }
+ .box_list {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ .chaosong {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: #666666;
+ font-size: 24rpx;
+ margin-bottom: 20rpx;
+ .left {
+ display: flex;
+ align-items: center;
+ .checked {
+ width: 32rpx;
+ height: 32rpx;
+ margin-right: 10rpx;
+ }
+ }
+ }
+ .box_list_item {
+ width: 100%;
+ margin-bottom: 20rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ .box_list_item_head {
+ width: 100%;
+ height: 100rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
+ border-radius: 8rpx 8rpx 0rpx 0rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .readed {
+ width: 16rpx;
+ height: 16rpx;
+ border-radius: 50%;
+ background-color: #e0312a;
+ margin-right: 16rpx;
+ }
+ .info {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ width: 120rpx;
+ text-align: right;
+ }
+ .loading {
+ color: $uni-color-primary;
+ }
+ .success {
+ color: #03c68f;
+ }
+ .error {
+ color: #e0312a;
+ }
+ .tt {
+ font-size: 32rpx;
+ font-weight: 600;
+ color: #222222;
+ }
+ }
+ .box_list_item_nr {
+ padding: 30rpx;
+ width: 100%;
+ box-sizing: border-box;
+ background-color: #ffffff;
+ .box_list_item_nr_x {
+ width: 100%;
+ height: 1rpx;
+ background-color: #e5e5e5;
+ }
+ .box_list_item_nr_text {
+ .time {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ .btn {
+ padding: 0 32rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ background: $uni-color-primary;
+ color: #fff;
+ font-size: 26rpx;
+ font-weight: 300;
+ text-align: center;
+ border-radius: 30rpx;
+ }
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%;
+ margin-top: 20rpx;
+ }
+ .box_list_item_nr_item {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-bottom: 20rpx;
+ text {
+ &:nth-child(1) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #666666;
+ }
+ &:nth-child(2) {
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+ }
+ .search {
+ width: 100%;
+ padding: 30rpx;
+ box-sizing: border-box;
+ .search_head {
+ width: 100%;
+ text-align: center;
+ font-size: 32rpx;
+ font-weight: 600;
+ color: #222222;
+ }
+ .search_list {
+ width: 100%;
+ margin-top: 34rpx;
+ .search_list_item {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 48rpx;
+ .search_list_item_label {
+ font-size: 30rpx;
+ font-weight: 400;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+ .search_list_item_cates {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .active {
+ background: #4c99a8 !important;
+ color: #ffffff !important;
+ }
+ .search_list_item_cates_row {
+ width: 216rpx;
+ height: 64rpx;
+ text-align: center;
+ line-height: 64rpx;
+ background: #f7f7f7;
+ border-radius: 36rpx;
+ margin-right: 20rpx;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #333333;
+ margin-bottom: 20rpx;
+ &:nth-of-type(3n) {
+ margin-right: 0;
+ }
+ }
+ }
+ .search_list_item_val {
+ width: 100%;
+ height: 64rpx;
+ background: #f7f7f7;
+ border-radius: 36rpx;
+ border: 1rpx solid #e5e5e5;
+ display: flex;
+ align-items: center;
+ .search_list_item_val_row {
+ flex: 1;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ }
+ .search_list_item_val_z {
+ flex-shrink: 0;
+ font-size: 26rpx;
+ font-weight: 400;
+ color: #999999;
+ margin: 0 30rpx;
+ }
+ }
+ }
+ }
+ .search_footer {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .t {
+ background: #4c99a8 !important;
+ color: #ffffff !important;
+ }
+ .search_footer_item {
+ flex: 1;
+ height: 88rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 32rpx;
+ font-weight: 400;
+ color: #4c99a8;
+ margin-right: 18rpx;
+ border: 1rpx solid #4c99a8;
+ border-radius: 44rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ }
+ }
+ }
+}
+</style>
--
Gitblit v1.9.3