Browse Source

refactor: 审查接口核对完成

deliver
Min5203 4 years ago
parent
commit
43ae60495a
  1. 1
      CHANGELOG.md
  2. 386
      components/PrettyExchange/PrettyExchange.vue
  3. 96
      plugins/p-deliver-checker/p-deliver-checker.vue
  4. 11
      plugins/p-deliver/p-deliver.vue
  5. 3
      store/deliver/actions.js
  6. 11
      store/deliver/getters.js
  7. 12
      store/deliver/index.js
  8. 62
      store/deliver/mutations.js
  9. 6
      store/deliver/state.js

1
CHANGELOG.md

@ -78,6 +78,7 @@
- | 交付物插件代码审查 | [5f4d47b](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/5f4d47b)
- | 审核插件的基本信息展示 | [4f2815f](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/4f2815f)
- | 提交交付物,查看提交记录,修改交付物标题的接口核对完成 | [7c08530](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/7c08530)
- | 提交交付物,修改交付物名称,查看交付物历史记录接口完成 | [f222bdf](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/f222bdf)
- | 完善历史记录页面和修改插件的TODO | [3d58c15](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/3d58c15)
- | 细节调整 | [3d1c463](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/3d1c463)
- | 项目列表 | [0486e98](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/0486e98)

386
components/PrettyExchange/PrettyExchange.vue

@ -3,24 +3,24 @@
<scroll-view scroll-y="true">
<view v-if="!data.changeEvent">
<view :id="'cu-' + index" :key="item.id" class="cu-item flex-col" v-for="(item, index) in data.itemList">
<ProjectItem
class="w-full"
:index="index"
:item="item"
<ProjectItem
class="w-full"
:index="index"
:item="item"
:menuList="data.menuList"
@setData="setData"
@openSubProject="openSubProject"
@openSubProject="openSubProject"
/>
</view>
</view>
<view v-else>
<view
:id="'cu-' + index"
:key="index"
<view
:id="'cu-' + index"
:key="index"
:style="{ 'background-color': item.color }"
@touchend="stops($event, index)"
@touchmove.stop.prevent="move"
@touchend="stops($event, index)"
@touchmove.stop.prevent="move"
@touchstart="start($event, index)"
class="cu-item flex-col" v-for="(item, index) in data.itemList"
>
@ -72,12 +72,12 @@
<!-- 状态 -->
<view
:class="
subItem.status === 0
? 'text-blue-400 bg-blue-100'
: subItem.status === 1
? 'text-green-400 bg-green-100'
: subItem.status === 2
? 'text-red-400 bg-red-100'
subItem.status === 0
? 'text-blue-400 bg-blue-100'
: subItem.status === 1
? 'text-green-400 bg-green-100'
: subItem.status === 2
? 'text-red-400 bg-red-100'
: 'text-gray-400 bg-gray-100'
"
class="px-2 text-xs text-gray-400 bg-gray-100 rounded-full flex-shrink-0">
@ -118,7 +118,7 @@
import ProjectItem from '@/components/Projects/ProjectItem.vue';
import { useStore } from 'vuex';
import dayjs from 'dayjs';
const store = useStore();
const projects = computed(() => store.state.project.projects);
const data = ref({
@ -138,7 +138,7 @@
itemList: [],
setSubItem: false,
changeEvent: false,
showMenu: false,
tips: {
text: '',
@ -152,7 +152,7 @@
showBorder: false,
showItemIndex: undefined,
});
watch(projects, (val) => {
data.value.itemList = val;
data.value.itemList.forEach(item => {
@ -161,7 +161,7 @@
item.showTopBorder = false;
});
})
onMounted(() => {
data.value.itemList = projects.value;
data.value.itemList.forEach(item => {
@ -170,7 +170,7 @@
item.showTopBorder = false;
});
});
//
function openSubProject(length, index) {
setProjectItemShow({ index, show: data.value.itemList[index].show ? false : true });
@ -179,7 +179,7 @@
}
data.value.showItemIndex = index;
}
//
function getDate() {
const query = uni.createSelectorQuery().in(this);
@ -189,47 +189,47 @@
data.value.beginleft = res.left;
}).exec();
}
function setData(flag, projectId, tips) {
data.value.showMenu = flag;
data.value.projectId = projectId;
data.value.tips = tips;
}
function chooseAction(e) {
let obj = { index: e, projectId: data.value.projectId };
// this.$emit('chooseAction', data);
actionFun(obj);
function chooseAction(e) {
let obj = { index: e, projectId: data.value.projectId };
// this.$emit('chooseAction', data);
actionFun(obj);
}
//
function actionFun(obj) {
let action = data.value.menuList[obj.index].text;
if (action === '排序') {
data.value.changeEvent = true;
uni.$ui.showToast('请移动进行排序');
}
if (action === '删除') {
data.value.changeEvent = false;
delProject(obj.projectId);
}
if (data.value.showItemIndex !== undefined) {
setProjectItemShow({ index: data.value.showItemIndex, show: true });
}
//
function actionFun(obj) {
let action = data.value.menuList[obj.index].text;
if (action === '排序') {
data.value.changeEvent = true;
uni.$ui.showToast('请移动进行排序');
}
if (action === '删除') {
data.value.changeEvent = false;
delProject(obj.projectId);
}
if (data.value.showItemIndex !== undefined) {
setProjectItemShow({ index: data.value.showItemIndex, show: true });
}
}
function isNumber(val) {
return val === +val;
}
function start(e, index) {
console.log('开始', e);
setTimeout(() => {
getDate();
}, 300);
if (isNumber(index)) {
data.value.setSubItem = false;
const query = uni.createSelectorQuery().in(this);
@ -248,7 +248,7 @@
query.select(`#cu-${arr[0] - 0}`).boundingClientRect(res => {
data.value.itemHeight = res.height;
}).exec();
query.select(`#cu-${index}`).boundingClientRect(res => {
data.value.moveTop = res.top;
data.value.moveLeft = res.left;
@ -258,149 +258,149 @@
}).exec();
}
}
function move(e, length) {
console.log('移动');
data.value.showMoveImage = true; //
const touch = e.touches[0];
if (data.value.deltaLeft == 0) {
//
data.value.deltaLeft = touch.pageX - data.value.moveLeft;
data.value.deltaTop = touch.pageY - data.value.moveTop;
}
data.value.moveLeft = touch.pageX - data.value.deltaLeft;
data.value.moveTop = touch.pageY - data.value.deltaTop;
function move(e, length) {
console.log('移动');
data.value.showMoveImage = true; //
const touch = e.touches[0];
if (data.value.deltaLeft == 0) {
//
data.value.deltaLeft = touch.pageX - data.value.moveLeft;
data.value.deltaTop = touch.pageY - data.value.moveTop;
}
data.value.moveLeft = touch.pageX - data.value.deltaLeft;
data.value.moveTop = touch.pageY - data.value.deltaTop;
let lastIndex = (lastIndex = findOverIndex(touch.pageY, length));
console.log('111111', lastIndex);
// 线
for (let i = 0; i < data.value.itemList.length; i++) {
if (data.value.moveLeft > 35) {
data.value.itemList[i].showBorder = false;
data.value.itemList[i].showTopBorder = false;
if (i === lastIndex) {
data.value.itemList[i].showSubBorder = true;
} else {
data.value.itemList[i].showSubBorder = false;
}
} else {
if (lastIndex === -1) {
data.value.itemList[0].showTopBorder = true;
data.value.itemList[i].showSubBorder = false;
data.value.itemList[i].showBorder = false;
} else {
data.value.itemList[i].showSubBorder = false;
data.value.itemList[i].showTopBorder = false;
if (i === lastIndex) {
data.value.itemList[i].showBorder = true;
} else {
data.value.itemList[i].showBorder = false;
}
}
}
}
console.log('111111', lastIndex);
// 线
for (let i = 0; i < data.value.itemList.length; i++) {
if (data.value.moveLeft > 35) {
data.value.itemList[i].showBorder = false;
data.value.itemList[i].showTopBorder = false;
if (i === lastIndex) {
data.value.itemList[i].showSubBorder = true;
} else {
data.value.itemList[i].showSubBorder = false;
}
} else {
if (lastIndex === -1) {
data.value.itemList[0].showTopBorder = true;
data.value.itemList[i].showSubBorder = false;
data.value.itemList[i].showBorder = false;
} else {
data.value.itemList[i].showSubBorder = false;
data.value.itemList[i].showTopBorder = false;
if (i === lastIndex) {
data.value.itemList[i].showBorder = true;
} else {
data.value.itemList[i].showBorder = false;
}
}
}
}
}
function stops(e, index, length) {
console.log('结束');
const touch = e.mp.changedTouches[0];
let lastIndex = (lastIndex = findOverIndex(touch.pageY, length));
//
for (let i = 0; i < data.value.itemList.length; i++) {
//
if (data.value.itemList[i].showTopBorder) {
if (isNumber(index)) {
let Value = data.value.itemList[index];
data.value.itemList.unshift(Value);
data.value.itemList.splice(index + 1, 1);
} else {
let arr = index.split('-');
let Value = data.value.itemList[arr[0] - 0].sonProjectList[arr[1] - 0];
data.value.itemList.unshift(Value);
data.value.itemList[arr[0] - 0].sonProjectList.splice([arr[1] - 0], 1);
const options = {
id: Value.id,
parentId: 0,
};
this.$emit('change', options);
}
//
clearSet(i);
this.$emit('change', data.value.itemList);
return;
}
//
if (data.value.itemList[i].showBorder) {
if (isNumber(index)) {
let Value = data.value.itemList[index];
data.value.itemList.splice(i + 1, 0, Value);
if (i < index) {
data.value.itemList.splice(index + 1, 1);
} else {
data.value.itemList.splice(index, 1);
}
} else {
let arr = index.split('-');
let Value = data.value.itemList[arr[0] - 0].sonProjectList[arr[1] - 0];
data.value.itemList.splice(i + 1, 0, Value);
data.value.itemList[arr[0] - 0].sonProjectList.splice([arr[1] - 0], 1);
const options = {
id: Value.id,
parentId: 0,
};
this.$emit('change', options);
}
//
clearSet(i);
this.$emit('change', data.value.itemList);
return;
}
//
if (data.value.itemList[i].showSubBorder) {
if (isNumber(index)) {
let Value = data.value.itemList[index];
if (data.value.itemList[lastIndex - 1].sonProjectList && data.value.itemList[lastIndex - 1].sonProjectList.length) {
data.value.itemList[lastIndex - 1].sonProjectList.push(Value);
} else {
data.value.itemList[lastIndex].sonProjectList = [Value];
}
data.value.itemList.splice(index, 1);
//
clearSet(i);
const options = {
id: Value.id,
parentId: data.value.itemList[lastIndex - 1].id,
};
this.$emit('change', options);
} else {
let arr = index.split('-');
let Value = data.value.itemList[arr[0] - 0].sonProjectList[arr[1] - 0];
if (data.value.itemList[lastIndex].sonProjectList && data.value.itemList[lastIndex].sonProjectList.length) {
data.value.itemList[lastIndex].sonProjectList.push(Value);
} else {
data.value.itemList[lastIndex].sonProjectList = [Value];
}
data.value.itemList[arr[0] - 0].sonProjectList.splice([arr[1] - 0], 1);
//
clearSet(i);
const options = {
id: Value.id,
parentId: data.value.itemList[lastIndex].id,
};
this.$emit('change', options);
const options1 = {
id: Value.id,
parentId: 0,
};
this.$emit('change', options1);
}
return;
}
}
function stops(e, index, length) {
console.log('结束');
const touch = e.mp.changedTouches[0];
let lastIndex = (lastIndex = findOverIndex(touch.pageY, length));
//
for (let i = 0; i < data.value.itemList.length; i++) {
//
if (data.value.itemList[i].showTopBorder) {
if (isNumber(index)) {
let Value = data.value.itemList[index];
data.value.itemList.unshift(Value);
data.value.itemList.splice(index + 1, 1);
} else {
let arr = index.split('-');
let Value = data.value.itemList[arr[0] - 0].sonProjectList[arr[1] - 0];
data.value.itemList.unshift(Value);
data.value.itemList[arr[0] - 0].sonProjectList.splice([arr[1] - 0], 1);
const options = {
id: Value.id,
parentId: 0,
};
this.$emit('change', options);
}
//
clearSet(i);
this.$emit('change', data.value.itemList);
return;
}
//
if (data.value.itemList[i].showBorder) {
if (isNumber(index)) {
let Value = data.value.itemList[index];
data.value.itemList.splice(i + 1, 0, Value);
if (i < index) {
data.value.itemList.splice(index + 1, 1);
} else {
data.value.itemList.splice(index, 1);
}
} else {
let arr = index.split('-');
let Value = data.value.itemList[arr[0] - 0].sonProjectList[arr[1] - 0];
data.value.itemList.splice(i + 1, 0, Value);
data.value.itemList[arr[0] - 0].sonProjectList.splice([arr[1] - 0], 1);
const options = {
id: Value.id,
parentId: 0,
};
this.$emit('change', options);
}
//
clearSet(i);
this.$emit('change', data.value.itemList);
return;
}
//
if (data.value.itemList[i].showSubBorder) {
if (isNumber(index)) {
let Value = data.value.itemList[index];
if (data.value.itemList[lastIndex - 1].sonProjectList && data.value.itemList[lastIndex - 1].sonProjectList.length) {
data.value.itemList[lastIndex - 1].sonProjectList.push(Value);
} else {
data.value.itemList[lastIndex].sonProjectList = [Value];
}
data.value.itemList.splice(index, 1);
//
clearSet(i);
const options = {
id: Value.id,
parentId: data.value.itemList[lastIndex - 1].id,
};
this.$emit('change', options);
} else {
let arr = index.split('-');
let Value = data.value.itemList[arr[0] - 0].sonProjectList[arr[1] - 0];
if (data.value.itemList[lastIndex].sonProjectList && data.value.itemList[lastIndex].sonProjectList.length) {
data.value.itemList[lastIndex].sonProjectList.push(Value);
} else {
data.value.itemList[lastIndex].sonProjectList = [Value];
}
data.value.itemList[arr[0] - 0].sonProjectList.splice([arr[1] - 0], 1);
//
clearSet(i);
const options = {
id: Value.id,
parentId: data.value.itemList[lastIndex].id,
};
this.$emit('change', options);
const options1 = {
id: Value.id,
parentId: 0,
};
this.$emit('change', options1);
}
return;
}
}
}
//
function clearSet(i) {
data.value.itemList[i].showBorder = false;
@ -412,7 +412,7 @@
data.value.changeEvent = false;
data.value.showItemIndex = undefined;
}
//
function findOverIndex(posY) {
//
@ -434,7 +434,7 @@
return 0;
}
}
//
function delProject(id) {
uni.showModal({
@ -450,7 +450,7 @@
flag_index = index;
}
});
data.value.itemList.splice(flag_index, 1);
setProjects(data.value.itemList);
}
@ -477,4 +477,4 @@
height: 2px;
margin-left: 30px;
}
</style>
</style>

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

@ -11,45 +11,43 @@
<view class="p-3 pt-0" v-show="iconRef">
<!-- 提交人和时间信息 -->
<view class="text-gray-400">
<span class="mr-2">{{ submitter }}</span> <span> {{ timeRef }}</span>
<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"> http://192.168.0.99/gateway/defaultwbs/swagger-ui.html </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">更多记录</span>
</view>
<view class="px-2">
<!-- 当前审核人自己 -->
<view class="mt-3">
<span class="text-sm mr-4">冯教授</span>
<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>
</view>
<!-- 其他审核人 -->
<view class="mt-3 text-sm flex justify-between">
<!-- 遍历审核人信息 -->
<view class="mt-3 text-sm flex justify-between" v-for="item in checkerList">
<view>
<view class="pb-2">薇薇安</view>
<view class="pb-2 text-gray-400">很棒</view>
<view class="text-gray-400">12/28 12:55</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>
<view>已通过</view>
<!-- TODO:圆形进度条 -->
<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>
</view>
<!-- 当前审核人的审核状态并展示得分情况 -->
<view v-show="item.isMine === 1 && item.status !== null" class="text-sm">
<view>
<!-- <u-circle-progress active-color="#FA8C16" :percent="80" width="90" border-width="7" class="mt-2">
<view class="u-progress-content">
<view class="progressDot text-white text-center">80</view>
</view>
</u-circle-progress> -->
{{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="progressDot text-white text-center">{{item.score}}</view>
</view>
</u-circle-progress>
</view>
</view>
</view>
<view class="mt-3 text-sm flex justify-between">
<view> 周亮</view>
<view>待审核</view>
</view>
</view>
</view>
@ -72,9 +70,6 @@
maxlength="30"
v-model="adviceRef"
></textarea>
<!-- <view @click="adviceRef = '加油,再接再厉!' " class="mx-5">
加油再接再厉
</view> -->
<view class="common-list">
<view v-for="item in commonWords" class="h-12 leading-12 w-62 mx-5" @click="adviceRef = item">
{{item}}
@ -101,9 +96,6 @@
maxlength="30"
v-model="rebutRef"
></textarea>
<!-- <view @click="adviceRef = '加油,再接再厉!' " class="mx-5">
加油再接再厉
</view> -->
<view class="common-list">
<view v-for="item in rebutWords" class="h-12 leading-12 w-62 mx-5" @click="rebutRef = item">
{{item}}
@ -124,12 +116,15 @@
<script setup>
import { ref} from 'vue';
import { useStore } from 'vuex';
import dayjs from 'dayjs';
const props = defineProps({ task: { type: Object, default: () => {} } });
const store = useStore();
const nameRef = ref('入职插件V0.8原型输出');
const iconRef = ref(false);
const submitter = ref('黛西');
const timeRef = ref('12/28 15:55');
const timeRef = ref('');
const linkRef = ref('')
const approvedModal = ref(false); //modal
const rebutModal = ref(false) //modal
const score = ref(1); //
@ -137,19 +132,34 @@ const adviceRef = ref('') // 审核通过的审批语
const rebutRef = ref('') //
const commonWords = ['加油,再接再厉!','很棒!','不错,很详细!','加油,再接再厉'] //
const rebutWords = ['不详细','还有需要改进的地方','驳回审批1','驳回审批2'] //
const checkerList = ref([])
//
const member = store.state.role.members.filter(item => item.isMine === 1);
//
(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
console.log(checkerList.value)
})();
//
async function approved() {
// console.log('')
approvedModal.value = true;
}
//
function rebut() {
rebutModal.value = true
console.log('驳回');
}
//
function confirmAdvice(){
// TODO:
@ -162,15 +172,29 @@ function confirmAdvice(){
remark:adviceRef.value,
score:score.value
}
uni.$u.api.checkDeliver(param)
uni.$u.api.checkDeliver(param)
} catch (error) {
console.log('error: ', error);
}
approvedModal.value = false
}
//
function confirmReject(){
// TODO:
try {
const param = {
projectId: store.state.project.project.id,
deliverRecordId:store.state.project.deliverRecordId,
type:2,
remark:rebutRef.value,
score:''
}
uni.$u.api.checkDeliver(param)
} catch (error) {
console.log('error: ', error);
}
rebutModal.value = false
}
</script>

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

@ -95,8 +95,6 @@ async function getDeliverData() {
const param = { taskId: props.task.id };
const data = await uni.$u.api.getDeliverByTaskId(param);
deliver.value = data;
console.log(deliver.value);
// sessionStorage.setItem('deliverRecordId', deliver.value.deliverRecordId)
store.state.project.deliverRecordId = deliver.value.deliverRecordId
} catch (error) {
console.log('error: ', error);
@ -137,17 +135,12 @@ function submit() {
checkerList
};
uni.$u.api.submitDeliverInfo(param);
store.state.project.checkerList = checkerList
} catch (error) {
console.log('error: ', error);
uni.$ui.showToast('提交交付物信息失败');
}
// else {
// //
// uBadgeShow.value = true;
// }
}
//

3
store/deliver/actions.js

@ -1,3 +0,0 @@
const actions = {};
export default actions;

11
store/deliver/getters.js

@ -1,11 +0,0 @@
const getters = {
/**
* 当前项目的id
* @param {object} project
*/
projectId({ project }) {
return project.id;
},
};
export default getters;

12
store/deliver/index.js

@ -1,12 +0,0 @@
import actions from './actions';
import getters from './getters';
import mutations from './mutations';
import state from './state';
export default {
namespaced: true,
state,
getters,
mutations,
actions,
};

62
store/deliver/mutations.js

@ -1,62 +0,0 @@
const mutations = {
/**
* 设置state projects书籍
* @param {object} state
* @param {array} projects 项目列表
*/
// setProjects(state, projects) {
// if (!projects || !projects.length) {
// state.projects = [];
// } else {
// state.projects = [...projects];
// }
// },
/**
* 设置子项目收缩展开
* @param { object } state
* @param { object } options options:{ index,show }
*/
// setProjectItemShow(state, options) {
// if (options.show) {
// for (var i = 0; i < state.projects.length; i++) {
// if (i === options.index) {
// state.projects[i].show = true;
// } else {
// state.projects[i].show = false;
// }
// }
// } else {
// state.projects[options.index].show = false;
// }
// },
/**
* 设置当前项目信息
* @param { object } state
* @param { object } data
*/
// setProject(state, data) {
// state.project = data || { name: '加载中...' };
// },
/**
* 设置当前项目名称
* @param { object } state
* @param { string } data
*/
setProjectName(state, data) {
state.project.name = data;
},
/**
* 设置小红点
* @param { object } state
* @param { string } data
*/
// setDotList(state, data) {
// state.dotList = data;
// },
};
export default mutations;

6
store/deliver/state.js

@ -1,6 +0,0 @@
/* eslint-disable */
const state = {
deliverRecordId: '',
};
export default state;
Loading…
Cancel
Save