Jelajahi Sumber

修改应用商店按钮样式问题;重构指标得分规则页面;

SunZehao 1 tahun lalu
induk
melakukan
4fc0677a78
43 mengubah file dengan 834 tambahan dan 52 penghapusan
  1. 1 1
      src/assets/css/main.css
  2. 1 1
      src/components/assessment/assessmentApplicationFrom.vue
  3. 1 1
      src/components/assessment/assessmentApplicationPage.vue
  4. 1 1
      src/components/assessment/evaluationAmendmentPage.vue
  5. 1 1
      src/components/assessment/evaluationApplicationTab.vue
  6. 1 1
      src/components/assessment/evaluationBenchmarkingIndicPage.vue
  7. 5 3
      src/components/assessment/evaluationDeptBusinessFrom.vue
  8. 1 1
      src/components/assessment/evaluationDeptRatingPage.vue
  9. 1 1
      src/components/assessment/evaluationDeptStartFrom.vue
  10. 1 1
      src/components/assessment/evaluationDeptStartPage.vue
  11. 6 2
      src/components/assessment/evaluationMonthPage.vue
  12. 6 2
      src/components/assessment/evaluationQuarterPage.vue
  13. 1 1
      src/components/assessment/evaluationReportPage.vue
  14. 1 1
      src/components/assessment/evaluationStartPage.vue
  15. 1 1
      src/components/assessment/evaluationUnitRatingPage.vue
  16. 1 1
      src/components/assessment/evaluationWarningPage.vue
  17. 6 2
      src/components/assessment/evaluationYearPage.vue
  18. 1 1
      src/components/baseInfomation/baseBinSectionPage.vue
  19. 1 1
      src/components/baseInfomation/baseBinStagePage.vue
  20. 1 1
      src/components/baseInfomation/baseDataDictionaryPage.vue
  21. 1 1
      src/components/baseInfomation/baseIndicatorTypePage.vue
  22. 1 1
      src/components/baseInfomation/dataDictionaryDetailPage.vue
  23. 1 1
      src/components/baseInfomation/moreBrandPage.vue
  24. 1 1
      src/components/evaluationSystem/IndicatorItemPage.vue
  25. 1 1
      src/components/evaluationSystem/achievementKPage.vue
  26. 1 1
      src/components/evaluationSystem/evaluationCompanyPage.vue
  27. 1 1
      src/components/evaluationSystem/evaluationDepartmentPage.vue
  28. 1 1
      src/components/evaluationSystem/evaluationIndexPage.vue
  29. 1 1
      src/components/evaluationSystem/evaluationMultiSequencePage.vue
  30. 1 1
      src/components/evaluationSystem/evaluationPersonnelPage.vue
  31. 1 1
      src/components/evaluationSystem/evaluationRulesPage.vue
  32. 1 1
      src/components/evaluationSystem/partyBuildingKPage.vue
  33. 1 1
      src/components/evaluationSystem/ruleDetailPage.vue
  34. 1 1
      src/components/evaluationknowledgePage/earlyWarningRulePage.vue
  35. 1 1
      src/components/evaluationknowledgePage/evalRatingRulesPage.vue
  36. 349 0
      src/components/evaluationknowledgePage/scoringRulesNewDetailPage.vue
  37. 417 0
      src/components/evaluationknowledgePage/scoringRulesNewPage.vue
  38. 1 1
      src/components/evaluationknowledgePage/scoringRulesPage.vue
  39. 1 1
      src/components/notification/notificationMangePage.vue
  40. 1 1
      src/components/taskCenter/taskApplicationFrom.vue
  41. 7 5
      src/components/taskCenter/taskCenterDeptBusinessFrom.vue
  42. 3 3
      src/components/taskCenter/taskCenterDeptStartFrom.vue
  43. 1 1
      src/router/index.js

+ 1 - 1
src/assets/css/main.css

@@ -217,7 +217,7 @@ a {
     font-family: Microsoft YaHei;
     font-weight: 600;
     color: #333333;
-    line-height: 12px;
+    /* line-height: 16px; */
 }
 .el-table .el-table__inner-wrapper .el-table__body-wrapper .el-table__body tr td .cell{
     font-size: 14px;

+ 1 - 1
src/components/assessment/assessmentApplicationFrom.vue

@@ -492,7 +492,7 @@ export default {
                     .btnASeach{
                         display: flex;
                         z-index: 11111;
-                        justify-content: end;
+                        justify-content: flex-end;
                         position: relative;
                         top: 32px;
                         // left: 48vw;

+ 1 - 1
src/components/assessment/assessmentApplicationPage.vue

@@ -624,7 +624,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationAmendmentPage.vue

@@ -593,7 +593,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationApplicationTab.vue

@@ -157,7 +157,7 @@ export default {
 
                             .PeriodBtn {
                                 display: flex;
-                                justify-content: end;
+                                justify-content: flex-end;
                                 padding: 20px 0;
                             }
 

+ 1 - 1
src/components/assessment/evaluationBenchmarkingIndicPage.vue

@@ -410,7 +410,7 @@ export default {
 
             .PeriodBtn {
                 display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
             }
 

+ 5 - 3
src/components/assessment/evaluationDeptBusinessFrom.vue

@@ -408,7 +408,7 @@ export default {
                     .btnASeach{
                         display: flex;
                         z-index: 11111;
-                        justify-content: end;
+                        justify-content: flex-end;
                         position: relative;
                         top: 32px;
                         // left: 50vw;
@@ -421,14 +421,16 @@ export default {
                                 display: flex;
                                 height: 20px;
                                 margin: 0 10px;
-                                width: 20%;
+                                // width: 20%;
+                                width: fit-content;
                                 img{
                                     margin-right: 5px;
                                     margin-top: 1px;
                                 }
                                 span{
                                     display: inline-block;
-                                    width: 100%;
+                                    // width: 100%;
+                                    width: 35px;
                                     font-size: 14px;
                                     font-family: Microsoft YaHei;
                                     font-weight: 400;

+ 1 - 1
src/components/assessment/evaluationDeptRatingPage.vue

@@ -711,7 +711,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationDeptStartFrom.vue

@@ -512,7 +512,7 @@ export default {
                     .btnASeach{
                         display: flex;
                         z-index: 11111;
-                        justify-content: end;
+                        justify-content: flex-end;
                         position: relative;
                         top: 32px;
                         // left: 50vw;

+ 1 - 1
src/components/assessment/evaluationDeptStartPage.vue

@@ -600,7 +600,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 6 - 2
src/components/assessment/evaluationMonthPage.vue

@@ -78,7 +78,8 @@
                                     <p class="indicitem" v-if="scope.row.stage === '流程未启动'" @click="agetdeptresponsibility(scope.row)">启动</p>
                                 </div>
                                 <p class="indicitem" @click="calculateScore(scope.row)">计算得分</p>
-                                <p class="indicitem" @click="generateReport(scope.row)">生成报表</p>
+                                <p class="indicitem" style="cursor: no-drop;color: #d9d9d9" v-if="isReportshow">生成报表</p>
+                                <p class="indicitem" v-else @click="generateReport(scope.row)">生成报表</p>
                                 <p class="indicitem" @click="handleReport(scope.row)">指标考核打分</p>
                             </div>
                         </template>
@@ -236,6 +237,7 @@ export default {
             ruleDataAll: [],
             rescode: '',
             resDes: '',
+            isReportshow: false,
             winPix: window.devicePixelRatio,
         }
     },
@@ -435,11 +437,13 @@ export default {
         //生成报表
         generateReport(row) {
             let that = this
+            that.isReportshow = true
             let params = {
                 organizationEvaluationId: row.id
             }
             apiGetgenerateEvaluateReport(params).then(datas =>{
                 if (datas) {
+                    that.isReportshow = false
                     if (datas.success) {
                         that.$message({
                             message: datas.message,
@@ -577,7 +581,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
         }
         .el-button{

+ 6 - 2
src/components/assessment/evaluationQuarterPage.vue

@@ -79,7 +79,8 @@
                                     <!-- <p class="indicitem" v-else @click="getDetail(scope.row)">详情</p> -->
                                 </div>
                                 <p class="indicitem" @click="calculateScore(scope.row)">计算得分</p>
-                                <p class="indicitem" @click="generateReport(scope.row)">生成报表</p>
+                                <p class="indicitem" style="cursor: no-drop;color: #d9d9d9" v-if="isReportshow">生成报表</p>
+                                <p class="indicitem" v-else @click="generateReport(scope.row)">生成报表</p>
                                 <p class="indicitem" @click="handleReport(scope.row)">指标考核打分</p>
                             </div>
                         </template>
@@ -237,6 +238,7 @@ export default {
             ruleDataAll: [],
             rescode: '',
             resDes: '',
+            isReportshow: false,
             winPix: window.devicePixelRatio,
         }
     },
@@ -437,11 +439,13 @@ export default {
         //生成报表
         generateReport(row) {
             let that = this
+            that.isReportshow = true
             let params = {
                 organizationEvaluationId: row.id
             }
             apiGetgenerateEvaluateReport(params).then(datas =>{
                 if (datas) {
+                    that.isReportshow = false
                     if (datas.success) {
                         that.$message({
                             message: datas.message,
@@ -589,7 +593,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationReportPage.vue

@@ -239,7 +239,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationStartPage.vue

@@ -584,7 +584,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationUnitRatingPage.vue

@@ -498,7 +498,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/assessment/evaluationWarningPage.vue

@@ -263,7 +263,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 6 - 2
src/components/assessment/evaluationYearPage.vue

@@ -77,7 +77,8 @@
                                     <!-- <p class="indicitem" v-else @click="getDetail(scope.row)">详情</p> -->
                                 </div>
                                 <p class="indicitem" @click="calculateScore(scope.row)">计算得分</p>
-                                <p class="indicitem" @click="generateReport(scope.row)">生成报表</p>
+                                <p class="indicitem" style="cursor: no-drop;color: #d9d9d9" v-if="isReportshow">生成报表</p>
+                                <p class="indicitem" v-else @click="generateReport(scope.row)">生成报表</p>
                                 <p class="indicitem" @click="handleReport(scope.row)">指标考核打分</p>
                             </div>
                             
@@ -234,6 +235,7 @@ export default {
             ruleDataAll: [],
             rescode: '',
             resDes: '',
+            isReportshow: false,
             winPix: window.devicePixelRatio,
         }
     },
@@ -423,11 +425,13 @@ export default {
         //生成报表
         generateReport(row) {
             let that = this
+            that.isReportshow = true
             let params = {
                 organizationEvaluationId: row.id
             }
             apiGetgenerateEvaluateReport(params).then(datas =>{
                 if (datas && datas.data) {
+                    that.isReportshow = false
                     if (datas.success) {
                         that.$message({
                             message: datas.message,
@@ -563,7 +567,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/baseInfomation/baseBinSectionPage.vue

@@ -271,7 +271,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/baseInfomation/baseBinStagePage.vue

@@ -271,7 +271,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/baseInfomation/baseDataDictionaryPage.vue

@@ -278,7 +278,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/baseInfomation/baseIndicatorTypePage.vue

@@ -271,7 +271,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/baseInfomation/dataDictionaryDetailPage.vue

@@ -321,7 +321,7 @@ export default {
                         }
                         .PeriodBtn{
                             display: flex;
-                            justify-content: end;
+                            justify-content: flex-end;
                             padding: 10px 0;
                             .el-button{
                                 height: 30px;

+ 1 - 1
src/components/baseInfomation/moreBrandPage.vue

@@ -453,7 +453,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

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

@@ -312,7 +312,7 @@ export default {
                         }
                         .PeriodBtn{
                             display: flex;
-                            justify-content: end;
+                            justify-content: flex-end;
                             padding: 20px 0;
                             .el-button{
                                 height: 30px;

+ 1 - 1
src/components/evaluationSystem/achievementKPage.vue

@@ -599,7 +599,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/evaluationCompanyPage.vue

@@ -652,7 +652,7 @@
 
             .PeriodBtn {
                 display: flex;
-                justify-content: end;
+                justify-content: flex-end;
                 padding: 20px 0;
             }
 

+ 1 - 1
src/components/evaluationSystem/evaluationDepartmentPage.vue

@@ -493,7 +493,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/evaluationIndexPage.vue

@@ -838,7 +838,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/evaluationMultiSequencePage.vue

@@ -363,7 +363,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/evaluationPersonnelPage.vue

@@ -559,7 +559,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/evaluationRulesPage.vue

@@ -453,7 +453,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/partyBuildingKPage.vue

@@ -411,7 +411,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationSystem/ruleDetailPage.vue

@@ -381,7 +381,7 @@ export default {
                         }
                         .PeriodBtn{
                             display: flex;
-                            justify-content: end;
+                            justify-content: flex-end;
                             padding: 20px 0;
                             .el-button{
                                 height: 30px;

+ 1 - 1
src/components/evaluationknowledgePage/earlyWarningRulePage.vue

@@ -655,7 +655,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/evaluationknowledgePage/evalRatingRulesPage.vue

@@ -623,7 +623,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 349 - 0
src/components/evaluationknowledgePage/scoringRulesNewDetailPage.vue

@@ -0,0 +1,349 @@
+<template>
+    <div class="rulesNewDetail">
+        <el-dialog title="考评得分规则详情" v-model="editEvaluaVisible" width='50vw' :close-on-click-modal="false">
+            <div class="periodFrom">
+                <div class="detailTable">
+                    <el-table
+                        size="mini"
+                        :highlight-current-row="true"
+                        :stripe="false"
+                        :border="false"
+                        max-height="240"
+                        ref="multipleTable"
+                        :data="indicItemoptions"
+                        @select-all="onSelectAll"
+                        @selection-change="selectItem"
+                        @row-click="onSelectOp"
+                    >
+                        <el-table-column type="selection" width="55" align="center" />
+                        <el-table-column label="子指标名称" prop="childName" />
+                        <el-table-column label="子指标编号" prop="childCode" />
+                    </el-table>
+                </div>
+                <div class="fromCenter">
+                    <el-tabs type="border-card">
+                        <el-tab-pane label="指标项">
+                            <el-table
+                                size="mini"
+                                :highlight-current-row="true"
+                                :stripe="false"
+                                :border="false"
+                                ref="optionMul"
+                                height="240"
+                                @select-all="optionMulAll"
+                                @selection-change="optionMulItem"
+                                @row-dblclick="rowDbclick"
+                                :data="multipleSelectionObj?multipleSelectionObj.list:[]"
+                            >
+                                <el-table-column type="selection" width="55" align="center" />
+                                <el-table-column label="指标项名称" prop="optionName" />
+                                <el-table-column label="指标项编码" prop="optionCode" />
+                                <el-table-column label="计算公式" prop="formula" />
+                            </el-table>
+                        </el-tab-pane>
+                        <el-tab-pane label="函数">
+                            <el-table
+                                size="mini"
+                                fit
+                                :show-header="false"
+                                :highlight-current-row="true"
+                                :stripe="false"
+                                :border="false"
+                                height="240"
+                                @row-dblclick="tabFuncRowClickHandle"
+                                :data="funcMsg"
+                            >
+                                <el-table-column min-width="40%">
+                                    <template #default="scope">
+                                        <el-popover trigger="hover" placement="bottom">
+                                        <p>描述:{{ scope.row.formulaName }}</p>
+                                        <!-- <p>参数:{{ scope.row.param }}</p> -->
+                                        <template #reference>
+                                            <span size="medium" transition="fade-in-linear">{{
+                                            scope.row.formulaName
+                                            }}</span>
+                                        </template>
+                                        </el-popover>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column min-width="60%">
+                                    <template #default="scope">
+                                        <el-popover trigger="hover" placement="bottom">
+                                        <p>描述:{{ scope.row.description }}</p>
+                                        <!-- <p>参数:{{ scope.row.param }}</p> -->
+                                        <template #reference>
+                                            <span size="medium" transition="fade-in-linear">{{
+                                            scope.row.description
+                                            }}</span>
+                                        </template>
+                                        </el-popover>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                        </el-tab-pane>
+                        <el-tab-pane label="运算符">
+                            <el-button-group>
+                                <el-button
+                                v-for="item in operator"
+                                :key="item"
+                                plain
+                                @click="scorRuleSplit(item)"
+                                style="width: 60px; margin: 7px 12px; height: 40px; border: 1px solid #409EFF;"
+                                >
+                                {{ item }}
+                                </el-button>
+                            </el-button-group>
+                        </el-tab-pane>
+                    </el-tabs>
+                </div>
+                <div>
+                    <div style="display:flex">
+                        <el-checkbox style="margin-right: 10px" v-model="isrepresentation"/>
+                        <el-tag style="margin-bottom: 5px">公式</el-tag>
+                    </div>
+                    <el-input
+                    type="textarea"
+                    rows="10"
+                    v-model="representation"
+                    id="representation"
+                    />
+                </div>
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="editEvaluaVisible = false">取 消</el-button>
+                    <el-button type="primary" @click="saverulesDetailMsg()">确 定</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {apiGetIndidicselectById, apiGetintervalscoringsaveOrUpdate, apiGetfunctionList} from '../../api/api'
+export default {
+    data() {
+        return {
+            editEvaluaVisible: false,
+            indicItemoptions: [],
+            indicItem: '',
+            isrepresentation: true,
+            isrange: false,
+            funcMsg: [],
+            operator: [],
+            representation: '',
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            rowevalradio: {},
+            multipleSelection: [],
+            multipleSelectionObj: {},
+            rulesNewDetailData: [],
+            optionMulItemObj: {}
+        }
+    },
+    created() {
+        this.operator = ["+", "-", "*", "/", "(", ")", ">", ">=", "<", "<=", "==", "!=",
+            "&&", "||", "!", "%", "true", "false", ".", ]
+    },
+    methods: {
+        init(row) {
+            this.editEvaluaVisible = true
+            this.indicItemoptions = []
+            this.multipleSelection = []
+            this.multipleSelectionObj = {}
+            this.rowevalradio = row
+            this.getIndidicselectById(row)
+            this.getFunData()
+        },
+        getIndidicselectById(row) {
+            let that = this
+            let params = {
+                id: row.id
+            }
+            apiGetIndidicselectById(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.indicItemoptions = datas.data.dtoList
+                    that.multipleSelection = [datas.data.dtoList[0]]
+                    that.multipleSelectionObj = datas.data.dtoList[0]
+                    that.$nextTick(() =>{
+                        that.$refs.multipleTable.toggleRowSelection(that.multipleSelectionObj, true)
+                    })
+                }
+            })
+        },
+        // 函数查询
+        getFunData() {
+            let that = this
+            apiGetfunctionList().then(datas =>{
+                if (datas && datas.data) {
+                    that.funcMsg = datas.data
+                }
+            })
+        },
+        onSelectAll() {
+            this.$refs.multipleTable.clearSelection();
+        },
+        selectItem(rows) {
+            if (rows.length > 1) {
+                const newRows = rows.filter((it, index) => {
+                if (index == rows.length - 1) {
+                    this.$refs.multipleTable.toggleRowSelection(it, true);
+                    return true;
+                } else {
+                    this.$refs.multipleTable.toggleRowSelection(it, false);
+                    return false;
+                }
+                });
+                this.multipleSelection = newRows;
+                this.multipleSelectionObj = rows[0]
+            } else {
+                this.multipleSelection = rows;
+                this.multipleSelectionObj = {}
+                this.multipleSelectionObj = rows[0]
+            }
+        },
+        onSelectOp(row) {
+            this.$refs.multipleTable.clearSelection();
+            this.$refs.multipleTable.toggleRowSelection(row, true);
+            this.multipleSelection = [];
+            this.multipleSelectionObj = {}
+            this.multipleSelectionObj = row;
+            this.multipleSelection.push(row);
+        },
+        tabFuncRowClickHandle(row) {
+            let elInput = null
+            if (this.isrepresentation) {
+                elInput = document.getElementById("representation");
+            } else {
+                elInput = document.getElementById("range");
+            }
+            let startPos = elInput.selectionStart; //第0个字符到选中的字符
+            let endPos = elInput.selectionEnd; //选中字符到末尾字符
+            if (startPos === undefined || endPos === undefined) return;
+            let txt = elInput.value;
+            let func = row.formulaExpresion
+            // 将插值添加到选中光标位置
+            let result = txt.substring(0, startPos) + func + txt.substring(endPos);
+            elInput.value = result;
+            elInput.focus();
+        },
+        rowDbclick(row) {
+            this.scorRuleSplit(row.optionCode);
+        },
+        scorRuleSplit(val) {
+            let elInput = null
+            if (this.isrepresentation) {
+                elInput = document.getElementById("representation");
+            } else {
+                elInput = document.getElementById("range");
+            }
+            let startPos = elInput.selectionStart;
+            let endPos = elInput.selectionEnd;
+            if (startPos === undefined || endPos === undefined) return;
+            let txt = elInput.value;
+            let txtSplit = val;
+            let result = txt.substring(0, startPos) + txtSplit + txt.substring(endPos);
+            elInput.value = result;
+            elInput.focus();
+            elInput.selectionStart = startPos + txtSplit.length;
+            elInput.selectionEnd = startPos + txtSplit.length;
+        },
+        optionMulAll() {
+            this.$refs.optionMul.clearSelection();
+        },
+        optionMulItem(row) {
+            debugger
+            let representation = ''
+            if (row.length > 1) {
+                const newRows = row.filter((it, index) => {
+                    if (index == row.length - 1) {
+                        this.$refs.optionMul.toggleRowSelection(it, true);
+                        this.representation = it.formula
+                        return true;
+                    } else {
+                        this.$refs.optionMul.toggleRowSelection(it, false);
+                        return false;
+                    }
+                })
+                this.optionMulItemObj = row[0]
+            } else {
+                this.optionMulItemObj = row[0]
+                this.representation = this.optionMulItemObj.formula
+            }
+        },
+        saverulesDetailMsg() {
+            let that = this
+            let repre = document.getElementById("representation").value
+            // let range = document.getElementById("range").value   range === '' || 
+            if (repre === '' || that.itemForm.desc === '') return
+            that.saveAndEditIndicatorData()
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let params = {
+                ruleId: that.rowevalradio.id,
+                regularExpression: encodeURI(document.getElementById("representation").value),
+                // range: encodeURI(document.getElementById("range").value),
+                range: that.multipleSelection[0].childName,
+                ruleDescription: that.itemForm.desc,
+                childCode: that.multipleSelection[0].childCode
+            }
+            if (that.isSave) {
+                params.id = that.evalradio.id
+            }
+            apiGetintervalscoringsaveOrUpdate(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '指标项新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '指标项修改成功',
+                        type: 'success'
+                    });
+                }
+            })
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.rulesNewDetail{
+    .el-overlay{
+        .el-dialog{
+            margin-top: 5vh;
+            .el-dialog__body{
+                padding: 20px !important;
+            }
+            .periodFrom{
+                .detailTable{
+                    margin-bottom: 10px;
+                }
+                .fromCenter{
+                    margin-right: 20px;
+                    margin-bottom: 10px;
+                    .el-tabs{
+                        height: 100%;
+                    }
+                }
+            }
+        }
+        .el-dialog__footer{
+            .dialog-footer{
+                display: flex;
+                justify-content: center;
+                .el-button{
+                    width: 180px !important;
+                    height: 40px !important;
+                }
+            }
+        }
+    }
+}
+</style>

+ 417 - 0
src/components/evaluationknowledgePage/scoringRulesNewPage.vue

@@ -0,0 +1,417 @@
+<template>
+    <div class="scoringRules" v-loading="loadingImport">
+        <div class="scoringRulesBtn">
+            <div class="collectSeach" :style="$utils.collectSeachSty()">
+                <div class="exceed">
+                    <span class="exceedSpan">指标名称:</span>
+                    <el-input v-model="indicatorIdS" placeholder="请输入指标名称"></el-input>
+                </div>
+                <div class="exceed">
+                    <span class="exceedSpan" style="width: 80px">业务属性:</span>
+                    <el-select v-model="binSectionIds" placeholder="请选择业务属性">
+                        <el-option
+                        v-for="item in moduleData"
+                        :key="item.id"
+                        :label="item.sectionName"
+                        :value="item.id">
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="exceed">
+                    <span class="exceedSpan" style="width: 80px;margin-left:10px">考评周期:</span>
+                    <el-select v-model="evaluationCycleStr" placeholder="请选择考评周期">
+                        <el-option
+                        v-for="item in periodData"
+                        :key="item.keyValue"
+                        :label="item.keyName"
+                        :value="item.keyValue"
+                        :disabled="item.keyValue === 'YDKP'">
+                        </el-option>
+                    </el-select>
+                </div>
+                <seachs @handleSeach="getSeachData" @handleRest="resetSeach"></seachs>
+            </div>
+            <div class="scoringRulesTableData">
+                <el-table :data="scoringRulesData" style="width: 100%" @row-dblclick="editRuleDetail">
+                    <el-table-column label="序号" type="index" align="center" />
+                    <el-table-column label="指标编码" prop="indicatorCode" width="200" />
+                    <el-table-column label="业务属性" prop="binSectionName" />
+                    <el-table-column label="业务阶段" prop="binStageName" />
+                    <el-table-column label="指标类型" prop="indicatorTypeName" width="200" />
+                    <el-table-column label="指标名称" prop="indicatorName" width="300" />
+                    <el-table-column label="考评周期" prop="evaluationCycle" />
+                    <el-table-column label="指标单位" prop="unit" />
+                    <el-table-column label="是否专项" prop="isAdditional" />
+                    <el-table-column label="描述" width="250">
+                        <template #default="scope">
+                            <span>{{scope.row.des}}</span>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-pagination
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange"
+                    :current-page="page.currentPage"
+                    :page-size="page.pagesize"
+                    layout="total, prev, pager, next, jumper"
+                    :total="page.total">
+                </el-pagination>
+            </div>
+        </div>
+        <rule-new-detail ref="ruleNewDetail"></rule-new-detail>
+    </div>
+</template>
+
+<script>
+import seachs from '../seachGroup.vue'
+import ruleNewDetail from './scoringRulesNewDetailPage.vue'
+import {apiGetIndicatorList, apiGetbinsectionList,
+ apiGetIndicatorTypeList, apiGetdatadictionaryList, apiGetbinstageList} from '../../api/api'
+export default {
+  components: { seachs, ruleNewDetail },
+    data() {
+        return {
+            indicatorIdS: '',
+            binSectionIds: '',
+            evaluationCycleStr: '',
+            scoringRulesData:[],
+            moduleData: [],
+            stageData: [],
+            periodData: [],
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            winPix: window.devicePixelRatio,
+        }
+    },
+    created() {
+        this.getEvaluationData()
+        this.getDataDictionary()
+    },
+    methods:{
+        // 查询指标数据
+        getEvaluationData() {
+            let that = this
+            let params = {
+                pageNum: that.page.currentPage,
+                pageSize: that.page.pagesize,
+                indicatorName: that.indicatorIdS,
+                binSection: that.binSectionIds,
+                evaluationCycle: that.evaluationCycleStr
+            }
+            apiGetIndicatorList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.scoringRulesData = datas.data.records
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        // 查询指标类别
+        getindicatorTypeData() {
+            let that = this
+            apiGetIndicatorTypeList().then(datas =>{
+                if (datas && datas.data) {
+                    that.indicatorTypeData = datas.data
+                }
+            })
+        },
+        //考评周期
+        getPeriodData() {
+            let that = this
+            let params = {
+                superKey: 'KPZQ0001'
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.periodData = datas.data
+                }
+            })
+        },
+        // 查询部门
+        // 查询规则模块和阶段数据
+        getDataDictionary(val) {
+            let that = this
+            apiGetbinsectionList().then(datas =>{
+                if (datas && datas.data) {
+                    that.moduleData = datas.data
+                }
+            })
+            apiGetbinstageList().then(datas =>{
+                if (datas && datas.data) {
+                    that.stageData = datas.data
+                }
+            })
+        },
+        editRuleDetail(row) {
+            this.$refs.ruleNewDetail.init(row)
+        },
+        getSeachData() {
+            this.page.currentPage = 1
+            this.getEvaluationData()
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.indicatorIdS = ''
+            this.binSectionIds = ''
+            this.evaluationCycleStr = ''
+            this.getEvaluationData()
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+            this.getEvaluationData()
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+            this.getEvaluationData()
+        }
+    }
+}
+</script>
+
+<style lang="less">
+.scoringRules{
+    .scoringRulesBtn{
+        .collectSeach{
+            display: flex;
+            padding: 24px 20px;
+            border-bottom: 1px solid#D6DBEA;
+                .exceed{
+                    display: flex;
+                    .exceedSpan{
+                        width: 100px;
+                        height: 12px;
+                        font-size: 14px;
+                        font-family: Microsoft YaHei;
+                        font-weight: 400;
+                        color: #8991B0;
+                        line-height: 12px;
+                        margin-top: 14px;
+                    }
+                    .el-input{
+                        margin-right:10px;
+                        .el-input__inner{
+                            height:30px;
+                        }
+                        .el-input__suffix{
+                            .el-select__caret{
+                                line-height:30px;
+                            }
+                        }
+                    }
+                    .el-select{
+                        line-height: 40px !important;
+                        .el-input__inner, .is-disabled{
+                            height:40px !important;
+                        }
+                        .el-input__suffix{
+                            .el-select__caret{
+                                line-height:40px;
+                            }
+                        }
+                    }
+                }
+        }
+        span{
+            font-size:14px;
+        }
+        .PeriodBtn{
+            display: flex;
+            justify-content: flex-end;
+            padding: 20px 0;
+        }
+        .el-button{
+            height: 30px;
+            // width:100px;
+            padding: 0 30px ;
+            // padding-top: 8px;
+            span{
+                margin:0;
+            }
+        }
+        .indexdialog{
+            .el-overlay{
+                .el-dialog{
+                    .el-dialog__body{
+                        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;
+                                }
+                                .PeriodBtnDia{
+                                    display: flex;
+                                    justify-content: space-between;
+                                    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{
+                                    // max-height: 75vh !important;
+                                    height: 75vh !important;
+                                    overflow-y: auto;
+                                    .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;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+  .scoringRulesTableData{
+    margin-top: 30px;
+    .el-table{
+        .el-table__body-wrapper{
+            height: 63vh !important;
+        }
+        .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;
+    }
+    }
+    
+}
+</style>

+ 1 - 1
src/components/evaluationknowledgePage/scoringRulesPage.vue

@@ -390,7 +390,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
             padding: 20px 0;
         }
         .el-button{

+ 1 - 1
src/components/notification/notificationMangePage.vue

@@ -751,7 +751,7 @@ export default {
         }
         .PeriodBtn{
             display: flex;
-            justify-content: end;
+            justify-content: flex-end;
         }
         .el-button{
             height: 30px;

+ 1 - 1
src/components/taskCenter/taskApplicationFrom.vue

@@ -577,7 +577,7 @@ export default {
                     .btnASeach{
                         display: flex;
                         z-index: 11111;
-                        justify-content: end;
+                        justify-content: flex-end;
                         position: relative;
                         top: 32px;
                         // left: 50vw;

+ 7 - 5
src/components/taskCenter/taskCenterDeptBusinessFrom.vue

@@ -471,11 +471,11 @@ export default {
                     .btnDeptSeach{
                         display: flex;
                         z-index: 11111;
-                        justify-content: end;
+                        justify-content: flex-end;
                         position: relative;
                         top: 32px;
-                        left: 50vw;
-                        width: 50%;
+                        // left: 50vw;
+                        width: 100%;
                         .detaTableBtns{
                             display: flex;
                             width: 300px;
@@ -484,14 +484,16 @@ export default {
                                 display: flex;
                                 height: 20px;
                                 margin: 0 10px;
-                                width: 20%;
+                                // width: 20%;
+                                width: fit-content;
                                 img{
                                     margin-right: 5px;
                                     margin-top: 1px;
                                 }
                                 span{
                                     display: inline-block;
-                                    width: 100%;
+                                    // width: 100%;
+                                    width: 35px;
                                     font-size: 14px;
                                     font-family: Microsoft YaHei;
                                     font-weight: 400;

+ 3 - 3
src/components/taskCenter/taskCenterDeptStartFrom.vue

@@ -588,11 +588,11 @@ export default {
                     .btnStartSeach{
                         display: flex;
                         z-index: 11111;
-                        justify-content: end;
+                        justify-content: flex-end;
                         position: relative;
                         top: 32px;
-                        left: 50vw;
-                        width: 50%;
+                        // left: 50vw;
+                        width: 100%;
                         .detaTableBtns{
                             display: flex;
                             justify-content: end;

+ 1 - 1
src/router/index.js

@@ -384,7 +384,7 @@ const routes = [
                         },
                         component: () =>
                             import(
-                                '../components/evaluationknowledgePage/scoringRulesPage.vue'
+                                '../components/evaluationknowledgePage/scoringRulesNewPage.vue'
                             ),
                     },
                     {