mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-11 11:56:46 +08:00
feat:增加项目授权以及修改新建项目
This commit is contained in:
43
src/App.vue
43
src/App.vue
@@ -44,51 +44,28 @@ export default defineComponent({
|
||||
const currentRouteName = computed(() => route.name);
|
||||
|
||||
//获取组织树
|
||||
const orgTree = () => {
|
||||
const getOrgTree = () => {
|
||||
let obj = {
|
||||
id: 0,
|
||||
keyWord: "",
|
||||
pageNo: 0,
|
||||
id: -1,
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
};
|
||||
api
|
||||
.getOrgInfo(obj)
|
||||
.then((res) => {
|
||||
if (res.status === 200) {
|
||||
// console.log("获取组织树成功", res.data.data);
|
||||
// state.orgtreeList = res.data.data;
|
||||
if (res.status === 200) {
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
console.log("组织树获取成功", res);
|
||||
if (res.data.code === 200) {
|
||||
// state.treeData = res.data.data;
|
||||
store.commit("getOrgtreeList", res.data.data);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取组织树失败", err);
|
||||
console.log("组织树获取失败", err);
|
||||
});
|
||||
};
|
||||
orgTree();
|
||||
|
||||
getOrgTree();
|
||||
|
||||
return {
|
||||
routes,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-21 14:32:52
|
||||
* @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
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-04 22:45:31
|
||||
* @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
|
||||
* @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 getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj)
|
||||
//获取授权(修改版)
|
||||
//获取、添加授权(修改版)
|
||||
export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj)
|
||||
|
||||
|
||||
|
||||
//获取用户登录
|
||||
export const getUser = () => http.post('/admin/CheckUser/login', { withCredentials: true })
|
||||
|
||||
|
||||
@@ -196,7 +196,21 @@ function getCookie(name) {
|
||||
}
|
||||
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,
|
||||
setCookie,
|
||||
getCookie,
|
||||
scrollLoad,
|
||||
commonData,
|
||||
organizationalTree,
|
||||
iframeUrl,
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
border-radius: 15px;
|
||||
margin-right: 10px;
|
||||
"
|
||||
src="../assets/images/avatar.png"
|
||||
:src="avatar"
|
||||
/>
|
||||
<div>{{ username }}</div>
|
||||
</div>
|
||||
@@ -69,6 +69,7 @@ export default {
|
||||
const state = reactive({
|
||||
selectRole: "管理员",
|
||||
username: "",
|
||||
avatar: null,
|
||||
roleList: [
|
||||
{
|
||||
id: 1,
|
||||
@@ -103,6 +104,9 @@ export default {
|
||||
console.log("获取登录信息成功", res);
|
||||
if (res.data.code === 200) {
|
||||
state.username = res.data.data.realName;
|
||||
state.avatar = res.data.data.avatar
|
||||
? res.data.data.avatar
|
||||
: require("../assets/images/avatar.png");
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -124,8 +124,8 @@
|
||||
|
||||
<div class="botm"></div>
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeCancelModal">取消</button>
|
||||
<button class="btn2" @click="closeCancelModal">确定</button>
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
@@ -167,11 +167,12 @@ export default {
|
||||
// state: "管理权",
|
||||
// },
|
||||
],
|
||||
cancelAuthId: null, //取消授权id
|
||||
cancelAuthInfo: null, //取消授权id
|
||||
});
|
||||
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:ProjPvisible", false);
|
||||
state.currentPage = 1;
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state", bool, props);
|
||||
@@ -183,9 +184,14 @@ export default {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
};
|
||||
const showCancelModal = (id) => {
|
||||
const showCancelModal = (item) => {
|
||||
console.log("item", item);
|
||||
state.cancelModal = true;
|
||||
state.cancelAuthId = id;
|
||||
let obj = {
|
||||
id: item.number,
|
||||
name: item.name,
|
||||
};
|
||||
state.cancelAuthInfo = obj;
|
||||
};
|
||||
const closeCancelModal = () => {
|
||||
state.cancelModal = false;
|
||||
@@ -259,7 +265,8 @@ export default {
|
||||
<div
|
||||
class="opa"
|
||||
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 : "-",
|
||||
|
||||
com: value.orgName ? value.orgName : "-",
|
||||
gang: "产品经理",
|
||||
number: "20201234",
|
||||
state: "管理权",
|
||||
gang: "-",
|
||||
number: value.memberNo ? value.memberNo : "-",
|
||||
state: "-",
|
||||
};
|
||||
array.push(obj);
|
||||
});
|
||||
@@ -338,18 +345,22 @@ export default {
|
||||
type: 2,
|
||||
tag: 1,
|
||||
opt: 4,
|
||||
refId: state.cancelAuthId,
|
||||
refId: props.selectProjectId,
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
deptList: [],
|
||||
groupList: [],
|
||||
studentList: [state.cancelAuthInfo],
|
||||
};
|
||||
console.log("获取权限名单obj", obj);
|
||||
console.log("取消权限名单obj", obj);
|
||||
api
|
||||
.optionAuthPerm(obj)
|
||||
.then((res) => {
|
||||
// console.log("获取权限名单成功", res);
|
||||
console.log("取消权限名单", res);
|
||||
if (res.data.code === 200) {
|
||||
console.log("取消授权成功", res.data.data);
|
||||
// console.log("取消授权成功", res.data.data);
|
||||
optionAuthPerm();
|
||||
closeCancelModal();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
|
||||
@@ -607,8 +607,8 @@ export default {
|
||||
tag: 1, //归属权
|
||||
opt: 1, //查询
|
||||
type: 2, //项目
|
||||
// refId: props.selectProjectId, //项目id
|
||||
refId: 64,
|
||||
refId: props.selectProjectId, //项目id
|
||||
// refId: 64,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
studentList: [],
|
||||
@@ -630,12 +630,14 @@ export default {
|
||||
tag: 2, //归属权
|
||||
opt: 3, //修改
|
||||
type: 2, //项目
|
||||
// refId: props.selectProjectId, //项目id
|
||||
refId: 64,
|
||||
refId: props.selectProjectId, //项目id
|
||||
// refId: 64,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
// studentList: state.selectPeopleArr,
|
||||
studentList: [{ id: "966733333637632000", name: "何丹" }],
|
||||
deptList: [],
|
||||
groupList: [],
|
||||
studentList: state.selectPeopleArr,
|
||||
};
|
||||
console.log("修改归属权obj", obj);
|
||||
api
|
||||
|
||||
@@ -541,6 +541,7 @@ import {
|
||||
onMounted,
|
||||
onUnmounted,
|
||||
// watch
|
||||
computed,
|
||||
} from "vue";
|
||||
import elementResizeDetectorMaker from "element-resize-detector";
|
||||
import { message } from "ant-design-vue";
|
||||
@@ -556,7 +557,7 @@ import {
|
||||
// deepClone,
|
||||
batchLoadList,
|
||||
} from "../../utils/utils";
|
||||
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "StuAdd",
|
||||
props: {
|
||||
@@ -566,6 +567,7 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
screenHeight: document.body.clientHeight, // 屏幕高度
|
||||
pageSize: 10,
|
||||
@@ -1171,24 +1173,27 @@ export default {
|
||||
// state.copyTreeData = deepClone(arr);
|
||||
// };
|
||||
//获取组织树
|
||||
const getTree = () => {
|
||||
let obj = {
|
||||
keyWord: "",
|
||||
id: -1,
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
};
|
||||
getOrgInfoApi(obj)
|
||||
.then((res) => {
|
||||
console.log("组织树获取成功", res);
|
||||
if (res.data.code === 200) {
|
||||
state.treeData = res.data.data;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("组织树获取失败", err);
|
||||
});
|
||||
};
|
||||
// const getTree = () => {
|
||||
// let obj = {
|
||||
// keyWord: "",
|
||||
// id: -1,
|
||||
// pageNo: 1,
|
||||
// pageSize: 20,
|
||||
// };
|
||||
// getOrgInfoApi(obj)
|
||||
// .then((res) => {
|
||||
// console.log("组织树获取成功", res);
|
||||
// if (res.data.code === 200) {
|
||||
// state.treeData = res.data.data;
|
||||
// }
|
||||
// })
|
||||
// .catch((err) => {
|
||||
// console.log("组织树获取失败", err);
|
||||
// });
|
||||
// };
|
||||
state.treeData = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||
});
|
||||
//获取学员
|
||||
const getMember = async (org) => {
|
||||
if (!state.nameSearch && !org) {
|
||||
@@ -1270,7 +1275,7 @@ export default {
|
||||
console.log("state", bool);
|
||||
if (bool) {
|
||||
// getComOnce();
|
||||
getTree();
|
||||
// getTree();
|
||||
}
|
||||
};
|
||||
const getClientHeight = () => {
|
||||
|
||||
@@ -864,13 +864,13 @@
|
||||
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1">
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1051,7 +1051,7 @@ import draggable from "vuedraggable";
|
||||
import { editTask } from "../../api/indexTaskadd";
|
||||
|
||||
// import { RouterEditTask } from "@/api/indexTask";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
import { toDate } from "../../api/method";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
export default {
|
||||
@@ -1076,6 +1076,7 @@ export default {
|
||||
AddProject,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
routerId: storage.get("routerId")
|
||||
? JSON.parse(storage.get("routerId"))
|
||||
@@ -1884,6 +1885,23 @@ export default {
|
||||
const showModeVisible = () => {
|
||||
state.unlockModeVisible = true;
|
||||
};
|
||||
|
||||
//暂存
|
||||
const temporaryStorage = () => {
|
||||
message.success("暂存成功");
|
||||
};
|
||||
//确定
|
||||
const submitStorage = () => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
};
|
||||
//取消
|
||||
const cancelStorage = () => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
// tableDataFunc,
|
||||
@@ -1935,6 +1953,10 @@ export default {
|
||||
|
||||
showModeVisible,
|
||||
showAddface,
|
||||
|
||||
temporaryStorage,
|
||||
submitStorage,
|
||||
cancelStorage,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -62,13 +62,17 @@
|
||||
}
|
||||
"
|
||||
v-model:value="classifySelect"
|
||||
placeholder="四个养成"
|
||||
placeholder="请选择分类"
|
||||
style="width: 100%"
|
||||
:options="classifyList"
|
||||
@change="classificationChange"
|
||||
allowClear
|
||||
showSearch
|
||||
:disabled="viewDetail ? true : false"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -169,6 +173,7 @@
|
||||
allowClear
|
||||
showSearch
|
||||
:disabled="viewDetail ? true : false"
|
||||
@popupScroll="memberScroll"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -183,18 +188,26 @@
|
||||
</div>
|
||||
|
||||
<div class="in select">
|
||||
<a-select
|
||||
<a-tree-select
|
||||
:getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
"
|
||||
v-model:value="classifySelect2"
|
||||
style="width: 100%"
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
placeholder="自动带出 可修改"
|
||||
:options="classifyList2"
|
||||
@change="classificationChange2"
|
||||
:disabled="viewDetail ? true : false"
|
||||
/>
|
||||
:tree-data="classifyList2"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
></a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name name2">
|
||||
@@ -252,6 +265,10 @@
|
||||
@change="classificationChange3"
|
||||
placeholder="集团级/组织级/现地级/部门级"
|
||||
:disabled="viewDetail ? true : false"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -275,6 +292,10 @@
|
||||
@change="classificationChange4"
|
||||
placeholder="集团级/组织级/现地级/部门级"
|
||||
:disabled="viewDetail ? true : false"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -355,6 +376,7 @@
|
||||
style="width: 100%"
|
||||
:options="classifyList5"
|
||||
@change="classificationChange5"
|
||||
@popupScroll="templateScroll"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -372,16 +394,18 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
import { reactive, toRefs, ref, computed } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import dayjs from "dayjs";
|
||||
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 {
|
||||
name: "projectAdd",
|
||||
setup() {
|
||||
const store = useStore();
|
||||
// 编辑页面跳转过来时候,自动填充表格
|
||||
const routers = useRoute();
|
||||
const router = useRouter();
|
||||
@@ -398,12 +422,20 @@ export default {
|
||||
valueE1: null,
|
||||
valueE2: null,
|
||||
classifySelect1: [],
|
||||
classifySelect2: [],
|
||||
classifySelect3: [],
|
||||
classifySelect4: [],
|
||||
classifySelect2: null, //选中的资源归属信息
|
||||
classifySelect3: null, //选中的项目级别信息
|
||||
classifySelect4: null, //选中的培训分类信息
|
||||
rangevalue: [],
|
||||
projectAscription: "",
|
||||
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) {
|
||||
@@ -489,9 +521,7 @@ export default {
|
||||
const projectName = ref("");
|
||||
|
||||
const classifyList = ref([
|
||||
{ value: 1, label: "管理者" },
|
||||
{ value: 2, label: "领军者" },
|
||||
{ value: 3, label: "产业人" },
|
||||
// { value: 1, label: "管理者" },
|
||||
]);
|
||||
|
||||
let projectType = "";
|
||||
@@ -615,10 +645,48 @@ export default {
|
||||
|
||||
// 项目经理 后续接口调用
|
||||
const classifyList1 = ref([
|
||||
{ value: 1, label: "李俊国" },
|
||||
{ value: 2, label: "将小米" },
|
||||
{ value: 3, label: "刘孟君" },
|
||||
// { value: 1, 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 managerId = "";
|
||||
@@ -649,11 +717,9 @@ export default {
|
||||
};
|
||||
|
||||
// 资源归属 sourceBelongId 后续给接口
|
||||
const classifyList2 = ref([
|
||||
{ value: 1, label: "项目一" },
|
||||
{ value: 2, label: "项目二" },
|
||||
{ value: 3, label: "项目三" },
|
||||
]);
|
||||
const classifyList2 = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
|
||||
});
|
||||
|
||||
let sourceBelongIdC = "";
|
||||
const classificationChange2 = (key) => {
|
||||
@@ -663,10 +729,7 @@ export default {
|
||||
|
||||
// 项目级别
|
||||
const classifyList3 = ref([
|
||||
{ value: 1, label: "集团级" },
|
||||
{ value: 2, label: "组织级" },
|
||||
{ value: 3, label: "现地级" },
|
||||
{ value: 4, label: "部门级" },
|
||||
// { value: 1, label: "集团级" },
|
||||
]);
|
||||
|
||||
let levels = "";
|
||||
@@ -677,10 +740,7 @@ export default {
|
||||
|
||||
// 培训分类
|
||||
const classifyList4 = ref([
|
||||
{ value: 1, label: "集团级" },
|
||||
{ value: 2, label: "组织级" },
|
||||
{ value: 3, label: "现地级" },
|
||||
{ value: 4, label: "部门级" },
|
||||
// { value: 1, label: "集团级" },
|
||||
]);
|
||||
|
||||
let systemid = "";
|
||||
@@ -688,17 +748,94 @@ export default {
|
||||
console.log(`selected ${key}`, classifyList4);
|
||||
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([
|
||||
{ value: 1, label: "模版一" },
|
||||
{ value: 2, label: "模版二" },
|
||||
{ value: 3, label: "模版三" },
|
||||
{ value: 4, label: "模版四" },
|
||||
// { value: 1, label: "模版一" },
|
||||
]);
|
||||
const classificationChange5 = (key) => {
|
||||
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("");
|
||||
@@ -906,6 +1043,9 @@ export default {
|
||||
isEdit,
|
||||
backPage,
|
||||
dateFormatList,
|
||||
|
||||
templateScroll,
|
||||
memberScroll,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -167,6 +167,7 @@
|
||||
allowClear
|
||||
showSearch
|
||||
:disabled="viewDetail ? true : false"
|
||||
@popupScroll="memberScroll"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -192,7 +193,6 @@
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
placeholder="自动带出 可修改"
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
:tree-data="classifyList2"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
@@ -416,7 +416,7 @@ import dayjs from "dayjs";
|
||||
import * as api from "../../api/index";
|
||||
import * as api1 from "../../api/index1";
|
||||
import { storage } from "../../api/storage";
|
||||
import { toDate } from "../../api/method";
|
||||
import { toDate, scrollLoad } from "../../api/method";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "projectAdd",
|
||||
@@ -441,6 +441,9 @@ export default {
|
||||
pageSize: 10, //每页10条数据
|
||||
totalPages: 0, //总页数
|
||||
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
|
||||
|
||||
currentPage1: 1, //项目经理
|
||||
pageSize1: 10, //项目经理
|
||||
});
|
||||
//分类列表
|
||||
const classifyList = ref([]);
|
||||
@@ -764,12 +767,47 @@ export default {
|
||||
endTime = new Date(dateString[1]).getTime() / 1000;
|
||||
};
|
||||
// 项目经理 后续接口调用
|
||||
const classifyList1 = ref([
|
||||
{ value: 1, label: "李俊国" },
|
||||
{ value: 2, label: "将小米" },
|
||||
{ value: 3, label: "刘孟君" },
|
||||
]);
|
||||
//获取
|
||||
const classifyList1 = ref([]);
|
||||
//获取学员
|
||||
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 = "";
|
||||
@@ -929,19 +967,13 @@ export default {
|
||||
//模版滚动加载模板信息
|
||||
const templateScroll = (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) {
|
||||
let num = scrollLoad(e);
|
||||
if (num === 1) {
|
||||
state.currentPage = 1;
|
||||
} else if (scrllHeight - clientHeight == 0) {
|
||||
// 下拉到底部时
|
||||
if (state.currentPage < state.totalPages) {
|
||||
// 如果滑到底部,则加载下一页
|
||||
state.currentPage++;
|
||||
getTemplate();
|
||||
}
|
||||
} else if (num === 2) {
|
||||
// 如果滑到底部,则加载下一页
|
||||
state.currentPage++;
|
||||
getTemplate();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1159,6 +1191,7 @@ export default {
|
||||
dateFormatList,
|
||||
|
||||
templateScroll,
|
||||
memberScroll,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -376,10 +376,14 @@
|
||||
<div class="in select">
|
||||
<a-select
|
||||
v-model:value="value2"
|
||||
placeholder="四个养成"
|
||||
placeholder="请选择分类"
|
||||
:options="classifyList"
|
||||
@change="classificationChange"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -399,6 +403,7 @@
|
||||
:options="classifyList1"
|
||||
@change="classificationChange1"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
@popupScroll="memberScroll"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -411,13 +416,20 @@
|
||||
</div>
|
||||
<div class="inname">资源归属:</div>
|
||||
<div class="in select">
|
||||
<a-select
|
||||
<a-tree-select
|
||||
v-model:value="value5"
|
||||
placeholder="请选择资源归属"
|
||||
:options="classifyList5"
|
||||
:tree-data="classifyList5"
|
||||
@change="classificationChange5"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
>
|
||||
</a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pubtn">
|
||||
@@ -498,10 +510,14 @@
|
||||
<div class="in select">
|
||||
<a-select
|
||||
v-model:value="edvalue2"
|
||||
placeholder="四个养成"
|
||||
placeholder="请选择分类"
|
||||
:options="classifyList"
|
||||
@change="edclassificationChange"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -521,6 +537,7 @@
|
||||
:options="classifyList1"
|
||||
@change="edclassificationChange1"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
@popupScroll="memberScroll"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -533,13 +550,20 @@
|
||||
</div>
|
||||
<div class="inname">资源归属:</div>
|
||||
<div class="in select">
|
||||
<a-select
|
||||
<a-tree-select
|
||||
v-model:value="edvalue5"
|
||||
placeholder="请选择资源归属"
|
||||
:options="classifyList5"
|
||||
:tree-data="classifyList5"
|
||||
@change="edclassificationChange5"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
>
|
||||
</a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pubtn">
|
||||
@@ -620,8 +644,12 @@
|
||||
v-model:value="value7"
|
||||
@change="classificationChange2"
|
||||
:options="classifyList2"
|
||||
placeholder="四个养成"
|
||||
placeholder="请选择分类"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -641,6 +669,7 @@
|
||||
:options="classifyList3"
|
||||
placeholder="自动带出 可编辑"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
@popupScroll="memberScroll"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -653,13 +682,20 @@
|
||||
</div>
|
||||
<div class="inname">资源归属:</div>
|
||||
<div class="in select">
|
||||
<a-select
|
||||
<a-tree-select
|
||||
v-model:value="value9"
|
||||
@change="classificationChange4"
|
||||
:options="classifyList4"
|
||||
placeholder="请选择资源归属"
|
||||
:options="classifyList4"
|
||||
:tree-data="classifyList4"
|
||||
@change="classificationChange4"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
>
|
||||
</a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pubtn">
|
||||
@@ -746,8 +782,12 @@
|
||||
v-model:value="edvalue7"
|
||||
@change="edclassificationChange2"
|
||||
:options="classifyList2"
|
||||
placeholder="四个养成"
|
||||
placeholder="请选择分类"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -767,6 +807,7 @@
|
||||
:options="classifyList3"
|
||||
placeholder="自动带出 可编辑"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
@popupScroll="memberScroll"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -779,13 +820,20 @@
|
||||
</div>
|
||||
<div class="inname">资源归属:</div>
|
||||
<div class="in select">
|
||||
<a-select
|
||||
<a-tree-select
|
||||
v-model:value="edvalue9"
|
||||
@change="edclassificationChange4"
|
||||
:options="classifyList4"
|
||||
placeholder="请选择资源归属"
|
||||
:options="classifyList4"
|
||||
:tree-data="classifyList4"
|
||||
@change="edclassificationChange4"
|
||||
style="border-radius: 8px; height: 40px"
|
||||
/>
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
>
|
||||
</a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pubtn">
|
||||
@@ -1128,30 +1176,48 @@
|
||||
v-model:ProjPvisible="ProjPvisible"
|
||||
:selectProjectId="selectProjectId"
|
||||
/>
|
||||
|
||||
<!-- 查看权抽屉 -->
|
||||
<proj-check-ship
|
||||
v-model:ProjCheckvisible="ProjCheckvisible"
|
||||
: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>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted, ref } from "vue";
|
||||
import { reactive, toRefs, onMounted, ref, watch, computed } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import ProjOwnerShip from "../../components/drawers/ProjectOwn";
|
||||
import ProjPowerList from "../../components/drawers/ProjPowerList";
|
||||
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 { toDate } from "../../api/method";
|
||||
import * as api1 from "../../api/index1";
|
||||
import { toDate, scrollLoad } from "../../api/method";
|
||||
import { storage } from "../../api/storage";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "projectManage",
|
||||
components: { ProjOwnerShip, ProjPowerList, ProjCheckShip, ProjManageShip },
|
||||
components: {
|
||||
ProjOwnerShip,
|
||||
ProjPowerList,
|
||||
ProjCheckShip,
|
||||
// ProjManageShip
|
||||
},
|
||||
setup() {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
projectName: null,
|
||||
selectTime: null,
|
||||
@@ -1205,6 +1271,12 @@ export default {
|
||||
copyProjectId: null, //复制项目id
|
||||
|
||||
selectProjectId: null, //选择的授权id
|
||||
|
||||
addAuthList: null, //确定授权列表
|
||||
authClassify: null, //显示的是管理权还是查看权
|
||||
|
||||
currentPage1: 1, //项目经理分页
|
||||
pageSize1: 10,
|
||||
});
|
||||
// 数据接入 - start -
|
||||
const router = useRouter();
|
||||
@@ -1309,9 +1381,7 @@ export default {
|
||||
|
||||
// 项目分类
|
||||
const classifyList = ref([
|
||||
{ value: 1, label: "管理者" },
|
||||
{ value: 2, label: "领军者" },
|
||||
{ value: 3, label: "产业人" },
|
||||
// { value: 1, label: "管理者" },
|
||||
]);
|
||||
|
||||
const classifyList1 = ref([
|
||||
@@ -1324,7 +1394,7 @@ export default {
|
||||
const value2 = ref([]);
|
||||
const value3 = ref([]);
|
||||
const value4 = ref("");
|
||||
const value5 = ref([]);
|
||||
const value5 = ref(null);
|
||||
|
||||
const edvalue1 = ref("");
|
||||
const edvalue2 = ref([]);
|
||||
@@ -1378,12 +1448,13 @@ export default {
|
||||
edsource = key;
|
||||
};
|
||||
|
||||
const classifyList5 = ref([
|
||||
{ value: 1, label: "项目一" },
|
||||
{ value: 2, label: "项目二" },
|
||||
{ value: 3, label: "项目三" },
|
||||
]);
|
||||
|
||||
// const classifyList5 = ref([
|
||||
// // { value: 1, label: "项目一" },
|
||||
// ]);
|
||||
// 资源归属 sourceBelongId 后续给接口
|
||||
const classifyList5 = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
|
||||
});
|
||||
let sourceBelongId = 0;
|
||||
const classificationChange5 = (key) => {
|
||||
console.log(`selected ${key}`);
|
||||
@@ -1393,7 +1464,7 @@ export default {
|
||||
let type = "";
|
||||
const classificationChange = (key) => {
|
||||
console.log(`selected ${key}`);
|
||||
console.log(classifyList.value[key - 1].label);
|
||||
// console.log(classifyList.value[key - 1].label);
|
||||
type = key;
|
||||
};
|
||||
|
||||
@@ -1500,7 +1571,7 @@ export default {
|
||||
value2.value = [];
|
||||
value3.value = [];
|
||||
value4.value = "";
|
||||
value5.value = [];
|
||||
value5.value = "";
|
||||
state.doublepro = false;
|
||||
};
|
||||
console.log(edmanage, edmanageid);
|
||||
@@ -1604,9 +1675,7 @@ export default {
|
||||
const value9 = ref([]);
|
||||
|
||||
const classifyList2 = ref([
|
||||
{ value: 1, label: "管理者" },
|
||||
{ value: 2, label: "领军者" },
|
||||
{ value: 3, label: "产业人" },
|
||||
// { value: 1, label: "管理者" },
|
||||
]);
|
||||
|
||||
let categoryT = "";
|
||||
@@ -1616,9 +1685,7 @@ export default {
|
||||
};
|
||||
|
||||
const classifyList3 = ref([
|
||||
{ value: 1, label: "李俊国" },
|
||||
{ value: 2, label: "将小米" },
|
||||
{ value: 3, label: "刘孟君" },
|
||||
// { value: 1, label: "李俊国" },
|
||||
]);
|
||||
|
||||
let managerT = "";
|
||||
@@ -1641,12 +1708,10 @@ export default {
|
||||
managerT = mstr;
|
||||
managerIdT = midstr;
|
||||
};
|
||||
|
||||
const classifyList4 = ref([
|
||||
{ value: 1, label: "项目一" },
|
||||
{ value: 2, label: "项目二" },
|
||||
{ value: 3, label: "项目三" },
|
||||
]);
|
||||
// 资源归属 sourceBelongId 后续给接口
|
||||
const classifyList4 = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
|
||||
});
|
||||
|
||||
let sourceBelongIdT = "";
|
||||
const classificationChange4 = (key) => {
|
||||
@@ -1871,6 +1936,75 @@ export default {
|
||||
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) => {
|
||||
state.projectPub = true;
|
||||
@@ -2081,7 +2215,10 @@ export default {
|
||||
state.reviewModal = true;
|
||||
};
|
||||
//确认提交审核
|
||||
const reviewProject = () => {};
|
||||
const reviewProject = () => {
|
||||
state.reviewModal = false;
|
||||
message.success("提交成功");
|
||||
};
|
||||
//关闭提交审核弹窗
|
||||
const closeReviewModal = () => {
|
||||
state.reviewModal = false;
|
||||
@@ -2092,7 +2229,10 @@ export default {
|
||||
state.recallReviewModal = true;
|
||||
};
|
||||
//确认提交审核
|
||||
const recallReviewProject = () => {};
|
||||
const recallReviewProject = () => {
|
||||
state.recallReviewModal = false;
|
||||
message.success("撤回成功");
|
||||
};
|
||||
//关闭提交审核弹窗
|
||||
const closeRecallReviewModal = () => {
|
||||
state.recallReviewModal = false;
|
||||
@@ -2285,7 +2425,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -2368,7 +2508,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -2387,7 +2527,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -2457,7 +2597,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -2476,7 +2616,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -2578,7 +2718,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -2597,7 +2737,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -2672,7 +2812,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -2691,7 +2831,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -2745,7 +2885,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -2764,7 +2904,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -2919,7 +3059,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -2938,7 +3078,7 @@ export default {
|
||||
<a-select-option value="管理权" label="管理权">
|
||||
<div
|
||||
onClick={() => {
|
||||
showProjManage();
|
||||
showProjManage(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
管理权
|
||||
@@ -3265,11 +3405,15 @@ export default {
|
||||
state.ProjPvisible = true;
|
||||
};
|
||||
const showProjCheck = (id) => {
|
||||
state.authClassify = 1;
|
||||
state.selectProjectId = id;
|
||||
state.ProjCheckvisible = true;
|
||||
};
|
||||
const showProjManage = () => {
|
||||
state.ProjManagevisible = true;
|
||||
const showProjManage = (id) => {
|
||||
state.authClassify = 2;
|
||||
state.selectProjectId = id;
|
||||
// state.ProjManagevisible = true;
|
||||
state.ProjCheckvisible = true;
|
||||
};
|
||||
|
||||
const closeReminderModal = () => {
|
||||
@@ -3279,6 +3423,36 @@ export default {
|
||||
state.reminderModal = false;
|
||||
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 {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -3388,6 +3562,7 @@ export default {
|
||||
copyProject,
|
||||
closeReminderModal,
|
||||
okReminderModal,
|
||||
memberScroll,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -62,13 +62,17 @@
|
||||
}
|
||||
"
|
||||
v-model:value="classifySelect"
|
||||
placeholder="四个养成"
|
||||
placeholder="请选择分类"
|
||||
style="width: 100%"
|
||||
:options="classifyList"
|
||||
@change="classificationChange"
|
||||
allowClear
|
||||
showSearch
|
||||
:disabled="viewDetail ? true : false"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -169,6 +173,7 @@
|
||||
allowClear
|
||||
showSearch
|
||||
:disabled="viewDetail ? true : false"
|
||||
@popupScroll="memberScroll"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -183,18 +188,26 @@
|
||||
</div>
|
||||
|
||||
<div class="in select">
|
||||
<a-select
|
||||
<a-tree-select
|
||||
:getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
"
|
||||
v-model:value="classifySelect2"
|
||||
style="width: 100%"
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
placeholder="自动带出 可修改"
|
||||
:options="classifyList2"
|
||||
@change="classificationChange2"
|
||||
:disabled="viewDetail ? true : false"
|
||||
/>
|
||||
:tree-data="classifyList2"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
></a-tree-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="name name2">
|
||||
@@ -252,6 +265,10 @@
|
||||
@change="classificationChange3"
|
||||
placeholder="集团级/组织级/现地级/部门级"
|
||||
:disabled="viewDetail ? true : false"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -275,6 +292,10 @@
|
||||
@change="classificationChange4"
|
||||
placeholder="集团级/组织级/现地级/部门级"
|
||||
:disabled="viewDetail ? true : false"
|
||||
:fieldNames="{
|
||||
label: 'dictName',
|
||||
value: 'dictCode',
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -355,6 +376,7 @@
|
||||
style="width: 100%"
|
||||
:options="classifyList5"
|
||||
@change="classificationChange5"
|
||||
@popupScroll="templateScroll"
|
||||
>
|
||||
</a-select>
|
||||
</div>
|
||||
@@ -372,16 +394,18 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
import { reactive, toRefs, ref, computed } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import dayjs from "dayjs";
|
||||
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 {
|
||||
name: "projectAdd",
|
||||
setup() {
|
||||
const store = useStore();
|
||||
// 编辑页面跳转过来时候,自动填充表格
|
||||
const routers = useRoute();
|
||||
const router = useRouter();
|
||||
@@ -398,12 +422,20 @@ export default {
|
||||
valueE1: null,
|
||||
valueE2: null,
|
||||
classifySelect1: [],
|
||||
classifySelect2: [],
|
||||
classifySelect3: [],
|
||||
classifySelect4: [],
|
||||
classifySelect2: null, //选中的资源归属信息
|
||||
classifySelect3: null, //选中的项目级别信息
|
||||
classifySelect4: null, //选中的培训分类信息
|
||||
rangevalue: [],
|
||||
projectAscription: "",
|
||||
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) {
|
||||
@@ -489,9 +521,7 @@ export default {
|
||||
const projectName = ref("");
|
||||
|
||||
const classifyList = ref([
|
||||
{ value: 1, label: "管理者" },
|
||||
{ value: 2, label: "领军者" },
|
||||
{ value: 3, label: "产业人" },
|
||||
// { value: 1, label: "管理者" },
|
||||
]);
|
||||
|
||||
let projectType = "";
|
||||
@@ -615,11 +645,49 @@ export default {
|
||||
|
||||
// 项目经理 后续接口调用
|
||||
const classifyList1 = ref([
|
||||
{ value: 1, label: "李俊国" },
|
||||
{ value: 2, label: "将小米" },
|
||||
{ value: 3, label: "刘孟君" },
|
||||
// { value: 1, 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 managerId = "";
|
||||
const classificationChange1 = (key, options) => {
|
||||
@@ -649,11 +717,9 @@ export default {
|
||||
};
|
||||
|
||||
// 资源归属 sourceBelongId 后续给接口
|
||||
const classifyList2 = ref([
|
||||
{ value: 1, label: "项目一" },
|
||||
{ value: 2, label: "项目二" },
|
||||
{ value: 3, label: "项目三" },
|
||||
]);
|
||||
const classifyList2 = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : ref([]);
|
||||
});
|
||||
|
||||
let sourceBelongIdC = "";
|
||||
const classificationChange2 = (key) => {
|
||||
@@ -663,10 +729,7 @@ export default {
|
||||
|
||||
// 项目级别
|
||||
const classifyList3 = ref([
|
||||
{ value: 1, label: "集团级" },
|
||||
{ value: 2, label: "组织级" },
|
||||
{ value: 3, label: "现地级" },
|
||||
{ value: 4, label: "部门级" },
|
||||
// { value: 1, label: "集团级" },
|
||||
]);
|
||||
|
||||
let levels = "";
|
||||
@@ -677,10 +740,7 @@ export default {
|
||||
|
||||
// 培训分类
|
||||
const classifyList4 = ref([
|
||||
{ value: 1, label: "集团级" },
|
||||
{ value: 2, label: "组织级" },
|
||||
{ value: 3, label: "现地级" },
|
||||
{ value: 4, label: "部门级" },
|
||||
// { value: 1, label: "集团级" },
|
||||
]);
|
||||
|
||||
let systemid = "";
|
||||
@@ -688,17 +748,94 @@ export default {
|
||||
console.log(`selected ${key}`, classifyList4);
|
||||
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([
|
||||
{ value: 1, label: "模版一" },
|
||||
{ value: 2, label: "模版二" },
|
||||
{ value: 3, label: "模版三" },
|
||||
{ value: 4, label: "模版四" },
|
||||
// { value: 1, label: "模版一" },
|
||||
]);
|
||||
const classificationChange5 = (key) => {
|
||||
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("");
|
||||
@@ -906,6 +1043,9 @@ export default {
|
||||
isEdit,
|
||||
backPage,
|
||||
dateFormatList,
|
||||
|
||||
templateScroll,
|
||||
memberScroll,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
<div class="btnText">添加阶段</div>
|
||||
</div>
|
||||
<div class="maincon" style="background-color: #fff">
|
||||
|
||||
<draggable
|
||||
v-model="level"
|
||||
chosenClass="chosen"
|
||||
@@ -690,13 +689,13 @@
|
||||
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1">
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1039,7 +1038,7 @@ import draggable from "vuedraggable";
|
||||
import { storage } from "../../api/storage";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
// import * as api1 from "../../api/index1";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
export default {
|
||||
name: "TaskAdd",
|
||||
components: {
|
||||
@@ -1059,6 +1058,7 @@ export default {
|
||||
UnlockMode,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
projectId: storage.get("projectId")
|
||||
? JSON.parse(storage.get("projectId"))
|
||||
@@ -1683,7 +1683,6 @@ export default {
|
||||
state.addactivevisible = true;
|
||||
state.EditActiveId = id;
|
||||
state.projectTaskId = eleId;
|
||||
|
||||
};
|
||||
const showDrawerAddEval = (id, eleId) => {
|
||||
state.addevalvisible = true;
|
||||
@@ -1861,6 +1860,23 @@ export default {
|
||||
const showModeVisible = () => {
|
||||
state.unlockModeVisible = true;
|
||||
};
|
||||
|
||||
//暂存
|
||||
const temporaryStorage = () => {
|
||||
message.success("暂存成功");
|
||||
};
|
||||
//确定
|
||||
const submitStorage = () => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
};
|
||||
//取消
|
||||
const cancelStorage = () => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -1914,6 +1930,10 @@ export default {
|
||||
deleteStage,
|
||||
|
||||
showModeVisible,
|
||||
|
||||
temporaryStorage,
|
||||
submitStorage,
|
||||
cancelStorage,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -698,13 +698,13 @@
|
||||
|
||||
<div class="footbtn">
|
||||
<div class="btnbox">
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn2" @click="temporaryStorage">
|
||||
<div class="btnText">暂存</div>
|
||||
</div>
|
||||
<div class="btn btn2">
|
||||
<div class="btn btn2" @click="submitStorage">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
<div class="btn btn1">
|
||||
<div class="btn btn1" @click="cancelStorage">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1046,7 +1046,7 @@ import draggable from "vuedraggable";
|
||||
import { storage } from "../../api/storage";
|
||||
import UnlockMode from "../../components/drawers/UnlockMode.vue";
|
||||
// import * as api1 from "../../api/index1";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const drawercolumns = [
|
||||
{
|
||||
title: "项目名称",
|
||||
@@ -1105,6 +1105,7 @@ export default {
|
||||
UnlockMode,
|
||||
},
|
||||
setup() {
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
projectTemplateId: storage.get("projectTemplateId")
|
||||
? JSON.parse(storage.get("projectTemplateId"))
|
||||
@@ -1993,6 +1994,24 @@ export default {
|
||||
const showModeVisible = () => {
|
||||
state.unlockModeVisible = true;
|
||||
};
|
||||
|
||||
|
||||
//暂存
|
||||
const temporaryStorage = () => {
|
||||
message.success("暂存成功");
|
||||
};
|
||||
//确定
|
||||
const submitStorage = () => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
};
|
||||
//取消
|
||||
const cancelStorage = () => {
|
||||
router.push({
|
||||
path: "/leveladd",
|
||||
});
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
selectProjectName,
|
||||
@@ -2049,6 +2068,11 @@ export default {
|
||||
deleteStage,
|
||||
|
||||
showModeVisible,
|
||||
|
||||
|
||||
temporaryStorage,
|
||||
submitStorage,
|
||||
cancelStorage,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user