|
|
@@ -332,13 +332,17 @@
|
|
|
<!-- <el-button @click="searchBtn" color="rgba(212, 48, 48, 1)"
|
|
|
>删除</el-button
|
|
|
> -->
|
|
|
- <!-- <el-button type="primary" class="search" @click="searchBtn"
|
|
|
+ <el-button type="primary" class="search" @click="reportProject"
|
|
|
>导出</el-button
|
|
|
- > -->
|
|
|
+ >
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="project">
|
|
|
- <el-card v-for="i in tableData.list" @click="projectCard(i)">
|
|
|
+ <el-card
|
|
|
+ v-for="i in tableData.list"
|
|
|
+ @click="projectCard(i)"
|
|
|
+ :key="i.id"
|
|
|
+ >
|
|
|
<div class="title">
|
|
|
<div class="name">
|
|
|
<el-tooltip
|
|
|
@@ -404,7 +408,7 @@
|
|
|
"
|
|
|
>删除</el-dropdown-item
|
|
|
>
|
|
|
- <el-dropdown-item
|
|
|
+ <!-- <el-dropdown-item
|
|
|
v-if="
|
|
|
((activeName == 3 && i.scorerFlag == 1) ||
|
|
|
(activeName == 6 && i.scorerFlag == 1)) &&
|
|
|
@@ -412,6 +416,18 @@
|
|
|
"
|
|
|
@click.stop="scoreProject(i)"
|
|
|
>评分</el-dropdown-item
|
|
|
+ > -->
|
|
|
+
|
|
|
+ <!-- 改版后的评分人规则:只有创建人才能评分 -->
|
|
|
+ <el-dropdown-item
|
|
|
+ v-if="
|
|
|
+ ((activeName == 3 && i.createBy == userId) ||
|
|
|
+ (activeName == 6 && i.createBy == userId) ||
|
|
|
+ (activeName == 5 && i.createBy == userId)) &&
|
|
|
+ btnFlag('project-pingfen')
|
|
|
+ "
|
|
|
+ @click.stop="scoreProject(i)"
|
|
|
+ >评分</el-dropdown-item
|
|
|
>
|
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
|
@@ -419,9 +435,16 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="info">
|
|
|
- <div class="item">主办单位:{{ i.organize }}</div>
|
|
|
- <div class="item">主办人:{{ i.sposonerName }}</div>
|
|
|
- <div class="item">协办人:{{ i.coSposonerName }}</div>
|
|
|
+ <!-- <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="dark"
|
|
|
+ :content="i.organizeCopy"
|
|
|
+ placement="bottom"
|
|
|
+ >
|
|
|
+ </el-tooltip> -->
|
|
|
+ <div class="item unit">主办单位:{{ i.organizeCopy }}</div>
|
|
|
+ <div class="item unit">主办人:{{ i.sposonerName }}</div>
|
|
|
+ <div class="item unit">协办人:{{ i.coSposonerName }}</div>
|
|
|
<div class="item">
|
|
|
项目周期:{{ i.startTime }} ~ {{ i.endTime }}
|
|
|
</div>
|
|
|
@@ -527,7 +550,7 @@
|
|
|
>
|
|
|
<el-button type="primary">上传附件</el-button>
|
|
|
<template #tip>
|
|
|
- <div class="el-upload__tip" style="color: darkorange;">
|
|
|
+ <div class="el-upload__tip" style="color: darkorange">
|
|
|
附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -676,7 +699,7 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="评分人" prop="scorer">
|
|
|
- <!-- <el-select
|
|
|
+ <el-select
|
|
|
v-model="projectRuleForm.scorer"
|
|
|
placeholder="请选择评分人"
|
|
|
clearable
|
|
|
@@ -694,8 +717,8 @@
|
|
|
:label="item.userName"
|
|
|
:value="item.id.toString()"
|
|
|
/>
|
|
|
- </el-select> -->
|
|
|
- <el-select
|
|
|
+ </el-select>
|
|
|
+ <!-- <el-select
|
|
|
v-model="projectRuleForm.scorer"
|
|
|
popper-class="more-tag-data"
|
|
|
multiple
|
|
|
@@ -712,14 +735,6 @@
|
|
|
:value="item.id.toString()"
|
|
|
>
|
|
|
<span style="float: left">{{ item.userName }}</span>
|
|
|
- <!-- <span
|
|
|
- style="
|
|
|
- float: right;
|
|
|
- color: var(--el-text-color-secondary);
|
|
|
- font-size: 13px;
|
|
|
- "
|
|
|
- >{{ item.department }}</span
|
|
|
- > -->
|
|
|
</el-option>
|
|
|
<template #footer>
|
|
|
<div class="addStudentMore">
|
|
|
@@ -733,7 +748,7 @@
|
|
|
>
|
|
|
</div>
|
|
|
</template>
|
|
|
- </el-select>
|
|
|
+ </el-select> -->
|
|
|
</el-form-item>
|
|
|
<el-form-item class="options">
|
|
|
<el-button
|
|
|
@@ -1060,7 +1075,7 @@
|
|
|
v-if="activeName == 3 || activeName == 5"
|
|
|
>添加任务</el-button
|
|
|
>
|
|
|
- <el-button
|
|
|
+ <!-- <el-button
|
|
|
v-if="
|
|
|
(activeName == 3 && cardInfo.scorerFlag == 1) ||
|
|
|
(activeName == 6 && cardInfo.scorerFlag == 1)
|
|
|
@@ -1069,6 +1084,20 @@
|
|
|
style="margin: 0 0 20px 0"
|
|
|
@click="scoreProjects"
|
|
|
>评分</el-button
|
|
|
+ > -->
|
|
|
+
|
|
|
+ <!-- 改版后的评分人规则:只有创建人才能评分 -->
|
|
|
+ <el-button
|
|
|
+ v-if="
|
|
|
+ ((activeName == 3 && cardInfo.createBy == userId) ||
|
|
|
+ (activeName == 6 && cardInfo.createBy == userId) ||
|
|
|
+ (activeName == 5 && cardInfo.createBy == userId)) &&
|
|
|
+ btnFlag('project-pingfen')
|
|
|
+ "
|
|
|
+ type="primary"
|
|
|
+ style="margin: 0 0 20px 0"
|
|
|
+ @click="scoreProjects"
|
|
|
+ >评分</el-button
|
|
|
>
|
|
|
</div>
|
|
|
<div v-if="logFlag == 2">
|
|
|
@@ -1160,7 +1189,7 @@
|
|
|
>
|
|
|
<el-button type="primary">上传附件</el-button>
|
|
|
<template #tip>
|
|
|
- <div class="el-upload__tip" style="color: darkorange;">
|
|
|
+ <div class="el-upload__tip" style="color: darkorange">
|
|
|
附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -1306,10 +1335,10 @@
|
|
|
>
|
|
|
<el-button type="primary">上传附件</el-button>
|
|
|
<template #tip>
|
|
|
- <div class="el-upload__tip" style="color: darkorange;">
|
|
|
- 附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式
|
|
|
- </div>
|
|
|
- </template>
|
|
|
+ <div class="el-upload__tip" style="color: darkorange">
|
|
|
+ 附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</el-upload>
|
|
|
<div v-if="fileListAttachment" class="fileList">
|
|
|
<div class="files" v-for="i in fileListAttachment">
|
|
|
@@ -1372,7 +1401,7 @@
|
|
|
<div class="continer" v-if="pdfFlag == 4">
|
|
|
<vue-office-excel
|
|
|
:src="previewPdfUrl"
|
|
|
- style="height: 100vh;"
|
|
|
+ style="height: 100vh"
|
|
|
@rendered="renderedHandler"
|
|
|
@error="errorHandler"
|
|
|
/>
|
|
|
@@ -1411,9 +1440,9 @@ import VueOfficeDocx from "@vue-office/docx";
|
|
|
import "@vue-office/docx/lib/index.css";
|
|
|
|
|
|
//引入VueOfficeExcel组件
|
|
|
-import VueOfficeExcel from '@vue-office/excel'
|
|
|
+import VueOfficeExcel from "@vue-office/excel";
|
|
|
//引入相关样式
|
|
|
-import '@vue-office/excel/lib/index.css'
|
|
|
+import "@vue-office/excel/lib/index.css";
|
|
|
|
|
|
const store = useStore();
|
|
|
const router = useRouter();
|
|
|
@@ -1485,11 +1514,11 @@ const projectRef = ref();
|
|
|
const searchOrganizeData = ref(); // 搜索框用主办协办人员
|
|
|
const organizeData = ref(); // 添加项目用主办协办人员
|
|
|
|
|
|
- // 评分人下拉
|
|
|
-const scorePage=ref(1);
|
|
|
-const scoreCurrent=ref(20);
|
|
|
-const scoreTotalPage=ref();
|
|
|
-const scoreNameSea=ref();
|
|
|
+// 评分人下拉
|
|
|
+const scorePage = ref(1);
|
|
|
+const scoreCurrent = ref(20);
|
|
|
+const scoreTotalPage = ref();
|
|
|
+const scoreNameSea = ref();
|
|
|
const scorerData = ref(); // 评分人
|
|
|
|
|
|
const organizeProps = {
|
|
|
@@ -1616,7 +1645,7 @@ const cardInfo = reactive({
|
|
|
projectContent: "", // 描述
|
|
|
fileUrl: "", // 附件
|
|
|
organize: "", // 主办单位
|
|
|
- organizeCopy:"",// 主办单位去重
|
|
|
+ organizeCopy: "", // 主办单位去重
|
|
|
sposonerName: "", // 主办人
|
|
|
coOrganizeCopy: "", // 协办单位去重展示用
|
|
|
coOrganize: "", // 协办单位
|
|
|
@@ -1629,6 +1658,7 @@ const cardInfo = reactive({
|
|
|
leaderName: "", // 分管领导
|
|
|
scorerName: "", // 评分人
|
|
|
scorer: "", // 评分人对应id
|
|
|
+ createBy: "", // 当前项目创建人Id
|
|
|
scorerFlag: "", // 分管领导是否有资格评分
|
|
|
});
|
|
|
|
|
|
@@ -1739,26 +1769,42 @@ const getList = async () => {
|
|
|
params: params,
|
|
|
data: data,
|
|
|
});
|
|
|
+
|
|
|
console.log(res, "项目分页数据");
|
|
|
if (res.data.code == 200) {
|
|
|
- let userId = sessionStorage.getItem("id");
|
|
|
- if (activeName.value == 3) {
|
|
|
- res.data.data.project.rows.forEach((item) => {
|
|
|
- item.scorerFlag = 1;
|
|
|
- });
|
|
|
- } else if (activeName.value == 6) {
|
|
|
- res.data.data.project.rows.forEach((item) => {
|
|
|
- let flag = item.scorer.split(",").some((i) => {
|
|
|
- return userId == i;
|
|
|
+ // let userId = sessionStorage.getItem("id");
|
|
|
+ // if (activeName.value == 3) {
|
|
|
+ // res.data.data.project.rows.forEach((item) => {
|
|
|
+ // item.scorerFlag = 1;
|
|
|
+ // });
|
|
|
+ // } else if (activeName.value == 6) {
|
|
|
+ // res.data.data.project.rows.forEach((item) => {
|
|
|
+ // let flag = item.scorer.split(",").some((i) => {
|
|
|
+ // return userId == i;
|
|
|
+ // });
|
|
|
+ // if (flag) {
|
|
|
+ // item.scorerFlag = 1;
|
|
|
+ // } else {
|
|
|
+ // item.scorerFlag = 0;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ tableData.list = res.data.data.project.rows;
|
|
|
+ // 主办单位去重展示用
|
|
|
+ res.data.data.project.rows.forEach((i) => {
|
|
|
+ let arr1 = [];
|
|
|
+ // console.log(i);
|
|
|
+ i.organize.split(",").forEach((item) => {
|
|
|
+ let flag = arr1.some((i) => {
|
|
|
+ return i == item;
|
|
|
});
|
|
|
- if (flag) {
|
|
|
- item.scorerFlag = 1;
|
|
|
- } else {
|
|
|
- item.scorerFlag = 0;
|
|
|
+ if (!flag) {
|
|
|
+ arr1.push(item);
|
|
|
}
|
|
|
});
|
|
|
- }
|
|
|
- tableData.list = res.data.data.project.rows;
|
|
|
+ i.organizeCopy = arr1.join(",");
|
|
|
+ });
|
|
|
+
|
|
|
cardInfo.progress = res.data.data.config[2].configValue;
|
|
|
total.value = res.data.data.project.total;
|
|
|
totalPage.value = res.data.data.project.totalPage;
|
|
|
@@ -1785,29 +1831,70 @@ const getList = async () => {
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
-// 评分人数据
|
|
|
-const scorerList=async ()=>{
|
|
|
- let params={
|
|
|
- page:scorePage.value,
|
|
|
- rows:scoreCurrent.value
|
|
|
+
|
|
|
+const reportProject = async () => {
|
|
|
+ let data = {
|
|
|
+ type: activeName.value, // 1我关注的、2我收藏的、3我负责的、4我协办的、null
|
|
|
+ project: {
|
|
|
+ projectName: searchInput.projectName, // 项目名称
|
|
|
+ projectFrom: searchInput.projectFrom, // 项目来源
|
|
|
+ projectLevel: searchInput.projectLevel, // 项目等级
|
|
|
+ state: searchInput.state, // 1、正常在办,2、预警在办,3、超时在办,4、正常办结,5、超时办结
|
|
|
+ organize: searchInput.organize, // 主办单位-单选
|
|
|
+ coOrganize: searchInput.coOrganize, // 协办单位-多选
|
|
|
+ sposonerName: searchInput.sposonerName, // 主办人
|
|
|
+ coSposonerName: searchInput.coSposonerName, // 协办人
|
|
|
+ scoreState: searchInput.scoreState, // 是否已评分:1已评分,0未评分,null全部
|
|
|
+ collect: searchInput.collect, // 是否已关注,1收藏,0未收藏,null全部
|
|
|
+ hasTask: searchInput.hasTask, // 是否有任务:1有任务,0没有任务,null全部
|
|
|
+ isScore: searchInput.isScore, // 是否我评分,1是我,0不是我,null全部
|
|
|
+ },
|
|
|
+ // "t1": null, // 创建开始时间
|
|
|
+ // "t2": null, // 创建结束时间
|
|
|
+ // "t3": "2024-12-01", // 周期开始时间
|
|
|
+ // "t4": "2024-12-31", // 周期结束时间
|
|
|
+ // "t5": null, // 完成开始时间
|
|
|
+ // "t6": null // 完成结束时间
|
|
|
+ };
|
|
|
+
|
|
|
+ if (searchInput.createTime) {
|
|
|
+ data.t1 = searchInput.createTime[0];
|
|
|
+ data.t2 = searchInput.createTime[1];
|
|
|
+ }
|
|
|
+ if (searchInput.periodTime) {
|
|
|
+ data.t3 = searchInput.periodTime[0];
|
|
|
+ data.t4 = searchInput.periodTime[1];
|
|
|
}
|
|
|
- let data={
|
|
|
- "userName": scoreNameSea.value, // 姓名
|
|
|
+ if (searchInput.finishTime) {
|
|
|
+ data.t5 = searchInput.finishTime[0];
|
|
|
+ data.t6 = searchInput.finishTime[1];
|
|
|
+ }
|
|
|
+ if (activeName.value == 3 || activeName.value == 4) {
|
|
|
+ searchInput.organize = null;
|
|
|
+ searchInput.sposonerName = null;
|
|
|
+ searchInput.coOrganize = null;
|
|
|
+ searchInput.coSposonerName = null;
|
|
|
}
|
|
|
let res = await axios({
|
|
|
method: "post",
|
|
|
- url: api.value + "/api/sysUser/queryPage",
|
|
|
+ url: api.value + "/api/sysProject/queryPageExport",
|
|
|
+ responseType: "blob",
|
|
|
headers: {
|
|
|
tokenP: sessionStorage.getItem("tokenP"),
|
|
|
user_head: sessionStorage.getItem("userhead"),
|
|
|
},
|
|
|
- data,
|
|
|
- params
|
|
|
+ data: data,
|
|
|
});
|
|
|
- console.log(res, "评分人数据列表");
|
|
|
- if (res.data.code == 200) {
|
|
|
- scorerData.value = res.data.data.rows;
|
|
|
- scoreTotalPage.value=res.data.data.totalPage
|
|
|
+ console.log(res, "项目导出");
|
|
|
+ if (res.status == 200) {
|
|
|
+ let url = window.URL.createObjectURL(res.data);
|
|
|
+ let elink = document.createElement("a");
|
|
|
+ elink.download = "项目导出列表.xlsx";
|
|
|
+ elink.style.display = "none";
|
|
|
+ elink.href = url;
|
|
|
+ document.body.appendChild(elink);
|
|
|
+ elink.click();
|
|
|
+ document.body.removeChild(elink);
|
|
|
} else {
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
@@ -1816,7 +1903,8 @@ const scorerList=async ()=>{
|
|
|
center: true,
|
|
|
});
|
|
|
}
|
|
|
-}
|
|
|
+};
|
|
|
+
|
|
|
// 部门数据
|
|
|
const departmentList = async () => {
|
|
|
// let res = await axios({
|
|
|
@@ -2059,16 +2147,20 @@ const projectCard = async (row) => {
|
|
|
|
|
|
// 协办单位去重展示用
|
|
|
let arrs = [];
|
|
|
- console.log(row.coOrganize.split(","));
|
|
|
- row.coOrganize.split(",").forEach((item) => {
|
|
|
- let flag = arrs.some((i) => {
|
|
|
- return i == item;
|
|
|
+ console.log(row.coOrganize);
|
|
|
+ if (row.coOrganize != "") {
|
|
|
+ row.coOrganize.split(",").forEach((item) => {
|
|
|
+ let flag = arrs.some((i) => {
|
|
|
+ return i == item;
|
|
|
+ });
|
|
|
+ if (!flag) {
|
|
|
+ arrs.push(item);
|
|
|
+ }
|
|
|
});
|
|
|
- if (!flag) {
|
|
|
- arrs.push(item);
|
|
|
- }
|
|
|
- });
|
|
|
- cardInfo.coOrganizeCopy = arrs.join(",");
|
|
|
+ cardInfo.coOrganizeCopy = arrs.join(",");
|
|
|
+ } else {
|
|
|
+ cardInfo.coOrganizeCopy = "";
|
|
|
+ }
|
|
|
|
|
|
cardInfo.coOrganize = row.coOrganize;
|
|
|
console.log(cardInfo.coOrganize);
|
|
|
@@ -2078,7 +2170,8 @@ const projectCard = async (row) => {
|
|
|
cardInfo.endTime = row.endTime;
|
|
|
cardInfo.leaderName = row.leaderName;
|
|
|
cardInfo.scorer = row.scorer;
|
|
|
- cardInfo.scorerFlag = row.scorerFlag;
|
|
|
+ // cardInfo.scorerFlag = row.scorerFlag;
|
|
|
+ cardInfo.createBy = row.createBy;
|
|
|
cardInfo.scorerName = row.scorerName;
|
|
|
taskRuleForm.projectId = row.id;
|
|
|
console.log(row.coSposonerName, row.coSposoner);
|
|
|
@@ -2089,16 +2182,32 @@ const projectCard = async (row) => {
|
|
|
arr.push({ name: item, id: row.coSposoner.split(",")[ind] });
|
|
|
});
|
|
|
}
|
|
|
- let flag = arr.some((i) => {
|
|
|
- // "判断协办人里面是否有负责人"
|
|
|
- return i.id == row.sposoner;
|
|
|
- });
|
|
|
- console.log(flag);
|
|
|
- if (!flag) {
|
|
|
- arr.unshift({ name: row.sposonerName, id: row.sposoner });
|
|
|
+ if (row.sposonerName) {
|
|
|
+ row.sposonerName.split(",").forEach((item, ind) => {
|
|
|
+ arr.push({ name: item, id: row.sposoner.split(",")[ind] });
|
|
|
+ });
|
|
|
}
|
|
|
+ // let flag = arr.some((i) => {
|
|
|
+ // // "判断协办人里面是否有负责人"
|
|
|
+ // return i.id == row.sposoner;
|
|
|
+ // });
|
|
|
+ // console.log(flag);
|
|
|
+ // if (!flag) {
|
|
|
+ // arr.unshift({ name: row.sposonerName, id: row.sposoner });
|
|
|
+ // }
|
|
|
console.log(arr);
|
|
|
- taskLeader.value = arr;
|
|
|
+
|
|
|
+ // 任务负责人去重
|
|
|
+ let jrr = [];
|
|
|
+ arr.forEach((item) => {
|
|
|
+ let flag = jrr.some((i) => {
|
|
|
+ return i.id == item.id;
|
|
|
+ });
|
|
|
+ if (!flag) {
|
|
|
+ jrr.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ taskLeader.value = jrr;
|
|
|
taskList();
|
|
|
};
|
|
|
// 任务进度
|
|
|
@@ -2267,22 +2376,22 @@ const projectScroll = async (event) => {
|
|
|
console.log(res, "项目分页数据");
|
|
|
if (res.data.code == 200) {
|
|
|
let userId = sessionStorage.getItem("id");
|
|
|
- if (activeName.value == 3) {
|
|
|
- res.data.data.project.rows.forEach((item) => {
|
|
|
- i.scorerFlag = 1;
|
|
|
- });
|
|
|
- } else if (activeName.value == 6) {
|
|
|
- res.data.data.project.rows.forEach((item) => {
|
|
|
- let flag = item.scorer.split(",").some((i) => {
|
|
|
- return userId == i;
|
|
|
- });
|
|
|
- if (flag) {
|
|
|
- item.scorerFlag = 1;
|
|
|
- } else {
|
|
|
- item.scorerFlag = 0;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ // if (activeName.value == 3) {
|
|
|
+ // res.data.data.project.rows.forEach((item) => {
|
|
|
+ // i.scorerFlag = 1;
|
|
|
+ // });
|
|
|
+ // } else if (activeName.value == 6) {
|
|
|
+ // res.data.data.project.rows.forEach((item) => {
|
|
|
+ // let flag = item.scorer.split(",").some((i) => {
|
|
|
+ // return userId == i;
|
|
|
+ // });
|
|
|
+ // if (flag) {
|
|
|
+ // item.scorerFlag = 1;
|
|
|
+ // } else {
|
|
|
+ // item.scorerFlag = 0;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // }
|
|
|
tableData.list = [...tableData.list, ...res.data.data.project.rows];
|
|
|
// total.value = res.data.data.project.total;
|
|
|
// totalPage.value = res.data.data.project.totalPage;
|
|
|
@@ -2363,6 +2472,8 @@ const collectClick = async (row) => {
|
|
|
const addProjectbtn = () => {
|
|
|
projectVisible.value = true;
|
|
|
projectTitle.value = "新建项目";
|
|
|
+ scorerData.value = []; // 将评分人置空
|
|
|
+ scorerList(userId.value); // 获取评分人列表
|
|
|
fileList.value = [];
|
|
|
projectRuleForm.projectName = "";
|
|
|
projectRuleForm.projectContent = "";
|
|
|
@@ -2380,6 +2491,7 @@ const addProjectbtn = () => {
|
|
|
projectRuleForm.projectLevel = "";
|
|
|
projectRuleForm.id = "";
|
|
|
};
|
|
|
+
|
|
|
// 勾选主办人
|
|
|
const organizeChange = async (val) => {
|
|
|
console.log(val);
|
|
|
@@ -2391,7 +2503,9 @@ const organizeChange = async (val) => {
|
|
|
});
|
|
|
projectRuleForm.organize = arr.join(",");
|
|
|
projectRuleForm.sposoner = jrr.join(",");
|
|
|
- console.log(arr,'//////', jrr);
|
|
|
+ console.log(arr, "//////", jrr);
|
|
|
+
|
|
|
+ // scoreList();
|
|
|
// return new Promise(async (resolve) => {
|
|
|
// // projectRuleForm.scorer = [];
|
|
|
// if (val) {
|
|
|
@@ -2463,7 +2577,68 @@ const coOrganizeChange = (val) => {
|
|
|
projectRuleForm.coSposoner = jrr.join(",");
|
|
|
console.log(arr.join(","), jrr.join(","));
|
|
|
}
|
|
|
+ // scoreList();
|
|
|
+};
|
|
|
+// 评分人数据(从勾选的主办和协办人员中选)
|
|
|
+const scoreList = async () => {
|
|
|
+ scorerData.value = [];
|
|
|
+ projectRuleForm.scorer = "";
|
|
|
+ console.log(projectRuleForm.sposoner, projectRuleForm.coSposoner);
|
|
|
+ let arr = projectRuleForm.sposoner.split(",");
|
|
|
+ if (projectRuleForm.coSposoner) {
|
|
|
+ let coSposoner = projectRuleForm.coSposoner.split(",");
|
|
|
+ coSposoner.forEach((i) => {
|
|
|
+ let flag = arr.some((j) => {
|
|
|
+ return i == j;
|
|
|
+ });
|
|
|
+ if (!flag) {
|
|
|
+ arr.push(i);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ console.log(arr, "合并后的评分人");
|
|
|
+ let data = {
|
|
|
+ ids: arr.join(","), // 姓名
|
|
|
+ };
|
|
|
+ let res = await axios({
|
|
|
+ method: "post",
|
|
|
+ url: api.value + "/api/sysUser/queryListByIds",
|
|
|
+ headers: {
|
|
|
+ tokenP: sessionStorage.getItem("tokenP"),
|
|
|
+ user_head: sessionStorage.getItem("userhead"),
|
|
|
+ },
|
|
|
+ data,
|
|
|
+ });
|
|
|
+ scorerData.value = res.data.data;
|
|
|
+ console.log(res, "评分人列表数据");
|
|
|
};
|
|
|
+// 评分人数据
|
|
|
+const scorerList = async (id) => {
|
|
|
+ let data = {
|
|
|
+ ids: id, // 姓名
|
|
|
+ };
|
|
|
+ let res = await axios({
|
|
|
+ method: "post",
|
|
|
+ url: api.value + "/api/sysUser/queryListByIds",
|
|
|
+ headers: {
|
|
|
+ tokenP: sessionStorage.getItem("tokenP"),
|
|
|
+ user_head: sessionStorage.getItem("userhead"),
|
|
|
+ },
|
|
|
+ data,
|
|
|
+ });
|
|
|
+ console.log(res, "评分人数据列表");
|
|
|
+ if (res.data.code == 200) {
|
|
|
+ scorerData.value = res.data.data;
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.data.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
//编辑项目
|
|
|
const editProject = async (row) => {
|
|
|
projectVisible.value = true;
|
|
|
@@ -2488,49 +2663,56 @@ const editProject = async (row) => {
|
|
|
console.log(item, ind);
|
|
|
arrs.push([item, Number(row.sposoner.split(",")[ind])]);
|
|
|
});
|
|
|
- sposonerVal.value =arrs
|
|
|
- console.log(sposonerVal.value,'主办人员');
|
|
|
-
|
|
|
+ sposonerVal.value = arrs;
|
|
|
+ console.log(sposonerVal.value, "主办人员");
|
|
|
|
|
|
projectRuleForm.coSposoner = row.coSposoner;
|
|
|
projectRuleForm.coOrganize = row.coOrganize;
|
|
|
let arr = [];
|
|
|
- if(row.coOrganize){
|
|
|
- row.coOrganize.split(",").forEach((item, ind) => {
|
|
|
- console.log(item, ind);
|
|
|
- arr.push([item, Number(row.coSposoner.split(",")[ind])]);
|
|
|
- });
|
|
|
- coSposonerVal.value = arr;
|
|
|
- }else{
|
|
|
- coSposonerVal.value=''
|
|
|
+ if (row.coOrganize) {
|
|
|
+ row.coOrganize.split(",").forEach((item, ind) => {
|
|
|
+ console.log(item, ind);
|
|
|
+ arr.push([item, Number(row.coSposoner.split(",")[ind])]);
|
|
|
+ });
|
|
|
+ coSposonerVal.value = arr;
|
|
|
+ } else {
|
|
|
+ coSposonerVal.value = "";
|
|
|
}
|
|
|
+ console.log(coSposonerVal.value, "协办人员");
|
|
|
|
|
|
projectRuleForm.projectFrom = row.projectFrom;
|
|
|
projectRuleForm.projectLevel = row.projectLevel;
|
|
|
projectRuleForm.id = row.id;
|
|
|
// await organizeChange([projectRuleForm.organize, projectRuleForm.sposoner]);
|
|
|
- projectRuleForm.scorer = row.scorer.split(",");
|
|
|
- if (row.scorer) {
|
|
|
- row.scorer.split(",").forEach((item,ind) => {
|
|
|
- // scorerData.value.unshift(item);
|
|
|
- let flag= scorerData.value.some(j=>{
|
|
|
- return item==j.id
|
|
|
- })
|
|
|
- if(!flag){
|
|
|
- let arr={
|
|
|
- userName:row.scorerName.split(',')[ind],
|
|
|
- id:`${item}`
|
|
|
- };
|
|
|
- scorerData.value.unshift(arr)
|
|
|
- console.log(arr);
|
|
|
- }
|
|
|
- });
|
|
|
- // projectRuleForm.scorer= arr; // 联系人
|
|
|
- } else {
|
|
|
- // projectRuleForm.scorer = [];
|
|
|
- }
|
|
|
+ // scoreList().then(() => {
|
|
|
+ // projectRuleForm.scorer = row.scorer.split(",");
|
|
|
+ // });
|
|
|
+
|
|
|
+ scorerList(row.createBy).then(() => {
|
|
|
+ projectRuleForm.scorer = row.scorer.split(",");
|
|
|
+ }); // 获取评分人列表
|
|
|
+
|
|
|
+ // if (row.scorer) {
|
|
|
+ // row.scorer.split(",").forEach((item, ind) => {
|
|
|
+ // // scorerData.value.unshift(item);
|
|
|
+ // let flag = scorerData.value.some((j) => {
|
|
|
+ // return item == j.id;
|
|
|
+ // });
|
|
|
+ // if (!flag) {
|
|
|
+ // let arr = {
|
|
|
+ // userName: row.scorerName.split(",")[ind],
|
|
|
+ // id: `${item}`,
|
|
|
+ // };
|
|
|
+ // scorerData.value.unshift(arr);
|
|
|
+ // console.log(arr);
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // // projectRuleForm.scorer= arr; // 联系人
|
|
|
+ // } else {
|
|
|
+ // // projectRuleForm.scorer = [];
|
|
|
+ // }
|
|
|
console.log(projectRuleForm.scorer);
|
|
|
-
|
|
|
+
|
|
|
// organizeChange([projectRuleForm.organize, projectRuleForm.sposoner]).then(
|
|
|
// (res) => {
|
|
|
// console.log(scorerData.value,res);
|
|
|
@@ -2541,29 +2723,29 @@ const editProject = async (row) => {
|
|
|
// );
|
|
|
};
|
|
|
// 评分人下拉加载数据
|
|
|
-const scorerChange=(query)=>{
|
|
|
- console.log(query);
|
|
|
- scorePage.value=1
|
|
|
- scoreNameSea.value=query
|
|
|
- scorerList()
|
|
|
- // if (query) {
|
|
|
- // scoreNameSea.value=query
|
|
|
+const scorerChange = (query) => {
|
|
|
+ // console.log(query);
|
|
|
+ // scorePage.value=1
|
|
|
+ // scoreNameSea.value=query
|
|
|
// scorerList()
|
|
|
- // } else {
|
|
|
- // scorerData.value = []
|
|
|
- // }
|
|
|
-}
|
|
|
+ // // if (query) {
|
|
|
+ // // scoreNameSea.value=query
|
|
|
+ // // scorerList()
|
|
|
+ // // } else {
|
|
|
+ // // scorerData.value = []
|
|
|
+ // // }
|
|
|
+};
|
|
|
const addStudentListMore = async () => {
|
|
|
if (scorePage.value < scoreTotalPage.value) {
|
|
|
scorePage.value++;
|
|
|
console.log(scorePage.value, "滚动里面");
|
|
|
- let params={
|
|
|
- page:scorePage.value,
|
|
|
- rows:scoreCurrent.value
|
|
|
- }
|
|
|
- let data={
|
|
|
- "userName": scoreNameSea.value, // 姓名
|
|
|
- }
|
|
|
+ let params = {
|
|
|
+ page: scorePage.value,
|
|
|
+ rows: scoreCurrent.value,
|
|
|
+ };
|
|
|
+ let data = {
|
|
|
+ userName: scoreNameSea.value, // 姓名
|
|
|
+ };
|
|
|
let res = await axios({
|
|
|
method: "post",
|
|
|
url: api.value + "/api/sysUser/queryPage",
|
|
|
@@ -2572,7 +2754,7 @@ const addStudentListMore = async () => {
|
|
|
user_head: sessionStorage.getItem("userhead"),
|
|
|
},
|
|
|
params,
|
|
|
- data
|
|
|
+ data,
|
|
|
});
|
|
|
console.log(res, "评分人列表数据");
|
|
|
// let arr=[]
|
|
|
@@ -2584,10 +2766,7 @@ const addStudentListMore = async () => {
|
|
|
// return !flag
|
|
|
// })
|
|
|
// }
|
|
|
- scorerData.value = [
|
|
|
- ...scorerData.value,
|
|
|
- ...res.data.data.rows,
|
|
|
- ];
|
|
|
+ scorerData.value = [...scorerData.value, ...res.data.data.rows];
|
|
|
} else {
|
|
|
console.log("数据全部加载完成");
|
|
|
}
|
|
|
@@ -2615,15 +2794,15 @@ const confirmProject = (formEl) => {
|
|
|
// // 判断是否有id存在,有则是修改账号
|
|
|
if (projectRuleForm.id) {
|
|
|
data.id = projectRuleForm.id;
|
|
|
- if(projectRuleForm.coOrganize){
|
|
|
+ if (projectRuleForm.coOrganize) {
|
|
|
data.coOrganize = projectRuleForm.coOrganize;
|
|
|
- }else{
|
|
|
- data.coOrganize =""
|
|
|
+ } else {
|
|
|
+ data.coOrganize = "";
|
|
|
}
|
|
|
- if(projectRuleForm.coOrganize){
|
|
|
+ if (projectRuleForm.coOrganize) {
|
|
|
data.coSposoner = projectRuleForm.coSposoner;
|
|
|
- }else{
|
|
|
- data.coSposoner =""
|
|
|
+ } else {
|
|
|
+ data.coSposoner = "";
|
|
|
}
|
|
|
res = await axios({
|
|
|
method: "post",
|
|
|
@@ -2635,15 +2814,15 @@ const confirmProject = (formEl) => {
|
|
|
data: data,
|
|
|
});
|
|
|
} else {
|
|
|
- if(projectRuleForm.coOrganize){
|
|
|
+ if (projectRuleForm.coOrganize) {
|
|
|
data.coOrganize = projectRuleForm.coOrganize;
|
|
|
- }else{
|
|
|
- data.coOrganize ="null"
|
|
|
+ } else {
|
|
|
+ data.coOrganize = "null";
|
|
|
}
|
|
|
- if(projectRuleForm.coOrganize){
|
|
|
+ if (projectRuleForm.coOrganize) {
|
|
|
data.coSposoner = projectRuleForm.coSposoner;
|
|
|
- }else{
|
|
|
- data.coSposoner ="null"
|
|
|
+ } else {
|
|
|
+ data.coSposoner = "null";
|
|
|
}
|
|
|
res = await axios({
|
|
|
method: "post",
|
|
|
@@ -2838,7 +3017,7 @@ const handleUpload = async (file) => {
|
|
|
file.file.type ==
|
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ||
|
|
|
file.file.type ==
|
|
|
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
|
|
|
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
|
|
|
file.file.type == "application/vnd.ms-excel"
|
|
|
) {
|
|
|
if (fileList.value.length >= 3) {
|
|
|
@@ -2881,7 +3060,9 @@ const handleUpload = async (file) => {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- ElMessage.warning("附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式");
|
|
|
+ ElMessage.warning(
|
|
|
+ "附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式"
|
|
|
+ );
|
|
|
}
|
|
|
};
|
|
|
// 删除文件
|
|
|
@@ -3239,8 +3420,8 @@ const handleUploadTask = async (file) => {
|
|
|
file.file.type == "application/pdf" ||
|
|
|
file.file.type ==
|
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ||
|
|
|
- file.file.type ==
|
|
|
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
|
|
|
+ file.file.type ==
|
|
|
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
|
|
|
file.file.type == "application/vnd.ms-excel"
|
|
|
) {
|
|
|
if (fileListTask.value.length >= 3) {
|
|
|
@@ -3283,7 +3464,9 @@ const handleUploadTask = async (file) => {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- ElMessage.warning("附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式");
|
|
|
+ ElMessage.warning(
|
|
|
+ "附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式"
|
|
|
+ );
|
|
|
}
|
|
|
};
|
|
|
// 删除文件
|
|
|
@@ -3449,7 +3632,7 @@ const handleAttachment = async (file) => {
|
|
|
file.file.type ==
|
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ||
|
|
|
file.file.type ==
|
|
|
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
|
|
|
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
|
|
|
file.file.type == "application/vnd.ms-excel"
|
|
|
) {
|
|
|
if (fileListAttachment.value.length >= 3) {
|
|
|
@@ -3492,7 +3675,9 @@ const handleAttachment = async (file) => {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- ElMessage.warning("附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式");
|
|
|
+ ElMessage.warning(
|
|
|
+ "附件仅支持'.jpeg'、'.png'、'.pdf'、'.docx'、'.xlsx'、'.xls'格式"
|
|
|
+ );
|
|
|
}
|
|
|
};
|
|
|
// 删除文件
|
|
|
@@ -3531,18 +3716,18 @@ const pdfChange = (url) => {
|
|
|
pdfFlag.value = 3;
|
|
|
}
|
|
|
// execl文件
|
|
|
- else if(url.includes(".xlsx") || url.includes(".xls")){
|
|
|
+ else if (url.includes(".xlsx") || url.includes(".xls")) {
|
|
|
pdfFlag.value = 4;
|
|
|
}
|
|
|
filePreviewPdf(url);
|
|
|
};
|
|
|
// execl文件预览
|
|
|
-const renderedHandler =()=> {
|
|
|
- console.log("渲染完成")
|
|
|
+const renderedHandler = () => {
|
|
|
+ console.log("渲染完成");
|
|
|
+};
|
|
|
+const errorHandler = () => {
|
|
|
+ console.log("渲染失败");
|
|
|
};
|
|
|
-const errorHandler = ()=> {
|
|
|
- console.log("渲染失败")
|
|
|
-}
|
|
|
// 查看PDF
|
|
|
const filePreviewPdf = (url) => {
|
|
|
console.log(url, "pdf地址信息");
|
|
|
@@ -3592,7 +3777,7 @@ onBeforeMount(() => {
|
|
|
departmentList();
|
|
|
// userList();
|
|
|
users();
|
|
|
- scorerList()
|
|
|
+ // scorerList()
|
|
|
});
|
|
|
onMounted(() => {
|
|
|
const timer = setTimeout(() => {
|
|
|
@@ -3791,6 +3976,13 @@ onMounted(() => {
|
|
|
.item {
|
|
|
margin-bottom: 4px;
|
|
|
}
|
|
|
+ .unit {
|
|
|
+ width: 330px;
|
|
|
+ height: 18px;
|
|
|
+ white-space: nowrap; /* 防止文本换行 */
|
|
|
+ overflow: hidden; /* 隐藏溢出的内容 */
|
|
|
+ text-overflow: ellipsis; /* 溢出内容显示为省略号 */
|
|
|
+ }
|
|
|
|
|
|
.plan {
|
|
|
display: flex;
|