YZProjectCloud/yanzhu-ui-vue3/src/components/CurrentProject/index.vue

167 lines
4.6 KiB
Vue
Raw Normal View History

2024-09-17 10:16:27 +08:00
<template>
<div>
<el-button type="primary" plain :icon="OfficeBuilding" @click="showProList">{{userStore.currentProId?userStore.currentProName:''}}</el-button>
<!--选择项目-->
<el-dialog v-model="dialogVisible" title="选择切换项目" width="800">
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="projectDataList">
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="comName" label="所属公司" align="center" />
<el-table-column prop="projectName" label="项目名称" align="center" />
<!-- <el-table-column v-if="!isAdmin" label="默认项目" align="center" width="100">
<template #default="scope">
<el-rate :model-value="scope.$index==0?1:0" max="1" @change="changeDefault(scope.row.id)"/>
</template>
</el-table-column> -->
<el-table-column prop="createTime" label="创建时间" align="center" width="120">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button v-if="scope.row.id == userStore.currentProId" disabled link type="primary"> </el-button>
<el-button v-if="scope.row.id != userStore.currentProId" link type="primary" icon="Switch" @click="changeDefault(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getProjectList"
/>
</el-dialog>
</div>
</template>
<script setup name="CurrentProject">
import { OfficeBuilding } from '@element-plus/icons-vue'
import { findMyProjectList } from "@/api/publics";
import { switchProject } from '@/api/login'
import { changeDefaultProject } from "@/api/manage/proProjectInfoUsers";
const { proxy } = getCurrentInstance();
import useUserStore from '@/store/modules/user'
const userStore = useUserStore()
const isAdmin = ref(false);
const defaultRate = ref(1);
// 显示dialog
const dialogVisible = ref(false);
const total = ref(0);
const loading = ref(true);
const projectDataList = ref([]);
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10
}
});
const { queryParams, form } = toRefs(data);
/** 查询项目列表 */
function getProjectList() {
loading.value = true;
findMyProjectList(queryParams.value).then(response => {
projectDataList.value = response.rows;
total.value = response.total;
loading.value = false;
});
}
// 取消按钮
function cancel() {
dialogVisible.value = false;
proxy.resetForm("queryRef");
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1;
getProjectList();
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
/** 提交按钮 */
function submitForm() {
}
/** 改变默认项目 */
function changeDefault(proId) {
if(isAdmin.value){
switchProject(proId).then(res =>{
if(res.code==200){
window.location.reload();
}
})
}else{
changeDefaultProject(proId).then(response =>{
switchProject(proId).then(res =>{
if(res.code==200){
window.location.reload();
}
})
});
}
}
/** 显示项目列表 */
function showProList() {
getProjectList();
dialogVisible.value = true;
}
/** 初始化页面 */
function initPage() {
let roles = userStore.roles;
if(roles.includes("admin") || roles.includes("gsAdmin")){
isAdmin.value = true;
}else{
isAdmin.value = false;
}
}
initPage();
</script>
<style lang="scss" scope>
.el-dialog__body{
margin-top: -30px;
padding-bottom: 50px;
.pagination-container{
margin-top: 0px;
padding-bottom: 30px !important;
.el-pagination{
margin-right: 50px;
}
}
}
</style>