Browse Source

fix: "点击项目、子课题、实验没反应问题,增加接口错误提示"

master
xuesinan 4 years ago
parent
commit
e2282ee38b
  1. 2
      src/components/tall/center/Global.vue
  2. 3
      src/components/tall/center/RegularTask.vue
  3. 10
      src/components/tall/center/Roles.vue
  4. 3
      src/components/tall/left/Index.vue
  5. 3
      src/components/tall/left/Projects.vue
  6. 9
      src/components/tall/task/AssignmentExperiment.vue
  7. 130
      src/components/tall/task/AssignmentSubject.vue
  8. 4
      src/components/tall/task/CheckSubjectProgress.vue
  9. 7
      src/components/tall/task/DataUnlock.vue
  10. 4
      src/components/tall/task/MeetingManagement.vue
  11. 10
      src/components/tall/task/MemberManagement.vue
  12. 10
      src/components/tall/task/PlanAssignment.vue
  13. 10
      src/components/tall/task/ScientificPayoffs.vue
  14. 4
      src/components/tall/task/SubMeetingManagement.vue
  15. 4
      src/components/tall/task/SubSubjectProgress.vue
  16. 4
      src/components/tall/task/TaskConList.vue
  17. 2
      src/store/tall/role/actions.js
  18. 6
      src/store/tall/task/index.js
  19. 2
      src/store/tall/user/index.js
  20. 5
      src/views/user/SignIn.vue

2
src/components/tall/center/Global.vue

@ -14,6 +14,7 @@
import { computed, watch } from 'vue';
import { useStore } from 'vuex';
import { getPermanent } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
const project = computed(() => store.state.projects.project); //
@ -41,6 +42,7 @@ async function getPermanentData(id) {
const globalHeight = data.length * 38 + 26;
store.commit('task/setGlobalHeight', globalHeight);
} catch (error) {
message.info(error);
throw new Error(error);
}
}

3
src/components/tall/center/RegularTask.vue

@ -40,6 +40,7 @@ import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { PlayCircleOutlined } from '@ant-design/icons-vue';
import { getRegularTask, findSonTask } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
const project = computed(() => store.state.projects.project); //
@ -91,6 +92,7 @@ async function getTasks(query) {
store.commit('task/setRegularTasks', data);
} catch (error) {
message.info(error);
throw new Error(error);
}
}
@ -108,6 +110,7 @@ async function getSonTask(id) {
store.commit('task/setRegularTasks', taskObj.tasks);
} catch (error) {
message.info(error);
throw new Error(error);
}
}

10
src/components/tall/center/Roles.vue

@ -1,8 +1,8 @@
<template>
<div class="role-list flex items-center">
<div class="role-box relative" v-for="(item, index) in roles" :key="index">
<div class="role-name" :class="{ mine: item.mine === 1 && roleId === item.id }">{{ item.name }}</div>
<div class="line-box absolute flex justify-center" v-if="item.mine === 1 && roleId === item.id"><div class="line"></div></div>
<div class="role-name" :class="{ mine: roleId === item.id }">{{ item.name }}</div>
<div class="line-box absolute flex justify-center" v-if="roleId === item.id"><div class="line"></div></div>
</div>
</div>
</template>
@ -11,6 +11,7 @@
import { computed, watch } from 'vue';
import { useStore } from 'vuex';
import { findShowRole } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
const roleId = computed(() => store.state.role.roleId); //
@ -25,6 +26,10 @@ if (sessionRoles) {
setInitialRoleId(roleArr);
}
if (project.value) {
getRoles(project.value.id); // id
}
watch(project, async () => {
if (project.value.id) {
await getRoles(project.value.id); // id
@ -43,6 +48,7 @@ async function getRoles(params) {
store.commit('role/setVisibleRoles', data ? data.visibleList : []);
setInitialRoleId(data ? data.visibleList : []);
} catch (error) {
message.info(error);
throw new Error(error);
}
}

3
src/components/tall/left/Index.vue

@ -30,8 +30,10 @@ import { useStore } from 'vuex';
// import dayjs from 'dayjs';
import { PlusCircleFilled } from '@ant-design/icons-vue';
import { create } from 'apis';
import { message } from 'ant-design-vue';
import Calendar from './Calendar.vue';
import Projects from './Projects.vue';
// import { importWbs } from 'apis';
const store = useStore();
@ -53,6 +55,7 @@ async function createExperiment() {
store.commit('layout/setRefreshProjects');
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
}

3
src/components/tall/left/Projects.vue

@ -74,6 +74,7 @@ import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { getProjects, delProject } from 'apis';
import { RightOutlined, DownOutlined } from '@ant-design/icons-vue';
import { message } from 'ant-design-vue';
const store = useStore();
@ -146,6 +147,7 @@ async function getProjectsList() {
store.commit('projects/setProjects', data);
} catch (error) {
message.info(error);
throw new Error(error);
}
}
@ -178,6 +180,7 @@ async function deleteProject(param) {
try {
await delProject(param);
} catch (error) {
message.info(error);
throw new Error(error);
}
}

9
src/components/tall/task/AssignmentExperiment.vue

@ -48,6 +48,7 @@ import { ref, computed, watch } from 'vue';
import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { createExperiment, memberQuery, getExperimentation } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
const formRef = ref(null);
@ -56,6 +57,10 @@ const projectId = computed(() => store.getters['projects/projectId']);
const options = ref([]);
const experimentationId = computed(() => store.state.task.experimentationId); // ID
if (experimentationId.value) {
getSubProject(experimentationId.value);
}
watch(experimentationId, async () => {
await getSubProject(experimentationId.value);
});
@ -113,7 +118,8 @@ async function getList(name) {
options.value.push(obj);
});
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -142,6 +148,7 @@ async function getSubProject(id) {
};
}
} catch (error) {
message.info(error);
throw new Error(error);
}
}

130
src/components/tall/task/AssignmentSubject.vue

@ -102,10 +102,6 @@ const projectId = computed(() => store.getters['projects/projectId']); // 项目
const options = ref([]);
const detailId = computed(() => store.state.task.detailId); // ID
watch(detailId, async () => {
await getSubProject(detailId.value);
});
const topicSubFormData = ref({
projectId: projectId.value,
id: detailId.value,
@ -133,6 +129,22 @@ const stageList = ref([
},
]);
if (detailId.value) {
getSubProject(detailId.value);
} else {
renderData();
}
watch(detailId, async () => {
if (detailId.value) {
await getSubProject(detailId.value);
} else {
renderData();
}
});
getList(); //
//
function addMilestones() {
stageList.value.push({
@ -150,8 +162,6 @@ function addMilestones() {
});
}
getList(); //
const handleSearch = async value => {
console.log('handleSearch', options.value, value);
// await getList(value); //
@ -178,55 +188,47 @@ async function getList(name) {
options.value.push(obj);
});
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
const onSubmit = () => {
stageList.value.forEach(item => {
item.date.forEach((val, key) => {
if (key === 0) {
item.startTime = dayjs(val).format('x');
} else {
item.endTime = dayjs(val).format('x');
}
});
});
const onSubmit = async () => {
let msgText = '';
stageList.value.forEach(item => {
console.log(item);
if (item.date.length > 0) {
item.date.forEach((val, key) => {
if (key === 0) {
item.startTime = dayjs(val).format('x');
} else {
item.endTime = dayjs(val).format('x');
}
});
}
if (item.checkContent.indexOf('1') > -1) {
if (!item.thesis) msgText = '请填写论文数量';
}
if (item.checkContent.indexOf('2') > -1) {
if (!item.patent) msgText = '请填写专利数量';
}
if (item.checkContent.indexOf('3') > -1) {
if (!item.theSoft) msgText = '请填写软著数量';
}
if (item.checkContent.indexOf('4') > -1) {
if (!item.sciThesis) msgText = '请填写SCI论文数量';
}
if (item.checkContent.indexOf('5') > -1) {
if (!item.inventPatent) msgText = '请填写发明专利数量';
}
if (item.checkContent.indexOf('6') > -1) {
if (!item.practicalPatent) msgText = '请填写实用新型专利数量';
}
if (item.checkContent.indexOf('7') > -1) {
if (!item.facadePatent) msgText = '请填写外观专利数量';
}
if (item.thesis < item.sciThesis) msgText = 'SCI论文数量不能比总论文数量大';
const totalPatent = Number(item.inventPatent) + Number(item.practicalPatent) + Number(item.facadePatent);
if (item.patent < totalPatent) msgText = '发明专利数量、实用新型专利数量、外观专利数量总和不能比总专利数量大';
});
@ -247,15 +249,20 @@ const onSubmit = () => {
});
const params = { param: topicSubFormData.value };
saveSubExperiment(params);
getSubProject(detailId.value);
await saveSubExperiment(params);
store.commit('layout/setRefreshProjects');
if (detailId.value) {
getSubProject(detailId.value);
} else {
renderData();
}
};
async function getSubProject(id) {
try {
const params = { param: { taskDetailId: id } };
const data = await getSubExperiment(params);
store.commit('layout/setRefreshProjects');
if (data) {
const start = dayjs(Number(data.startTime));
@ -266,7 +273,11 @@ async function getSubProject(id) {
data.subExperimentStageDtoList.forEach(item => {
item.startTime = item.stageStartTime;
item.endTime = item.stageEndTime;
item.date = [dayjs(Number(item.startTime)), dayjs(Number(item.endTime))];
console.log(item.startTime !== '0');
if (item.startTime !== '0') {
item.date = [dayjs(Number(item.startTime)), dayjs(Number(item.endTime))];
}
item.checkContent = [];
if (item.thesis) item.checkContent.push('1');
if (item.patent) item.checkContent.push('2');
@ -278,36 +289,43 @@ async function getSubProject(id) {
});
stageList.value = data.subExperimentStageDtoList;
} else {
topicSubFormData.value = {
projectId: projectId.value,
id: detailId.value,
name: '',
memberId: '',
date: [],
startTime: '',
endTime: '',
stageDtoList: [],
};
stageList.value = [
{
date: [],
startTime: '',
endTime: '',
checkContent: [],
thesis: '',
sciThesis: '',
patent: '',
inventPatent: '',
practicalPatent: '',
facadePatent: '',
theSoft: '',
},
];
//
renderData();
}
} catch (error) {
message.info(error);
throw new Error(error);
}
}
//
function renderData() {
topicSubFormData.value = {
projectId: projectId.value,
id: detailId.value,
name: '',
memberId: '',
date: [],
startTime: '',
endTime: '',
stageDtoList: [],
};
stageList.value = [
{
date: [],
startTime: '',
endTime: '',
checkContent: [],
thesis: '',
sciThesis: '',
patent: '',
inventPatent: '',
practicalPatent: '',
facadePatent: '',
theSoft: '',
},
];
}
</script>
<style scoped>

4
src/components/tall/task/CheckSubjectProgress.vue

@ -80,6 +80,7 @@
import { ref, computed } from 'vue';
import { getExperimentProgress } from 'apis';
import { useStore } from 'vuex';
import { message } from 'ant-design-vue';
const store = useStore();
const projectId = computed(() => store.getters['projects/projectId']);
@ -102,7 +103,8 @@ async function progress() {
infoOne.value = data.target;
infoSec.value = data.subTargetList;
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
</script>

7
src/components/tall/task/DataUnlock.vue

@ -39,6 +39,7 @@ import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { retrospectUnlock, examineUnlock } from 'apis';
import { CloseCircleFilled } from '@ant-design/icons-vue';
import { message } from 'ant-design-vue';
const store = useStore();
const projectId = computed(() => store.getters['projects/projectId']);
@ -69,7 +70,8 @@ async function getUnlockList() {
const data = await retrospectUnlock(params);
unlockList.value = data;
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -89,7 +91,8 @@ async function toExamine(type, id) {
unlockList.value = data;
getUnlockList();
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
</script>

4
src/components/tall/task/MeetingManagement.vue

@ -88,6 +88,7 @@ import { useStore } from 'vuex';
import { InboxOutlined } from '@ant-design/icons-vue';
import { uploadImg, saveMeeting, getMeetDetail } from 'apis';
import dayjs from 'dayjs';
import { message } from 'ant-design-vue';
const store = useStore();
const token = computed(() => store.getters['user/token']);
@ -233,7 +234,8 @@ async function getMeetingInfo() {
attachmentList.value = [];
}
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}

10
src/components/tall/task/MemberManagement.vue

@ -39,6 +39,7 @@ import { ref, computed } from 'vue';
import { useStore } from 'vuex';
import { PlusCircleOutlined } from '@ant-design/icons-vue';
import { memberQuery, saveMember, updateMember, delMember } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
const projectId = computed(() => store.getters['projects/projectId']);
@ -97,7 +98,8 @@ async function getList() {
dataList.value.push(obj);
});
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -167,7 +169,8 @@ async function save(key) {
getList();
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -184,7 +187,8 @@ async function toDelete(key) {
await delMember(params);
getList();
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
</script>

10
src/components/tall/task/PlanAssignment.vue

@ -152,6 +152,7 @@ import { useStore } from 'vuex';
import { InboxOutlined, PlusCircleOutlined } from '@ant-design/icons-vue';
import { uploadImg, memberQuery, savePlanTask, getPlanTask } from 'apis';
import dayjs from 'dayjs';
import { message } from 'ant-design-vue';
const store = useStore();
const formRef = ref(null);
@ -235,7 +236,7 @@ async function checkPlanTask() {
try {
const params = { param: { projectId: projectId.value } };
const data = await getPlanTask(params);
data.checkContentList = data.checkContent.split(',');
if (data.checkContent) data.checkContentList = data.checkContent.split(',');
const start = dayjs(Number(data.startTime));
const end = dayjs(Number(data.endTime));
const arr = [start, end];
@ -265,7 +266,8 @@ async function checkPlanTask() {
});
fileList.value = fileArr;
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -286,7 +288,8 @@ async function getList(name) {
options.value.push(obj);
});
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -295,6 +298,7 @@ function addMilestones() {
planTaskStageList.value.push({ date: [], stageStartTime: '', stageEndTime: '', remark: '' });
}
//
function addDefined() {
planTaskDefinedList.value.push({ key: '', value: '' });
}

10
src/components/tall/task/ScientificPayoffs.vue

@ -84,6 +84,7 @@ import { ref, computed } from 'vue';
import { useStore } from 'vuex';
import { queryExperimentation, examineExperimentation, applyUnlock } from 'apis';
import { CheckCircleFilled, CloseCircleFilled, ExclamationCircleFilled } from '@ant-design/icons-vue';
import { message } from 'ant-design-vue';
const store = useStore();
const projectId = computed(() => store.getters['projects/projectId']);
@ -178,7 +179,8 @@ async function getExperimentations() {
});
dataList.value = data;
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -195,7 +197,8 @@ async function examine(type) {
await examineExperimentation(params);
getExperimentations();
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
@ -211,7 +214,8 @@ async function toUnlock() {
await applyUnlock(params);
getExperimentations();
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
</script>

4
src/components/tall/task/SubMeetingManagement.vue

@ -69,6 +69,7 @@ import { useStore } from 'vuex';
import { InboxOutlined } from '@ant-design/icons-vue';
import { uploadImg, saveMeeting, getMeetDetail } from 'apis';
import dayjs from 'dayjs';
import { message } from 'ant-design-vue';
const store = useStore();
const token = computed(() => store.getters['user/token']);
@ -195,7 +196,8 @@ async function getMeetingInfo() {
attachmentList.value = [];
}
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}

4
src/components/tall/task/SubSubjectProgress.vue

@ -78,6 +78,7 @@
import { ref, computed } from 'vue';
import { useStore } from 'vuex';
import { getProgress } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
@ -101,7 +102,8 @@ async function progress() {
infoOne.value = data.target;
infoSec.value = data.subTargetList;
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}
</script>

4
src/components/tall/task/TaskConList.vue

@ -29,6 +29,7 @@ import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { RightOutlined } from '@ant-design/icons-vue';
import { getMeetQuery } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore();
const code = computed(() => store.state.task.label); // code
@ -76,7 +77,8 @@ async function getMeetList(type) {
});
lists.value = [...data];
} catch (error) {
console.log('error', error);
message.info(error);
throw new Error(error);
}
}

2
src/store/tall/role/actions.js

@ -1,4 +1,5 @@
import { queryChecker } from 'apis';
import { message } from 'ant-design-vue';
const actions = {
/**
@ -12,6 +13,7 @@ const actions = {
commit('setMembers', data);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},

6
src/store/tall/task/index.js

@ -1,4 +1,5 @@
import { getByCode, submitAnswer, getIntellectual, getIntellectualList, submitIntellectual } from 'apis';
import { message } from 'ant-design-vue';
export default {
namespaced: true,
@ -417,6 +418,7 @@ export default {
commit('setQuestion', data || null);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},
@ -433,6 +435,7 @@ export default {
commit('setQuestion', data || null);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},
@ -449,6 +452,7 @@ export default {
commit('setQuestion', data || null);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},
@ -465,6 +469,7 @@ export default {
commit('setQuestion', data || null);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},
@ -482,6 +487,7 @@ export default {
commit('setQuestion', data || null);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},

2
src/store/tall/user/index.js

@ -1,4 +1,5 @@
import { getToken } from 'apis';
import { message } from 'ant-design-vue';
export default {
namespaced: true,
@ -50,6 +51,7 @@ export default {
commit('setUser', data || null);
return data;
} catch (error) {
message.info(error);
throw new Error(error);
}
},

5
src/views/user/SignIn.vue

@ -27,6 +27,7 @@ import { reactive, ref } from 'vue';
import { signIn } from 'apis';
import { useStore } from 'vuex';
import { useRouter } from 'vue-router';
import { message } from 'ant-design-vue';
const store = useStore();
const router = useRouter();
@ -77,12 +78,14 @@ function handleSingIn() {
router.push({ path: '/experiment/home' });
}, 1000);
} catch (error) {
message.info(error);
throw new Error(error);
}
}
})
.catch(error => {
console.log('error', error);
message.info(error);
throw new Error(error);
});
}
</script>

Loading…
Cancel
Save