index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. <template>
  2. <div>
  3. <div v-if="isExpand && analyticFeedback" style="padding-top: 10px;" v-html="analyticFeedback" />
  4. <span @click.stop>
  5. <el-table
  6. :data="tableData"
  7. border
  8. style="width: 100%; margin-top: 10px"
  9. highlight-current-row
  10. row-key="rowKey"
  11. :expand-row-keys="expandRowKeys"
  12. :header-cell-style="{
  13. background: '#F7F7F7',
  14. color: '#4a4a4a',
  15. 'font-size': '14px',
  16. 'font-weight': '500'
  17. }"
  18. :cell-style="{ 'font-size': '14px', color: 'rgb(102,102,102)' }"
  19. size="small"
  20. show-overflow-tooltip="true"
  21. >
  22. <!-- <el-table-column v-if="index === 0 && tabsActive.indexOf('本月重点问题') > -1
  23. && pageType !== 'edit' ? 'expand' : ''" label="展开" type="expand"> -->
  24. <el-table-column
  25. v-for="(item, index) in setColumns(columns)"
  26. :key="item.headerKey"
  27. :data-index="index"
  28. :prop="item.headerKey"
  29. :align="item.align"
  30. :label="item.name"
  31. :type="item.type"
  32. :min-width="setMinWidth(item)"
  33. :fixed="isFixed(item, index, columns)"
  34. >
  35. <template slot-scope="scope">
  36. <!-- 展开 -->
  37. <div v-if="item.type === 'expand'">
  38. <TableExpandRow
  39. :analytic-feedback="scope.row.analyticFeedback"
  40. @upAnalyticFeedback="setAnalyticFeedback"
  41. />
  42. </div>
  43. <!-- 操作列 -->
  44. <div v-else-if="item.name === '操作'">
  45. <div v-if="isExpand">
  46. <el-button
  47. v-if="isShowButton(scope.row, item)"
  48. type="text"
  49. @click.stop="btnFun({ value: '分析反馈' }, scope)"
  50. >分析反馈
  51. </el-button>
  52. </div>
  53. <span v-else>
  54. <span
  55. v-for="(btnItem, btnIndex) in item.defaultValue"
  56. :key="btnIndex"
  57. >
  58. <!--另存为-->
  59. <span v-if="btnItem.value === '另存为' && isShowButton(scope.row, item)" style="margin-right: 10px">
  60. <el-dropdown @command="(command) => saveAsRow(command, scope.row, item)">
  61. <el-tooltip
  62. class="item"
  63. effect="dark"
  64. content="将线上问题另存到其他业务线"
  65. placement="top"
  66. >
  67. <el-button type="text">
  68. 另存
  69. </el-button>
  70. </el-tooltip>
  71. <el-dropdown-menu v-if="subReportInfo" slot="dropdown">
  72. <el-dropdown-item v-for="subItem in subReportInfo.filter(subElm => subReportInfoFilter(subElm) )" :key="subItem.id" :command="subItem">
  73. {{ subItem.reportName }}
  74. </el-dropdown-item>
  75. </el-dropdown-menu>
  76. </el-dropdown>
  77. </span>
  78. <!--链接-->
  79. <span v-else-if="btnItem.value === '链接' && isShowButton(scope.row, item)" @click.stop>
  80. <el-popover
  81. v-if="scope.row.operationTarget"
  82. placement="bottom-start"
  83. trigger="hover"
  84. >
  85. <el-button-group>
  86. <el-button size="small" type="info" plain @click="goto(scope.row.operationTarget)">访问链接</el-button>
  87. <el-button size="small" type="info" plain @click="btnFun(btnItem, scope)">编辑</el-button>
  88. <el-button size="small" type="info" plain @click="scope.row.operationTarget = ''">取消链接</el-button>
  89. </el-button-group>
  90. <el-button slot="reference" style="margin-right: 10px" type="text">链接</el-button>
  91. </el-popover>
  92. <el-button
  93. v-else
  94. style="margin-right: 10px"
  95. type="text"
  96. @click.stop="btnFun(btnItem, scope)"
  97. >链接</el-button>
  98. </span>
  99. <el-button v-else-if="isShowButton(scope.row, item)" style="margin-right: 10px" type="text" @click.stop="btnFun(btnItem, scope)">{{ btnItem.value }}</el-button>
  100. </span>
  101. </span>
  102. </div>
  103. <div v-else class="edit-wrapper" :style="{ cursor: pageDate && pageDate.status < 20 ? 'pointer' : 'auto' }">
  104. <!-- <div v-if="editKeys.indexOf(`${scope.row.rowKey}_${index}`) > -1"> -->
  105. <div v-if="editKeys.indexOf(domKey) > -1 && !item.defaultValue">
  106. <div v-if="item.displayType === 'Select'">
  107. <div v-if="item.selectType && item.selectType === 'Time'">
  108. <el-date-picker v-model="scope.row[item.headerKey]" type="date" style="width: 90%" value-format="yyyy-MM-dd" size="mini" placeholder="选择日期" />
  109. </div>
  110. <div v-else-if="item.selectType && item.selectType === 'SinglePeople'">
  111. <searchPeople :value.sync="scope.row[item.headerKey]" />
  112. </div>
  113. <div v-else-if="item.selectType && item.selectType === 'MultiplePeople'">
  114. <searchPeople :value.sync="scope.row[item.headerKey]" :multiple="true" />
  115. </div>
  116. <div v-else-if="item.selectType && item.selectType === 'people'">
  117. <searchPeople :value.sync="scope.row[item.headerKey]" :multiple="true" />
  118. </div>
  119. <el-select v-else v-model="scope.row[item.headerKey]" size="mini" placeholder="请选择" style="width: 80%">
  120. <el-option v-for="optionItem in item.selectEnum" :key="optionItem" :label="optionItem" :value="optionItem">{{ optionItem }}
  121. </el-option>
  122. </el-select>
  123. </div>
  124. <el-input v-else-if="item.displayType === 'Texterea'" v-model="scope.row[item.headerKey]" type="textarea" placeholder="请输入" :maxlength="item.name.search(/天数/) > -1 ? 10 : ''" :autosize="{ minRows: item.name.search(/天数/) > -1 ? 1 : 2, maxRows: 30 }" show-word-limit />
  125. <div v-else-if="item.displayType === 'CascaderSingle'">
  126. <CascaderSingle v-model="scope.row[item.headerKey]" />
  127. </div>
  128. <div v-else-if="item.displayType === 'Cascader'">
  129. <Cascader v-model="scope.row[item.headerKey]" />
  130. </div>
  131. <div v-else-if="item.defaultValue === 'Select'" />
  132. <el-input v-else v-model="scope.row[item.headerKey]" size="mini" maxlength="100" show-word-limit placeholder="请输入" />
  133. </div>
  134. <span v-else-if="item.displayType === 'Text'">{{ item.defaultValue[0].value }}</span>
  135. <!-- <div v-else class="edit-cell" @click.stop="editLine(scope.row, index)"> -->
  136. <div v-else class="edit-cell" @click.stop="editLine(scope.row, index)">
  137. <div v-if="item.displayType === 'Cascader'">
  138. <CascaderInfo :team-data="scope.row[item.headerKey]" />
  139. </div>
  140. <div v-else-if="item.displayType === 'CascaderSingle'">
  141. <CascaderSingleInfo :team-data="scope.row[item.headerKey]" />
  142. </div>
  143. <div v-else-if="item.displayType === 'Select'">
  144. <!-- 单个人员选择 -->
  145. <div v-if="item.selectType && item.selectType === 'SinglePeople'">
  146. <MultiplePeopleInfo :team-data="scope.row[item.headerKey]" />
  147. </div>
  148. <!-- 多个人员选择 -->
  149. <div v-else-if=" item.selectType && item.selectType === 'MultiplePeople'">
  150. <!-- <searchPeople :value.sync="scope.row[item.headerKey]"
  151. :multiple="true" disabled />-->
  152. <MultiplePeopleInfo :team-data="scope.row[item.headerKey]" />
  153. </div>
  154. <!-- 多个人员选择 -->
  155. <div v-else-if="item.selectType && item.selectType === 'people'">
  156. <MultiplePeopleInfo :team-data="scope.row[item.headerKey]" />
  157. </div>
  158. <div v-else>
  159. {{ scope.row[item.headerKey] }}
  160. </div>
  161. </div>
  162. <div v-else-if="item.displayType === 'Texterea'" :style="{cursor: item.name === '问题' && scope.row.operationTarget ? 'pointer' : 'auto'}" @click.stop="item.name === '问题' && pageType.search(/edit/) < 0 && goto(scope.row.operationTarget) || editLine(scope.row, index)">
  163. <TextInfo :text="scope.row[item.headerKey]" />
  164. </div>
  165. <div v-else>
  166. <span v-html="scope.row[item.headerKey]" />
  167. </div>
  168. </div>
  169. </div>
  170. </template>
  171. </el-table-column>
  172. </el-table>
  173. </span>
  174. <div class="plus-table-data" :style="{ marginBottom: plusTableDataBottom }" @click.stop>
  175. <el-button v-if="pageDate && pageDate.status < 20" type="text" @click.stop="addTableData">
  176. <svg-icon icon-class="data-plus" class="icon" />
  177. 新增
  178. </el-button>
  179. </div>
  180. <span @click.stop>
  181. <slot name="fixedText" />
  182. <markingIssues ref="markingIssues" />
  183. <Analysis ref="Analysis" @upData="upDataAnalysis" />
  184. <LinkEdit ref="LinkEdit" @change="linkEditChange" />
  185. </span>
  186. </div>
  187. </template>
  188. <script>
  189. import _ from 'lodash'
  190. import { uuid10 } from '@/utils'
  191. import Analysis from './Analysis'
  192. import LinkEdit from './LinkEdit'
  193. import Cascader from '../Cascader'
  194. import CascaderInfo from '../CascaderInfo'
  195. import TextInfo from '../TextInfo'
  196. import MultiplePeopleInfo from '../MultiplePeopleInfo'
  197. import TableExpandRow from './TableExpandRow'
  198. import markingIssues from '../markingIssues'
  199. import CascaderSingle from '../CascaderSingle'
  200. import CascaderSingleInfo from '../CascaderSingleInfo'
  201. import searchPeople from '@/components/select/searchPeople' // 人员select
  202. import { updateAnalyticFeedback } from '@/api/qualityMonthlyReport/edit'
  203. import { reportDataBack } from '@/store/modules/monthlyReport/edit/utils.js'
  204. // import { getDeptByKeyWord } from '@/api/qualityMonthlyReport'
  205. export default {
  206. name: 'MrTable',
  207. components: {
  208. Analysis,
  209. LinkEdit,
  210. Cascader,
  211. CascaderInfo,
  212. searchPeople,
  213. MultiplePeopleInfo,
  214. TableExpandRow,
  215. markingIssues,
  216. TextInfo,
  217. CascaderSingle,
  218. CascaderSingleInfo
  219. },
  220. props: {
  221. plusTableDataBottom: {
  222. type: String,
  223. required: false,
  224. default: () => '18px'
  225. },
  226. domKey: {
  227. type: String,
  228. required: false,
  229. default: () => ''
  230. },
  231. subTitles: {
  232. type: Object,
  233. required: false,
  234. default: () => null
  235. },
  236. columns: {
  237. type: Array,
  238. required: false,
  239. default: () => []
  240. },
  241. // 分析反馈时使用的数据
  242. title: {
  243. type: String,
  244. required: false,
  245. default: () => ''
  246. },
  247. tableData: {
  248. type: Array,
  249. required: false,
  250. default: () => []
  251. }
  252. },
  253. data() {
  254. this.setAnalyticFeedback = _.debounce(this.setAnalyticFeedback, 300)
  255. return {
  256. analyticFeedback: '',
  257. expandRowKeys: [],
  258. feedbackIndex: null,
  259. username: localStorage.getItem('username')
  260. }
  261. },
  262. computed: {
  263. isExpand() {
  264. return (
  265. this.pageDate &&
  266. this.pageDate.status &&
  267. this.pageDate.status === 30 &&
  268. ((this.tabsActive.search(/本月重点问题/) > -1 &&
  269. this.pageType === 'readAll') ||
  270. (this.pageType === 'read' && this.title === '本月重点问题'))
  271. )
  272. },
  273. selectEnum() {
  274. return this.$store.state.monthlyReportEdit.selectEnum
  275. },
  276. tabPageData() {
  277. return this.$store.state.monthlyReportEdit.tabPageData
  278. },
  279. pageType() {
  280. return this.$store.state.monthlyReportEdit.pageType
  281. },
  282. tabsActive() {
  283. return this.$store.state.monthlyReportEdit.tabsActive
  284. },
  285. pageDate() {
  286. return this.$store.state.monthlyReportEdit.pageDate
  287. },
  288. roleCode() {
  289. return this.$store.state.monthlyReportEdit.roleCode
  290. },
  291. subReportName() {
  292. return this.$store.state.monthlyReportEdit.subReportName
  293. },
  294. subReportInfo() {
  295. return this.$store.state.monthlyReportEdit.subReportInfo
  296. },
  297. editKeys() {
  298. return this.$store.state.monthlyReportEdit.editKeys
  299. }
  300. },
  301. mounted() {
  302. this.$nextTick(() => {
  303. this.setExpandRowKeys()
  304. })
  305. setTimeout(() => {
  306. if (!this.analyticFeedback) {
  307. this.setAnalyticFeedback()
  308. }
  309. }, 3000)
  310. },
  311. methods: {
  312. isEdit() {},
  313. setMinWidth(item) {
  314. let width = 80
  315. if (item.name === '操作') {
  316. if (item.defaultValue.length) {
  317. width = item.defaultValue.length * 30
  318. }
  319. if (this.isExpand) {
  320. width = 90
  321. }
  322. }
  323. if (item.name === '定级') {
  324. width = 70
  325. }
  326. if (item.name === '影响') {
  327. width = 130
  328. }
  329. return `${width}px`
  330. },
  331. isFixed(item, index, columns) {
  332. if (item.name === '操作') return 'right'
  333. return false
  334. },
  335. editLine(row, index) {
  336. // console.log(this.pageDate.status, this.domKey, this.editKeys)
  337. if (this.pageDate.status < 20) {
  338. this.$store.commit('monthlyReportEdit/ADD_EDIT_KEYS', this.domKey)
  339. }
  340. this.$forceUpdate()
  341. },
  342. btnFun(btnItem, scope) {
  343. this.$store.commit('monthlyReportEdit/INIT_EDIT_KEYS')
  344. if (btnItem.value === '删除') {
  345. this.tableData.splice(scope.$index, 1)
  346. }
  347. if (btnItem.value === '链接') {
  348. console.log(scope)
  349. this.$refs['LinkEdit'].open(scope.row.operationTarget || '', scope.$index)
  350. // console.log(btnItem, scope, this.columns)
  351. }
  352. if (btnItem.value === '标记') {
  353. this.$refs.markingIssues.modalShow = true
  354. this.$nextTick(() => {
  355. this.$refs.markingIssues.openModal({
  356. title: '标记为重点问题',
  357. scope,
  358. columns: this.columns
  359. })
  360. })
  361. }
  362. if (btnItem.value === '分析反馈') {
  363. console.log(293, btnItem, scope)
  364. this.$refs.Analysis.open(scope.row.analyticFeedback, scope.$index)
  365. }
  366. },
  367. // 另存为
  368. saveAsRow(command, row, item) {
  369. console.log(414)
  370. this.$store.commit('monthlyReportEdit/SAVE_AS', {
  371. tableHeaders: this.columns,
  372. tableRows: row,
  373. subReportid: command.id
  374. })
  375. },
  376. // 分析反馈问题更新
  377. upDataAnalysis({ rowIndex, analyticFeedback }) {
  378. if (this.pageType.search(/edit/) < 0) {
  379. console.log(rowIndex, analyticFeedback)
  380. this.feedbackIndex = rowIndex
  381. this.tableData[rowIndex].analyticFeedback = _.cloneDeep(
  382. analyticFeedback
  383. )
  384. this.setAnalyticFeedback()
  385. }
  386. },
  387. addTableData() {
  388. const item = {
  389. rowKey: uuid10()
  390. }
  391. this.columns.forEach((elm) => {
  392. item[elm.headerKey] = ''
  393. })
  394. this.tableData.push(item)
  395. this.$nextTick(() => {
  396. this.$store.commit('monthlyReportEdit/GET_ALL_OFFSETTOP')
  397. })
  398. this.editLine()
  399. },
  400. cascaderChange(value, headerKey, row) {
  401. console.log(value, headerKey, row)
  402. },
  403. // 添加插入
  404. setColumns(columns) {
  405. let newColumns = _.cloneDeep(columns)
  406. if (this.isExpand) {
  407. newColumns = [
  408. {
  409. dataType: 'Single',
  410. defaultValue: null,
  411. displayType: 'Cascader',
  412. name: '',
  413. align: 'left',
  414. type: 'expand',
  415. selectEnum: null,
  416. selectType: null,
  417. headerKey: uuid10(6)
  418. },
  419. ...newColumns
  420. ]
  421. newColumns[1].align = 'left'
  422. }
  423. newColumns.forEach((elm) => {
  424. if (!elm.align) {
  425. elm.align = 'center'
  426. }
  427. })
  428. // if (this.pageDate.status > 10 && this.tabsActive.indexOf('本月重点问题') < 0) {
  429. // 非编辑状态,并且不是·本月重点问题·,删除操作按钮
  430. if (this.pageDate && this.pageDate.status > 10 && !this.isExpand) {
  431. newColumns.splice(newColumns.length - 1, 1)
  432. }
  433. return newColumns
  434. },
  435. arraySpanMethod({ row, column, rowIndex, columnIndex }) {
  436. if (
  437. columnIndex === 0 &&
  438. this.tabsActive.indexOf('本月重点问题') > -1 &&
  439. this.pageType.search(/edit/) < 0
  440. ) {
  441. return [1, 2]
  442. } else if (columnIndex === 1) {
  443. return [0, 0]
  444. }
  445. },
  446. // 查看页面数据分析
  447. setAnalyticFeedback() {
  448. if (
  449. // this.pageType.search(/edit/) < 0 &&
  450. // this.pageDate.status > 10 &&
  451. // this.tabsActive.indexOf('本月重点问题') > -1
  452. this.isExpand
  453. ) {
  454. const tabPageData = reportDataBack(_.cloneDeep(this.tabPageData))
  455. let obj = null
  456. const run = (arr) => {
  457. arr.forEach((elm) => {
  458. if (elm.domKey === this.domKey) {
  459. console.log(elm)
  460. obj = _.cloneDeep(elm)
  461. }
  462. if (elm.content.length) {
  463. elm.content.forEach((item) => {
  464. if (item.domKey === this.domKey) {
  465. console.log(elm)
  466. obj = _.cloneDeep(elm)
  467. }
  468. })
  469. }
  470. if (elm.children.length) {
  471. run(elm.children)
  472. }
  473. })
  474. }
  475. run(tabPageData.children)
  476. const params = {
  477. reportId: this.$route.query.reportId,
  478. subReportName: this.subReportName,
  479. feedbackIndex: this.feedbackIndex,
  480. reportCatalog: obj
  481. }
  482. if (this.$route.query.pageType === 'readAll' && obj) {
  483. params.subReportName = `${obj.title}`
  484. }
  485. // console.log(params)
  486. // 提交数据
  487. if (obj && obj.content[0].tableRows.length) {
  488. updateAnalyticFeedback(params).then((res) => {
  489. if (res.code === 200) {
  490. this.analyticFeedback = res.data
  491. if (this.analyticFeedback.search(/yellow/) > -1) {
  492. this.analyticFeedback = this.analyticFeedback.replace(
  493. /yellow/g,
  494. '#FAAD14'
  495. )
  496. }
  497. if (this.analyticFeedback.search(/green/) > -1) {
  498. this.analyticFeedback = this.analyticFeedback.replace(
  499. /green/g,
  500. '#7ED321'
  501. )
  502. }
  503. // this.analyticFeedback = res.data
  504. }
  505. })
  506. }
  507. }
  508. },
  509. /**
  510. * 操作按钮是否显示隐藏
  511. * 1、首先判断 页面 为编辑页面时 展示所有按钮
  512. * 2、判读分析反馈是否已经提交,已经提交的话,不展示按钮
  513. * 3、再判断当前表格是否有责任人
  514. * 有责任人
  515. * 判断当前用户是否存在负责人中,存在展示按钮,不存在则不展示
  516. * 无责任人不展示按钮
  517. * @param row 表格行数据
  518. * @returns {boolean}
  519. */
  520. isShowButton(row) {
  521. if (
  522. this.pageType.search(/edit/) > -1 &&
  523. this.pageDate &&
  524. this.pageDate.status < 20
  525. ) {
  526. return true
  527. }
  528. if (row.analyticFeedback && row.analyticFeedback.isCommitted) {
  529. return false
  530. }
  531. // 默认所有情况都展示
  532. if (this.pageType) {
  533. return true
  534. }
  535. if (this.roleCode === 100 || this.roleCode === 0) return true
  536. if (this.pageDate.createBy === this.username) return true
  537. for (let i = 0; i < this.columns.length; i++) {
  538. const elm = this.columns[i]
  539. if (elm.name === '责任人') {
  540. if (!row[elm.headrKey]) return true
  541. return row[elm.headrKey].indexOf(this.username) > -1
  542. }
  543. }
  544. return false
  545. },
  546. setExpandRowKeys() {
  547. if (this.isExpand && this.tableData && this.tableData.length) {
  548. this.tableData.forEach((elm) => {
  549. if (
  550. elm.analyticFeedback &&
  551. elm.analyticFeedback.hasOwnProperty('isCommitted') &&
  552. elm.analyticFeedback.isCommitted &&
  553. this.expandRowKeys.indexOf(elm.rowKey) < 0
  554. ) {
  555. this.expandRowKeys.push(elm.rowKey)
  556. }
  557. })
  558. }
  559. },
  560. subReportInfoFilter(elm) {
  561. const { subReportId } = this.$route.query
  562. if (this.pageType === 'edit') {
  563. return `${elm.id}` !== `${subReportId}`
  564. }
  565. return this.tabsActive.indexOf(elm.id) < 0
  566. },
  567. // 修改链接
  568. linkEditChange({ rowIndex, addresLink }) {
  569. console.log(rowIndex, addresLink)
  570. this.tableData[rowIndex].operationTarget = addresLink
  571. },
  572. // 页面跳转
  573. goto(url) {
  574. console.log(url)
  575. url && window.open(url, '_blank')
  576. }
  577. }
  578. }
  579. </script>
  580. <style scoped lang="less">
  581. .edit-wrapper {
  582. .edit-cell {
  583. min-height: 23px;
  584. width: 100%;
  585. }
  586. }
  587. .plus-table-data {
  588. margin-top: 2px;
  589. }
  590. /deep/ .el-table__expand-column {
  591. border-right: 0;
  592. .el-icon-arrow-right:before {
  593. // 这是展开图标
  594. border: 1px solid rgba(0, 0, 0, 0.14901960784313725);
  595. }
  596. }
  597. /deep/ .el-table__expand-column .cell {
  598. .el-table__expand-icon {
  599. .el-icon-arrow-right:before {
  600. // 这是展开图标
  601. content: '\e6d9';
  602. //content: "\e6d8";
  603. }
  604. }
  605. .el-table__expand-icon--expanded {
  606. // 这是点击后的旋转角度
  607. //transform: rotate(180deg);
  608. transform: rotate(0deg);
  609. .el-icon-arrow-right:before {
  610. // 这是展开图标
  611. //content: "\e6d9";
  612. content: '\e6d8' !important;
  613. }
  614. }
  615. }
  616. /deep/ .svg-icon {
  617. width: 1em;
  618. height: 1em;
  619. }
  620. /deep/ .el-table__expanded-cell {
  621. padding-bottom: 0;
  622. padding-left: 60px;
  623. }
  624. /deep/ .el-button {
  625. font-weight: 400;
  626. }
  627. /deep/ .red {
  628. color: red;
  629. }
  630. /deep/ .green {
  631. color: green;
  632. }
  633. /deep/ .yellow {
  634. color: yellow;
  635. }
  636. </style>