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. 124
      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) 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) 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) - | 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) - | 修复一些内容 | [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) - | 删除多余的引入 | [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) - | 插件接口修改 | [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'; import Config from '@/common/js/config.js';
const apiUrl = Config.apiUrl; const { apiUrl } = Config;
const defaultwbs = `${apiUrl}/defaultwbs`; const defaultwbs = `${apiUrl}/defaultwbs`;
export function setupPlugin(app) { export function setupPlugin(app) {
uni.$u.api = { ...uni.$u.api } || {}; uni.$u.api = { ...uni.$u.api } || {};
// 获取插件信息 // 获取插件信息
uni.$u.api.getOtherPlugin = param => uni.$u.api.getOtherPlugin = param => uni.$u.post(`${apiUrl}/pluginshop/plugin/query?pluginId=${param.pluginId}&styleType=${param.styleType}`);
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); 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.queryDeliverOfTask = param => uni.$u.post(`${defaultwbs}/deliver/queryDeliverOfTask`, param);
// 检查交付物 // 检查交付物
uni.$u.api.checkDeliver = param => uni.$u.post(`${defaultwbs}/deliver/checkDeliver`, param); uni.$u.api.checkDeliver = param => uni.$u.post(`${defaultwbs}/deliver/checkDeliver`, param);
// v4.0
// 根据任务id获取任务的交付物信息 // 根据任务id获取任务的交付物信息
uni.$u.api.getDeliverByTaskId = param => uni.$u.post(`${defaultwbs}/deliver/getDeliver`, param); uni.$u.api.getDeliverByTaskId = param => uni.$u.post(`${defaultwbs}/deliver/getDeliver`, param);
} }

8
common/styles/theme/default.scss

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

124
components/Reviewer/Reviewer.vue

@ -1,110 +1,44 @@
<template> <template>
<view class="deliverFoot border border-solid border-gray-300 rounded-md mt-3 p-2" @click="changeIcon"> <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="top flex justify-between">
<view class="mr-3 text-sm"> <view class="mr-3 text-sm">审核人</view>
审核人
</view>
<!-- 展示选择的审核人 --> <!-- 展示选择的审核人 -->
<view class="flex approver item-center truncate justify-end flex-1 text-sm" v-show="isUicon"> <view class="flex item-center truncate justify-end flex-1 text-sm">
<view v-for="item in computedDelivers"> <view v-for="item in showCheckers" class="mx-1">
<view v-show="item.checked" class="mx-1 relative">
<!-- <u-badge :is-dot="true" is-center></u-badge> --> <!-- <u-badge :is-dot="true" is-center></u-badge> -->
{{item.name}} {{ item.name }}
</view>
</view> </view>
<view class="mx-1" v-show="checkedDelivers.length > 3">...</view>
</view> </view>
<!-- 点击更换图标 --> <!-- 点击更换图标 -->
<view> <u-icon :name="collapsed ? 'arrow-down' : 'arrow-up'"></u-icon>
<u-icon v-if="isUicon" name="arrow-down" ></u-icon>
<u-icon v-else="isUicon" name="arrow-up" ></u-icon>
</view>
</view> </view>
<!-- 隐藏的审核人选项 --> <!-- 隐藏的审核人选项 -->
<view v-show="!isUicon" class="foot mt-2 flex flex-wrap"> <view v-show="!collapsed" class="foot mt-2 flex flex-wrap">
<u-button <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>
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> </view>
</template> </template>
<script setup> <script setup>
import { ref, reactive, computed } from 'vue';
import {ref , reactive , computed }from 'vue' import { useStore } from 'vuex';
//
let isUicon = ref('true') const store = useStore();
let arrList = ref([{ //
checked:true, let collapsed = ref('true');
name:'冯教授'
}]) // store
// //
const delivers = reactive([ const delivers = computed(() => store.state.role.members);
{
checked:true, //
name:'冯教授' const checkedDelivers = computed(() => delivers.value.filter(item => item.checked));
}, //
{ const showCheckers = computed(() => {
checked:false, return checkedDelivers.value.length > 3 ? checkedDelivers.value.slice(0, 3) : checkedDelivers.value;
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
// })
</script> </script>
<style lang="scss">
</style>

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

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

Loading…
Cancel
Save