123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- <template>
- <basic-container>
- <div>
- <div class="pd-b-20 border-grey-b">
- <span class="mg-r-10">选择项目名称</span>
- <el-select v-model="projectId" @change="projectChange" placeholder="请选择">
- <el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id"></el-option>
- </el-select>
- </div>
- <div class="pd-t-20">
- <el-row :gutter="20" style="height:calc(100vh - 290px)">
- <el-col :span="6" v-for="(item,index) in projectPageList" :key="item.id" style="height:20%;" class="mg-b-20 box-size-bb">
- <el-card @click.native="projectClick(item)" class="box-card h-100p flex flex-center project_name" :class="getBg(index)">
- {{item.projectAlias}}
- </el-card>
- </el-col>
- </el-row>
- </div>
- <div>
- <el-pagination
- layout="prev, pager, next" class="text-align-c"
- @current-change="handleCurrentChange"
- :current-page.sync="page.currentPage"
- :total="page.total" :page-size="page.pageSize">
- </el-pagination>
- </div>
- </div>
- <el-dialog title="项目信息" :visible.sync="projectVisible" width="800px" append-to-body>
- <div class="flex jc-sb pd-b-10">
- <span>{{curProjiect.projectName}}</span>
- <div>
- <el-button size="small" type="success">WBS树管理</el-button>
- <el-button size="small" type="primary">编辑项目信息</el-button>
- <el-button size="small" type="info">创建新合同段</el-button>
- <el-button size="small" @click="projectVisible = false">返回</el-button>
- </div>
- </div>
- <div style="height:400px;overflow: auto;" v-if="contractList.length > 0">
- <el-card shadow="never" v-for="(item) in contractList" :key="item.id">
- <div class="flex jc-sb">
- <div class="flex jc-al-c">
- <el-avatar :size="50" :class="getAvatarBg(item.contractType)">{{getFont(item.contractType)}}</el-avatar>
- <span class="mg-l-10">{{item.contractName}}</span>
- </div>
- <div class="flex jc-al-c">
- <el-link type="primary" >编辑合同段信息</el-link>
- <el-link type="primary" class="mg-l-10">分配WBS</el-link>
- <el-link type="primary" class="mg-l-10">分配项目人员</el-link>
- <el-link type="primary" class="mg-l-10">删除</el-link>
- </div>
- </div>
- </el-card>
- </div>
- <div class="text-align-c pd-t-20" v-else>
- 暂无合同段,请先创建合同段
- </div>
- </el-dialog>
- </basic-container>
- </template>
- <script>
- import {getProjectList} from "@/api/manager/projectinfo";
- import {findContractByProjectId} from "@/api/manager/contractinfo";
- import {getDictionary} from "@/api/system/dict";
- import {mapGetters} from "vuex";
- export default {
- data() {
- return {
- projectId:'',
- curProjiect:{},
- projectList:[],
- projectPageList:[],
- projectVisible:false,
- contractList:[],
- page:{
- currentPage:1,
- pageSize:16,
- total:0
- }
- }
- },
- computed: {
- ...mapGetters(["userInfo"]),
- },
- created() {
- this.init();
- //console.log(this.userInfo)
- },
- methods: {
- init(){
- this.getProjectList();
- this.getProjectPageList();
- },
- getProjectList(){
- getProjectList(1,999).then((res)=>{
- this.projectList = res.data.data.records;
- })
- },
- getProjectPageList(){
- getProjectList(this.page.currentPage,this.page.pageSize).then((res)=>{
- this.projectPageList = res.data.data.records;
- this.page.total = res.data.data.total;
- })
- },
- projectClick(item){
- this.curProjiect = item;
- findContractByProjectId(this.curProjiect.id).then((res)=>{
- this.contractList = res.data.data;
- })
- this.projectVisible = true;
- },
- handleCurrentChange(val){
- this.getProjectPageList();
- this.page.currentPage = val;
- },
- projectChange(id){
- for (let i = 0; i < this.projectList.length; i++) {
- if(id == this.projectList[i].id){
- this.curProjiect = this.projectList[i];
- findContractByProjectId(this.curProjiect.id).then((res)=>{
- this.contractList = res.data.data;
- })
- this.projectVisible = true;
- return;
- }
- }
- },
- getFont(type){
- if(type == 1){
- return '施';
- }else if(type == 2){
- return '监';
- }else if(type == 3){
- return '业';
- }
- return '';
- },
- getAvatarBg(type){
- if(type == 1){
- return {'abg1':true};
- }else if(type == 2){
- return {'abg2':true};
- }else if(type == 3){
- return {'abg3':true};
- }
- return {};
- },
- getBg(index){
- let num = Math.trunc(index/4);
- if((num%2)===0){//判定条件余数为0时为偶数
- return{
- 'bg1':true
- }
- }else{
- return{
- 'bg2':true
- }
- }
- }
- }
- };
- </script>
- <style scoped lang="scss">
- .project_name{
- font-size: 20px;
- cursor: pointer;
- }
- .bg1{
- background-color: rgb(127, 164, 221);
- border-color: rgb(187, 187, 187);
- box-shadow: rgba(0, 0, 0, .4) 0px 2px 6px 0px;
- }
- .bg2{
- background-color: rgb(239, 240, 229);
- border-color: rgb(187, 187, 187);
- box-shadow: rgba(0, 0, 0, .4) 0px 2px 6px 0px;
- }
- .abg1{
- background-color: rgb(42, 155, 121);
- }
- .abg2{
- background-color: rgb(155, 108, 42);
- }
- .abg3{
- background-color: rgb(42, 53, 155);
- }
- </style>
|