Browse Source

refactor: deliver检查人重构;更新真实数据的检查人

deliver
wally 4 years ago
parent
commit
ce808c42b4
  1. 1
      CHANGELOG.md
  2. 6
      apis/plugin.js
  3. 8
      common/styles/theme/default.scss
  4. 144
      components/Reviewer/Reviewer.vue
  5. 62
      plugins/p-deliver/p-deliver.vue

1
CHANGELOG.md

@ -43,6 +43,7 @@
app.vue | 修复获取token报错的问题 | [9120d54](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/9120d54)
createTask | 修复createTask v-model的问题 | [b20d3f0](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/b20d3f0)
- | defineExpose, defineEmits不需要引入 | [902cacc](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/902cacc)
- | 修复p-deliver报错taskRef的问题 | [880cf7c](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/880cf7c)
- | 修复一些内容 | [3cdb1ce](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/3cdb1ce)
- | 删除多余的引入 | [050b12a](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/050b12a)
- | 插件接口修改 | [53c6b90](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/53c6b90)

6
apis/plugin.js

@ -1,13 +1,12 @@
import Config from '@/common/js/config.js';
const apiUrl = Config.apiUrl;
const { apiUrl } = Config;
const defaultwbs = `${apiUrl}/defaultwbs`;
export function setupPlugin(app) {
uni.$u.api = { ...uni.$u.api } || {};
// 获取插件信息
uni.$u.api.getOtherPlugin = param =>
uni.$u.post(`${apiUrl}/pluginshop/plugin/query?pluginId=${param.pluginId}&styleType=${param.styleType}`);
uni.$u.api.getOtherPlugin = param => uni.$u.post(`${apiUrl}/pluginshop/plugin/query?pluginId=${param.pluginId}&styleType=${param.styleType}`);
// 查询子任务
uni.$u.api.findSonTask = param => uni.$u.post(`${defaultwbs}/task/findSonTask`, param);
@ -19,6 +18,7 @@ export function setupPlugin(app) {
uni.$u.api.queryDeliverOfTask = param => uni.$u.post(`${defaultwbs}/deliver/queryDeliverOfTask`, param);
// 检查交付物
uni.$u.api.checkDeliver = param => uni.$u.post(`${defaultwbs}/deliver/checkDeliver`, param);
// v4.0
// 根据任务id获取任务的交付物信息
uni.$u.api.getDeliverByTaskId = param => uni.$u.post(`${defaultwbs}/deliver/getDeliver`, param);
}

8
common/styles/theme/default.scss

@ -4,13 +4,7 @@
.u-card {
font-size: 16px !important;
background-color: #f3f3f3 !important;
.btns{
color: #007aff;
}
.active {
background-color: #2979ff;
color: #ffffff;
}
.mask {
position: absolute;
top: 0;

144
components/Reviewer/Reviewer.vue

@ -1,110 +1,44 @@
<template>
<view class="deliverFoot border border-solid border-gray-300 rounded-md mt-3 p-2" @click="changeIcon">
<view class="top flex justify-between">
<view class="mr-3 text-sm">
审核人
</view>
<!-- 展示选择的审核人 -->
<view class="flex approver item-center truncate justify-end flex-1 text-sm" v-show="isUicon">
<view v-for="item in computedDelivers">
<view v-show="item.checked" class="mx-1 relative">
<!-- <u-badge :is-dot="true" is-center></u-badge> -->
{{item.name}}
</view>
</view>
</view>
<!-- 点击更换图标 -->
<view>
<u-icon v-if="isUicon" name="arrow-down" ></u-icon>
<u-icon v-else="isUicon" name="arrow-up" ></u-icon>
</view>
</view>
<!-- 隐藏的审核人选项 -->
<view v-show="!isUicon" class="foot mt-2 flex flex-wrap">
<u-button
v-for="item in delivers"
size="mini" class="my-1 mx-2"
@click="item.checked = !item.checked"
:class="item.checked ? 'active' : '' "
>
{{item.name}}
</u-button>
</view>
</view>
<view class="border border-solid border-gray-300 rounded-md mt-3 p-2" @click="collapsed = !collapsed">
<view class="top flex justify-between">
<view class="mr-3 text-sm">审核人</view>
<!-- 展示选择的审核人 -->
<view class="flex item-center truncate justify-end flex-1 text-sm">
<view v-for="item in showCheckers" class="mx-1">
<!-- <u-badge :is-dot="true" is-center></u-badge> -->
{{ item.name }}
</view>
<view class="mx-1" v-show="checkedDelivers.length > 3">...</view>
</view>
<!-- 点击更换图标 -->
<u-icon :name="collapsed ? 'arrow-down' : 'arrow-up'"></u-icon>
</view>
<!-- 隐藏的审核人选项 -->
<view v-show="!collapsed" class="foot mt-2 flex flex-wrap">
<u-button v-for="item in delivers" :type="item.checked ? 'primary' : 'default'" size="mini" class="my-1 mx-2" @click="item.checked = !item.checked">{{ item.name }}</u-button>
</view>
</view>
</template>
<script setup>
import {ref , reactive , computed }from 'vue'
//
let isUicon = ref('true')
let arrList = ref([{
checked:true,
name:'冯教授'
}])
//
const delivers = reactive([
{
checked:true,
name:'冯教授'
},
{
checked:false,
name:'陈历珺'
},
{
checked:false,
name:'张野'
},
{
checked:false,
name:'宋瑞芳'
},
{
checked:false,
name:'张斌'
},
{
checked:false,
name:'孙方圆'
}
])
//
const computedDelivers = computed(()=>{
let arr = [];
delivers.forEach((item)=>{
if(item.checked){
arr.push(item)
}
if(arr.length>3){
arr = arr.splice(0,3)
arr[3] = {checked:true,name:'...'}
}
})
return arr
})
//
function changeIcon(){
isUicon.value = !isUicon.value
let arr = [];
delivers.forEach((item)=>{
if(item.checked){
arr.push(item)
}
})
arrList.value = arr
// console.log(arrList.value)
}
// defineExpose({
//   arrList
// })
import { ref, reactive, computed } from 'vue';
import { useStore } from 'vuex';
const store = useStore();
//
let collapsed = ref('true');
// store
//
const delivers = computed(() => store.state.role.members);
//
const checkedDelivers = computed(() => delivers.value.filter(item => item.checked));
//
const showCheckers = computed(() => {
return checkedDelivers.value.length > 3 ? checkedDelivers.value.slice(0, 3) : checkedDelivers.value;
})
</script>
<style lang="scss">
</style>

62
plugins/p-deliver/p-deliver.vue

@ -22,21 +22,17 @@
<!-- 插件上传方式 -->
<view>
<view class="linkBox">
<u-input v-model="linkValue" type="text" :border="true" placeholder="请输入交付物地址/链接" class="input"> </u-input>
</view>
<view class="linkBox"><u-input v-model="linkValue" type="text" :border="true" placeholder="请输入交付物地址/链接" class="input"></u-input></view>
<view class="mt-3">
<u-button size="mini" :plain="true" class="mr-3 btns" @click="paste">粘贴</u-button>
<u-button size="mini" :plain="true" class="mr-3 btns" @click="uploadFile">文件</u-button>
<u-button size="mini" :plain="true" class="mr-3 btns" @click="uploadPhoto">拍照</u-button>
<u-button size="mini" :plain="true" type="primary" class="mr-3" @click="paste">粘贴</u-button>
<u-button size="mini" :plain="true" type="primary" class="mr-3" @click="uploadFile">文件</u-button>
<u-button size="mini" :plain="true" type="primary" class="mr-3" @click="uploadPhoto">拍照</u-button>
</view>
</view>
<!-- 编辑和删除的遮罩层 -->
<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>
@ -46,14 +42,12 @@
<u-mask :show="showEditModal" @click="showEditModal = false">
<view class="warp">
<view class="rect rounded-md" @tap.stop>
<view class="text-center my-7 font-semibold"> 交付物标题名称 </view>
<view class="">
<u-input :border="true" class="m-5" placeholder="请输入交付物名称" v-model="newInputRef"></u-input>
</view>
<view class="text-center my-7 font-semibold">交付物标题名称</view>
<view class=""><u-input :border="true" class="m-5" placeholder="请输入交付物名称" v-model="newInputRef"></u-input></view>
<!-- TODO: 边框 -->
<view class="flex justify-around h-12 mt-7 justify-self-stretch boxModalBorder">
<view class="leading-12 flex-1 text-center deleteModalBorder" @click="showEditModal = false"> 取消 </view>
<view class="text-blue-700 leading-12 flex-1 text-center" @click="confirmEditDeliverName"> 确定 </view>
<view class="leading-12 flex-1 text-center deleteModalBorder" @click="showEditModal = false">取消</view>
<view class="text-blue-700 leading-12 flex-1 text-center" @click="confirmEditDeliverName">确定</view>
</view>
</view>
</view>
@ -62,7 +56,7 @@
<!-- 删除二次提示的modal -->
<!-- 插件审核人员选择 -->
<Reviewer ref="reviewerData"></Reviewer>
<Reviewer ref="reviewerData" />
</view>
</template>
@ -98,7 +92,7 @@ const submitState = computed(() => !linkValue.value);
console.log('error: ', error);
uni.$ui.showToast('获取交付物信息失败');
}
}());
})();
// (async function getDeliverData(){
// try{
@ -112,16 +106,31 @@ const submitState = computed(() => !linkValue.value);
// uni.$ui.showToast('')
// }
// })
//
function submit() {
//
function validateDeliverForm() {
const reg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?$/;
if (!reg.test(linkValue.value)) {
// toast
uni.$ui.showToast('请输入正确的链接');
} else {
uBadgeShow.value = true;
return false;
}
//
if (!checkedDelivers.value || !checkedDelivers.value.length) {
uni.$ui.showToast('请选择检查人');
return false;
}
return true;
}
//
function submit() {
if (!validateDeliverForm()) return;
// else {
// //
// uBadgeShow.value = true;
// }
}
//
@ -134,7 +143,7 @@ function paste() {
uni.getClipboardData({
success(res) {
linkValue.value = res.data;
},
}
});
}
@ -145,7 +154,7 @@ async function uploadFile() {
'https://test.tall.wiki/filedeal/file/upload/multiple',
{},
['.xls', '.xlsx', '.zip', '.exe', '.pdf', '.doc', '.docx', '.ppt', '.pptx'],
'files',
'files'
);
// console.log(data[0])
linkValue.value = data[0].visitUrl;
@ -161,7 +170,7 @@ async function uploadPhoto() {
'https://test.tall.wiki/filedeal/file/upload/multiple',
{},
['.xls', '.xlsx', '.zip', '.exe', '.pdf', '.doc', '.docx', '.ppt', '.pptx'],
'files',
'files'
);
// console.log(data[0])
linkValue.value = data[0].visitUrl;
@ -205,5 +214,4 @@ async function confirmDelete() {
}
</script>
<style scoped lang="scss">
</style>
<style scoped lang="scss"></style>

Loading…
Cancel
Save