Browse Source

refactor: 细节调整

deliver
wally 4 years ago
parent
commit
7f9cf1f0f5
  1. 1
      CHANGELOG.md
  2. 84
      common/styles/theme/default.scss
  3. 1
      components/Reviewer/Reviewer.vue
  4. 239
      plugins/p-deliver-checker/p-deliver-checker.vue
  5. 11
      plugins/p-deliver/p-deliver.vue

1
CHANGELOG.md

@ -35,6 +35,7 @@
--|--|--
- | calender格式及细节调整 | [db9602b](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/db9602b)
- | 交付物相关细节调整 | [87ae00d](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/87ae00d)
- | 细节调整 | [ebf678f](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/ebf678f)
- | 细节调整 | [759ef52](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/759ef52)
- | 细节调整 | [bdd5f87](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/bdd5f87)

84
common/styles/theme/default.scss

@ -13,47 +13,47 @@
height: 100%;
z-index: 100;
}
.box-modal-border{
border-top:1px solid #D1D5DB;
}
.delete-modal-border{
border-right:1px solid #D1D5DB ;
}
.box-modal-border {
border-top: 1px solid #d1d5db;
}
.delete-modal-border {
border-right: 1px solid #d1d5db;
}
}
.warp {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.rect {
width: 80%;
height: 375rpx;
background-color: #fff;
}
.link-box {
:deep(.input) {
.u-input__input {
color: #60a5fa;
}
}
}
// 审核插件
.common-list {
height: 12.5rem;
overflow-y: scroll;
view {
border-bottom: 1px solid #e5e7eb;
}
}
.rect2 {
width: 80%;
height: 1000rpx;
background-color: #fff;
}
.rect3 {
width: 80%;
height: 895rpx;
background-color: #fff;
}
.warp {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.rect {
width: 80%;
height: 375rpx;
background-color: #fff;
}
.linkBox{
::v-deep .input{
.u-input__input{
color: #60A5FA;
}
}
}
// 审核插件
.common-list{
height: 12.5rem;
overflow-y: scroll;
view{
border-bottom: 1px solid #E5E7EB;
}
}
.rect2{
width: 80%;
height: 1000rpx;
background-color: #fff;
}
.rect3{
width: 80%;
height: 895rpx;
background-color: #fff;
}
}

1
components/Reviewer/Reviewer.vue

@ -43,6 +43,7 @@ const checkers = computed(() => store.state.role.members);
//
const checkedCheckers = computed(() => checkers.value.filter(item => item.checked) || []);
//
//
const showCheckers = computed(() => {

239
plugins/p-deliver-checker/p-deliver-checker.vue

@ -1,118 +1,125 @@
<template>
<theme>
<view class="bg-white rounded-md">
<view class="p-3 flex justify-between" @click="iconRef = !iconRef">
<span class="relative p-1">
<!-- <u-badge :is-dot="true" is-center></u-badge> -->
{{ nameRef }}
</span>
<u-icon :name="iconRef ? 'arrow-right' : 'arrow-down'"></u-icon>
<view class="bg-white rounded-md">
<view class="p-3 flex justify-between" @click="collapsed = !collapsed">
<span class="relative p-1">
<!-- <u-badge :is-dot="true" is-center></u-badge> -->
{{ checkData ? checkData.deliverName : '' }}
</span>
<!-- 展开折叠按钮 -->
<u-icon :name="collapsed ? 'arrow-up' : 'arrow-down'"></u-icon>
</view>
<view class="p-3 pt-0" v-show="collapsed">
<!-- 提交人和时间信息 -->
<view class="text-gray-400">
<!-- <span class="mr-2" v-if="checkData && checkData.submitter">{{ checkData.submitter }}</span> -->
<span v-if="checkData && checkData.submitTime"> {{ dayjs(+checkData.submitTime).format('MM-DD HH:mm') }}</span>
</view>
<view class="p-3 pt-0" v-show="iconRef">
<!-- 提交人和时间信息 -->
<view class="text-gray-400">
<span class="mr-2">{{ submitter }}</span> <span> {{ dayjs(+timeRef).format('MM-DD HH:mm') }}</span>
</view>
<!-- 提交的链接信息 -->
<view class="w-64 break-all text-blue-400 py-2"> {{ linkRef }} </view>
<!-- 审核人信息 -->
<view class="text-gray-400 flex justify-between">
<span>审核</span>
<span class="text-blue-400" @click="moreRecords">更多记录</span>
</view>
<view class="px-2">
<!-- 遍历审核人信息 -->
<view class="mt-3 text-sm flex justify-between" v-for="item in checkerList">
<!-- 提交的链接信息 -->
<view class="w-64 break-all text-blue-400 py-2" v-if="checkData && checkData.details && checkData.details[0]">
{{ checkData.details[0] }}
</view>
<!-- 审核人信息 -->
<view class="text-gray-400 flex justify-between">
<span>审核</span>
<span class="text-blue-400" @click="moreRecords">更多记录</span>
</view>
<view class="px-2" v-if="checkData && checkData.checkerList">
<!-- 遍历审核人信息 -->
<view class="mt-3 text-sm flex justify-between" v-for="item in checkData.checkerList">
<view>
<view>{{ item.checkerName }}</view>
<view class="my-1">{{ item.remark }}</view>
<view class="my-1" v-if="item.checkTime > 0">{{ dayjs(+item.checkTime).format('MM-DD HH:mm') }}</view>
</view>
<!-- 不是自己 -->
<view v-show="item.isMine !== 1">{{ item.status === null ? '待审核' : item.status === 1 ? '已通过' : '已驳回' }}</view>
<!-- 是当前审核人 且未审核状态 -->
<view v-show="item.isMine === 1 && item.status === null">
<u-button size="mini" shape="circle" class="mr-4 h-1-4 leading-1-4" type="primary" @click="approvedModal = true">通过</u-button>
<u-button size="mini" shape="circle" class="h-1-4 leading-1-4" type="error" @click="rebutModal = true">驳回</u-button>
</view>
<!-- 自己是审核人 且审核过 当前审核人的审核状态并展示得分情况 -->
<view v-show="item.isMine === 1 && item.status !== null" class="text-sm">
<view>
<view>{{ item.checkerName }}</view>
<view class="my-1">{{ item.remark }}</view>
<view class="my-1" v-if="item.checkTime > 0">{{ dayjs(+item.checkTime).format('MM-DD HH:mm') }}</view>
</view>
<view v-show="item.isMine !== 1">{{ item.status == null ? '待审核' : item.status === 1 ? '已通过' : '已驳回' }}</view>
<!-- 判断是否是当前审核人 -->
<view v-show="item.isMine === 1 && item.status == null">
<u-button size="mini" shape="circle" class="mr-4 h-1-4 leading-1-4" type="primary" @click="approved">通过</u-button>
<u-button size="mini" shape="circle" class="h-1-4 leading-1-4" type="error" @click="rebut">驳回</u-button>
{{ item.status == '1' ? '已通过' : '已驳回' }}
</view>
<!-- 当前审核人的审核状态并展示得分情况 -->
<view v-show="item.isMine === 1 && item.status !== null" class="text-sm">
<view>
{{ item.status == '1' ? '已通过' : '已驳回' }}
</view>
<view v-if="item.score > 0">
<u-circle-progress active-color="#FA8C16" :percent="item.score" width="90" border-width="7" class="mt-2">
<view class="u-progress-content">
<view class="progress-dot text-white text-center">{{ item.score }}</view>
</view>
</u-circle-progress>
</view>
<view v-if="item.score > 0">
<u-circle-progress active-color="#FA8C16" :percent="item.score" width="90" border-width="7" class="mt-2">
<view class="u-progress-content">
<view class="progress-dot text-white text-center">{{ item.score }}</view>
</view>
</u-circle-progress>
</view>
</view>
</view>
</view>
</view>
<!-- 审核通过的modal -->
<u-mask :show="approvedModal" @click="approvedModal = false">
<view class="warp">
<view class="rect2" @tap.stop>
<!-- 通过modal的标题 -->
<view class="text-center my-7 font-semibold"> 审核通过 </view>
<!-- 通过modal的进步器和滑动选择器 -->
<view class="flex justify-between mx-5">
<u-number-box v-model="score" size="30" input-width="50"></u-number-box>
<view class="w-32 pt-4">
<u-slider v-model="score" active-color="#34D399"></u-slider>
</view>
<!-- 审核通过的modal -->
<u-mask :show="approvedModal" @click="approvedModal = false">
<view class="warp">
<view class="rect2" @tap.stop>
<!-- 通过modal的标题 -->
<view class="text-center my-7 font-semibold"> 审核通过 </view>
<!-- 评分 -->
<view class="flex justify-between mx-5">
<u-number-box v-model="score" size="30" input-width="50" :max="10" :min="0" :step="0.01"></u-number-box>
<view class="w-32 pt-4">
<u-slider v-model="score" active-color="#34D399" :max="10" :min="0" :step="0.01"></u-slider>
</view>
<view>
<textarea
class="border-solid border border-gray-300 m-5 w-58 h-16 p-2 rounded-md"
placeholder="请输入通过建议"
maxlength="30"
v-model="adviceRef"
></textarea>
<view class="common-list">
<view v-for="item in commonWords" class="h-12 leading-12 w-62 mx-5" @click="adviceRef = item">
{{ item }}
</view>
</view>
<view>
<textarea
class="border-solid border border-gray-300 m-5 w-58 h-16 p-2 rounded-md"
placeholder="请输入通过建议"
maxlength="30"
v-model="adviceRef"
></textarea>
<view class="common-list">
<view v-for="item in commonWords" class="h-12 leading-12 w-62 mx-5" @click="adviceRef = item">
{{ item }}
</view>
</view>
<view class="flex justify-around h-12 mt-7 justify-self-stretch box-modal-border">
<view class="leading-12 flex-1 text-center delete-modal-border" @click="approvedModal = false"> 取消 </view>
<view class="text-blue-700 leading-12 flex-1 text-center" @click="confirmAdvice"> 确定 </view>
</view>
</view>
<view class="flex justify-around h-12 mt-7 justify-self-stretch box-modal-border">
<view class="leading-12 flex-1 text-center delete-modal-border" @click="approvedModal = false"> 取消 </view>
<view class="text-blue-700 leading-12 flex-1 text-center" @click="confirmAdvice"> 确定 </view>
</view>
</view>
</u-mask>
</view>
</u-mask>
<!-- 审批驳回的modal -->
<u-mask :show="rebutModal" @click="rebutModal = false">
<view class="warp">
<view class="rect3" @tap.stop>
<!-- 通过modal的标题 -->
<view class="text-center my-6 font-semibold"> 审核驳回 </view>
<view>
<textarea
class="border-solid border border-gray-300 m-5 w-58 h-16 p-2 rounded-md"
placeholder="请输入通过建议"
maxlength="30"
v-model="rebutRef"
></textarea>
<view class="common-list">
<view v-for="item in rebutWords" class="h-12 leading-12 w-62 mx-5" @click="rebutRef = item">
{{ item }}
</view>
<!-- 审批驳回的modal -->
<u-mask :show="rebutModal" @click="rebutModal = false">
<view class="warp">
<view class="rect3" @tap.stop>
<!-- 通过modal的标题 -->
<view class="text-center my-6 font-semibold"> 审核驳回 </view>
<view>
<textarea
class="border-solid border border-gray-300 m-5 w-58 h-16 p-2 rounded-md"
placeholder="请输入通过建议"
maxlength="30"
v-model="rebutRef"
></textarea>
<view class="common-list">
<view v-for="item in rebutWords" class="h-12 leading-12 w-62 mx-5" @click="rebutRef = item">
{{ item }}
</view>
</view>
<view class="flex justify-around h-12 mt-7 justify-self-stretch box-modal-border">
<view class="leading-12 flex-1 text-center delete-modal-border" @click="rebutModal = false"> 取消 </view>
<view class="text-blue-700 leading-12 flex-1 text-center" @click="confirmReject"> 确定 </view>
</view>
</view>
<view class="flex justify-around h-12 mt-7 justify-self-stretch box-modal-border">
<view class="leading-12 flex-1 text-center delete-modal-border" @click="rebutModal = false"> 取消 </view>
<view class="text-blue-700 leading-12 flex-1 text-center" @click="confirmReject"> 确定 </view>
</view>
</view>
</u-mask>
</view>
</theme>
</view>
</u-mask>
</view>
</template>
<script setup>
@ -123,43 +130,29 @@ import dayjs from 'dayjs';
const props = defineProps({ task: { type: Object, default: () => {} } });
const store = useStore();
const nameRef = ref('');
const iconRef = ref(false);
const submitter = ref('黛西');
const timeRef = ref('');
const linkRef = ref('');
const projectId = computed(() => store.getters['project/projectId']);
const collapsed = ref(false);
const checkData = ref(null); //
const approvedModal = ref(false); // modal
const rebutModal = ref(false); // modal
const score = ref(1); //
const score = ref(10); //
const adviceRef = ref(''); //
const rebutRef = ref(''); //
const commonWords = ['加油,再接再厉!', '很棒!', '不错,很详细!', '加油,再接再厉']; //
const rebutWords = ['不详细', '还有需要改进的地方', '驳回审批1', '驳回审批2']; //
const checkerList = ref([]);
// id
const deliverRecordId = computed(() => store.state.deliver.deliverRecordId);
//
(async function getDeliverList() {
const param = { taskId: props.task.id };
const data = await uni.$u.api.getDeliverByTaskId(param);
// console.log(data)
linkRef.value = data.details[0];
timeRef.value = data.submitTime;
nameRef.value = data.deliverName;
checkerList.value = data.checkerList;
}());
//
async function approved() {
approvedModal.value = true;
}
//
function rebut() {
rebutModal.value = true;
}
try {
const param = { taskId: props.task.id };
checkData.value = await uni.$u.api.getDeliverByTaskId(param);
} catch (error) {
console.error('getDeliverList error: ', error);
}
})();
//
function confirmAdvice() {
@ -167,7 +160,7 @@ function confirmAdvice() {
// console.log('')
try {
const param = {
projectId: store.state.project.project.id,
projectId: projectId.value,
deliverRecordId: deliverRecordId.value,
type: 1,
remark: adviceRef.value,
@ -185,7 +178,7 @@ function confirmReject() {
// TODO:
try {
const param = {
projectId: store.state.project.project.id,
projectId: projectId.value,
deliverRecordId: deliverRecordId.value,
type: 2,
remark: rebutRef.value,

11
plugins/p-deliver/p-deliver.vue

@ -24,7 +24,8 @@
:ripple="true"
:loading="submitBtnLoading"
v-show="!uBadgeShow"
>提交</u-button>
>提交</u-button
>
<!-- 查看提交历史的按钮 -->
<u-icon name="arrow-right" class="ml-3" @click="openDeliverHistory"></u-icon>
@ -32,7 +33,7 @@
<!-- 插件上传方式 -->
<view>
<view class="linkBox">
<view class="link-box">
<u-input v-model="linkValue" type="text" :border="true" placeholder="请输入交付物地址/链接" class="input"></u-input>
</view>
<view class="mt-3">
@ -44,7 +45,9 @@
<!-- 编辑和删除的遮罩层 -->
<view class="mask flex items-center justify-center bg-grey" v-show="showMask" @click="showMask = false">
<view class="bg-yellow-500 text-white w-12 h-12 text-center leading-12 rounded-w-12 mx-8" @click.stop="showEditModal = true">修改</view>
<view class="bg-yellow-500 text-white w-12 h-12 text-center leading-12 rounded-w-12 mx-8" @click.stop="showEditModal = true"
>修改</view
>
<view class="bg-red-500 text-white w-12 h-12 text-center leading-12 rounded-w-12 mx-8" @click.stop="deleteDeliver">删除</view>
<!-- 删除的二次提示modal -->
<u-modal v-model="showDeleteModal" :content="content" :show-cancel-button="true" @confirm="confirmDelete"></u-modal>
@ -111,7 +114,7 @@ const checkedCheckers = computed(() => checkers.value.filter(item => item.checke
} catch (error) {
console.log('error: ', error);
}
}());
})();
//
function validateDeliverForm() {

Loading…
Cancel
Save