feat:增加项目授权以及修改新建项目

This commit is contained in:
lixg
2022-11-28 22:47:30 +08:00
parent 032df5bb71
commit 33e9e1bb93
16 changed files with 1135 additions and 665 deletions

View File

@@ -44,51 +44,28 @@ export default defineComponent({
const currentRouteName = computed(() => route.name); const currentRouteName = computed(() => route.name);
//获取组织树 //获取组织树
const orgTree = () => { const getOrgTree = () => {
let obj = { let obj = {
id: 0,
keyWord: "", keyWord: "",
pageNo: 0, id: -1,
pageNo: 1,
pageSize: 20, pageSize: 20,
}; };
api api
.getOrgInfo(obj) .getOrgInfo(obj)
.then((res) => { .then((res) => {
if (res.status === 200) { console.log("组织树获取成功", res);
// console.log("获取组织树成功", res.data.data); if (res.data.code === 200) {
// state.orgtreeList = res.data.data; // state.treeData = res.data.data;
if (res.status === 200) { store.commit("getOrgtreeList", res.data.data);
let arr = res.data.data.rows;
for (let i = 0; i < arr.length; i++) {
let object = {
keyWord: "",
id: arr[i].id,
pageNo: 1,
pageSize: 20,
};
api
.getOrgInfo(object)
.then((res) => {
// console.log("获取子元素", res);
if (res.status === 200) {
arr[i].treeChildList = res.data.data.rows;
if (i === arr.length - 1) {
store.commit("getOrgtreeList", arr);
}
}
})
.catch((err) => {
console.log("获取子元素失败", err);
});
}
}
} }
}) })
.catch((err) => { .catch((err) => {
console.log("获取组织树失败", err); console.log("组织树获取失败", err);
}); });
}; };
orgTree();
getOrgTree();
return { return {
routes, routes,

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-21 14:32:52 * @Date: 2022-11-21 14:32:52
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-27 16:55:32 * @LastEditTime: 2022-11-28 14:25:01
* @FilePath: /fe-manage/src/api/config.js * @FilePath: /fe-manage/src/api/config.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31 * @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2022-11-26 14:57:17 * @LastEditTime: 2022-11-28 19:59:10
* @FilePath: /fe-manage/src/api/index1.js * @FilePath: /fe-manage/src/api/index1.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@@ -102,8 +102,11 @@ export const getOrgInfo = (obj) => http.post('/admin/orgStruct/getOrgInfo', obj)
export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj) export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj)
//获取受众(修改版) //获取受众(修改版)
export const getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj) export const getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj)
//获取授权(修改版) //获取、添加授权(修改版)
export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj) export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj)
//获取用户登录 //获取用户登录
export const getUser = () => http.post('/admin/CheckUser/login', { withCredentials: true }) export const getUser = () => http.post('/admin/CheckUser/login', { withCredentials: true })

View File

@@ -196,7 +196,21 @@ function getCookie(name) {
} }
return ""; return "";
} }
//最后通
//滚动加载信息
const scrollLoad = (e) => {
// console.log("滚动", e, b);
const { target } = e;
const scrllHeight = target.scrollHeight - target.scrollTop;
const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight);
if (scrllHeight === 0 && clientHeight === 0) {
return 1
} else if (scrllHeight - clientHeight == 0) {
return 2
}
};
//新建延迟 //新建延迟
@@ -414,6 +428,7 @@ export {
formatNumber, formatNumber,
setCookie, setCookie,
getCookie, getCookie,
scrollLoad,
commonData, commonData,
organizationalTree, organizationalTree,
iframeUrl, iframeUrl,

View File

@@ -29,7 +29,7 @@
border-radius: 15px; border-radius: 15px;
margin-right: 10px; margin-right: 10px;
" "
src="../assets/images/avatar.png" :src="avatar"
/> />
<div>{{ username }}</div> <div>{{ username }}</div>
</div> </div>
@@ -69,6 +69,7 @@ export default {
const state = reactive({ const state = reactive({
selectRole: "管理员", selectRole: "管理员",
username: "", username: "",
avatar: null,
roleList: [ roleList: [
{ {
id: 1, id: 1,
@@ -103,6 +104,9 @@ export default {
console.log("获取登录信息成功", res); console.log("获取登录信息成功", res);
if (res.data.code === 200) { if (res.data.code === 200) {
state.username = res.data.data.realName; state.username = res.data.data.realName;
state.avatar = res.data.data.avatar
? res.data.data.avatar
: require("../assets/images/avatar.png");
} }
}) })
.catch((err) => { .catch((err) => {

File diff suppressed because it is too large Load Diff

View File

@@ -124,8 +124,8 @@
<div class="botm"></div> <div class="botm"></div>
<div class="btnn"> <div class="btnn">
<button class="btn1" @click="closeCancelModal">取消</button> <button class="btn1" @click="closeDrawer">取消</button>
<button class="btn2" @click="closeCancelModal">确定</button> <button class="btn2" @click="closeDrawer">确定</button>
</div> </div>
</a-drawer> </a-drawer>
</template> </template>
@@ -167,11 +167,12 @@ export default {
// state: "管理权", // state: "管理权",
// }, // },
], ],
cancelAuthId: null, //取消授权id cancelAuthInfo: null, //取消授权id
}); });
const closeDrawer = () => { const closeDrawer = () => {
ctx.emit("update:ProjPvisible", false); ctx.emit("update:ProjPvisible", false);
state.currentPage = 1;
}; };
const afterVisibleChange = (bool) => { const afterVisibleChange = (bool) => {
console.log("state", bool, props); console.log("state", bool, props);
@@ -183,9 +184,14 @@ export default {
console.log("selectedRowKeys changed: ", selectedRowKeys); console.log("selectedRowKeys changed: ", selectedRowKeys);
state.selectedRowKeys = selectedRowKeys; state.selectedRowKeys = selectedRowKeys;
}; };
const showCancelModal = (id) => { const showCancelModal = (item) => {
console.log("item", item);
state.cancelModal = true; state.cancelModal = true;
state.cancelAuthId = id; let obj = {
id: item.number,
name: item.name,
};
state.cancelAuthInfo = obj;
}; };
const closeCancelModal = () => { const closeCancelModal = () => {
state.cancelModal = false; state.cancelModal = false;
@@ -259,7 +265,8 @@ export default {
<div <div
class="opa" class="opa"
onClick={() => { onClick={() => {
showCancelModal(text.record.id); console.log("text.record.id", text.record.id);
showCancelModal(text.record);
}} }}
> >
取消授权 取消授权
@@ -299,9 +306,9 @@ export default {
name: value.memberName ? value.memberName : "-", name: value.memberName ? value.memberName : "-",
com: value.orgName ? value.orgName : "-", com: value.orgName ? value.orgName : "-",
gang: "产品经理", gang: "-",
number: "20201234", number: value.memberNo ? value.memberNo : "-",
state: "管理权", state: "-",
}; };
array.push(obj); array.push(obj);
}); });
@@ -338,18 +345,22 @@ export default {
type: 2, type: 2,
tag: 1, tag: 1,
opt: 4, opt: 4,
refId: state.cancelAuthId, refId: props.selectProjectId,
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
deptList: [],
groupList: [],
studentList: [state.cancelAuthInfo],
}; };
console.log("取权限名单obj", obj); console.log("取权限名单obj", obj);
api api
.optionAuthPerm(obj) .optionAuthPerm(obj)
.then((res) => { .then((res) => {
// console.log("获取权限名单成功", res); console.log("取消权限名单", res);
if (res.data.code === 200) { if (res.data.code === 200) {
console.log("取消授权成功", res.data.data); // console.log("取消授权成功", res.data.data);
optionAuthPerm(); optionAuthPerm();
closeCancelModal();
} }
}) })
.catch((err) => { .catch((err) => {

View File

@@ -607,8 +607,8 @@ export default {
tag: 1, //归属权 tag: 1, //归属权
opt: 1, //查询 opt: 1, //查询
type: 2, //项目 type: 2, //项目
// refId: props.selectProjectId, //项目id refId: props.selectProjectId, //项目id
refId: 64, // refId: 64,
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
studentList: [], studentList: [],
@@ -630,12 +630,14 @@ export default {
tag: 2, //归属权 tag: 2, //归属权
opt: 3, //修改 opt: 3, //修改
type: 2, //项目 type: 2, //项目
// refId: props.selectProjectId, //项目id refId: props.selectProjectId, //项目id
refId: 64, // refId: 64,
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
// studentList: state.selectPeopleArr, // studentList: state.selectPeopleArr,
studentList: [{ id: "966733333637632000", name: "何丹" }], deptList: [],
groupList: [],
studentList: state.selectPeopleArr,
}; };
console.log("修改归属权obj", obj); console.log("修改归属权obj", obj);
api api

View File

@@ -541,6 +541,7 @@ import {
onMounted, onMounted,
onUnmounted, onUnmounted,
// watch // watch
computed,
} from "vue"; } from "vue";
import elementResizeDetectorMaker from "element-resize-detector"; import elementResizeDetectorMaker from "element-resize-detector";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
@@ -556,7 +557,7 @@ import {
// deepClone, // deepClone,
batchLoadList, batchLoadList,
} from "../../utils/utils"; } from "../../utils/utils";
import { useStore } from "vuex";
export default { export default {
name: "StuAdd", name: "StuAdd",
props: { props: {
@@ -566,6 +567,7 @@ export default {
}, },
}, },
setup(props, ctx) { setup(props, ctx) {
const store = useStore();
const state = reactive({ const state = reactive({
screenHeight: document.body.clientHeight, // 屏幕高度 screenHeight: document.body.clientHeight, // 屏幕高度
pageSize: 10, pageSize: 10,
@@ -1171,24 +1173,27 @@ export default {
// state.copyTreeData = deepClone(arr); // state.copyTreeData = deepClone(arr);
// }; // };
//获取组织树 //获取组织树
const getTree = () => { // const getTree = () => {
let obj = { // let obj = {
keyWord: "", // keyWord: "",
id: -1, // id: -1,
pageNo: 1, // pageNo: 1,
pageSize: 20, // pageSize: 20,
}; // };
getOrgInfoApi(obj) // getOrgInfoApi(obj)
.then((res) => { // .then((res) => {
console.log("组织树获取成功", res); // console.log("组织树获取成功", res);
if (res.data.code === 200) { // if (res.data.code === 200) {
state.treeData = res.data.data; // state.treeData = res.data.data;
} // }
}) // })
.catch((err) => { // .catch((err) => {
console.log("组织树获取失败", err); // console.log("组织树获取失败", err);
}); // });
}; // };
state.treeData = computed(() => {
return store.state.orgtreeList ? store.state.orgtreeList : [];
});
//获取学员 //获取学员
const getMember = async (org) => { const getMember = async (org) => {
if (!state.nameSearch && !org) { if (!state.nameSearch && !org) {
@@ -1270,7 +1275,7 @@ export default {
console.log("state", bool); console.log("state", bool);
if (bool) { if (bool) {
// getComOnce(); // getComOnce();
getTree(); // getTree();
} }
}; };
const getClientHeight = () => { const getClientHeight = () => {

View File

@@ -864,13 +864,13 @@
<div class="footbtn"> <div class="footbtn">
<div class="btnbox"> <div class="btnbox">
<div class="btn btn2"> <div class="btn btn2" @click="temporaryStorage">
<div class="btnText">暂存</div> <div class="btnText">暂存</div>
</div> </div>
<div class="btn btn2"> <div class="btn btn2" @click="submitStorage">
<div class="btnText">确定</div> <div class="btnText">确定</div>
</div> </div>
<div class="btn btn1"> <div class="btn btn1" @click="cancelStorage">
<div class="btnText">取消</div> <div class="btnText">取消</div>
</div> </div>
</div> </div>
@@ -1051,7 +1051,7 @@ import draggable from "vuedraggable";
import { editTask } from "../../api/indexTaskadd"; import { editTask } from "../../api/indexTaskadd";
// import { RouterEditTask } from "@/api/indexTask"; // import { RouterEditTask } from "@/api/indexTask";
import { useRouter } from "vue-router";
import { toDate } from "../../api/method"; import { toDate } from "../../api/method";
import UnlockMode from "../../components/drawers/UnlockMode.vue"; import UnlockMode from "../../components/drawers/UnlockMode.vue";
export default { export default {
@@ -1076,6 +1076,7 @@ export default {
AddProject, AddProject,
}, },
setup() { setup() {
const router = useRouter();
const state = reactive({ const state = reactive({
routerId: storage.get("routerId") routerId: storage.get("routerId")
? JSON.parse(storage.get("routerId")) ? JSON.parse(storage.get("routerId"))
@@ -1884,6 +1885,23 @@ export default {
const showModeVisible = () => { const showModeVisible = () => {
state.unlockModeVisible = true; state.unlockModeVisible = true;
}; };
//暂存
const temporaryStorage = () => {
message.success("暂存成功");
};
//确定
const submitStorage = () => {
router.push({
path: "/leveladd",
});
};
//取消
const cancelStorage = () => {
router.push({
path: "/leveladd",
});
};
return { return {
...toRefs(state), ...toRefs(state),
// tableDataFunc, // tableDataFunc,
@@ -1935,6 +1953,10 @@ export default {
showModeVisible, showModeVisible,
showAddface, showAddface,
temporaryStorage,
submitStorage,
cancelStorage,
}; };
}, },
}; };

View File

@@ -62,13 +62,17 @@
} }
" "
v-model:value="classifySelect" v-model:value="classifySelect"
placeholder="四个养成" placeholder="请选择分类"
style="width: 100%" style="width: 100%"
:options="classifyList" :options="classifyList"
@change="classificationChange" @change="classificationChange"
allowClear allowClear
showSearch showSearch
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
> >
</a-select> </a-select>
</div> </div>
@@ -169,6 +173,7 @@
allowClear allowClear
showSearch showSearch
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
@popupScroll="memberScroll"
> >
</a-select> </a-select>
</div> </div>
@@ -183,18 +188,26 @@
</div> </div>
<div class="in select"> <div class="in select">
<a-select <a-tree-select
:getPopupContainer=" :getPopupContainer="
(triggerNode) => { (triggerNode) => {
return triggerNode.parentNode || document.body; return triggerNode.parentNode || document.body;
} }
" "
v-model:value="classifySelect2" v-model:value="classifySelect2"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="自动带出 可修改" placeholder="自动带出 可修改"
:options="classifyList2" :options="classifyList2"
@change="classificationChange2" @change="classificationChange2"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
/> :tree-data="classifyList2"
:fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
></a-tree-select>
</div> </div>
</div> </div>
<div class="name name2"> <div class="name name2">
@@ -252,6 +265,10 @@
@change="classificationChange3" @change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级" placeholder="集团级/组织级/现地级/部门级"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -275,6 +292,10 @@
@change="classificationChange4" @change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级" placeholder="集团级/组织级/现地级/部门级"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -355,6 +376,7 @@
style="width: 100%" style="width: 100%"
:options="classifyList5" :options="classifyList5"
@change="classificationChange5" @change="classificationChange5"
@popupScroll="templateScroll"
> >
</a-select> </a-select>
</div> </div>
@@ -372,16 +394,18 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, ref } from "vue"; import { reactive, toRefs, ref, computed } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import dayjs from "dayjs"; import dayjs from "dayjs";
import * as api from "../../api/index"; import * as api from "../../api/index";
import { toDate } from "../../api/method"; import * as api1 from "../../api/index1";
import { toDate, scrollLoad } from "../../api/method";
import { useStore } from "vuex";
export default { export default {
name: "projectAdd", name: "projectAdd",
setup() { setup() {
const store = useStore();
// 编辑页面跳转过来时候,自动填充表格 // 编辑页面跳转过来时候,自动填充表格
const routers = useRoute(); const routers = useRoute();
const router = useRouter(); const router = useRouter();
@@ -398,12 +422,20 @@ export default {
valueE1: null, valueE1: null,
valueE2: null, valueE2: null,
classifySelect1: [], classifySelect1: [],
classifySelect2: [], classifySelect2: null, //选中的资源归属信息
classifySelect3: [], classifySelect3: null, //选中的项目级别信息
classifySelect4: [], classifySelect4: null, //选中的培训分类信息
rangevalue: [], rangevalue: [],
projectAscription: "", projectAscription: "",
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null, viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
currentPage: 1, //当前页
tableDataTotal: -1, //模版列表总数
pageSize: 10, //每页10条数据
totalPages: 0, //总页数
currentPage1: 1, //项目经理
pageSize1: 10, //项目经理
}); });
if (routers.query.name == undefined) { if (routers.query.name == undefined) {
@@ -489,9 +521,7 @@ export default {
const projectName = ref(""); const projectName = ref("");
const classifyList = ref([ const classifyList = ref([
{ value: 1, label: "管理者" }, // { value: 1, label: "管理者" },
{ value: 2, label: "领军者" },
{ value: 3, label: "产业人" },
]); ]);
let projectType = ""; let projectType = "";
@@ -615,10 +645,48 @@ export default {
// 项目经理 后续接口调用 // 项目经理 后续接口调用
const classifyList1 = ref([ const classifyList1 = ref([
{ value: 1, label: "李俊国" }, // { value: 1, label: "李俊国" },
{ value: 2, label: "将小米" },
{ value: 3, label: "刘孟君" },
]); ]);
//获取学员
const getMember = () => {
api1
.getMemberInfo({
pageNo: state.currentPage1,
pageSize: state.pageSize1,
keyWord: "",
})
.then((res) => {
if (res.data.code === 200) {
let arr = res.data.data.rows;
let array = classifyList1.value;
arr.map((value) => {
let obj = {
value: value.id,
label: value.realName,
};
array.push(obj);
});
classifyList1.value = array;
console.log("获取学员", res.data);
// classifyList1.value = res.data.data.rows;
// state.tableDataTotal = res.data.data.total;
// return res.data.data.rows;
}
});
};
getMember();
//学员滚动加载信息
const memberScroll = (e) => {
// console.log("滚动", e, b);
let num = scrollLoad(e);
if (num === 1) {
state.currentPage1 = 1;
} else if (num === 2) {
// 如果滑到底部,则加载下一页
state.currentPage1++;
getMember();
}
};
let manager = ""; let manager = "";
let managerId = ""; let managerId = "";
@@ -649,11 +717,9 @@ export default {
}; };
// 资源归属 sourceBelongId 后续给接口 // 资源归属 sourceBelongId 后续给接口
const classifyList2 = ref([ const classifyList2 = computed(() => {
{ value: 1, label: "项目一" }, return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
{ value: 2, label: "项目二" }, });
{ value: 3, label: "项目三" },
]);
let sourceBelongIdC = ""; let sourceBelongIdC = "";
const classificationChange2 = (key) => { const classificationChange2 = (key) => {
@@ -663,10 +729,7 @@ export default {
// 项目级别 // 项目级别
const classifyList3 = ref([ const classifyList3 = ref([
{ value: 1, label: "集团级" }, // { value: 1, label: "集团级" },
{ value: 2, label: "组织级" },
{ value: 3, label: "现地级" },
{ value: 4, label: "部门级" },
]); ]);
let levels = ""; let levels = "";
@@ -677,10 +740,7 @@ export default {
// 培训分类 // 培训分类
const classifyList4 = ref([ const classifyList4 = ref([
{ value: 1, label: "集团级" }, // { value: 1, label: "集团级" },
{ value: 2, label: "组织级" },
{ value: 3, label: "现地级" },
{ value: 4, label: "部门级" },
]); ]);
let systemid = ""; let systemid = "";
@@ -688,17 +748,94 @@ export default {
console.log(`selected ${key}`, classifyList4); console.log(`selected ${key}`, classifyList4);
systemid = key; systemid = key;
}; };
//获取分类、封面图、项目级别、培训分类-----------字典配置-------------------------------
const getDictList = (param) => {
let obj = {
pageNo: 1,
pageSize: 20,
setCode: param,
};
api1
.getDict(obj)
.then((res) => {
console.log("获取字典成功", res);
if (res.status === 200) {
if (param === "projectClass") {
classifyList.value = res.data.data.rows;
}
if (param === "projectPic") {
if (res.data.data.rows.length > 0) {
imageUrl.value = res.data.data.rows[0].dictValue;
picUrl = res.data.data.rows[0].dictValue;
}
}
if (param === "projectLevel") {
classifyList3.value = res.data.data.rows;
}
if (param === "projectSys") {
classifyList4.value = res.data.data.rows;
}
}
})
.catch((err) => {
console.log("获取字典失败", err);
});
};
getDictList("projectClass");
getDictList("projectPic");
getDictList("projectLevel");
getDictList("projectSys");
//获取分类、封面图、项目级别、培训分类---------------字典配置---------------------------
// 模版 // 模版
const classifyList5 = ref([ const classifyList5 = ref([
{ value: 1, label: "模版一" }, // { value: 1, label: "模版一" },
{ value: 2, label: "模版二" },
{ value: 3, label: "模版三" },
{ value: 4, label: "模版四" },
]); ]);
const classificationChange5 = (key) => { const classificationChange5 = (key) => {
console.log(`selected ${key}`, classifyList5); console.log(`selected ${key}`, classifyList5);
}; };
//获取模版列表
const getTemplate = () => {
let obj = {
pageNo: state.currentPage,
pageSize: state.pageSize,
// projectId:id?id:''
};
api
.getTemplate(obj)
.then((res) => {
console.log("获取模版列表", res);
state.totalPages = Number(res.data.data.pages);
if (res.status === 200) {
let arr = res.data.data.rows;
let array = classifyList5.value;
arr.map((value) => {
let obj = {
value: value.projectTemplateId,
label: value.name,
};
array.push(obj);
});
classifyList5.value = array;
}
})
.catch((err) => {
console.log("获取模版列表失败", err);
});
};
getTemplate();
//模版滚动加载模板信息
const templateScroll = (e) => {
// console.log("滚动", e, b);
let num = scrollLoad(e);
if (num === 1) {
state.currentPage = 1;
} else if (num === 2) {
// 如果滑到底部,则加载下一页
state.currentPage++;
getTemplate();
}
};
// 项目说明 // 项目说明
const remark = ref(""); const remark = ref("");
@@ -906,6 +1043,9 @@ export default {
isEdit, isEdit,
backPage, backPage,
dateFormatList, dateFormatList,
templateScroll,
memberScroll,
}; };
}, },
}; };

View File

@@ -167,6 +167,7 @@
allowClear allowClear
showSearch showSearch
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
@popupScroll="memberScroll"
> >
</a-select> </a-select>
</div> </div>
@@ -192,7 +193,6 @@
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="自动带出 可修改" placeholder="自动带出 可修改"
allow-clear allow-clear
tree-default-expand-all
:tree-data="classifyList2" :tree-data="classifyList2"
:fieldNames="{ :fieldNames="{
children: 'treeChildList', children: 'treeChildList',
@@ -416,7 +416,7 @@ import dayjs from "dayjs";
import * as api from "../../api/index"; import * as api from "../../api/index";
import * as api1 from "../../api/index1"; import * as api1 from "../../api/index1";
import { storage } from "../../api/storage"; import { storage } from "../../api/storage";
import { toDate } from "../../api/method"; import { toDate, scrollLoad } from "../../api/method";
import { useStore } from "vuex"; import { useStore } from "vuex";
export default { export default {
name: "projectAdd", name: "projectAdd",
@@ -441,6 +441,9 @@ export default {
pageSize: 10, //每页10条数据 pageSize: 10, //每页10条数据
totalPages: 0, //总页数 totalPages: 0, //总页数
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null, viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
currentPage1: 1, //项目经理
pageSize1: 10, //项目经理
}); });
//分类列表 //分类列表
const classifyList = ref([]); const classifyList = ref([]);
@@ -764,12 +767,47 @@ export default {
endTime = new Date(dateString[1]).getTime() / 1000; endTime = new Date(dateString[1]).getTime() / 1000;
}; };
// 项目经理 后续接口调用 // 项目经理 后续接口调用
const classifyList1 = ref([ const classifyList1 = ref([]);
{ value: 1, label: "李俊国" }, //获取学员
{ value: 2, label: "将小米" }, const getMember = () => {
{ value: 3, label: "刘孟君" }, api1
]); .getMemberInfo({
//获取 pageNo: state.currentPage1,
pageSize: state.pageSize1,
keyWord: "",
})
.then((res) => {
if (res.data.code === 200) {
let arr = res.data.data.rows;
let array = classifyList1.value;
arr.map((value) => {
let obj = {
value: value.id,
label: value.realName,
};
array.push(obj);
});
classifyList1.value = array;
console.log("获取学员", res.data);
// classifyList1.value = res.data.data.rows;
// state.tableDataTotal = res.data.data.total;
// return res.data.data.rows;
}
});
};
getMember();
//学员滚动加载信息
const memberScroll = (e) => {
// console.log("滚动", e, b);
let num = scrollLoad(e);
if (num === 1) {
state.currentPage1 = 1;
} else if (num === 2) {
// 如果滑到底部,则加载下一页
state.currentPage1++;
getMember();
}
};
//选择处理项目经理 //选择处理项目经理
let manager = ""; let manager = "";
@@ -929,19 +967,13 @@ export default {
//模版滚动加载模板信息 //模版滚动加载模板信息
const templateScroll = (e) => { const templateScroll = (e) => {
// console.log("滚动", e, b); // console.log("滚动", e, b);
const { target } = e; let num = scrollLoad(e);
const scrllHeight = target.scrollHeight - target.scrollTop; if (num === 1) {
const clientHeight = target.clientHeight;
// console.log("scrllHeight", scrllHeight, clientHeight);
if (scrllHeight === 0 && clientHeight === 0) {
state.currentPage = 1; state.currentPage = 1;
} else if (scrllHeight - clientHeight == 0) { } else if (num === 2) {
// 下拉到底部时 // 如果滑到底部,则加载下一页
if (state.currentPage < state.totalPages) { state.currentPage++;
// 如果滑到底部,则加载下一页 getTemplate();
state.currentPage++;
getTemplate();
}
} }
}; };
@@ -1159,6 +1191,7 @@ export default {
dateFormatList, dateFormatList,
templateScroll, templateScroll,
memberScroll,
}; };
}, },
}; };

View File

@@ -376,10 +376,14 @@
<div class="in select"> <div class="in select">
<a-select <a-select
v-model:value="value2" v-model:value="value2"
placeholder="四个养成" placeholder="请选择分类"
:options="classifyList" :options="classifyList"
@change="classificationChange" @change="classificationChange"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -399,6 +403,7 @@
:options="classifyList1" :options="classifyList1"
@change="classificationChange1" @change="classificationChange1"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
@popupScroll="memberScroll"
/> />
</div> </div>
</div> </div>
@@ -411,13 +416,20 @@
</div> </div>
<div class="inname">资源归属:</div> <div class="inname">资源归属:</div>
<div class="in select"> <div class="in select">
<a-select <a-tree-select
v-model:value="value5" v-model:value="value5"
placeholder="请选择资源归属" placeholder="请选择资源归属"
:options="classifyList5" :options="classifyList5"
:tree-data="classifyList5"
@change="classificationChange5" @change="classificationChange5"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
/> :fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
>
</a-tree-select>
</div> </div>
</div> </div>
<div class="pubtn"> <div class="pubtn">
@@ -498,10 +510,14 @@
<div class="in select"> <div class="in select">
<a-select <a-select
v-model:value="edvalue2" v-model:value="edvalue2"
placeholder="四个养成" placeholder="请选择分类"
:options="classifyList" :options="classifyList"
@change="edclassificationChange" @change="edclassificationChange"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -521,6 +537,7 @@
:options="classifyList1" :options="classifyList1"
@change="edclassificationChange1" @change="edclassificationChange1"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
@popupScroll="memberScroll"
/> />
</div> </div>
</div> </div>
@@ -533,13 +550,20 @@
</div> </div>
<div class="inname">资源归属:</div> <div class="inname">资源归属:</div>
<div class="in select"> <div class="in select">
<a-select <a-tree-select
v-model:value="edvalue5" v-model:value="edvalue5"
placeholder="请选择资源归属" placeholder="请选择资源归属"
:options="classifyList5" :options="classifyList5"
:tree-data="classifyList5"
@change="edclassificationChange5" @change="edclassificationChange5"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
/> :fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
>
</a-tree-select>
</div> </div>
</div> </div>
<div class="pubtn"> <div class="pubtn">
@@ -620,8 +644,12 @@
v-model:value="value7" v-model:value="value7"
@change="classificationChange2" @change="classificationChange2"
:options="classifyList2" :options="classifyList2"
placeholder="四个养成" placeholder="请选择分类"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -641,6 +669,7 @@
:options="classifyList3" :options="classifyList3"
placeholder="自动带出 可编辑" placeholder="自动带出 可编辑"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
@popupScroll="memberScroll"
/> />
</div> </div>
</div> </div>
@@ -653,13 +682,20 @@
</div> </div>
<div class="inname">资源归属:</div> <div class="inname">资源归属:</div>
<div class="in select"> <div class="in select">
<a-select <a-tree-select
v-model:value="value9" v-model:value="value9"
@change="classificationChange4"
:options="classifyList4"
placeholder="请选择资源归属" placeholder="请选择资源归属"
:options="classifyList4"
:tree-data="classifyList4"
@change="classificationChange4"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
/> :fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
>
</a-tree-select>
</div> </div>
</div> </div>
<div class="pubtn"> <div class="pubtn">
@@ -746,8 +782,12 @@
v-model:value="edvalue7" v-model:value="edvalue7"
@change="edclassificationChange2" @change="edclassificationChange2"
:options="classifyList2" :options="classifyList2"
placeholder="四个养成" placeholder="请选择分类"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -767,6 +807,7 @@
:options="classifyList3" :options="classifyList3"
placeholder="自动带出 可编辑" placeholder="自动带出 可编辑"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
@popupScroll="memberScroll"
/> />
</div> </div>
</div> </div>
@@ -779,13 +820,20 @@
</div> </div>
<div class="inname">资源归属:</div> <div class="inname">资源归属:</div>
<div class="in select"> <div class="in select">
<a-select <a-tree-select
v-model:value="edvalue9" v-model:value="edvalue9"
@change="edclassificationChange4"
:options="classifyList4"
placeholder="请选择资源归属" placeholder="请选择资源归属"
:options="classifyList4"
:tree-data="classifyList4"
@change="edclassificationChange4"
style="border-radius: 8px; height: 40px" style="border-radius: 8px; height: 40px"
/> :fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
>
</a-tree-select>
</div> </div>
</div> </div>
<div class="pubtn"> <div class="pubtn">
@@ -1128,30 +1176,48 @@
v-model:ProjPvisible="ProjPvisible" v-model:ProjPvisible="ProjPvisible"
:selectProjectId="selectProjectId" :selectProjectId="selectProjectId"
/> />
<!-- 查看权抽屉 --> <!-- 查看权抽屉 -->
<proj-check-ship <proj-check-ship
v-model:ProjCheckvisible="ProjCheckvisible" v-model:ProjCheckvisible="ProjCheckvisible"
:selectProjectId="selectProjectId" :selectProjectId="selectProjectId"
classify="checkship"
v-model:addAuthList="addAuthList"
:authClassify="authClassify"
/> />
<!-- 管理权抽屉 --> <!-- 管理权抽屉 -->
<proj-manage-ship v-model:ProjManagevisible="ProjManagevisible" /> <proj-check-ship
v-model:ProjCheckvisible="ProjCheckvisible"
:selectProjectId="selectProjectId"
classify="checkship"
v-model:addAuthList="addAuthList"
:authClassify="authClassify"
/>
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, onMounted, ref } from "vue"; import { reactive, toRefs, onMounted, ref, watch, computed } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import ProjOwnerShip from "../../components/drawers/ProjectOwn"; import ProjOwnerShip from "../../components/drawers/ProjectOwn";
import ProjPowerList from "../../components/drawers/ProjPowerList"; import ProjPowerList from "../../components/drawers/ProjPowerList";
import ProjCheckShip from "../../components/drawers/ProjCheckPower"; import ProjCheckShip from "../../components/drawers/ProjCheckPower";
import ProjManageShip from "../../components/drawers/ProjManagePower"; // import ProjManageShip from "../../components/drawers/ProjManagePower";
import * as api from "../../api/index"; import * as api from "../../api/index";
import { toDate } from "../../api/method"; import * as api1 from "../../api/index1";
import { toDate, scrollLoad } from "../../api/method";
import { storage } from "../../api/storage"; import { storage } from "../../api/storage";
import { useStore } from "vuex";
export default { export default {
name: "projectManage", name: "projectManage",
components: { ProjOwnerShip, ProjPowerList, ProjCheckShip, ProjManageShip }, components: {
ProjOwnerShip,
ProjPowerList,
ProjCheckShip,
// ProjManageShip
},
setup() { setup() {
const store = useStore();
const state = reactive({ const state = reactive({
projectName: null, projectName: null,
selectTime: null, selectTime: null,
@@ -1205,6 +1271,12 @@ export default {
copyProjectId: null, //复制项目id copyProjectId: null, //复制项目id
selectProjectId: null, //选择的授权id selectProjectId: null, //选择的授权id
addAuthList: null, //确定授权列表
authClassify: null, //显示的是管理权还是查看权
currentPage1: 1, //项目经理分页
pageSize1: 10,
}); });
// 数据接入 - start - // 数据接入 - start -
const router = useRouter(); const router = useRouter();
@@ -1309,9 +1381,7 @@ export default {
// 项目分类 // 项目分类
const classifyList = ref([ const classifyList = ref([
{ value: 1, label: "管理者" }, // { value: 1, label: "管理者" },
{ value: 2, label: "领军者" },
{ value: 3, label: "产业人" },
]); ]);
const classifyList1 = ref([ const classifyList1 = ref([
@@ -1324,7 +1394,7 @@ export default {
const value2 = ref([]); const value2 = ref([]);
const value3 = ref([]); const value3 = ref([]);
const value4 = ref(""); const value4 = ref("");
const value5 = ref([]); const value5 = ref(null);
const edvalue1 = ref(""); const edvalue1 = ref("");
const edvalue2 = ref([]); const edvalue2 = ref([]);
@@ -1378,12 +1448,13 @@ export default {
edsource = key; edsource = key;
}; };
const classifyList5 = ref([ // const classifyList5 = ref([
{ value: 1, label: "项目一" }, // // { value: 1, label: "项目一" },
{ value: 2, label: "项目二" }, // ]);
{ value: 3, label: "项目三" }, // 资源归属 sourceBelongId 后续给接口
]); const classifyList5 = computed(() => {
return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
});
let sourceBelongId = 0; let sourceBelongId = 0;
const classificationChange5 = (key) => { const classificationChange5 = (key) => {
console.log(`selected ${key}`); console.log(`selected ${key}`);
@@ -1393,7 +1464,7 @@ export default {
let type = ""; let type = "";
const classificationChange = (key) => { const classificationChange = (key) => {
console.log(`selected ${key}`); console.log(`selected ${key}`);
console.log(classifyList.value[key - 1].label); // console.log(classifyList.value[key - 1].label);
type = key; type = key;
}; };
@@ -1500,7 +1571,7 @@ export default {
value2.value = []; value2.value = [];
value3.value = []; value3.value = [];
value4.value = ""; value4.value = "";
value5.value = []; value5.value = "";
state.doublepro = false; state.doublepro = false;
}; };
console.log(edmanage, edmanageid); console.log(edmanage, edmanageid);
@@ -1604,9 +1675,7 @@ export default {
const value9 = ref([]); const value9 = ref([]);
const classifyList2 = ref([ const classifyList2 = ref([
{ value: 1, label: "管理者" }, // { value: 1, label: "管理者" },
{ value: 2, label: "领军者" },
{ value: 3, label: "产业人" },
]); ]);
let categoryT = ""; let categoryT = "";
@@ -1616,9 +1685,7 @@ export default {
}; };
const classifyList3 = ref([ const classifyList3 = ref([
{ value: 1, label: "李俊国" }, // { value: 1, label: "李俊国" },
{ value: 2, label: "将小米" },
{ value: 3, label: "刘孟君" },
]); ]);
let managerT = ""; let managerT = "";
@@ -1641,12 +1708,10 @@ export default {
managerT = mstr; managerT = mstr;
managerIdT = midstr; managerIdT = midstr;
}; };
// 资源归属 sourceBelongId 后续给接口
const classifyList4 = ref([ const classifyList4 = computed(() => {
{ value: 1, label: "项目一" }, return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
{ value: 2, label: "项目二" }, });
{ value: 3, label: "项目三" },
]);
let sourceBelongIdT = ""; let sourceBelongIdT = "";
const classificationChange4 = (key) => { const classificationChange4 = (key) => {
@@ -1871,6 +1936,75 @@ export default {
state.eddoublesonpro = false; state.eddoublesonpro = false;
}; };
//获取分类、封面图、项目级别、培训分类-----------字典配置-------------------------------
const getDictList = (param) => {
let obj = {
pageNo: 1,
pageSize: 20,
setCode: param,
};
api1
.getDict(obj)
.then((res) => {
console.log("获取字典成功", res);
if (res.status === 200) {
if (param === "projectClass") {
classifyList.value = res.data.data.rows;
classifyList2.value = res.data.data.rows;
}
}
})
.catch((err) => {
console.log("获取字典失败", err);
});
};
getDictList("projectClass");
// getDictList("projectLevel");
// getDictList("projectSys");
//获取分类、封面图、项目级别、培训分类---------------字典配置---------------------------
//获取学员
const getMember = () => {
api1
.getMemberInfo({
pageNo: state.currentPage1,
pageSize: state.pageSize1,
keyWord: "",
})
.then((res) => {
if (res.data.code === 200) {
let arr = res.data.data.rows;
let array = classifyList1.value;
arr.map((value) => {
let obj = {
value: value.id,
label: value.realName,
};
array.push(obj);
});
classifyList1.value = array;
classifyList3.value = array;
console.log("获取学员", res.data);
// classifyList1.value = res.data.data.rows;
// state.tableDataTotal = res.data.data.total;
// return res.data.data.rows;
}
});
};
getMember();
//学员滚动加载信息
const memberScroll = (e) => {
// console.log("滚动", e, b);
let num = scrollLoad(e);
if (num === 1) {
state.currentPage1 = 1;
} else if (num === 2) {
// 如果滑到底部,则加载下一页
state.currentPage1++;
getMember();
}
};
//打开发布弹窗 //打开发布弹窗
const showProjectPub = (object) => { const showProjectPub = (object) => {
state.projectPub = true; state.projectPub = true;
@@ -2081,7 +2215,10 @@ export default {
state.reviewModal = true; state.reviewModal = true;
}; };
//确认提交审核 //确认提交审核
const reviewProject = () => {}; const reviewProject = () => {
state.reviewModal = false;
message.success("提交成功");
};
//关闭提交审核弹窗 //关闭提交审核弹窗
const closeReviewModal = () => { const closeReviewModal = () => {
state.reviewModal = false; state.reviewModal = false;
@@ -2092,7 +2229,10 @@ export default {
state.recallReviewModal = true; state.recallReviewModal = true;
}; };
//确认提交审核 //确认提交审核
const recallReviewProject = () => {}; const recallReviewProject = () => {
state.recallReviewModal = false;
message.success("撤回成功");
};
//关闭提交审核弹窗 //关闭提交审核弹窗
const closeRecallReviewModal = () => { const closeRecallReviewModal = () => {
state.recallReviewModal = false; state.recallReviewModal = false;
@@ -2285,7 +2425,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -2368,7 +2508,7 @@ export default {
<div <div
onClick={() => { onClick={() => {
console.log("点击了111"); console.log("点击了111");
showProjOwner(); showProjOwner(value.record.projectId);
}} }}
> >
归属权 归属权
@@ -2387,7 +2527,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -2457,7 +2597,7 @@ export default {
<div <div
onClick={() => { onClick={() => {
console.log("点击了111"); console.log("点击了111");
showProjOwner(); showProjOwner(value.record.projectId);
}} }}
> >
归属权 归属权
@@ -2476,7 +2616,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -2578,7 +2718,7 @@ export default {
<div <div
onClick={() => { onClick={() => {
console.log("点击了111"); console.log("点击了111");
showProjOwner(); showProjOwner(value.record.projectId);
}} }}
> >
归属权 归属权
@@ -2597,7 +2737,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -2672,7 +2812,7 @@ export default {
<div <div
onClick={() => { onClick={() => {
console.log("点击了111"); console.log("点击了111");
showProjOwner(); showProjOwner(value.record.projectId);
}} }}
> >
归属权 归属权
@@ -2691,7 +2831,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -2745,7 +2885,7 @@ export default {
<div <div
onClick={() => { onClick={() => {
console.log("点击了111"); console.log("点击了111");
showProjOwner(); showProjOwner(value.record.projectId);
}} }}
> >
归属权 归属权
@@ -2764,7 +2904,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -2919,7 +3059,7 @@ export default {
<div <div
onClick={() => { onClick={() => {
console.log("点击了111"); console.log("点击了111");
showProjOwner(); showProjOwner(value.record.projectId);
}} }}
> >
归属权 归属权
@@ -2938,7 +3078,7 @@ export default {
<a-select-option value="管理权" label="管理权"> <a-select-option value="管理权" label="管理权">
<div <div
onClick={() => { onClick={() => {
showProjManage(); showProjManage(value.record.projectId);
}} }}
> >
管理权 管理权
@@ -3265,11 +3405,15 @@ export default {
state.ProjPvisible = true; state.ProjPvisible = true;
}; };
const showProjCheck = (id) => { const showProjCheck = (id) => {
state.authClassify = 1;
state.selectProjectId = id; state.selectProjectId = id;
state.ProjCheckvisible = true; state.ProjCheckvisible = true;
}; };
const showProjManage = () => { const showProjManage = (id) => {
state.ProjManagevisible = true; state.authClassify = 2;
state.selectProjectId = id;
// state.ProjManagevisible = true;
state.ProjCheckvisible = true;
}; };
const closeReminderModal = () => { const closeReminderModal = () => {
@@ -3279,6 +3423,36 @@ export default {
state.reminderModal = false; state.reminderModal = false;
state.estabish = true; state.estabish = true;
}; };
//添加权限
watch(
() => state.addAuthList,
(res) => {
console.log("res", res, state.addAuthList);
let obj = {
type: 2,
tag:
state.authClassify === 1 ? 3 : state.authClassify === 2 ? 4 : null,
opt: 3,
deptList: res[1],
groupList: res[2],
refId: state.selectProjectId,
pageNo: 20,
pageSize: 1,
studentList: res[0],
};
console.log("obj", obj);
api1
.optionAuthPerm(obj)
.then((res) => {
console.log("添加授权成功", res);
message.success("添加授权成功");
})
.catch((err) => {
console.log("添加授权失败", err);
});
}
);
return { return {
...toRefs(state), ...toRefs(state),
selectProjectName, selectProjectName,
@@ -3388,6 +3562,7 @@ export default {
copyProject, copyProject,
closeReminderModal, closeReminderModal,
okReminderModal, okReminderModal,
memberScroll,
}; };
}, },
}; };

View File

@@ -62,13 +62,17 @@
} }
" "
v-model:value="classifySelect" v-model:value="classifySelect"
placeholder="四个养成" placeholder="请选择分类"
style="width: 100%" style="width: 100%"
:options="classifyList" :options="classifyList"
@change="classificationChange" @change="classificationChange"
allowClear allowClear
showSearch showSearch
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
> >
</a-select> </a-select>
</div> </div>
@@ -169,6 +173,7 @@
allowClear allowClear
showSearch showSearch
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
@popupScroll="memberScroll"
> >
</a-select> </a-select>
</div> </div>
@@ -183,18 +188,26 @@
</div> </div>
<div class="in select"> <div class="in select">
<a-select <a-tree-select
:getPopupContainer=" :getPopupContainer="
(triggerNode) => { (triggerNode) => {
return triggerNode.parentNode || document.body; return triggerNode.parentNode || document.body;
} }
" "
v-model:value="classifySelect2" v-model:value="classifySelect2"
style="width: 100%"
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="自动带出 可修改" placeholder="自动带出 可修改"
:options="classifyList2" :options="classifyList2"
@change="classificationChange2" @change="classificationChange2"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
/> :tree-data="classifyList2"
:fieldNames="{
children: 'treeChildList',
label: 'name',
value: 'id',
}"
></a-tree-select>
</div> </div>
</div> </div>
<div class="name name2"> <div class="name name2">
@@ -252,6 +265,10 @@
@change="classificationChange3" @change="classificationChange3"
placeholder="集团级/组织级/现地级/部门级" placeholder="集团级/组织级/现地级/部门级"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -275,6 +292,10 @@
@change="classificationChange4" @change="classificationChange4"
placeholder="集团级/组织级/现地级/部门级" placeholder="集团级/组织级/现地级/部门级"
:disabled="viewDetail ? true : false" :disabled="viewDetail ? true : false"
:fieldNames="{
label: 'dictName',
value: 'dictCode',
}"
/> />
</div> </div>
</div> </div>
@@ -355,6 +376,7 @@
style="width: 100%" style="width: 100%"
:options="classifyList5" :options="classifyList5"
@change="classificationChange5" @change="classificationChange5"
@popupScroll="templateScroll"
> >
</a-select> </a-select>
</div> </div>
@@ -372,16 +394,18 @@
</div> </div>
</template> </template>
<script> <script>
import { reactive, toRefs, ref } from "vue"; import { reactive, toRefs, ref, computed } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import dayjs from "dayjs"; import dayjs from "dayjs";
import * as api from "../../api/index"; import * as api from "../../api/index";
import { toDate } from "../../api/method"; import * as api1 from "../../api/index1";
import { toDate, scrollLoad } from "../../api/method";
import { useStore } from "vuex";
export default { export default {
name: "projectAdd", name: "projectAdd",
setup() { setup() {
const store = useStore();
// 编辑页面跳转过来时候,自动填充表格 // 编辑页面跳转过来时候,自动填充表格
const routers = useRoute(); const routers = useRoute();
const router = useRouter(); const router = useRouter();
@@ -398,12 +422,20 @@ export default {
valueE1: null, valueE1: null,
valueE2: null, valueE2: null,
classifySelect1: [], classifySelect1: [],
classifySelect2: [], classifySelect2: null, //选中的资源归属信息
classifySelect3: [], classifySelect3: null, //选中的项目级别信息
classifySelect4: [], classifySelect4: null, //选中的培训分类信息
rangevalue: [], rangevalue: [],
projectAscription: "", projectAscription: "",
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null, viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
currentPage: 1, //当前页
tableDataTotal: -1, //模版列表总数
pageSize: 10, //每页10条数据
totalPages: 0, //总页数
currentPage1: 1, //项目经理
pageSize1: 10, //项目经理
}); });
if (routers.query.name == undefined) { if (routers.query.name == undefined) {
@@ -489,9 +521,7 @@ export default {
const projectName = ref(""); const projectName = ref("");
const classifyList = ref([ const classifyList = ref([
{ value: 1, label: "管理者" }, // { value: 1, label: "管理者" },
{ value: 2, label: "领军者" },
{ value: 3, label: "产业人" },
]); ]);
let projectType = ""; let projectType = "";
@@ -615,11 +645,49 @@ export default {
// 项目经理 后续接口调用 // 项目经理 后续接口调用
const classifyList1 = ref([ const classifyList1 = ref([
{ value: 1, label: "李俊国" }, // { value: 1, label: "李俊国" },
{ value: 2, label: "将小米" },
{ value: 3, label: "刘孟君" },
]); ]);
//获取学员
const getMember = () => {
api1
.getMemberInfo({
pageNo: state.currentPage1,
pageSize: state.pageSize1,
keyWord: "",
})
.then((res) => {
if (res.data.code === 200) {
let arr = res.data.data.rows;
let array = classifyList1.value;
arr.map((value) => {
let obj = {
value: value.id,
label: value.realName,
};
array.push(obj);
});
classifyList1.value = array;
console.log("获取学员", res.data);
// classifyList1.value = res.data.data.rows;
// state.tableDataTotal = res.data.data.total;
// return res.data.data.rows;
}
});
};
getMember();
//学员滚动加载信息
const memberScroll = (e) => {
// console.log("滚动", e, b);
let num = scrollLoad(e);
if (num === 1) {
state.currentPage1 = 1;
} else if (num === 2) {
// 如果滑到底部,则加载下一页
state.currentPage1++;
getMember();
}
};
//选择处理项目经理
let manager = ""; let manager = "";
let managerId = ""; let managerId = "";
const classificationChange1 = (key, options) => { const classificationChange1 = (key, options) => {
@@ -649,11 +717,9 @@ export default {
}; };
// 资源归属 sourceBelongId 后续给接口 // 资源归属 sourceBelongId 后续给接口
const classifyList2 = ref([ const classifyList2 = computed(() => {
{ value: 1, label: "项目一" }, return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
{ value: 2, label: "项目二" }, });
{ value: 3, label: "项目三" },
]);
let sourceBelongIdC = ""; let sourceBelongIdC = "";
const classificationChange2 = (key) => { const classificationChange2 = (key) => {
@@ -663,10 +729,7 @@ export default {
// 项目级别 // 项目级别
const classifyList3 = ref([ const classifyList3 = ref([
{ value: 1, label: "集团级" }, // { value: 1, label: "集团级" },
{ value: 2, label: "组织级" },
{ value: 3, label: "现地级" },
{ value: 4, label: "部门级" },
]); ]);
let levels = ""; let levels = "";
@@ -677,10 +740,7 @@ export default {
// 培训分类 // 培训分类
const classifyList4 = ref([ const classifyList4 = ref([
{ value: 1, label: "集团级" }, // { value: 1, label: "集团级" },
{ value: 2, label: "组织级" },
{ value: 3, label: "现地级" },
{ value: 4, label: "部门级" },
]); ]);
let systemid = ""; let systemid = "";
@@ -688,17 +748,94 @@ export default {
console.log(`selected ${key}`, classifyList4); console.log(`selected ${key}`, classifyList4);
systemid = key; systemid = key;
}; };
//获取分类、封面图、项目级别、培训分类-----------字典配置-------------------------------
const getDictList = (param) => {
let obj = {
pageNo: 1,
pageSize: 20,
setCode: param,
};
api1
.getDict(obj)
.then((res) => {
console.log("获取字典成功", res);
if (res.status === 200) {
if (param === "projectClass") {
classifyList.value = res.data.data.rows;
}
if (param === "projectPic") {
if (res.data.data.rows.length > 0) {
imageUrl.value = res.data.data.rows[0].dictValue;
picUrl = res.data.data.rows[0].dictValue;
}
}
if (param === "projectLevel") {
classifyList3.value = res.data.data.rows;
}
if (param === "projectSys") {
classifyList4.value = res.data.data.rows;
}
}
})
.catch((err) => {
console.log("获取字典失败", err);
});
};
getDictList("projectClass");
getDictList("projectPic");
getDictList("projectLevel");
getDictList("projectSys");
//获取分类、封面图、项目级别、培训分类---------------字典配置---------------------------
// 模版 // 模版
const classifyList5 = ref([ const classifyList5 = ref([
{ value: 1, label: "模版一" }, // { value: 1, label: "模版一" },
{ value: 2, label: "模版二" },
{ value: 3, label: "模版三" },
{ value: 4, label: "模版四" },
]); ]);
const classificationChange5 = (key) => { const classificationChange5 = (key) => {
console.log(`selected ${key}`, classifyList5); console.log(`selected ${key}`, classifyList5);
}; };
//获取模版列表
const getTemplate = () => {
let obj = {
pageNo: state.currentPage,
pageSize: state.pageSize,
// projectId:id?id:''
};
api
.getTemplate(obj)
.then((res) => {
console.log("获取模版列表", res);
state.totalPages = Number(res.data.data.pages);
if (res.status === 200) {
let arr = res.data.data.rows;
let array = classifyList5.value;
arr.map((value) => {
let obj = {
value: value.projectTemplateId,
label: value.name,
};
array.push(obj);
});
classifyList5.value = array;
}
})
.catch((err) => {
console.log("获取模版列表失败", err);
});
};
getTemplate();
//模版滚动加载模板信息
const templateScroll = (e) => {
// console.log("滚动", e, b);
let num = scrollLoad(e);
if (num === 1) {
state.currentPage = 1;
} else if (num === 2) {
// 如果滑到底部,则加载下一页
state.currentPage++;
getTemplate();
}
};
// 项目说明 // 项目说明
const remark = ref(""); const remark = ref("");
@@ -906,6 +1043,9 @@ export default {
isEdit, isEdit,
backPage, backPage,
dateFormatList, dateFormatList,
templateScroll,
memberScroll,
}; };
}, },
}; };

View File

@@ -15,7 +15,6 @@
<div class="btnText">添加阶段</div> <div class="btnText">添加阶段</div>
</div> </div>
<div class="maincon" style="background-color: #fff"> <div class="maincon" style="background-color: #fff">
<draggable <draggable
v-model="level" v-model="level"
chosenClass="chosen" chosenClass="chosen"
@@ -690,13 +689,13 @@
<div class="footbtn"> <div class="footbtn">
<div class="btnbox"> <div class="btnbox">
<div class="btn btn2"> <div class="btn btn2" @click="temporaryStorage">
<div class="btnText">暂存</div> <div class="btnText">暂存</div>
</div> </div>
<div class="btn btn2"> <div class="btn btn2" @click="submitStorage">
<div class="btnText">确定</div> <div class="btnText">确定</div>
</div> </div>
<div class="btn btn1"> <div class="btn btn1" @click="cancelStorage">
<div class="btnText">取消</div> <div class="btnText">取消</div>
</div> </div>
</div> </div>
@@ -1039,7 +1038,7 @@ import draggable from "vuedraggable";
import { storage } from "../../api/storage"; import { storage } from "../../api/storage";
import UnlockMode from "../../components/drawers/UnlockMode.vue"; import UnlockMode from "../../components/drawers/UnlockMode.vue";
// import * as api1 from "../../api/index1"; // import * as api1 from "../../api/index1";
import { useRouter } from "vue-router";
export default { export default {
name: "TaskAdd", name: "TaskAdd",
components: { components: {
@@ -1059,6 +1058,7 @@ export default {
UnlockMode, UnlockMode,
}, },
setup() { setup() {
const router = useRouter();
const state = reactive({ const state = reactive({
projectId: storage.get("projectId") projectId: storage.get("projectId")
? JSON.parse(storage.get("projectId")) ? JSON.parse(storage.get("projectId"))
@@ -1683,7 +1683,6 @@ export default {
state.addactivevisible = true; state.addactivevisible = true;
state.EditActiveId = id; state.EditActiveId = id;
state.projectTaskId = eleId; state.projectTaskId = eleId;
}; };
const showDrawerAddEval = (id, eleId) => { const showDrawerAddEval = (id, eleId) => {
state.addevalvisible = true; state.addevalvisible = true;
@@ -1861,6 +1860,23 @@ export default {
const showModeVisible = () => { const showModeVisible = () => {
state.unlockModeVisible = true; state.unlockModeVisible = true;
}; };
//暂存
const temporaryStorage = () => {
message.success("暂存成功");
};
//确定
const submitStorage = () => {
router.push({
path: "/leveladd",
});
};
//取消
const cancelStorage = () => {
router.push({
path: "/leveladd",
});
};
return { return {
...toRefs(state), ...toRefs(state),
selectProjectName, selectProjectName,
@@ -1914,6 +1930,10 @@ export default {
deleteStage, deleteStage,
showModeVisible, showModeVisible,
temporaryStorage,
submitStorage,
cancelStorage,
}; };
}, },
}; };

View File

@@ -698,13 +698,13 @@
<div class="footbtn"> <div class="footbtn">
<div class="btnbox"> <div class="btnbox">
<div class="btn btn2"> <div class="btn btn2" @click="temporaryStorage">
<div class="btnText">暂存</div> <div class="btnText">暂存</div>
</div> </div>
<div class="btn btn2"> <div class="btn btn2" @click="submitStorage">
<div class="btnText">确定</div> <div class="btnText">确定</div>
</div> </div>
<div class="btn btn1"> <div class="btn btn1" @click="cancelStorage">
<div class="btnText">取消</div> <div class="btnText">取消</div>
</div> </div>
</div> </div>
@@ -1046,7 +1046,7 @@ import draggable from "vuedraggable";
import { storage } from "../../api/storage"; import { storage } from "../../api/storage";
import UnlockMode from "../../components/drawers/UnlockMode.vue"; import UnlockMode from "../../components/drawers/UnlockMode.vue";
// import * as api1 from "../../api/index1"; // import * as api1 from "../../api/index1";
import { useRouter } from "vue-router";
const drawercolumns = [ const drawercolumns = [
{ {
title: "项目名称", title: "项目名称",
@@ -1105,6 +1105,7 @@ export default {
UnlockMode, UnlockMode,
}, },
setup() { setup() {
const router = useRouter();
const state = reactive({ const state = reactive({
projectTemplateId: storage.get("projectTemplateId") projectTemplateId: storage.get("projectTemplateId")
? JSON.parse(storage.get("projectTemplateId")) ? JSON.parse(storage.get("projectTemplateId"))
@@ -1993,6 +1994,24 @@ export default {
const showModeVisible = () => { const showModeVisible = () => {
state.unlockModeVisible = true; state.unlockModeVisible = true;
}; };
//暂存
const temporaryStorage = () => {
message.success("暂存成功");
};
//确定
const submitStorage = () => {
router.push({
path: "/leveladd",
});
};
//取消
const cancelStorage = () => {
router.push({
path: "/leveladd",
});
};
return { return {
...toRefs(state), ...toRefs(state),
selectProjectName, selectProjectName,
@@ -2049,6 +2068,11 @@ export default {
deleteStage, deleteStage,
showModeVisible, showModeVisible,
temporaryStorage,
submitStorage,
cancelStorage,
}; };
}, },
}; };