Преглед на файлове

新增登录页面;指标管理配置新增页面逻辑修改;

SunZehao преди 2 години
родител
ревизия
fd462ea5d6

+ 5 - 0
package-lock.json

@@ -6173,6 +6173,11 @@
       "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz",
       "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw=="
     },
+    "js-md5": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
+      "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
+    },
     "js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "exceljs": "^4.3.0",
     "file-saver": "^2.0.5",
     "js-cookie": "^3.0.1",
+    "js-md5": "^0.7.3",
     "jszip": "^3.10.1",
     "monaco-editor": "^0.27.0",
     "monaco-editor-webpack-plugin": "^4.2.0",

+ 26 - 22
src/api/api.js

@@ -1,5 +1,6 @@
 // 导入axios实例
 import httpRequest from '@/request/index'
+import md5 from 'js-md5'
 
 // 导出数据接口
 export function apiGetExportMsg(url, params) {
@@ -21,29 +22,18 @@ export function apiGetModel(url, params) {
 
 //----------------------------------------登录页接口------------------------------------------------
 
-// 获取验证码
-export function apiGetUserInfo() {
-    return httpRequest({
-        url: 'captchaImage',
-        method: 'get'
-    })
-}
 // 登录接口
-export function toLoginApi(params) {
-    return httpRequest({
-        url: 'toLogin',
-        method: 'post',
-        params: params
-    })
-}
-// 天气Api接口
-export function apiGetWeather(params) {
-    return httpRequest({
-        url: 'predict/api/wfc/getWeatherForecastDataOne',
-        method: 'get',
-        params: params
-    })
-}
+export function login(username,password,account) {
+    // MD5 32 位
+    return request({
+      url: '/api/ims-idas/oauth/tokenWrapper?tenantId=000000&username='+username+'&password='+md5(password)+'&grant_type=password&scope=all&type='+account,
+      method: 'post',
+      headers: {
+        'Authorization': 'Basic c2FiZXI6NWMwMmMzZDViNzYxNTNkZGM5ZTczYzc5YzMzNzYzODAxNmE5ZDM2Ng==',
+        'Tenant-Id': '000000'
+      }
+    })
+  }
 
 //----------------------------------------考评业务------------------------------------------------
 //部门目标责任表
@@ -206,6 +196,20 @@ export function apiGetIndicatordicdeleteList(params) {
         method: 'post'
     })
 }
+// 指标组合添加
+export function apiPostindicatorsaveGroup(params) {
+    return httpRequest.post('indicator/saveGroup', params)
+}
+// 根据指标id获取主子指标-list
+export function apiGetIndidicselectById(params) {
+    return httpRequest({
+        url: 'indicator/selectById',
+        method: 'get',
+        params: params
+    })
+}
+
+
 //----考评规则配置
 //----考评规则-list
 export function apiGetevaluateRuleList(params) {

+ 6 - 0
src/assets/css/main.css

@@ -227,4 +227,10 @@ a {
     font-weight: 400;
     color: #666666;
     /* line-height: 12px; */
+}
+.el-overlay .el-dialog__header .el-dialog__title{
+    font-size: 18px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #3B7AD1; 
 }

BIN
src/assets/getwayImg/huodian.png


BIN
src/assets/getwayImg/huodianC.png


BIN
src/assets/getwayImg/huodianIcon.png


BIN
src/assets/getwayImg/huodianIconC.png


BIN
src/assets/getwayImg/meidian.png


BIN
src/assets/getwayImg/meidianC.png


BIN
src/assets/getwayImg/meidianIcon.png


BIN
src/assets/getwayImg/meidianIconC.png


BIN
src/assets/getwayImg/shuidian.png


BIN
src/assets/getwayImg/shuidianC.png


BIN
src/assets/getwayImg/shuidianIcon.png


BIN
src/assets/getwayImg/shuidianIconC.png


BIN
src/assets/getwayImg/xinnengyuan.png


BIN
src/assets/getwayImg/xinnengyuanC.png


BIN
src/assets/getwayImg/xinnengyuanIcon.png


BIN
src/assets/getwayImg/xinnengyuanIconC.png


BIN
src/assets/loginImage/loginBtn.png


BIN
src/assets/loginImage/passwordIcon.png


BIN
src/assets/loginImage/userIcon.png


+ 52 - 52
src/components/evaluationSystem/IndicatorItemPage.vue

@@ -325,66 +325,66 @@ export default {
                                 opacity: 0.5;
                             }
                         }
-                    }
-                    .indicatorItemTableData{
-                        height: 55vh !important;
-                        .datasMsg{
-                            .el-collapse{
-                                .el-collapse-item{
-                                    .el-collapse-item__header{
-                                        .nameTit{
-                                            display: inline-block;
-                                            height: 20px;
-                                            font-size: 12px;
-                                            font-weight: bold;
-                                            position: relative;
-                                            top: -8px;
+                        .indicatorItemTableData{
+                            height: 55vh !important;
+                            .datasMsg{
+                                .el-collapse{
+                                    .el-collapse-item{
+                                        .el-collapse-item__header{
+                                            .nameTit{
+                                                display: inline-block;
+                                                height: 20px;
+                                                font-size: 12px;
+                                                font-weight: bold;
+                                                position: relative;
+                                                top: -8px;
+                                            }
+                                            .el-input{
+                                                width: 150px;
+                                                margin-right: 10px;
+                                            }
                                         }
-                                        .el-input{
-                                            width: 150px;
-                                            margin-right: 10px;
+                                        .el-table{
+                                            .el-table__body-wrapper{
+                                            }
+                                            .el-input__inner{
+                                                height: 30px !important;
+                                            }
+                                            .el-radio__label{
+                                                display: none;
+                                            }
                                         }
-                                    }
-                                    .el-table{
-                                        .el-table__body-wrapper{
-                                        }
-                                        .el-input__inner{
-                                            height: 30px !important;
-                                        }
-                                        .el-radio__label{
-                                            display: none;
+                                        .indicitem{
+                                            color: #409EFF;
+                                            font-size: 12px;
+                                            margin-right: 20px;
+                                            cursor:pointer;
+                                            &:hover{
+                                                text-decoration: underline;
+                                            }
                                         }
-                                    }
-                                    .indicitem{
-                                        color: #409EFF;
-                                        font-size: 12px;
-                                        margin-right: 20px;
-                                        cursor:pointer;
-                                        &:hover{
-                                            text-decoration: underline;
+                                        .el-pagination{
+                                            margin-top: 20px;
+                                            text-align: end;
+                                            position: relative;
                                         }
-                                    }
-                                    .el-pagination{
-                                        margin-top: 20px;
-                                        text-align: end;
-                                        position: relative;
-                                    }
-                                    .el-button{
-                                        height: 26px;
-                                        padding: 0 15px ;
-                                        span{
-                                            margin:0;
+                                        .el-button{
+                                            height: 26px;
+                                            padding: 0 15px ;
+                                            span{
+                                                margin:0;
+                                            }
                                         }
                                     }
                                 }
                             }
-                        }
-                        .emptyData{
-                            display: inline-block;
-                            width: 100%;
-                            // border: 1px solid #d9d9d9;
-                            text-align: center;
-                            margin-top: 50px;
+                            .emptyData{
+                                display: inline-block;
+                                width: 100%;
+                                // border: 1px solid #d9d9d9;
+                                text-align: center;
+                                margin-top: 50px;
+                            }
                         }
                     }
                     .onlyDialog{

+ 443 - 90
src/components/evaluationSystem/evaluationIndexPage.vue

@@ -47,7 +47,7 @@
                     </el-table-column>
                     <el-table-column label="操作">
                         <template #default="scope">
-                            <p class="indicitem" @click="editEvaluaIndex(scope.row)">指标项配置</p>
+                            <p class="indicitem" @click="editEvaluaIndex(scope.row)">详情</p>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -61,88 +61,167 @@
                 </el-pagination>
             </div>
             <div class="indexdialog">
-                <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
-                    <div class="periodFrom">
-                        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
-                            <el-form-item label="指标名称" prop="indicatorName">
-                                <el-input v-model="ruleForm.indicatorName" placeholder="请输入指标名称"></el-input>
-                            </el-form-item>
-                            <el-form-item label="指标编码" prop="indicatorCode">
-                                <el-input v-model="ruleForm.indicatorCode" placeholder="请输入指标编码" :disabled="isSave"></el-input>
-                            </el-form-item>
-                            <el-form-item label="指标类别" prop="indicatorType">
-                                <el-select v-model="ruleForm.indicatorType" placeholder="请选择指标类别">
-                                    <el-option
-                                    v-for="item in indicatorTypeData"
-                                    :key="item.id"
-                                    :label="item.typeName"
-                                    :value="item.id">
-                                    </el-option>
-                                </el-select>
-                            </el-form-item>
-                            <el-form-item label="指标单位" prop="indicatorUnit">
-                                <el-input v-model="ruleForm.indicatorUnit" placeholder="请输入指标单位"></el-input>
-                            </el-form-item>
-                            <el-form-item label="所属部门" prop="department">
-                                <el-select v-model="ruleForm.department" placeholder="请选择所属部门">
-                                    <el-option
-                                    v-for="item in departData"
-                                    :key="item.dataKey"
-                                    :label="item.keyName"
-                                    :value="item.dataKey">
-                                    </el-option>
-                                </el-select>
-                            </el-form-item>
-                            <el-form-item label="业务阶段" prop="binStage">
-                                <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段">
-                                    <el-option
-                                    v-for="item in stageData"
-                                    :key="item.id"
-                                    :label="item.stageName"
-                                    :value="item.id">
-                                    </el-option>
-                                </el-select>
-                            </el-form-item>
-                            <el-form-item label="业务属性" prop="binSection">
-                                <el-select v-model="ruleForm.binSection" placeholder="请选择业务属性">
-                                    <el-option
-                                    v-for="item in moduleData"
-                                    :key="item.id"
-                                    :label="item.sectionName"
-                                    :value="item.id">
-                                    </el-option>
-                                </el-select>
-                            </el-form-item>
-                            <el-form-item label="是否量化">
-                                <el-radio-group v-model="ruleForm.isQuantified">
-                                    <el-radio border label="是" />
-                                    <el-radio border label="否" />
-                                </el-radio-group>
-                            </el-form-item>
-                            <el-form-item label="是否专项">
-                                <el-radio-group v-model="ruleForm.isAdditional">
-                                    <el-radio border label="是" />
-                                    <el-radio border label="否" />
-                                </el-radio-group>
-                            </el-form-item>
-                            <el-form-item label="是否子指标">
-                                <el-radio-group v-model="ruleForm.isChild">
-                                    <el-radio border label="是" />
-                                    <el-radio border label="否" />
-                                </el-radio-group>
-                            </el-form-item>
-                            <el-form-item label="指标顺序" prop="orderNum">
-                                <el-input-number v-model="ruleForm.orderNum" :min="1" />
-                            </el-form-item>
-                            <el-form-item label="描述" prop="desc">
-                                <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
-                            </el-form-item>
-                        </el-form>
-                    </div>
+                <el-dialog :title="title" v-model="dialogVisible" width="70vw" :close-on-click-modal="false">
+                    <el-row class="periodFrom">
+                        <el-col :span="8">
+                            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="DruleForm" :validate-on-rule-change="false">
+                                <el-form-item label="指标名称" prop="indicatorName">
+                                    <el-input v-model="ruleForm.indicatorName" placeholder="请输入指标名称" :readonly="isDetail" @blur="blurInput"></el-input>
+                                </el-form-item>
+                                <el-form-item label="指标编码" prop="indicatorCode">
+                                    <el-input v-model="ruleForm.indicatorCode" placeholder="请输入指标编码" :disabled="isSave" :readonly="isDetail" @blur="blurInput"></el-input>
+                                </el-form-item>
+                                <el-form-item label="指标类别" prop="indicatorType">
+                                    <el-select v-model="ruleForm.indicatorType" placeholder="请选择指标类别" :disabled="isDetail">
+                                        <el-option
+                                        v-for="item in indicatorTypeData"
+                                        :key="item.id"
+                                        :label="item.typeName"
+                                        :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="指标单位" prop="indicatorUnit">
+                                    <el-input v-model="ruleForm.indicatorUnit" placeholder="请输入指标单位" :readonly="isDetail"></el-input>
+                                </el-form-item>
+                                <el-form-item label="所属部门" prop="department">
+                                    <el-select v-model="ruleForm.department" placeholder="请选择所属部门" :disabled="isDetail">
+                                        <el-option
+                                        v-for="item in departData"
+                                        :key="item.dataKey"
+                                        :label="item.keyName"
+                                        :value="item.dataKey">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="业务阶段" prop="binStage">
+                                    <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段" :disabled="isDetail">
+                                        <el-option
+                                        v-for="item in stageData"
+                                        :key="item.id"
+                                        :label="item.stageName"
+                                        :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="业务属性" prop="binSection">
+                                    <el-select v-model="ruleForm.binSection" placeholder="请选择业务属性" :disabled="isDetail">
+                                        <el-option
+                                        v-for="item in moduleData"
+                                        :key="item.id"
+                                        :label="item.sectionName"
+                                        :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="是否量化">
+                                    <el-radio-group v-model="ruleForm.isQuantified" :disabled="isDetail">
+                                        <el-radio border label="是" />
+                                        <el-radio border label="否" />
+                                    </el-radio-group>
+                                </el-form-item>
+                                <el-form-item label="是否专项">
+                                    <el-radio-group v-model="ruleForm.isAdditional" :disabled="isDetail">
+                                        <el-radio border label="是" />
+                                        <el-radio border label="否" />
+                                    </el-radio-group>
+                                </el-form-item>
+                                <el-form-item label="是否子指标">
+                                    <el-radio-group v-model="ruleForm.isChild" @change="changeRadio" :disabled="isDetail || isSave">
+                                        <el-radio border label="是" />
+                                        <el-radio border label="否" />
+                                    </el-radio-group>
+                                </el-form-item>
+                                <el-form-item label="指标顺序" prop="orderNum">
+                                    <el-input-number v-model="ruleForm.orderNum" :min="1" :disabled="isDetail" />
+                                </el-form-item>
+                                <el-form-item label="描述" prop="desc">
+                                    <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述" :readonly="isDetail"></el-input>
+                                </el-form-item>
+                            </el-form>
+                        </el-col>
+                        <el-col :span="16" class="indicatorItemBtn">
+                            <div class="PeriodBtn">
+                                <el-row :gutter="10" style="padding-left: 10px;">
+                                    <p class="indItemC">指标项配置管理</p>
+                                    <el-col :span="1.5">
+                                        <el-button
+                                        type="primary"
+                                        size="mini"
+                                        :disabled="ruleForm.isChild === '否' || isDetail"
+                                        @click="handleAddChild"
+                                        >
+                                        <img :src="addW" style="margin-right: 10px">
+                                        <span>新增</span>
+                                        </el-button>
+                                    </el-col>
+                                </el-row>
+                            </div>
+                            <div class="indicatorItemTableData">
+                                <div class="datasMsg" v-if="indicatoroptions.length>0" >
+                                    <el-collapse accordion>
+                                        <el-collapse-item v-for="item in indicatoroptions" :key="item" :name="item.id">
+                                            <template #title>
+                                                <div style="display:flex;height:30px">
+                                                    <div style="display:flex;height:30px">
+                                                        <span class="nameTit">子指标名称:</span>
+                                                        <el-input v-model="item.childName" placeholder="请输入子指标项名称" :readonly="isDetail"></el-input>
+                                                    </div>
+                                                    <div style="display:flex">
+                                                        <span class="nameTit">子指标编码:</span>
+                                                        <el-input v-model="item.childCode" placeholder="请输入子指标项编码" :readonly="isDetail"></el-input>
+                                                    </div>
+                                                </div>
+                                            </template>
+                                            <div style="padding:10px 20px">
+                                                <div class="tableBtn add" @click="handleAddTableChild(item)" v-if="!isDetail">
+                                                    <img :src="addIcon" alt="">
+                                                    <span>新增</span>
+                                                </div>
+                                                <el-table :data="item.list">
+                                                    <el-table-column label="序号" type="index"  align="center" />
+                                                    <el-table-column label="指标项名称" prop="optionName">
+                                                        <template #default="scope">
+                                                            <el-select v-model="scope.row.optionName" filterable :disabled="isDetail" placeholder="请选择指标项名称" @change="(val)=>changeOptionName(val,scope.row)">
+                                                                <el-option
+                                                                    v-for="item in indicItemoptions"
+                                                                    :key="item.keyValue"
+                                                                    :label="item.keyName"
+                                                                    :value="item.keyName">
+                                                                </el-option>
+                                                            </el-select>
+                                                        </template>
+                                                    </el-table-column>
+                                                    <el-table-column label="指标项编码" prop="optionCode">
+                                                        <template #default="scope">
+                                                            <span>{{scope.row.optionCode}}</span>
+                                                        </template>
+                                                    </el-table-column>
+                                                    <el-table-column label="描述">
+                                                        <template #default="scope">
+                                                            <el-input v-model="scope.row.des" :rows="1" type="textarea" placeholder="请输入描述" :readonly="isDetail"></el-input>
+                                                        </template>
+                                                    </el-table-column>
+                                                    <el-table-column label="操作" width="100" v-if="!isDetail">
+                                                        <template #default="scope">
+                                                            <p class="indicitem" @click="handleDeleteTableChild(item, scope.row)">删除</p>
+                                                        </template>
+                                                    </el-table-column>
+                                                </el-table>
+                                            </div>
+                                        </el-collapse-item>
+                                    </el-collapse>
+                                </div>
+                                <div v-else>
+                                    <span class="emptyData">暂无数据</span>
+                                </div>
+                            </div>
+                        </el-col>
+                    </el-row>
                     <template #footer>
                         <span class="dialog-footer">
                             <el-button @click="dialogVisible = false">取 消</el-button>
-                            <el-button type="primary" @click="saveEvaluationIndexMsg('ruleForm')">确 定</el-button>
+                            <el-button type="primary" @click="saveEvaluationIndexMsg('ruleForm')" v-if="!isDetail">确 定</el-button>
                         </span>
                     </template>
                 </el-dialog>
@@ -157,8 +236,11 @@
 import importDailog from '../importPage/importDailog.vue'
 import indicatorItem from './IndicatorItemPage.vue'
 import btns from '../elbuttonS.vue'
-import {apiGetIndicatorList, apiGetIndicatorSave, apiGetIndicatorDelete,apiGetbinsectionList,
- apiGetIndicatorTypeList, apiGetdatadictionaryList, apiGetbinstageList} from '../../api/api'
+import addW from '../../assets/btnIcon/addW.png'
+import saveW from '../../assets/btnIcon/saveW.png'
+import addIcon from '../../assets/btnIcon/add.png'
+import {apiGetIndicatorList, apiPostindicatorsaveGroup, apiGetIndicatorDelete,apiGetbinsectionList,apiGetIndicatordicdeleteList,
+ apiGetIndicatorTypeList, apiGetdatadictionaryList, apiGetbinstageList, apiGetdataZBXList, apiGetIndidicselectById} from '../../api/api'
 export default {
   components: { importDailog, indicatorItem, btns },
     data() {
@@ -223,12 +305,20 @@ export default {
             },
             evalradio: {},
             loadingImport: false,
+
+            addW: addW,
+            saveW: saveW,
+            addIcon: addIcon,
+            indicatoroptions: [],
+            indicItemoptions: [],
+            isDetail: false
         }
     },
     created() {
         this.getEvaluationData()
         this.getDataDictionary('BM0001') //部门//模块//阶段
         this.getindicatorTypeData()
+        this.getindicItemData()
     },
     methods:{
         // 查询指标数据
@@ -257,6 +347,25 @@ export default {
                 }
             })
         },
+        changeOptionName(val, row) {
+            this.indicItemoptions.forEach(item =>{
+                if (item.keyName === val) {
+                    row.optionCode = item.keyValue
+                }
+            })
+        },
+        // 查询指标项条目
+        getindicItemData() {
+            let that = this
+            let params = {
+                superKey: 'ZBX0001'
+            }
+            apiGetdataZBXList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.indicItemoptions = datas.data
+                }
+            })
+        },
         // 查询部门
         // 查询规则模块和阶段数据
         getDataDictionary(val) {
@@ -280,12 +389,47 @@ export default {
                 }
             })
         },
+        changeRadio(val) {
+            if (val === '否') {
+                if (this.ruleForm.indicatorName !== '' && this.ruleForm.indicatorCode !== '') {
+                    let childitemForm = {
+                        childName: this.ruleForm.indicatorName,
+                        childCode: this.ruleForm.indicatorCode,
+                        list: []
+                    }
+                    this.indicatoroptions.push(childitemForm)
+                }
+            } else {
+                this.indicatoroptions = []
+            }
+        },
+        blurInput(val) {
+            if (this.ruleForm.isChild === '否') {
+                if (this.ruleForm.indicatorName !== '' && this.ruleForm.indicatorCode !== '') {
+                    let childitemForm = {
+                        childName: this.ruleForm.indicatorName,
+                        childCode: this.ruleForm.indicatorCode,
+                        list: []
+                    }
+                    this.indicatoroptions.push(childitemForm)
+                }
+            }
+        },
+        //新增子指标
+        handleAddTableChild(row) {
+            let childitemForm = {
+                optionName: '',
+                optionCode: ''
+            }
+            row.list.push(childitemForm)
+        },
         handleAdd() {
             this.dialogVisible = true
             this.isSave = false
+            this.isDetail = false
             this.title = '新增考评指标'
             this.$nextTick(() =>{
-                // this.$refs['ruleForm'].resetFields()
+                this.$refs['ruleForm'].resetFields()
                 this.ruleForm = {
                     indicatorName: '',
                     indicatorCode: '',
@@ -300,11 +444,13 @@ export default {
                     orderNum: 1,
                     desc: ''
                 }
+                this.indicatoroptions = []
             })
         },
         handleEdit() {
             this.dialogVisible = true
             this.isSave = true
+            this.isDetail = false
             this.title = '修改考评指标'
             this.evalradio = this.changeDateSelect[0]
             this.ruleForm = {
@@ -321,6 +467,30 @@ export default {
                 orderNum: this.evalradio.orderNum,
                 desc: this.evalradio.des
             }
+            this.getIndidicselectById(this.evalradio.id)
+        },
+        // 根据指标id获取主子指标-list
+        getIndidicselectById(id) {
+            let that = this
+            let params = {
+                id: id
+            }
+            apiGetIndidicselectById(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.indicatoroptions = datas.data.dtoList
+                }
+            })
+        },
+        //新增子指标
+        handleAddChild() {
+            this.$nextTick(() =>{
+                let itemForm = {
+                    childName: '',
+                    childCode: '',
+                    list: [],
+                }
+                this.indicatoroptions.push(itemForm)
+            })
         },
         saveEvaluationIndexMsg(formName) {
             let that = this
@@ -345,12 +515,13 @@ export default {
                 isAdditional: that.ruleForm.isAdditional,
                 isChild: that.ruleForm.isChild === '是'?true:false,
                 orderNum: that.ruleForm.orderNum,
-                des: that.ruleForm.desc
+                des: that.ruleForm.desc,
+                dtoList: that.indicatoroptions
             }
             if (that.isSave) {
                 params.id = this.evalradio.id
             }
-            apiGetIndicatorSave(params).then(datas =>{
+            apiPostindicatorsaveGroup(params).then(datas =>{
                 if (!datas.success) {
                     that.$message({
                         message: datas.message,
@@ -395,7 +566,35 @@ export default {
                     that.changeDateSelect = []
                 })
             })
-        },        
+        },
+        //删除指标数据
+        handleDeleteTableChild(data, row) {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                if (row.id) {
+                    let that = this
+                    let paramsArr = [row.id]
+                    apiGetIndicatordicdeleteList(paramsArr.join(',')).then(datas =>{
+                        that.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        that.getIndidicselectById(this.evalradio.id)
+                    })
+                } else {
+                    if (data.list && data.list.length>0) {
+                        data.list.forEach((it,index) =>{
+                            if (it.optionCode === row.optionCode) {
+                                data.list.splice(index, 1)
+                            }
+                        })
+                    }
+                }
+            })
+        },    
         rowClick(selection, row) {
             this.changeDateSelect = selection
         },
@@ -430,7 +629,25 @@ export default {
 
         //指标项配置
         editEvaluaIndex(row) {
-            this.$refs.indicatorItem.init(row)
+            // this.$refs.indicatorItem.init(row)
+            this.title = '考评指标详情'
+            this.isDetail = true
+            this.dialogVisible = true
+            this.ruleForm = {
+                indicatorName: row.indicatorName,
+                indicatorCode: row.indicatorCode,
+                indicatorType: row.indicatorTypeId,
+                indicatorUnit: row.unit,
+                department: row.dept,
+                binSection: row.binSection,
+                binStage: row.binStage,
+                isQuantified: row.isQuantified,
+                isAdditional: row.isAdditional,
+                isChild: row.isChild === true? '是': '否',
+                orderNum: row.orderNum,
+                desc: row.des
+            }
+            this.getIndidicselectById(row.id)
         }
     }
 }
@@ -469,8 +686,8 @@ export default {
                 }
                 .el-select{
                     margin-right:10px;
-                    .el-input__inner{
-                        height:30px;
+                    .el-input__inner, .is-disabled{
+                        height:30px !important;
                     }
                     .el-input__suffix{
                         .el-select__caret{
@@ -501,11 +718,147 @@ export default {
                 .el-dialog{
                     margin-top: 10vh;
                     .el-dialog__body{
-                        padding: 30px 60px 30px 20px !important;
+                        padding: 0px 20px 0px 20px !important;
+                        border-top: 1px solid #D6DBEA;
+                        border-bottom: 1px solid #D6DBEA;
                         .periodFrom{
                             .el-select, .el-input{
                                 width: 100%;
                             }
+                            .el-select{
+                                .el-input__inner, .is-disabled{
+                                    height:30px !important;
+                                }
+                            }
+                            .DruleForm{
+                                padding: 20px 60px 20px 20px;
+                            }
+                            .indicatorItemBtn{
+                                padding: 10px 20px 0 20px;
+                                border-left: 1px solid #D6DBEA;
+                                span{
+                                    font-size:14px;
+                                }
+                                .PeriodBtn{
+                                    display: flex;
+                                    justify-content: end;
+                                    padding: 20px 0;
+                                    .indItemC{
+                                        position: relative;
+                                        left: -600px;
+                                        top: 15px;
+                                        font-size: 16px;
+                                        font-family: Microsoft YaHei;
+                                        font-weight: 600;
+                                        color: #3B7AD1;
+                                    }
+                                    .el-button{
+                                        height: 30px;
+                                        padding: 0 30px ;
+                                        span{
+                                            margin:0;
+                                        }
+                                    }
+                                    .is-disabled{
+                                        opacity: 0.5;
+                                    }
+                                }
+                                .indicatorItemTableData{
+                                    height: 55vh !important;
+                                    .datasMsg{
+                                        .tableBtn {
+                                            display: flex;
+                                            justify-content: end;
+                                            margin-right: 30px;
+                                            img{
+                                                margin-right: 5px;
+                                                margin-top: 1px;
+                                                width: 18px;
+                                                height: 18px;
+                                            }
+                                            span{
+                                                position: relative;
+                                                top: -2px;
+                                                font-size: 14px;
+                                                font-family: Microsoft YaHei;
+                                                font-weight: 400;
+                                            }
+                                        }
+                                        .add{
+                                            cursor: pointer;
+                                            span{
+                                                color: #3B7AD1;
+                                            }
+                                        }
+                                        .el-collapse{
+                                            .el-collapse-item{
+                                                .el-collapse-item__header{
+                                                    .nameTit{
+                                                        display: inline-block;
+                                                        height: 20px;
+                                                        font-size: 12px;
+                                                        font-weight: bold;
+                                                        position: relative;
+                                                        top: -8px;
+                                                    }
+                                                    .el-input{
+                                                        width: 150px;
+                                                        margin-right: 10px;
+                                                    }
+                                                }
+                                                .el-table{
+                                                    .el-table__body-wrapper{
+                                                    }
+                                                    .el-input__inner{
+                                                        height: 30px !important;
+                                                    }
+                                                    .el-radio__label{
+                                                        display: none;
+                                                    }
+                                                }
+                                                .indicitem{
+                                                    color: #409EFF;
+                                                    font-size: 12px;
+                                                    margin-right: 20px;
+                                                    cursor:pointer;
+                                                    &:hover{
+                                                        text-decoration: underline;
+                                                    }
+                                                }
+                                                .el-pagination{
+                                                    margin-top: 20px;
+                                                    text-align: end;
+                                                    position: relative;
+                                                }
+                                                .el-button{
+                                                    height: 26px;
+                                                    padding: 0 15px ;
+                                                    span{
+                                                        margin:0;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                    .emptyData{
+                                        display: inline-block;
+                                        width: 100%;
+                                        // border: 1px solid #d9d9d9;
+                                        text-align: center;
+                                        margin-top: 50px;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    .el-dialog__footer{
+                        .dialog-footer{
+                            display: flex;
+                            justify-content: center;
+                            .el-button{
+                                width: 180px !important;
+                                height: 40px !important;
+                            }
                         }
                     }
                 }

+ 131 - 263
src/components/gatewayPage.vue

@@ -1,55 +1,34 @@
 <template>
     <div class="gatewayPage">
-        <div class="gateway_top">
-            <div class="gateway_top_com">
-                <p>单位评级:</p>
-                <div id="companyLevel" style="width: 100%;height: 250px;"></div>
-            </div>
-            <div class="gateway_top_com">
-                <p>部门评级:</p>
-                <div id="departmentLevel" style="width: 100%;height: 250px;"></div>
-            </div>
-            <div class="gateway_top_table">
-                <p>公告栏:</p>
-                <el-table :data="tableData" style="width: 100%">
-                    <el-table-column type="index" label="序号" width="50" />
-                    <el-table-column prop="name" label="公告标题" width="300" />
-                    <el-table-column prop="address" label="发布部门" />
-                    <el-table-column prop="address" label="发布日期" />
-                </el-table>
-            </div>
-        </div>
-        <div class="gateway_cen">
-            <div class="gateway_cen_left">
-                <p>目标完成率:</p>
-                <div style="display:flex;width:100%">
-                    <div id="target1" style="width: 25%;height: 250px;"></div>
-                    <div id="target2" style="width: 25%;height: 250px;"></div>
-                    <div id="target3" style="width: 25%;height: 250px;"></div>
-                    <div id="target4" style="width: 25%;height: 250px;"></div>
+        <el-row class="gateway_top">
+            <el-col :span="6" v-for="it in titleMsgArr" :key="it.isClass">
+                <div class="comClass" :class="it.isClass">
+                    <div class="huodian_tit">
+                        <img :src="it.img">
+                        <span>{{it.isName}}</span>
+                    </div>
+                    <div class="huodian_main">
+                        <div v-for="item in huodianArr" :key="item" style="margin-right: 15px">
+                            <p :style="{'color': it.color}">{{item.Num}}</p>
+                            <p>{{item.Name}}</p>
+                        </div>
+                    </div>
                 </div>
-            </div>
-            <div class="gateway_cen_right">
-                <p>考评公告栏:</p>
-                <el-table :data="tableData" style="width: 100%">
-                    <el-table-column type="index" label="序号" width="50" />
-                    <el-table-column prop="name" label="公告标题" width="300" />
-                    <el-table-column prop="address" label="发布部门" />
-                    <el-table-column prop="address" label="发布日期" />
-                </el-table>
-            </div>
-        </div>
-        <div class="gateway_bot">
-            <div class="gateway_bot_left">
-                <p>任务完成排行榜:</p>
-                <el-table :data="tableData" style="width: 100%">
-                    <el-table-column type="index" label="序号" width="50" />
-                    <el-table-column prop="name" label="公告标题" width="300" />
-                    <el-table-column prop="address" label="发布部门" />
-                    <el-table-column prop="address" label="发布日期" />
-                </el-table>
-            </div>
-            <div class="gateway_bot_right">
+            </el-col>
+        </el-row>
+        <el-row class="gateway_bot">
+            <el-col :span="6">
+                <div class="gateway_bot_left">
+                    <div class="bot_leftTit">
+                        <p>年度考评排行榜</p>
+
+                    </div>
+                    <div class="bot_leftMain">
+                        
+                    </div>
+                </div>
+            </el-col>
+            <el-col :span="12" class="gateway_bot_right">
                 <p>年度评级公示栏:</p>
                 <el-table :data="tableData" style="width: 100%">
                     <el-table-column type="index" label="序号" width="50" />
@@ -57,254 +36,143 @@
                     <el-table-column prop="address" label="发布部门" />
                     <el-table-column prop="address" label="发布日期" />
                 </el-table>
-            </div>
-        </div>
+            </el-col>
+            <el-col :span="6" class="gateway_bot_left">
+                <p>任务完成排行榜:</p>
+            </el-col>
+        </el-row>
     </div>
 </template>
 
 <script>
+import huodian from '../assets/getwayImg/huodianIcon.png'
+import shuidian from '../assets/getwayImg/shuidianIcon.png'
+import xinnengyuan from '../assets/getwayImg/xinnengyuanIcon.png'
+import meidian from '../assets/getwayImg/meidianIcon.png'
 export default {
     data() {
         return {
-            
+            huodianArr: [],
+            titleMsgArr: []
         }
     },
     created() {
+        this.titleMsgArr = [
+            {
+                isClass: 'huodian',
+                isName: '火电',
+                img: huodian,
+                color: '#F65177'
+            },
+            {
+                isClass: 'shuidian',
+                isName: '水电',
+                img: shuidian,
+                color: '#3B7AD1'
+            },
+            {
+                isClass: 'xinnengyuan',
+                isName: '新能源',
+                img: xinnengyuan,
+                color: '#50C14E'
+            },
+            {
+                isClass: 'meidian',
+                isName: '煤电一体化',
+                img: meidian,
+                color: '#F5A623'
+            },
+        ]
+        this.huodianArr = [
+            {
+                Num: 32,
+                Name: 'A级单位'
+            },
+            {
+                Num: 20,
+                Name: 'B级单位'
+            },
+            {
+                Num: 5,
+                Name: 'C级单位'
+            },
+            {
+                Num: 16,
+                Name: 'D级单位'
+            }
+        ]
     },
     mounted() {
-        this.getCompanyData()
-        this.getdepartmentData()
-        this.getTargetData()
-        this.getTargetData2()
-        this.getTargetData3()
-        this.getTargetData4()
     },
     methods: {
-        //单位评级数据
-        getCompanyData() {
-            let data = [
-                { value: 16, name: 'A级' },
-                { value: 20, name: 'B级' },
-                { value: 10, name: 'C级' },
-                { value: 3, name: 'D级' }
-            ]
-            this.levelPieData('companyLevel', data)
-        },
-        //部门评级数据
-        getdepartmentData() {
-            let data = [
-                { value: 16, name: 'A级' },
-                { value: 20, name: 'B级' },
-                { value: 10, name: 'C级' },
-                { value: 3, name: 'D级' }
-            ]
-            this.levelPieData('departmentLevel', data)
-        },
-        levelPieData(name, data) {
-            let option = {
-                tooltip: {
-                    trigger: 'item'
-                },
-                legend: {
-                    orient: 'vertical',
-                    right: '10%',
-                    bottom: '20%'
-                },
-                series: [
-                    {
-                        name: '部门评级',
-                        type: 'pie',
-                        radius: ['35%', '65%'],
-                        right: '25%',
-                        data: data,
-                        itemStyle: {
-                            borderRadius: 5,
-                            borderColor: '#fff',
-                            borderWidth: 2
-                        }
-                    }
-                ]
-            }
-            let dom = document.getElementById(name);
-            dom.removeAttribute("_echarts_instance_")
-            let myChart = this.$echarts.init(dom);
-            myChart.setOption(option);
-            window.addEventListener("resize", function () {
-                myChart.resize()
-            })
-        },
-        // 目标完成率
-        getTargetData() {
-            let data = [
-                { value: 26, name: '火电' },
-                { value: 17, name: '水电' },
-                { value: 22, name: '新能源' },
-                { value: 35, name: '矿山' }
-            ]
-            this.departmentPieData('target1', data, '生产运营')
-        },
-        getTargetData2() {
-            let data = [
-                { value: 26, name: '火电' },
-                { value: 17, name: '水电' },
-                { value: 22, name: '新能源' },
-                { value: 35, name: '矿山' }
-            ]
-            this.departmentPieData('target2', data, '前期')
-        },
-        getTargetData3() {
-            let data = [
-                { value: 26, name: '火电' },
-                { value: 17, name: '水电' },
-                { value: 22, name: '新能源' },
-                { value: 35, name: '矿山' }
-            ]
-            this.departmentPieData('target3', data, '基建')
-        },
-        getTargetData4() {
-            let data = [
-                { value: 26, name: '火电' },
-                { value: 17, name: '水电' },
-                { value: 22, name: '新能源' },
-                { value: 35, name: '矿山' }
-            ]
-            this.departmentPieData('target4', data, '其他')
-        },
-        departmentPieData(name, data, title) {
-            let option = {
-                title: {
-                    text: title,
-                    bottom: '2%',
-                    left: 'center',
-                    textStyle: {
-                        fontSize: 14
-                    }
-                },
-                tooltip: {
-                    trigger: 'item'
-                },
-                legend: {},
-                series: [
-                    {
-                        name: '部门评级',
-                        type: 'pie',
-                        radius: ['25%', '55%'],
-                        label: {
-                            show:false
-                        },
-                        // right: '25%',
-                        data: data,
-                        itemStyle: {
-                            borderRadius: 5,
-                            borderColor: '#fff',
-                            borderWidth: 2
-                        }
-                    }
-                ]
-            }
-            let dom = document.getElementById(name);
-            dom.removeAttribute("_echarts_instance_")
-            let myChart = this.$echarts.init(dom);
-            myChart.setOption(option);
-            window.addEventListener("resize", function () {
-                myChart.resize()
-            })
-        },
-        //公告栏
     }
 }
 </script>
 
 <style lang="less">
 .gatewayPage{
-    height: 90vh;
+    height: 93vh;
+    width: 87vw;
+    background: #EDEFF5;
     .gateway_top{
-        display: flex;
-        margin-bottom: 10px;
-        .gateway_top_com{
-            width: 29vw;
-            margin-right: 10px;
-            background: #fff;
-            border-radius: 20px;
-            padding: 10px 0 0 10px;
-            p{
-                font-weight: bold;
-                font-size: 14px;
-                margin-bottom: 10px;
+        padding: 24px 0 16px 26px;
+        .comClass{
+            width: 380px;
+            height: 120px;
+            .huodian_tit{
+                img {
+                    margin: 13px 7px 5px 22px;
+                }
+                span{
+                    position: relative;
+                    top: -8px;
+                    font-size: 16px;
+                    font-family: Microsoft YaHei;
+                    font-weight: bold;
+                    color: #333333;
+                }
             }
-        }
-        .gateway_top_table{
-            width: calc(40vw - 10px);
-            background: #fff;
-            border-radius: 20px;
-            padding: 15px 5px 5px 5px;
-            p{
-                font-weight: bold;
-                font-size: 14px;
-                margin-bottom: 10px;
+            .huodian_main{
+                display: flex;
+                padding-left: 20px;
+                p:nth-child(1){
+                    font-size: 30px;
+                    font-family: PangMenZhengDao-3;
+                    font-weight: 600;
+                }
+                p:nth-child(2){
+                    font-size: 14px;
+                    font-family: Microsoft YaHei;
+                    font-weight: 400;
+                    color: #999999;
+                }
             }
         }
-    }
-    .gateway_cen{
-        display: flex;
-        margin-bottom: 10px;
-        .gateway_cen_left{
-            width: 60vw;
-            margin-right: 10px;
-            background: #fff;
-            border-radius: 20px;
-            padding: 10px 0 0 10px;
-            p{
-                font-weight: bold;
-                font-size: 14px;
-                margin-bottom: 10px;
-            }
+        .huodian{
+            background-image: url('../assets/getwayImg/huodian.png');
         }
-        .gateway_cen_right{
-            width: 40vw;
-            background: #fff;
-            border-radius: 20px;
-            padding: 10px 0 0 10px;
-            p{
-                font-weight: bold;
-                font-size: 14px;
-                margin-bottom: 10px;
-            }
+        .shuidian{
+            background-image: url('../assets/getwayImg/shuidian.png');
+        }
+        .xinnengyuan{
+            background-image: url('../assets/getwayImg/xinnengyuan.png');
+        }
+        .meidian{
+            background-image: url('../assets/getwayImg/meidian.png');
         }
     }
     .gateway_bot{
-        display: flex;
+        padding: 24px 0 16px 26px;
         .gateway_bot_left{
-            width: 60vw;
-            background: #fff;
-            margin-right: 10px;
-            border-radius: 20px;
-            padding: 10px 0 0 10px;
-            p{
-                font-weight: bold;
-                font-size: 14px;
-                margin-bottom: 10px;
-            }
-        }
-        .gateway_bot_right{
-            width: 40vw;
             background: #fff;
-            border-radius: 20px;
-            padding: 10px 0 0 10px;
+            width: 92%;
             p{
+                font-size: 18px;
+                font-family: Microsoft YaHei;
                 font-weight: bold;
-                font-size: 14px;
-                margin-bottom: 10px;
+                color: #3B7AD1;
             }
         }
     }
-    .el-table th{
-        background: #fff !important;
-    }
-    .el-table{
-        .el-table__body-wrapper{
-            height: 18vh !important;
-        }
-    }
 }
 </style>

+ 11 - 0
src/router/index.js

@@ -1,6 +1,17 @@
 import { createRouter, createWebHashHistory } from 'vue-router'
 const routes = [
     {
+        path: '/login',
+        name: 'LoginPage',
+        meta: {
+            title: '登录页',
+        },
+        component: () =>
+            import(
+                '../views/Login.vue'
+            ),
+    },
+    {
         path: '/',
         name: 'homePage',
         meta: {

+ 3 - 3
src/utils/baseUrl.js

@@ -10,13 +10,13 @@ switch (process.env.NODE_ENV) {
     case 'development': 
         baseUrl.ROOT = "/api"  //开发环境url
         // baseUrl.URL = "http://192.168.2.6:8086"
-        baseUrl.URL = "http://123.60.219.66:18800"
+        baseUrl.URL = "http://123.60.219.66:28800"
         // baseUrl.URL = "http://10.65.78.23:18800"
         break
  
     case 'production': 
-        baseUrl.ROOT = "http://123.60.219.66:18800/"
-        // baseUrl.ROOT = "http://10.65.78.23:18800/"
+        baseUrl.ROOT = "http://123.60.219.66:28800/"
+        // baseUrl.ROOT = "http://10.65.78.23:28800/"
         break 
 }
 

+ 236 - 0
src/views/Login.vue

@@ -0,0 +1,236 @@
+<template>
+  <div class="loginPic">
+        <!-- <div class="login_left">
+            <p>Welcome!</p>
+            <p class="title">光耀集中式风电功率预测系统</p>
+        </div> -->
+        <div class="login_right">
+            <img class="titleIcon" src="../assets/loginImage/logo.png" alt="">
+            <div class="loginCom" style="margin-bottom: 30px">
+                <img class="userIcon" src="../assets/loginImage/userIcon.png" alt="">
+                <el-input v-model="inputUser" placeholder="请输入用户名" />
+            </div>
+            <div class="loginCom" style="margin-bottom: 16px">
+                <img class="passwordIcon" src="../assets/loginImage/passwordIcon.png" alt="">
+                <el-input type="password" v-model="inputMima" placeholder="请输入密码" />
+            </div>
+            <div class="remeber">
+                    <el-checkbox v-model="ememberMe" disabled>记住密码</el-checkbox>
+            </div>
+            <div class="loginBtn" @click="getLogin">
+                <span class="loginSpan">登录</span>
+            </div>
+        </div>
+        <!--  底部  -->
+            <!-- <div class="loginFooter">
+                <span>Copyright © 2021-2022 GuangYaoDianLi All Rights Reserved.</span>
+            </div> -->
+  </div>
+</template>
+
+<script>
+import { setToken } from '@/api/auth'
+import { ElMessage } from "element-plus";
+import { toLoginApi } from '../api/api'
+import md5 from 'js-md5'
+export default {
+    data() {
+        return {
+            inputUser:'',
+            inputMima:'',
+            codeUrl:'',
+            ememberMe:false,
+            loading:false,
+            loginText: ''
+        }
+    },
+    created() {
+    },
+    methods:{
+        getLogin() {
+            this.$axios({
+                method: 'post',
+                baseURL: '/apisc/',
+                // url: '/api/ims-idas/oauth/tokenWrapper?tenantId=000000&username='+this.inputUser+'&password='+md5(this.inputMima)+'&grant_type=password&scope=all&type=',
+                // headers: {
+                //     'Authorization': 'Basic c2FiZXI6NWMwMmMzZDViNzYxNTNkZGM5ZTczYzc5YzMzNzYzODAxNmE5ZDM2Ng==',
+                //     'Tenant-Id': '000000'
+                // }
+                url: 'predict/api/ppc/panoramicPower'
+            }).then(datas =>{
+
+            })
+        },
+        handleLogin() {
+            if (this.loginText === this.$utils.strChangeCase(this.inputYanzhengma, 5)) {
+                if (this.inputUser && this.inputMima) {
+                    this.loading = true
+                    this.toLogin(this.inputUser, this.inputMima)
+                } else {
+                    ElMessage.error('请输入账号或密码');
+                }
+            } else {
+                this.inputYanzhengma = ''
+                this.loading = false
+                ElMessage.error('验证码验证失败,请重新输入');
+                this.getCode()
+            }
+        },
+        //登录接口
+        toLogin(name, pass) {
+            let params={
+                username: name,
+                password:pass
+            }
+            toLoginApi(params).then(datas=>{
+                if (datas && datas.code === 0) {
+                    this.loading = false
+                    setToken(datas.token)
+                    let userObj = {
+                        role: '',
+                        userId: datas.id
+                    }
+                    if (datas.role === '0' || datas.role === '1') {
+                        userObj.role = 'administrators'
+                        window.sessionStorage.setItem('userMessage', JSON.stringify(userObj))
+                    } else {
+                        userObj.role = 'ordinaryUser'
+                        window.sessionStorage.setItem('userMessage', JSON.stringify(userObj))
+                    }
+                    this.$router.push({ path: "/index"})
+                } else {
+                    ElMessage.error(datas.msg);
+                }
+            }).catch(e =>{
+                this.loading = false
+                window.location.reload();
+            })
+        }
+    }
+}
+</script>
+
+
+<style lang="scss">
+@media screen and (max-width: 1200px) {
+    .loginPic{
+        .login_left {
+            display: none;
+        }
+    }
+}
+.loginPic{
+    position: relative;
+    width: 100%;
+    height:1080px;
+    background-image: url('../assets/loginImage/loginBak.png');
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    display: flex;
+    .login_left{
+        position: fixed;
+        left: 15%;
+        top: 35%;
+        p{
+            margin-bottom: 0px;
+            font-size: 32px;
+            color: #fff;
+            margin-top: 10px;
+        }
+        .title{
+            letter-spacing: 5px;
+        }
+    }
+    .login_right{
+        width: 470px;
+        height:680px;
+        background: rgba(0,0,0,0.4);
+        position: fixed;
+        right: 15%;
+        top: 15%;
+        .titleIcon{
+            margin: 100px 0px 43px 95px;
+        }
+        .loginCom{
+            margin: 0 30px 0px 43px;
+            width: 384px;
+            height: 56px;
+            background: #1B1A1F;
+            border-radius: 5px;
+            display: flex;     
+            .userIcon {
+                width: 24px;
+                height: 24px;
+                margin: 16px;
+            }   
+            .passwordIcon {
+                width: 24px;
+                height: 24px;
+                margin: 16px;
+            }
+            .el-input{
+                border: 0 solid transparent;
+                .el-input__wrapper{
+                    background: transparent;
+                    box-shadow: none;
+                    .el-input__inner, .el-input__inner:focus{
+                        background: none;
+                        border: none !important;
+                        color: #fff;
+                        height: 30px;
+                        width: 100%;
+                        font-size: 14px;
+                    }
+                }
+            }
+        }
+        .remeber{
+            margin: 0 0 0 50px;
+            .el-checkbox{
+                .el-checkbox__label{
+                    color: #fff;
+                    font-size: 12px;
+                    padding-left:6px;
+                }
+            }
+        }
+        .loginBtn{
+            margin: 48px 0 0 43px;
+            width: 384px;
+            height: 56px;
+            background-image: url('../assets/loginImage/loginBtn.png');
+            cursor: pointer;
+            .loginSpan{
+                position: relative;
+                top: 27%;
+                left: 45%;
+                font-size: 18px;
+                font-family: Microsoft YaHei;
+                font-weight: 400;
+                color: #FFFFFF;
+            }
+        }
+        input::-webkit-input-placeholder{ /*WebKit browsers*/
+            color: #fff;
+        }
+        input::-moz-input-placeholder{ /*Mozilla Firefox*/
+            color: #fff;
+        }
+        input::-ms-input-placeholder{ /*Internet Explorer*/
+            color: #fff;
+        }
+    }
+    .loginFooter{
+        height: 40px;
+        line-height: 40px;
+        position: fixed;
+        bottom: 0;
+        width: 100%;
+        text-align: center;
+        color: #fff;
+        font-family: Arial;
+        font-size: 12px;
+        letter-spacing: 1px;
+    }
+}
+</style>

+ 4 - 4
src/views/homePage.vue

@@ -31,7 +31,7 @@
                         <span>{{ tag.name }}</span>
                     </el-tag>
                 </div>
-                <div class="mainMessage" :style="viewHeight">
+                <div class="mainMessage" :style="$route.path === '/home' ? '': 'padding: 0 10px;'">
                     <router-view></router-view>
                 </div>
             </div>
@@ -414,9 +414,9 @@ export default {
                 }
             }
             .mainMessage{
-                // width: 85vw;
-                // height: 91vh;
-                padding: 0 10px;
+                width: 100%;
+                height: 91vh;
+                // padding: 0 10px;
                 // background: #fff;
                 border-radius: 20px;
             }

+ 12 - 10
vue.config.js

@@ -32,17 +32,19 @@ module.exports = defineConfig({
                     // '^/api': ''
                     [`^${baseUrl.ROOT}`]: ''
                 }
-            }
-            // '/api': {
-            //     target: 'http://120.46.129.85:8086',
-            //     // target: 'http://192.168.2.4:8086',
-            //     changeOrigin: true,
-            //     ws: false,
-            //     pathRewrite: {
-            //         '^/api': ''
-            //     }
-            // }
+            },
         } : baseUrl.ROOT
+        // proxy: {
+        //     '/api': {
+        //         target: 'http://123.60.219.66:28800',
+        //         // target: 'http://10.65.78.23:28800',
+        //         pathRewrite: { '^/api': '' },
+        //     },
+        //     '/login-api': {
+        //         target: 'http://10.65.78.23:81',
+        //         pathRewrite: { '^/login-api': '' },
+        //     },
+        // }
     }
 })