evaluationBenchmarkingIndicPage.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. <template>
  2. <div class="benchmarkingIndicator">
  3. <div class="benchmarkingIndicatorBtn">
  4. <div class="collectSeach">
  5. <div class="exceed">
  6. <span class="exceedSpan" style="margin-left: 10px;width: 80px">业务阶段:</span>
  7. <el-select v-model="stageIds" placeholder="请选择业务阶段">
  8. <el-option
  9. v-for="item in stageData"
  10. :key="item.id"
  11. :label="item.stageName"
  12. :value="item.id">
  13. </el-option>
  14. </el-select>
  15. </div>
  16. <div class="exceed">
  17. <span class="exceedSpan" style="margin-left: 10px;width: 80px">指标类型:</span>
  18. <el-select v-model="indicatorIds" placeholder="请选择指标类型">
  19. <el-option
  20. v-for="item in indicatorData"
  21. :key="item.id"
  22. :label="item.sectionName"
  23. :value="item.id">
  24. </el-option>
  25. </el-select>
  26. </div>
  27. <div class="exceed">
  28. <span class="exceedSpan" style="margin-left: 10px;width: 80px">时间类型:</span>
  29. <el-select v-model="timeStr" placeholder="请选择时间类型">
  30. <el-option
  31. v-for="item in timerData"
  32. :key="item.value"
  33. :label="item.label"
  34. :value="item.value">
  35. </el-option>
  36. </el-select>
  37. </div>
  38. <div class="exceed">
  39. <span class="exceedSpan" style="margin-left: 10px;width: 80px">选择时间:</span>
  40. <el-date-picker
  41. v-model="timeIds"
  42. type="month"
  43. value-format="YYYY-MM"
  44. placeholder="选择时间"
  45. />
  46. </div>
  47. <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
  48. <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
  49. </div>
  50. <div class="PeriodBtn">
  51. <btns
  52. :showImport="false" :showExport="true"
  53. :showAdd="false"
  54. :showSave="false"
  55. :showDelete="false"
  56. :disSave="true"
  57. :disDelete="true" :disImport="true" :disExport="true"
  58. @handleAdd="handleAdd" @handleEdit="handleEdit" @handleDelete="handleDelete"
  59. @handleImport="handleImport" @handleExport="handleExport"></btns>
  60. </div>
  61. <div class="benchmarkingIndicatorTableData">
  62. <div class="tableMain">
  63. <el-table :data="benchmarkingIndicatorData" style="width: 100%">
  64. <el-table-column type="index" label="序号" align="center"></el-table-column>
  65. <el-table-column label="考评单位" prop="organizationShortName" width="200">
  66. <template #default="scope">
  67. <el-tooltip class="box-item" effect="customized" :content="scope.row.organizationShortName"
  68. placement="right">
  69. <span class="tooltipCC">{{scope.row.organizationShortName}}</span>
  70. </el-tooltip>
  71. </template>
  72. </el-table-column>
  73. <el-table-column label="排名" prop="organizationType" />
  74. <el-table-column label="综合得分" prop="evaluationCycle" />
  75. <el-table-column label="经营回报" align="center">
  76. <el-table-column label="净利润" prop="zzc" />
  77. <el-table-column label="EBITDA" prop="k1" />
  78. <el-table-column label="售电成本" prop="k1" />
  79. </el-table-column>
  80. <el-table-column label="生产运营及协同指标" align="center">
  81. <el-table-column label="财务'一集中三加强'" prop="zzc" />
  82. <el-table-column label="发电量" prop="k1" />
  83. <el-table-column label="市场占有率" prop="k1" />
  84. <el-table-column label="电力营销" prop="k1" />
  85. <el-table-column label="供电煤耗" prop="k1" />
  86. <el-table-column prop="k1">
  87. <template #header>
  88. <div>综合厂</div>
  89. <div>用电率</div>
  90. </template>
  91. </el-table-column>
  92. <el-table-column label="非计划停运和出力受阻" prop="k1" />
  93. <el-table-column prop="k1">
  94. <template #header>
  95. <div>内部煤炭</div>
  96. <div>接卸量</div>
  97. </template>
  98. </el-table-column>
  99. <el-table-column prop="k1">
  100. <template #header>
  101. <div>外部煤炭</div>
  102. <div>采购量</div>
  103. </template>
  104. </el-table-column>
  105. <el-table-column prop="k1">
  106. <template #header>
  107. <div>入厂入炉</div>
  108. <div>标单差</div>
  109. </template>
  110. </el-table-column>
  111. </el-table-column>
  112. </el-table>
  113. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
  114. :current-page="page.currentPage" :page-size="page.pagesize"
  115. layout="total, prev, pager, next, jumper" :total="page.total">
  116. </el-pagination>
  117. </div>
  118. <div class="tableSeach">
  119. <div class="seachType" v-for="item in titleMsgArr" :key="item.isName"
  120. :class="item.showClick? 'seachTypeCha':''" @click="changType(item)">
  121. <img :src="item.img" alt="" v-if="!item.showClick">
  122. <img :src="item.clickImg" alt="" v-else>
  123. <p :style="item.showClick? 'color: #3B7AD1' : ''">{{item.isName}}</p>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. </div>
  129. </template>
  130. <script>
  131. import btns from '../elbuttonS.vue'
  132. import huoDef from '../../assets/benchmarkImg/huoDef.png'
  133. import shuiDef from '../../assets/benchmarkImg/shuiDef.png'
  134. import xinDef from '../../assets/benchmarkImg/xinDef.png'
  135. import meiDef from '../../assets/benchmarkImg/meiDef.png'
  136. import guoDef from '../../assets/benchmarkImg/guoDef.png'
  137. import zongDef from '../../assets/benchmarkImg/zongDef.png'
  138. import huoCha from '../../assets/benchmarkImg/huoCha.png'
  139. import shuiCha from '../../assets/benchmarkImg/shuiCha.png'
  140. import xinCha from '../../assets/benchmarkImg/xinCha.png'
  141. import meiCha from '../../assets/benchmarkImg/meiCha.png'
  142. import guoCha from '../../assets/benchmarkImg/guoCha.png'
  143. import zongCha from '../../assets/benchmarkImg/zongCha.png'
  144. import {apiGetOrganizationList} from '../../api/api'
  145. export default {
  146. components: {btns},
  147. data() {
  148. return {
  149. benchmarkingIndicatorData: [],
  150. indicatorData: [],
  151. stageData: [],
  152. companyDatas: [],
  153. periodId: '',
  154. stageIds: '',
  155. indicatorIds: '',
  156. timeIds: '',
  157. page: {
  158. pagesize: 12,
  159. currentPage: 1,
  160. total: 0
  161. },
  162. titleMsgArr: [],
  163. timerData: []
  164. }
  165. },
  166. created() {
  167. this.timerData = [
  168. {
  169. label: '年度',
  170. value: '1'
  171. },
  172. {
  173. label: '季度',
  174. value: '2'
  175. },
  176. {
  177. label: '月度',
  178. value: '3'
  179. }
  180. ]
  181. this.titleMsgArr = [
  182. {
  183. isClass: 'huoDef',
  184. isClassC: 'huoCha',
  185. isName: '火电',
  186. img: huoDef,
  187. clickImg: huoCha,
  188. showClick: true
  189. },
  190. {
  191. isClass: 'shuiDef',
  192. isClassC: 'shuiCha',
  193. isName: '水电',
  194. img: shuiDef,
  195. clickImg: shuiCha,
  196. showClick: false
  197. },
  198. {
  199. isClass: 'xinDef',
  200. isClassC: 'xinCha',
  201. isName: '新能源',
  202. img: xinDef,
  203. clickImg: xinCha,
  204. showClick: false
  205. },
  206. {
  207. isClass: 'meiDef',
  208. isClassC: 'meiCha',
  209. isName: '煤电一体化',
  210. img: meiDef,
  211. clickImg: meiCha,
  212. showClick: false
  213. },
  214. {
  215. isClass: 'guoDef',
  216. isClassC: 'guoCha',
  217. isName: '国际业务',
  218. img: guoDef,
  219. clickImg: guoCha,
  220. showClick: false
  221. },
  222. {
  223. isClass: 'zongDef',
  224. isClassC: 'zongCha',
  225. isName: '综合支持',
  226. img: zongDef,
  227. clickImg: zongCha,
  228. showClick: false
  229. }
  230. ]
  231. this.getEvalCompanyData()
  232. },
  233. methods: {
  234. // 查询单位数据
  235. getEvalCompanyData() {
  236. let that = this
  237. debugger
  238. let params = {
  239. pageNum: that.page.currentPage,
  240. pageSize: that.page.pagesize,
  241. organizationType: 'DWKP',
  242. organizationName: that.companyS,
  243. binSection: that.binSectionIds,
  244. binStage: that.stageIds,
  245. evaluationCycle: that.periodId
  246. }
  247. apiGetOrganizationList(params).then(datas => {
  248. if (datas && datas.data) {
  249. that.benchmarkingIndicatorData = datas.data.records
  250. that.page.total = datas.data.total
  251. }
  252. })
  253. },
  254. changType(data) {
  255. this.titleMsgArr.forEach(it =>{
  256. it.showClick = false
  257. if (it.isName === data.isName) {
  258. it.showClick = true
  259. }
  260. })
  261. },
  262. getSeachData() {
  263. this.page.currentPage = 1
  264. this.getEvalCompanyData()
  265. },
  266. resetSeach() {
  267. this.page.currentPage = 1
  268. this.companyS = ''
  269. this.periodId = ''
  270. this.stageIds = ''
  271. this.binSectionIds = ''
  272. this.getEvalCompanyData()
  273. },
  274. handleSizeChange(val) {
  275. this.page.pagesize = val
  276. this.getEvalCompanyData()
  277. },
  278. handleCurrentChange(val) {
  279. this.page.currentPage = val
  280. this.getEvalCompanyData()
  281. }
  282. }
  283. }
  284. </script>
  285. <style lang="less">
  286. .benchmarkingIndicator {
  287. .benchmarkingIndicatorBtn {
  288. .collectSeach {
  289. display: flex;
  290. padding: 24px 20px;
  291. border-bottom: 1px solid#D6DBEA;
  292. .exceed {
  293. display: flex;
  294. .exceedSpan {
  295. width: 100px;
  296. height: 12px;
  297. font-size: 14px;
  298. font-family: Microsoft YaHei;
  299. font-weight: 400;
  300. color: #8991B0;
  301. line-height: 12px;
  302. margin-top: 14px;
  303. }
  304. .el-input {
  305. margin-right: 10px;
  306. .el-input__inner {
  307. height: 30px;
  308. }
  309. .el-input__suffix {
  310. .el-select__caret {
  311. line-height: 30px;
  312. }
  313. }
  314. }
  315. .el-select{
  316. line-height: 40px !important;
  317. .el-input__inner, .is-disabled{
  318. height:40px !important;
  319. }
  320. .el-input__suffix{
  321. .el-select__caret{
  322. line-height:40px;
  323. }
  324. }
  325. }
  326. .el-date-editor--month{
  327. height: 40px;
  328. }
  329. }
  330. }
  331. span {
  332. font-size: 14px;
  333. }
  334. .PeriodBtn {
  335. display: flex;
  336. justify-content: end;
  337. padding: 20px 0;
  338. }
  339. .el-button {
  340. height: 30px;
  341. // width:100px;
  342. padding: 0 30px;
  343. // padding-top: 8px;
  344. span {
  345. margin: 0;
  346. }
  347. }
  348. .indexdialog {
  349. .el-overlay {
  350. .el-dialog {
  351. .el-dialog__body {
  352. padding: 30px 60px 30px 20px !important;
  353. .periodFrom {
  354. .el-select,
  355. .el-input {
  356. width: 100%;
  357. }
  358. .el-input {
  359. height: 30px;
  360. }
  361. }
  362. }
  363. }
  364. }
  365. }
  366. }
  367. .benchmarkingIndicatorTableData {
  368. display: flex;
  369. .tableMain{
  370. width: 95%;
  371. .el-table {
  372. .el-table__body-wrapper {
  373. height: 55vh !important;
  374. }
  375. .el-input__inner {
  376. height: 30px !important;
  377. }
  378. .el-radio__label {
  379. display: none;
  380. }
  381. .tooltipCC {
  382. width: 300px;
  383. display: inline-block;
  384. overflow: hidden;
  385. text-overflow: ellipsis;
  386. white-space: nowrap;
  387. }
  388. .indicitem {
  389. color: #409EFF;
  390. font-size: 12px;
  391. margin-right: 20px;
  392. cursor: pointer;
  393. &:hover {
  394. text-decoration: underline;
  395. }
  396. }
  397. }
  398. .el-pagination {
  399. margin-top: 20px;
  400. text-align: end;
  401. position: relative;
  402. }
  403. }
  404. .tableSeach{
  405. height: 100%;
  406. margin-left: 10px;
  407. border: 1px solid #D6DBEA;
  408. padding: 5px 0;
  409. border-radius: 5px;
  410. .seachType{
  411. width: 78px;
  412. height: 78px;
  413. cursor: pointer;
  414. border-left: 3px solid transparent;
  415. img{
  416. margin-top: 17px;
  417. margin-left: 27px;
  418. }
  419. p{
  420. text-align: center;
  421. font-size: 14px;
  422. }
  423. }
  424. .seachTypeCha{
  425. background: #E6EBF5;
  426. cursor: pointer;
  427. border-left: 3px solid #3B7AD1;
  428. }
  429. }
  430. }
  431. }
  432. </style>