taskEvaluationAmendmentFrom.vue 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919
  1. <template>
  2. <div class="evaluationAmendmentFrom">
  3. <el-dialog title="考评修订详情" v-model="dialogVisible" :fullscreen="true" :close-on-click-modal="false">
  4. <div class="startDetail">
  5. <p class="starttitleSty">单据信息:</p>
  6. <el-row class="danjuMsg">
  7. <el-col :span="6">
  8. <div class="danjuMsg_data">
  9. <span class="data_tit">业务编号:</span>
  10. <span>{{receiptMsg.code}}</span>
  11. </div>
  12. <div class="danjuMsg_data">
  13. <span class="data_tit">创建日期:</span>
  14. <span>{{receiptMsg.createDate}}</span>
  15. </div>
  16. </el-col>
  17. <el-col :span="6">
  18. <div class="danjuMsg_data">
  19. <span class="data_tit">业务简述:</span>
  20. <span>{{receiptMsg.des}}</span>
  21. </div>
  22. <div class="danjuMsg_data">
  23. <span class="data_tit">业务类别:</span>
  24. <span>{{receiptMsg.type}}</span>
  25. </div>
  26. </el-col>
  27. <el-col :span="6">
  28. <div class="danjuMsg_data">
  29. <span class="data_tit">流程状态:</span>
  30. <span>{{receiptMsg.stage}}</span>
  31. </div>
  32. <div class="danjuMsg_data">
  33. <span class="data_tit">年度:</span>
  34. <span>{{receiptMsg.year}}</span>
  35. </div>
  36. </el-col>
  37. <el-col :span="6">
  38. <div class="danjuMsg_data">
  39. <span class="data_tit">创建人:</span>
  40. <span>{{receiptMsg.createName}}</span>
  41. </div>
  42. <div class="danjuMsg_data">
  43. <span class="data_tit">单据状态:</span>
  44. <span>{{receiptMsg.recStage}}</span>
  45. </div>
  46. </el-col>
  47. </el-row>
  48. <div class="monthQuarterYear">
  49. <el-tabs v-model="activeName" class="tableMain" @tab-click="handleClick">
  50. <el-tab-pane v-for="it in stageData" :key="it.id" :label="it.stageName" :name="it.stageCode">
  51. <div class="detailsHeader" v-if="tabName === 'first'">
  52. <div class="headerRight">
  53. <div class="seachFor">
  54. <el-input v-model="compNameSa" placeholder="请输入单位名称"
  55. @keyup.enter="getTableData(addstageId)"></el-input>
  56. </div>
  57. <div class="tableBtn save" @click="saveDetail">
  58. <img :src="saveIcon" alt="">
  59. <span>保存</span>
  60. </div>
  61. <div class="tableBtn import" @click="handleImport">
  62. <img :src="importIcon" alt="">
  63. <span>导入</span>
  64. </div>
  65. <div class="tableBtn export" @click="handleExport">
  66. <img :src="exportIcon" alt="">
  67. <span>导出</span>
  68. </div>
  69. </div>
  70. </div>
  71. <el-table :data="monthQuarterYearData" style="width: 100%" ref="monthQuarterYearTT"
  72. :border="true" v-if="binSectionCode === 'QQ' && activeName ==='QQXM'">
  73. <el-table-column type="index" label="排名" align="center"></el-table-column>
  74. <el-table-column label="考评单位" prop="organizationShortName" width="300" />
  75. <el-table-column label="发展绩效" align="center">
  76. <el-table-column label="新能源发展" align="center">
  77. <el-table-column label="核准(备案)目标容量" prop="XNYFZ_HZ" align="center">
  78. <template #default="scope">
  79. <el-input-number v-model="scope.row[XNYFZ_HZ]" :precision="2"
  80. :step="0.1" />
  81. </template>
  82. </el-table-column>
  83. <el-table-column label="投资决策目标容量" align="center">
  84. <el-table-column label="合计" prop="XNYFZ_HJ" align="center">
  85. <template #default="scope">
  86. <el-input-number v-model="scope.row[XNYFZ_HJ]" :precision="2"
  87. :step="0.1" />
  88. </template>
  89. </el-table-column>
  90. <el-table-column label="已核准(备案)" prop="XNYFZ_YHZ" align="center">
  91. <template #default="scope">
  92. <el-input-number v-model="scope.row[XNYFZ_YHZ]" :precision="2"
  93. :step="0.1" />
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="待核准(备案)" align="center">
  97. <el-table-column label="已获取" prop="XNYFZ_YHQ" align="center">
  98. <template #default="scope">
  99. <el-input-number v-model="scope.row[XNYFZ_YHQ]" :precision="2"
  100. :step="0.1" />
  101. </template>
  102. </el-table-column>
  103. <el-table-column label="待获取" prop="XNYFZ_DHQ" align="center">
  104. <template #default="scope">
  105. <el-input-number v-model="scope.row[XNYFZ_DHQ]" :precision="2"
  106. :step="0.1" />
  107. </template>
  108. </el-table-column>
  109. </el-table-column>
  110. </el-table-column>
  111. </el-table-column>
  112. <el-table-column label="常规能源发展" align="center">
  113. <el-table-column label="核准(备案)目标容量" prop="CGNYFZ_HZ" align="center">
  114. <template #default="scope">
  115. <el-input-number v-model="scope.row[CGNYFZ_HZ]" :precision="2"
  116. :step="0.1" />
  117. </template>
  118. </el-table-column>
  119. <el-table-column label="投资决策目标容量" align="center">
  120. <el-table-column label="已核准(备案)" prop="CGNYFZ_YHZ" align="center">
  121. <template #default="scope">
  122. <el-input-number v-model="scope.row[CGNYFZ_YHZ]" :precision="2"
  123. :step="0.1" />
  124. </template>
  125. </el-table-column>
  126. <el-table-column label="待核准(备案)" prop="CGNYFZ_DHZ" align="center">
  127. <template #default="scope">
  128. <el-input-number v-model="scope.row[CGNYFZ_DHZ]" :precision="2"
  129. :step="0.1" />
  130. </template>
  131. </el-table-column>
  132. </el-table-column>
  133. <el-table-column label="火电水电项目阶段性工作目标" prop="CGNYFZ_JDGZ" align="center">
  134. <template #default="scope">
  135. <el-input v-model="scope.row[CGNYFZ_JDGZ]" :rows="2" type="textarea">
  136. </el-input>
  137. </template>
  138. </el-table-column>
  139. </el-table-column>
  140. <el-table-column label="战略新兴产业发展" prop="ZLXXCY_FZ" align="center">
  141. <template #default="scope">
  142. <el-input v-model="scope.row[ZLXXCY_FZ]" :rows="2" type="textarea">
  143. </el-input>
  144. </template>
  145. </el-table-column>
  146. <el-table-column label="投资计划" align="center">
  147. <el-table-column label="基建投资" prop="TZJH_JJTZ" align="center">
  148. <template #default="scope">
  149. <el-input v-model="scope.row[TZJH_JJTZ]" :rows="2" type="textarea">
  150. </el-input>
  151. </template>
  152. </el-table-column>
  153. <el-table-column label="非基建投资" prop="TZJH_FJJTZ" align="center">
  154. <template #default="scope">
  155. <el-input v-model="scope.row[TZJH_FJJTZ]" :rows="2" type="textarea">
  156. </el-input>
  157. </template>
  158. </el-table-column>
  159. </el-table-column>
  160. </el-table-column>
  161. </el-table>
  162. <el-table :data="monthQuarterYearData" style="width: 100%" ref="monthQuarterYearTT"
  163. :border="true" v-else>
  164. <el-table-column type="index" label="排名" align="center"></el-table-column>
  165. <el-table-column label="考评单位" prop="organizationShortName" width="300" />
  166. <el-table-column v-for="(it, index) in monthQuarterYearHeader" :key="index"
  167. :label="it.name" align="center">
  168. <el-table-column v-for="(iv, index) in it.children" :key="index" :label="iv.key"
  169. align="center" width="150" sortable
  170. :sort-method="(a,b)=>sortMethods(a,b,iv.code)">
  171. <template #default="scope">
  172. <el-select v-model="scope.row[iv.code]" placeholder="请选择审核状态"
  173. v-if="scope.row['IS_LH_'+iv.code] === '3'">
  174. <el-option v-for="item in statusData" :key="item.id" :label="item.name"
  175. :value="item.id">
  176. </el-option>
  177. </el-select>
  178. <el-input v-model="scope.row[iv.code]"
  179. v-else-if="scope.row['IS_LH_'+iv.code] === '2'"></el-input>
  180. <el-input-number v-model="scope.row[iv.code]" :precision="2" :step="0.1"
  181. v-else />
  182. </template>
  183. </el-table-column>
  184. </el-table-column>
  185. </el-table>
  186. </el-tab-pane>
  187. </el-tabs>
  188. <div class="tableSeach">
  189. <div class="seachType" v-for="item in titleMsgArr" :key="item.isName"
  190. :class="item.showClick? 'seachTypeCha':''" @click="changType(item)">
  191. <img :src="item.img" alt="" v-if="!item.showClick">
  192. <img :src="item.clickImg" alt="" v-else>
  193. <p :style="item.showClick? 'color: #3B7AD1' : ''">{{item.isName}}</p>
  194. </div>
  195. </div>
  196. </div>
  197. <div v-if="tabName === 'first'">
  198. <p class="starttitleSty">审批意见:</p>
  199. <el-input v-model="descMsg" :rows="3" type="textarea" placeholder="请输入审批意见"></el-input>
  200. </div>
  201. </div>
  202. <template #footer>
  203. <span class="dialog-footer" v-if="tabName === 'first'">
  204. <el-button type="primary" @click="examineAndApprove('agree')">同 意</el-button>
  205. <el-button @click="examineAndApprove('reject')">拒 绝</el-button>
  206. </span>
  207. </template>
  208. </el-dialog>
  209. <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
  210. </div>
  211. </template>
  212. <script>
  213. import importDailog from '../importPage/importDailog.vue'
  214. import {
  215. apiGetgetevaluationrevisiondetails,
  216. apiGetbinsectionList,
  217. apiGetbinstageList,
  218. apiGetExportMsg,
  219. apiPostupdateevaluationrevisionInfo,
  220. apiPostorganizationUpdateAddEvaluationInfo,
  221. apiGetHeaderdetailsHead,
  222. apiPostIsdoAction
  223. } from '../../api/api'
  224. import * as XLSX from 'xlsx'
  225. import {
  226. saveAs
  227. } from 'file-saver'
  228. import * as XLSXD from 'xlsx-js-style'
  229. import sectionDef from '../../assets/benchmarkImg/sectionDef.png'
  230. import sectionCha from '../../assets/benchmarkImg/sectionCha.png'
  231. import addIcon from '../../assets/btnIcon/add.png'
  232. import saveIcon from '../../assets/btnIcon/save.png'
  233. import exportIcon from '../../assets/btnIcon/export.png'
  234. import importIcon from '../../assets/btnIcon/import.png'
  235. export default {
  236. components: {
  237. importDailog
  238. },
  239. data() {
  240. return {
  241. dialogVisible: false,
  242. revisionVisible: false,
  243. revisionData: [],
  244. activeName: '',
  245. monthQuarterYearData: [],
  246. monthQuarterYearHeader: [],
  247. isClickTagId: '',
  248. compNameSa: '',
  249. descMsg: '',
  250. receiptMsg: {
  251. code: '',
  252. des: '',
  253. stage: '',
  254. createName: '',
  255. createDate: '',
  256. type: '',
  257. year: '',
  258. recStage: ''
  259. },
  260. rowMsg: {},
  261. moduleData: [],
  262. stageData: [],
  263. titleMsgArr: [],
  264. statusData: [],
  265. binSectionStr: '',
  266. binSectionCode: '',
  267. addIcon: addIcon,
  268. saveIcon: saveIcon,
  269. exportIcon: exportIcon,
  270. importIcon: importIcon,
  271. addstageId: '',
  272. instanceChild: {},
  273. rowkeyId: '',
  274. userMes: {},
  275. tabName: ''
  276. }
  277. },
  278. created() {
  279. this.statusData = [{
  280. name: '已确认',
  281. id: '1'
  282. },
  283. {
  284. name: '待确认',
  285. id: '0'
  286. },
  287. {
  288. name: '不合格',
  289. id: '-1'
  290. }
  291. ]
  292. },
  293. methods: {
  294. init(row, keyId, allData, tabVal) {
  295. this.dialogVisible = true
  296. this.userMes = JSON.parse(window.sessionStorage.getItem('user'))
  297. this.getevalHeaderDetails(keyId)
  298. this.getModelData()
  299. this.rowMsg = row
  300. this.rowkeyId = keyId
  301. this.instanceChild = allData
  302. this.tabName = tabVal
  303. },
  304. //获取头部详情
  305. getevalHeaderDetails(id) {
  306. let that = this
  307. let params = {
  308. id: id
  309. }
  310. apiGetHeaderdetailsHead(params).then(datas => {
  311. if (datas && datas.data) {
  312. let item = datas.data
  313. that.receiptMsg = {
  314. code: item.responsibilityCode,
  315. des: item.des,
  316. stage: item.stage,
  317. createName: item.createName,
  318. createDate: item.createTime,
  319. type: item.checkCycle === 'YDKP' ? '月度考评' : item.checkCycle === 'JDKP' ?
  320. '季度考评' : '年度考评',
  321. year: item.year,
  322. recStage: '有效'
  323. }
  324. }
  325. })
  326. },
  327. sortMethods(a, b, it) {
  328. if (a[it] < b[it]) {
  329. return -1
  330. }
  331. },
  332. // 获取业务属性
  333. getModelData() {
  334. let that = this
  335. that.titleMsgArr = []
  336. let params = {
  337. type: '3'
  338. }
  339. apiGetbinsectionList(params).then(datas => {
  340. if (datas && datas.data) {
  341. that.moduleData = datas.data
  342. that.moduleData.forEach(item => {
  343. let obj = {
  344. id: item.id,
  345. isName: item.sectionName === '新能源(光电)' ? '新能源光电' : item
  346. .sectionName === '新能源(风电)' ? '新能源风电' : item.sectionName,
  347. isNameEn: item.sectionCode,
  348. showClick: false,
  349. isClass: 'sectionDef',
  350. img: sectionDef,
  351. isClassC: 'sectionCha',
  352. clickImg: sectionCha
  353. }
  354. that.titleMsgArr.push(obj)
  355. })
  356. that.titleMsgArr[0].showClick = true
  357. that.binSectionStr = that.titleMsgArr[0].id
  358. that.binSectionCode = that.titleMsgArr[0].isNameEn
  359. that.getStageData()
  360. }
  361. })
  362. },
  363. //根据业务属性获取业务阶段
  364. getStageData() {
  365. let that = this
  366. let params = {
  367. type: '2'
  368. }
  369. apiGetbinstageList(params).then(datas => {
  370. if (datas && datas.data) {
  371. that.stageData = datas.data
  372. that.activeName = datas.data[0].stageCode
  373. that.addstageId = datas.data[0].id
  374. that.getTableData(datas.data[0].id)
  375. }
  376. })
  377. },
  378. handleClick(val) {
  379. let stageId = ''
  380. this.activeName = val.props.name
  381. console.log('activeName', this.activeName)
  382. this.stageData.forEach(it => {
  383. if (it.stageCode === val.props.name) {
  384. stageId = it.id
  385. this.addstageId = it.id
  386. }
  387. })
  388. this.getTableData(stageId)
  389. },
  390. //获取表格数据
  391. getTableData(id) {
  392. let that = this
  393. let params = {
  394. reviseId: that.rowkeyId,
  395. binSection: that.binSectionStr,
  396. binStage: id,
  397. organizationShortName: that.compNameSa
  398. }
  399. apiGetgetevaluationrevisiondetails(params).then(datas => {
  400. if (datas && datas.data) {
  401. if (datas.data.title) {
  402. let header = []
  403. for (let i in datas.data.title) {
  404. let obj = {
  405. name: i,
  406. children: datas.data.title[i]
  407. }
  408. header.push(obj)
  409. }
  410. that.monthQuarterYearHeader = header
  411. }
  412. that.monthQuarterYearData = datas.data.value
  413. }
  414. })
  415. },
  416. changType(data) {
  417. this.titleMsgArr.forEach(it => {
  418. it.showClick = false
  419. if (it.isName === data.isName) {
  420. it.showClick = true
  421. this.binSectionStr = it.id
  422. this.binSectionCode = data.isNameEn
  423. }
  424. })
  425. let stageId = ''
  426. this.stageData.forEach(it => {
  427. if (it.stageCode === this.activeName) {
  428. stageId = it.id
  429. }
  430. })
  431. this.getTableData(stageId)
  432. },
  433. addTableDetail() {
  434. console.log('表头数据11====>>>>>>>', this.monthQuarterYearHeader)
  435. if (this.monthQuarterYearHeader.length > 0) {
  436. let headerArr = []
  437. this.monthQuarterYearHeader.forEach(item => {
  438. headerArr = headerArr.concat(item.children)
  439. })
  440. console.log('表头数据22====>>>>>>>', headerArr)
  441. this.addstageId = ''
  442. this.stageData.forEach(it => {
  443. if (it.stageCode === this.activeName) {
  444. this.addstageId = it.id
  445. }
  446. })
  447. let obj = {
  448. isAdd: true,
  449. }
  450. headerArr.forEach(it => {
  451. obj[it.code] = ''
  452. obj['IS_LH_' + it.code] = it.flag
  453. })
  454. this.monthQuarterYearData.unshift(obj)
  455. }
  456. console.log('表格数据====>>>>>>>', this.monthQuarterYearData)
  457. },
  458. saveAddDetail() {
  459. let that = this
  460. let addParams = []
  461. let saveParams = []
  462. let addObj = {
  463. organizationId: that.userMes.unitId,
  464. // organizationId: "23079300",
  465. organizationEvaluationId: that.rowkeyId,
  466. indicatorId: that.isClickTagId,
  467. binSection: that.binSectionStr,
  468. binStage: that.addstageId,
  469. optionMap: {}
  470. }
  471. that.monthQuarterYearData.forEach(it => {
  472. if (it.isAdd) {
  473. addObj.optionMap = it
  474. addParams.push(addObj)
  475. } else {
  476. saveParams.push(it)
  477. }
  478. })
  479. if (addParams.length > 0) {
  480. apiPostorganizationUpdateAddEvaluationInfo(addParams).then(datas => {
  481. if (datas) {
  482. that.responseData(datas)
  483. }
  484. })
  485. }
  486. if (saveParams.length > 0) {
  487. apiPostupdateevaluationrevisionInfo(saveParams).then(datas => {
  488. if (datas) {
  489. that.responseData(datas)
  490. }
  491. })
  492. }
  493. },
  494. // 返回数据
  495. responseData(datas) {
  496. if (datas.message === '成功') {
  497. this.$message({
  498. message: '考评目标详情信息保存成功',
  499. type: 'success'
  500. });
  501. } else {
  502. this.$message({
  503. message: datas.message,
  504. type: 'error'
  505. });
  506. }
  507. this.getTableData(this.addstageId)
  508. },
  509. saveDetail() {
  510. let that = this
  511. apiPostupdateevaluationrevisionInfo(that.monthQuarterYearData).then(datas => {
  512. if (datas) {
  513. if (datas.message === '成功') {
  514. that.$message({
  515. message: '考评目标详情信息保存成功',
  516. type: 'success'
  517. });
  518. } else {
  519. that.$message({
  520. message: datas.message,
  521. type: 'error'
  522. });
  523. }
  524. that.getTableData(that.addstageId)
  525. }
  526. })
  527. },
  528. handleImport() {
  529. this.$refs.importPage.upload.title = "考评目标详情信息导入"
  530. this.$refs.importPage.upload.open = true
  531. this.$refs.importPage.upload.url = '/evaluation-revision/import-excel'
  532. },
  533. successImport(val) {
  534. this.getTableData(this.addstageId)
  535. },
  536. handleExport() {
  537. let that = this
  538. let url = 'evaluation-revision/download-excel'
  539. let params = {
  540. reviseId: that.rowkeyId,
  541. binSection: that.binSectionStr,
  542. binStage: that.addstageId
  543. }
  544. apiGetExportMsg(url, params).then(datas => {
  545. let blob = new Blob([datas])
  546. saveAs(blob, '考评目标详情数据导出.xlsx')
  547. }).catch((r) => {
  548. console.error(r)
  549. })
  550. },
  551. examineAndApprove(type) {
  552. let that = this
  553. let actionCS = ''
  554. if (type === 'agree') {
  555. if (that.rowMsg.taskType === 'SIGN') {
  556. actionCS = 'signAgree'
  557. } else if (that.rowMsg.taskType === 'NORMAL') {
  558. actionCS = 'agree'
  559. }
  560. } else {
  561. // if (that.rowMsg.taskType === 'SIGN') {
  562. // actionCS = 'signReject'
  563. // } else if (that.rowMsg.taskType === 'NORMAL') {
  564. // }
  565. actionCS = 'reject'
  566. }
  567. let params = {
  568. taskId: that.rowMsg.id, //任务ID
  569. nodeId: that.rowMsg.nodeId, //节点ID
  570. action: actionCS, //固定值
  571. instanceId: that.rowMsg.instId, //流程实例ID
  572. opinion: that.descMsg, //审批意见
  573. iamCode: window.localStorage.getItem('code'), //认证后code值
  574. taskName: that.rowMsg.name,
  575. defKey: that.instanceChild.defKey,
  576. bizKey: that.instanceChild.bizKey
  577. }
  578. apiPostIsdoAction(params).then(datas => {
  579. if (datas && datas.data) {
  580. if (datas.data.isOk) {
  581. that.$message({
  582. message: datas.data.data,
  583. type: 'success'
  584. })
  585. that.dialogVisible = false
  586. that.$emit('approveMsg', datas.data.isOk)
  587. } else {
  588. that.$message({
  589. message: datas.data.msg,
  590. type: 'error'
  591. })
  592. }
  593. }
  594. })
  595. },
  596. }
  597. }
  598. </script>
  599. <style lang="less">
  600. .evaluationAmendmentFrom {
  601. .el-overlay {
  602. .el-dialog {
  603. // margin-top: 7vh;
  604. .el-dialog__body {
  605. padding: 0 20px !important;
  606. .startDetail {
  607. .starttitleSty {
  608. font-size: 18px;
  609. font-family: Microsoft YaHei;
  610. font-weight: bold;
  611. color: #3B7AD1;
  612. // line-height: 12px;
  613. margin: 20px 0 20px 10px;
  614. }
  615. .danjuMsg {
  616. border: 1px solid #D6DBEA;
  617. padding: 10px 20px;
  618. border-radius: 10px;
  619. // margin-bottom: 20px;
  620. .danjuMsg_data {
  621. padding: 5px 0 10px 0;
  622. .data_tit {
  623. margin-right: 10px;
  624. font-weight: bold;
  625. font-size: 14px;
  626. font-family: Microsoft YaHei;
  627. color: #8991B0;
  628. }
  629. .data_tit_wd {
  630. display: inline-block;
  631. width: 90px;
  632. }
  633. .el-form-item--small {
  634. .el-input {
  635. height: 25px;
  636. width: 160px;
  637. }
  638. margin-bottom: 0;
  639. .el-input-number {
  640. height: 25px;
  641. .el-input-number__decrease,
  642. .el-input-number__increase {
  643. right: -39px;
  644. }
  645. }
  646. }
  647. }
  648. }
  649. .el-select,
  650. .el-input {
  651. width: 100%;
  652. }
  653. .monthQuarterYear {
  654. display: flex;
  655. width: 100%;
  656. margin-top: 20px;
  657. .tableMain {
  658. width: calc(100% - 100px);
  659. .el-tabs__header {
  660. .el-tabs__nav {
  661. .el-tabs__item {
  662. font-size: 18px;
  663. font-family: Microsoft YaHei;
  664. font-weight: bold;
  665. margin: 0 10px;
  666. color: #8991B0;
  667. }
  668. .is-active {
  669. font-size: 18px;
  670. font-family: Microsoft YaHei;
  671. font-weight: bold;
  672. color: #3B7AD1;
  673. margin: 0 10px;
  674. }
  675. }
  676. }
  677. .detailsHeader {
  678. width: 100%;
  679. display: flex;
  680. .headerRight {
  681. display: flex;
  682. justify-content: end;
  683. width: 100%;
  684. margin-bottom: 5px;
  685. .seachFor {
  686. display: flex;
  687. .el-input {
  688. height: 30px;
  689. .el-input__inner {
  690. height: 30px;
  691. }
  692. .el-input__suffix {
  693. .el-select__caret {
  694. line-height: 30px;
  695. }
  696. }
  697. }
  698. .el-icon {
  699. margin: 5px 10px 0 10px;
  700. cursor: pointer;
  701. }
  702. }
  703. .tableBtn {
  704. display: flex;
  705. height: 20px;
  706. margin: 5px 10px 0 10px;
  707. // width: 13%;
  708. width: fit-content;
  709. img {
  710. margin-right: 5px;
  711. margin-top: 1px;
  712. }
  713. span {
  714. width: 35px;
  715. display: inline-block;
  716. font-size: 14px;
  717. font-family: Microsoft YaHei;
  718. font-weight: 400;
  719. }
  720. }
  721. .add {
  722. cursor: pointer;
  723. span {
  724. color: #3B7AD1;
  725. }
  726. }
  727. .save {
  728. cursor: pointer;
  729. span {
  730. color: #50C14E;
  731. }
  732. }
  733. .import {
  734. cursor: pointer;
  735. span {
  736. color: #ce1e78;
  737. }
  738. }
  739. .export {
  740. cursor: pointer;
  741. span {
  742. color: #2baa8a;
  743. }
  744. }
  745. }
  746. }
  747. .el-table {
  748. .el-table__header-wrapper {
  749. .el-table__header {
  750. .el-table__cell {
  751. border-bottom: none !important;
  752. }
  753. thead {
  754. tr {
  755. th {
  756. .cell {
  757. line-height: 16px;
  758. }
  759. }
  760. }
  761. }
  762. }
  763. }
  764. .el-table__body-wrapper {
  765. height: 47vh !important;
  766. .el-scrollbar {
  767. .el-table__body {
  768. tr {
  769. td {
  770. padding: 0;
  771. .cell {
  772. background: #F6F7FA;
  773. line-height: 47px;
  774. height: 47px;
  775. }
  776. }
  777. td:hover {
  778. line-height: 45px;
  779. height: 45px;
  780. }
  781. }
  782. }
  783. }
  784. }
  785. .el-table--border .el-table__cell {
  786. border: none;
  787. }
  788. .el-table thead.is-group th.el-table__cell {
  789. background: transparent;
  790. }
  791. .tooltipCC {
  792. width: 180px;
  793. display: inline-block;
  794. overflow: hidden;
  795. text-overflow: ellipsis;
  796. white-space: nowrap;
  797. }
  798. }
  799. .el-pagination {
  800. margin-top: 20px;
  801. text-align: end;
  802. position: relative;
  803. }
  804. }
  805. .tableSeach {
  806. width: 88px;
  807. height: 63vh;
  808. margin-left: 10px;
  809. margin-top: 37px;
  810. border: 1px solid #D6DBEA;
  811. padding: 5px 0;
  812. border-radius: 5px;
  813. overflow-y: auto;
  814. .seachType {
  815. width: 78px;
  816. height: 78px;
  817. cursor: pointer;
  818. border-left: 3px solid transparent;
  819. img {
  820. margin-top: 17px;
  821. margin-left: 27px;
  822. }
  823. p {
  824. text-align: center;
  825. font-size: 14px;
  826. }
  827. }
  828. .seachTypeCha {
  829. background: #E6EBF5;
  830. cursor: pointer;
  831. border-left: 3px solid #3B7AD1;
  832. }
  833. }
  834. }
  835. }
  836. .periodFrom {
  837. margin-top: 15px;
  838. .el-select,
  839. .el-input {
  840. width: 100%;
  841. }
  842. }
  843. }
  844. .el-dialog__footer {
  845. .dialog-footer {
  846. display: flex;
  847. justify-content: center;
  848. .el-button {
  849. width: 180px !important;
  850. height: 40px !important;
  851. }
  852. }
  853. }
  854. }
  855. }
  856. }
  857. </style>