fix: 我的计划和计划编辑优化
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
<view class="top-height"></view>
|
||||
|
||||
<view class="week-plan-title">
|
||||
<view v-if="userInfo.nickName">姓名:<strong>{{ userInfo.nickName || userInfo.userName }}</strong></view>
|
||||
<!-- <view v-if="userInfo.nickName">姓名:<strong>{{ userInfo.nickName || userInfo.userName }}</strong></view>-->
|
||||
<view v-if="weekNum">
|
||||
{{ yearMonth }}
|
||||
<view v-if="isThisWeek" style=" display: inline-block;">
|
||||
@@ -28,16 +28,19 @@
|
||||
</view>
|
||||
|
||||
<view class="nav-list">
|
||||
<view class="nav-item" :class="{active:index==activeTab}"
|
||||
<view class="nav-item" :class="{'active': index == activeTab}"
|
||||
v-for="(item,index) in allPlans" :key="index"
|
||||
@click="handleNav(index)"
|
||||
>{{ getTapLabel(item) }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<block v-if="onShowPlan" v-for="(item, index) in OrdinalDate" :key="item">
|
||||
<uni-transition :duration="300"
|
||||
:mode-class="['fade','slide-bottom']"
|
||||
:styles="{'width':'100%', 'background-color':'#f0f0f0','border-top-left-radius': '8px', 'border-top-right-radius': '8px'}"
|
||||
:show="showTrans">
|
||||
<view v-if="onShowPlan" v-for="(item, index) in OrdinalDate" :key="index">
|
||||
<!-- 计划详情 -->
|
||||
<view class="white-bg white-bg-2" :class="index == 0 ? 'white-bg-r' : ''">
|
||||
<view class="white-bg white-bg-2" :class="{'white-bg-r':index === 0}">
|
||||
<view class="report-list">
|
||||
<view class="w-b-title">
|
||||
<view class="r-left">{{ getWorkDate(index) }} {{ WeekCN[index] }}</view>
|
||||
@@ -54,11 +57,13 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='bottom-spliter bg-gray'></view>
|
||||
</block>
|
||||
<view class='bottom-spliter'></view>
|
||||
</view>
|
||||
|
||||
<view v-else style="text-align: center; margin-top: 50%; color: white">
|
||||
暂无数据
|
||||
</view>
|
||||
</uni-transition>
|
||||
<!-- 底部加高度来避免tabbar遮挡 -->
|
||||
<!-- <view class="bottom-height bg-gray"></view> -->
|
||||
</view>
|
||||
@@ -69,13 +74,12 @@
|
||||
|
||||
<script setup>
|
||||
|
||||
import {onMounted, ref, reactive, computed} from "vue";
|
||||
import {onMounted, ref, computed, watch} from "vue";
|
||||
import {useRoute} from "vue-router"
|
||||
import customHeader from '@/components/customHeader.vue'
|
||||
import {WeekCN, WorkType, WorkEvent, OrdinalDate} from "./dataMap";
|
||||
import {getCurrentWeekNum} from "./dateTimeUtils";
|
||||
import {getUserInfo, getWeeklyPlanList} from "@/api/crm/plan/getPlan";
|
||||
import {useMessage} from "@/utils/message";
|
||||
import {getWeeklyPlanList} from "@/api/crm/plan/getPlan";
|
||||
import {judgeThisWeek} from "@/api/crm/plan/updatePlan";
|
||||
|
||||
const userInfo = ref(null)
|
||||
@@ -94,8 +98,6 @@ const yearMonth = ref(null);
|
||||
const weekNum = ref(0);
|
||||
const allPlans = ref([]);
|
||||
const onShowPlan = ref(null);
|
||||
const message = useMessage();
|
||||
|
||||
let getWorkDate = (index) => {
|
||||
return onShowPlan.value ? onShowPlan.value[OrdinalDate[index]] : '';
|
||||
};
|
||||
@@ -107,7 +109,8 @@ let getWorkEvent = (index) => {
|
||||
};
|
||||
// 刷新计划列表
|
||||
const refreshPlanList = () => {
|
||||
message.showLoading();
|
||||
showTrans.value = false;
|
||||
uni.showLoading();
|
||||
// 获取用户信息
|
||||
// getUserInfo().then(res => {
|
||||
// userInfo.value = res.user;
|
||||
@@ -124,12 +127,12 @@ const refreshPlanList = () => {
|
||||
weekNum.value = rows[0].date;
|
||||
yearMonth.value = rows[0].firstDayOfTheWeek.substring(0, 7);
|
||||
}
|
||||
console.log(route.path, ":用户周计划列表获取成功");
|
||||
console.log(route.path, "用户周计划列表获取成功");
|
||||
}).catch(err => {
|
||||
console.warn(err, "用户周计划列表获取失败");
|
||||
message.error("周计划获取失败");
|
||||
console.log(err, "周计划列表获取失败")
|
||||
}).finally(() => {
|
||||
message.hideLoading();
|
||||
uni.hideLoading();
|
||||
setTimeout(() => showTrans.value = true, 20);
|
||||
})
|
||||
}
|
||||
|
||||
@@ -139,7 +142,7 @@ onMounted(() => {
|
||||
|
||||
// 判断计划是否为本周
|
||||
let isThisWeek = computed(() => {
|
||||
let theYear = onShowPlan.value.year || onShowPlan.value.firstDayOfTheWeek.substring(0, 4); // 获取年份
|
||||
let theYear = onShowPlan.value.firstDayOfTheWeek.substring(0, 4); // 获取年份
|
||||
weekNum.value = onShowPlan.value.date; // 当目前展示的计划列表变化时,更新weekNum.value
|
||||
yearMonth.value = onShowPlan.value.firstDayOfTheWeek.substring(0, 7); // 获取年月
|
||||
return date.getFullYear() === parseInt(theYear) &&
|
||||
@@ -204,6 +207,19 @@ function getTapLabel(row) {
|
||||
return row.firstDayOfTheWeek.substring(0, 4) + '年' + row.month + '月 第' + row.date + '周';
|
||||
}
|
||||
|
||||
// 展示动画
|
||||
const showTrans = ref(false);
|
||||
// 监听 activeTab 变化,触发动画
|
||||
watch(activeTab, (newVal, oldVal) => {
|
||||
if (oldVal !== newVal) { // 确保不是初始化时的触发
|
||||
showTrans.value = false; // 先隐藏
|
||||
setTimeout(() => {
|
||||
onShowPlan.value = allPlans.value[newVal]; // 更新计划列表视图
|
||||
showTrans.value = true; // 再显示,触发动画
|
||||
}, 20);
|
||||
}
|
||||
});
|
||||
|
||||
// 选中计划时间段
|
||||
function handleNav(index) {
|
||||
console.log(index, "tab更换时间段");
|
||||
@@ -247,7 +263,7 @@ function handleEdit(index) {
|
||||
<style scoped>
|
||||
.week-plan-title {
|
||||
color: #fff;
|
||||
padding: 0 30rpx 30rpx;
|
||||
padding: 0 30rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
@@ -273,18 +289,22 @@ function handleEdit(index) {
|
||||
.white-bg.white-bg-2 {
|
||||
/* margin-bottom: 20rpx; */
|
||||
}
|
||||
|
||||
.bottom-spliter {
|
||||
height: 20rpx;
|
||||
}
|
||||
|
||||
.bg-gray {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.report-list .w-b-title .btn-edit {
|
||||
background-color: #5C96F7;
|
||||
}
|
||||
|
||||
.con-bg {
|
||||
/*height: 445rpx;*/
|
||||
/*height: 100%;*/
|
||||
/* overflow-y: auto;*/
|
||||
}
|
||||
|
||||
.nav-list {
|
||||
@@ -306,10 +326,12 @@ function handleEdit(index) {
|
||||
padding: 20rpx 30rpx 0;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
/* 为 Webkit 浏览器隐藏滚动条 */
|
||||
.nav-list::-webkit-scrollbar {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.nav-list .nav-item {
|
||||
/* flex: 0 0 auto; 关键:不放大、不缩小、自动宽度 */
|
||||
/* width: 200rpx;*/
|
||||
@@ -334,5 +356,4 @@ function handleEdit(index) {
|
||||
color: #3384DF;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<view class="week-plan-title">
|
||||
<view v-if="userInfo.nickName">姓名:<strong>{{ userInfo.nickName || userInfo.userName }}</strong></view>
|
||||
<!-- <view v-if="userInfo.nickName">姓名:<strong>{{ userInfo.nickName || userInfo.userName }}</strong></view>-->
|
||||
<view>{{ currentEditDate.yearMonth }} 第 <strong>{{ currentEditDate.weekNum }}</strong> 周</view>
|
||||
</view>
|
||||
<uni-forms ref="formRef" :model="weekPlanFormData" :rules="rules" label-width="100px" label-position="top">
|
||||
<block v-for="(item, index) in OrdinalDate">
|
||||
<view v-for="(item, index) in OrdinalDate">
|
||||
<view class="white-bg" :class="index==0?'white-bg-2':'white-bg-3'">
|
||||
<view class="w-b-title" @click="handleExpand(index)">
|
||||
{{ weekPlanFormData[item] }} {{ WeekCN[index] }}
|
||||
@@ -29,7 +29,8 @@
|
||||
</text>
|
||||
</view>
|
||||
|
||||
<view v-show="expandFlag[index]" class="form-con">
|
||||
<!--v-show="expandFlag[index]"-->
|
||||
<view class="form-con" :class="{'show': expandFlag[index], 'hidden': !expandFlag[index]}">
|
||||
<uni-forms-item label="工作类型" :name="getTypeField(index)" :required="index < workDays">
|
||||
<view class="form-picker">
|
||||
<picker @change="handleTypeChange" :range="WORK_TYPE" :data-field="getTypeField(index)">
|
||||
@@ -41,13 +42,13 @@
|
||||
</view>
|
||||
</uni-forms-item>
|
||||
<uni-forms-item label="内容" :name="getEventField(index)" :required="index < workDays">
|
||||
<uni-easyinput type="textarea" autoHeight v-model="weekPlanFormData[getEventField(index)]"
|
||||
<uni-easyinput type="textarea" v-model="weekPlanFormData[getEventField(index)]"
|
||||
placeholder="请输入" class="form-texarea"/>
|
||||
</uni-forms-item>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</uni-forms>
|
||||
|
||||
</view>
|
||||
@@ -62,7 +63,6 @@ import {useRoute} from "vue-router"
|
||||
import {useMessage} from "@/utils/message";
|
||||
import {onLoad} from "@dcloudio/uni-app";
|
||||
import {updateWeekPlanList, addPlan} from "@/api/crm/plan/updatePlan";
|
||||
import {getUserInfo} from "@/api/crm/plan/getPlan";
|
||||
import {getDate} from "@/utils/datetime";
|
||||
import {getWeek2, getCurrentWeekNum} from "./dateTimeUtils";
|
||||
|
||||
@@ -129,13 +129,6 @@ let instance = null;
|
||||
// 初始化创建任务
|
||||
let initCreate = (params) => {
|
||||
const {itemList, selectIndex} = params;
|
||||
// 获取用户信息
|
||||
// getUserInfo().then(res => {
|
||||
// userInfo.value = res.user;
|
||||
// console.log(route.path, ":用户信息获取成功");
|
||||
// }).catch(err => {
|
||||
// console.warn(err, "用户信息获取失败")
|
||||
// });
|
||||
console.log(route.path, `:创建${itemList[selectIndex]}计划`);
|
||||
title.value = "创建周计划";
|
||||
currentEditDate.value.yearMonth = getDate({format: true}).substring(0, 7); // 只要年月
|
||||
@@ -301,6 +294,7 @@ const submitForm = async () => {
|
||||
.white-bg {
|
||||
width: 690rpx;
|
||||
margin: 0;
|
||||
padding-bottom: 0;
|
||||
border-radius: 8px 8px 0 0;
|
||||
}
|
||||
|
||||
@@ -320,10 +314,17 @@ const submitForm = async () => {
|
||||
|
||||
.form-con {
|
||||
padding: 30rpx 0 0;
|
||||
height: 500rpx;
|
||||
overflow: hidden;
|
||||
transition: height 0.3s;
|
||||
}
|
||||
|
||||
:deep(.form-con .uni-forms-item) {
|
||||
margin-bottom: 22px !important;
|
||||
}
|
||||
|
||||
.hidden{
|
||||
height: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user