law-progress-page.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. <template>
  2. <a-layout :class="$style.page">
  3. <a-layout-header :class="$style.header">
  4. <div :class="$style.headerTitle" :title="jfName" v-if="ifRouterView">{{ jfName }} </div>
  5. </a-layout-header>
  6. <a-layout style="padding: 20px 20px 20px 0">
  7. <a-layout-sider
  8. theme="light"
  9. width="200"
  10. :class="[
  11. fold ? $style.leftSiderHidden : null,
  12. $style.leftSider,
  13. { [$style.leftOver]: !fold },
  14. ]"
  15. style="padding: 0; background: #fff"
  16. >
  17. <div :class="$style.siderContent">
  18. <div :class="[$style.siderTitleDivFirst, { checked: checkedId === 'regist' }]">
  19. <div :class="$style.siderTitle" @click="setChecked('regist', djurl, 'regist')">
  20. <a-icon
  21. type="profile"
  22. :class="[checkedId === 'regist' ? 'checkedpro' : 'nocheckedpro']"
  23. />
  24. 纠纷登记
  25. </div>
  26. </div>
  27. </div>
  28. <div :class="$style.siderContent">
  29. <div :class="[$style.siderTitleDiv, { checkedpro: projectStage === 'progress' }]">
  30. <div :class="$style.siderTitle">
  31. <a-icon
  32. type="profile"
  33. :class="[projectStage === 'progress' ? 'checkedpro' : 'nocheckedpro']"
  34. />
  35. 纠纷进展
  36. <a-icon
  37. :type="'plus-circle'"
  38. @click="addProgress('')"
  39. :class="[
  40. $style.changeStatus,
  41. { checkedpro: projectStage === 'progress' },
  42. { nocheckedpro: projectStage !== 'progress' },
  43. ]"
  44. v-if="(projectStage === 'progress' && djuserflag) || deleteflagprogress"
  45. />
  46. </div>
  47. </div>
  48. <a-spin :spinning="spinning">
  49. <a-timeline :class="[spinning ? $style.timeline : '']">
  50. <div
  51. v-for="node in ProgressNodes"
  52. :key="node.id"
  53. :class="[$style.siderUlDiv, { checked: checkedId === node.id }]"
  54. @click="setChecked(node.id, node.nodeUrl, 'progress')"
  55. >
  56. <table style="border: none; width: 100%; border-bottom: 2px solid #e8e8e8">
  57. <tr>
  58. <td width="70%"
  59. ><a-timeline-item :class="$style.siderLi">{{
  60. node.nodeName
  61. }}</a-timeline-item></td
  62. >
  63. <td width="30%" style="text-align: right; padding-right: 15px">
  64. <a-icon
  65. type="delete"
  66. @click="deleteProgress(node)"
  67. :class="[$style.deletePro]"
  68. v-show="node.nodeUrl.indexOf('/draft/') > -1"
  69. /></td>
  70. </tr>
  71. <tr>
  72. <td colspan="2">
  73. <span :class="$style.siderLi">{{ node.creationTime }}</span>
  74. </td>
  75. </tr>
  76. </table>
  77. </div>
  78. </a-timeline>
  79. </a-spin>
  80. </div>
  81. <div :class="$style.siderContent" v-show="jaurl !== ''">
  82. <div :class="[$style.siderTitleDiv, { checked: checkedId === 'finish' }]">
  83. <div :class="$style.siderTitle" @click="setChecked('finish', jaurl, 'finish')">
  84. <a-icon type="profile" />
  85. 纠纷结案
  86. </div>
  87. </div>
  88. </div>
  89. </a-layout-sider>
  90. <a-layout-sider width="20" style="background: #f0f2f5">
  91. <a-button type="primary" :class="$style.fold" @click="foldClick">
  92. <a-icon :type="fold ? 'right' : 'left'" />
  93. </a-button>
  94. </a-layout-sider>
  95. <a-layout
  96. style="padding: 0px; background: #fff"
  97. :class="['sd-has-table', $style.lawprogress]"
  98. >
  99. <iframe
  100. v-show="ifRouterView"
  101. :src="frameSrc"
  102. frameborder="0"
  103. style="height: 100%"
  104. name="sdEasyflowIframe"
  105. :key="key"
  106. ></iframe>
  107. </a-layout>
  108. </a-layout>
  109. <a-modal
  110. :title="'纠纷进展阶段'"
  111. :mask-closable="false"
  112. :visible="visible"
  113. :width="800"
  114. :confirm-loading="confirmLoading"
  115. destroy-on-close
  116. cancel-text="取消"
  117. ok-text="确定"
  118. @ok="handleOk"
  119. @cancel="handleCancel"
  120. >
  121. <a-form-model :model="interForm" :label-col="{ span: 7 }" :wrapper-col="{ span: 15 }">
  122. <a-form-model-item label="阶段名称" required>
  123. <a-select v-model="interForm.stageField">
  124. <a-select-option v-for="item in stage" :key="item.code" :value="item.code">
  125. {{ item.name }}
  126. </a-select-option>
  127. </a-select>
  128. </a-form-model-item>
  129. </a-form-model>
  130. </a-modal>
  131. </a-layout>
  132. </template>
  133. <script>
  134. import { message, Modal } from 'ant-design-vue'
  135. import moment from 'moment'
  136. import LawService from '../law-service'
  137. import components from './_import-components/law-progress-page-import'
  138. import FlowcenterService from '@/flowcenter/flowcenter-service'
  139. import { getUserInfo } from '@/common/store-mixin'
  140. export default {
  141. name: 'LawProgressPage',
  142. metaInfo: {
  143. title: '纠纷作业',
  144. },
  145. components: {
  146. ...components,
  147. },
  148. mixins: [],
  149. provide() {
  150. return {
  151. reload: this.reload,
  152. }
  153. },
  154. data() {
  155. return {
  156. key: 0,
  157. djuserflag: false,
  158. visible: false,
  159. confirmLoading: false,
  160. stage: [],
  161. interForm: {
  162. stageField: '',
  163. },
  164. ifRouterView: true,
  165. fold: false,
  166. spinning: true, // 左侧节点加载状态
  167. jfId: '', // 纠纷Id
  168. overProjectId: '', // 结案Id
  169. projectStatus: '',
  170. checkedId: '', // 默认选中节点id
  171. // 案件进展
  172. ProgressNodes: [],
  173. projectStage: 'regist', // 纠纷登记1 进展2 结案3
  174. jfName: '', // 纠纷名称,
  175. currentUserType: [], // 当前登录人所在分案角色
  176. type: '',
  177. todoId: '',
  178. moduleId: '',
  179. formListId: '',
  180. Expressions: [],
  181. // id: '',
  182. flag: true,
  183. frameSrc: '',
  184. jfinfo: [],
  185. djurl: '',
  186. jaurl: '',
  187. refreshflag: true,
  188. jfjzid: '',
  189. deleteflagprogress: false,
  190. }
  191. },
  192. mounted() {
  193. this.projectStage = this.$route.query.zt
  194. this.jfId = this.$route.query.id
  195. const path = this.$route.fullPath.replace('/law-progress-page', '/sd-webflow')
  196. this.frameSrc = '#' + path
  197. LawService.getAlljfStage().then((res) => {
  198. const stage = []
  199. res.data.data.forEach((d) => {
  200. stage.push({
  201. name: d.STAGE_NAME,
  202. code: d.STAGE_CODE,
  203. businessTypeId: d.text0,
  204. })
  205. })
  206. this.stage = [...stage]
  207. this.initData(this.jfId)
  208. // djuserflag 当前人是否是案件登记人?
  209. const currentUser = getUserInfo().account
  210. LawService.getBeanByFormId(this.jfId, 'onl:5713a67680d34e73bd593844929e707a').then((res) => {
  211. const user = res.data.pageFormData.pageFieldInfos.find((o) => o.name === 'REGISTER_USER')
  212. if (user) {
  213. const userobj = JSON.parse(user.value)
  214. if (userobj[0].code === currentUser) {
  215. this.djuserflag = true
  216. }
  217. }
  218. })
  219. })
  220. // $(window).unbind('beforeunload')
  221. window.onbeforeunload = null
  222. },
  223. destroyed() {
  224. window.removeEventListener('hasLeaderAuthority', this.hasLeaderAuthority)
  225. // window.removeEventListener('unload', this.onPageUnload)
  226. },
  227. methods: {
  228. fnclose() {
  229. // href="javascript:window.opener=null;window.open('','_self');window.close();"
  230. window.opener = null
  231. window.open('', '_self')
  232. window.close()
  233. },
  234. onPageUnload(res) {
  235. if (res.data.url !== undefined) {
  236. const fullPath = res.data.url
  237. let zt = '2'
  238. if (res.data.type === 'jfFinish') {
  239. zt = '3'
  240. }
  241. // if (res.data.type.indexOf('close') > -1) {
  242. LawService.getProgressData(this.jfId).then((res1) => {
  243. const progress = []
  244. if (res1.data.length > 1) {
  245. if (res1.data[1].children && res1.data[1].children.length > 0) {
  246. res1.data[1].children.forEach((p) => {
  247. const timeStamp = p.props.creationTime
  248. const date = new Date(timeStamp * 1)
  249. progress.push({
  250. id: p.id,
  251. nodeUrl: p.props.detailUrl + '/' + p.props.detailInstid,
  252. nodeName: p.props.stepName,
  253. stepStatus: p.props.stepStatus,
  254. creationTime: moment(date).format('YYYY-MM-DD'),
  255. instId: p.props.detailInstid,
  256. })
  257. })
  258. }
  259. this.jfjzid = res1.data[1].id
  260. this.ProgressNodes = [...progress]
  261. if (res1.data.length > 1 && res1.data.at(-1).props.stepType === 'finish') {
  262. this.jaurl =
  263. res1.data.at(-1).props.detailUrl + '/' + res1.data.at(-1).props.detailInstid
  264. }
  265. let url = ''
  266. if (res.data.type.indexOf('jfFinish') > -1) {
  267. this.projectStage = 'finish'
  268. this.checkedId = 'finish'
  269. url = this.jaurl
  270. } else {
  271. this.projectStage = 'progress'
  272. this.checkedId = progress[progress.length - 1].id
  273. url = progress[progress.length - 1].nodeUrl
  274. }
  275. if (url.indexOf('&id') === -1) {
  276. url = url + '?zt=' + this.projectStage + '&id=' + this.jfId
  277. }
  278. this.frameSrc = url + '&t=' + Math.random()
  279. url = url.replace('/sd-webflow', '/law-progress-page')
  280. window.location.href = url + '&t=' + Math.random()
  281. this.key = this.key + 1
  282. this.reload()
  283. }
  284. })
  285. // } else {
  286. // let url = fullPath.replace('/sd-webflow', '/law-progress-page')
  287. // if (url.indexOf('&id') === -1) {
  288. // url = url + '?zt=' + zt + '&id=' + this.jfId
  289. // }
  290. // fullPath = url
  291. // window.location.href = fullPath // 改为新窗口打开之后,直接本窗口跳转,防止系统内打开多余页签
  292. // if (zt === 'progress') {
  293. // const obj = this.ProgressNodes.find((i) => i.id === '0')
  294. // obj.nodeUrl = res.data.url
  295. // const urls = res.data.url.split('/')
  296. // obj.instId = urls[urls.length - 1]
  297. // obj.id = obj.instId
  298. // this.checkedId = obj.id
  299. // } else if (zt === 'finish') {
  300. // this.jaurl = res.data.url
  301. // }
  302. // }
  303. }
  304. },
  305. deleteProgress(node) {
  306. if (node.instId === '0') {
  307. // Modal.warning({
  308. // title: '提示',
  309. // content: '当前页面还未存在后端,无需删除',
  310. // })
  311. this.ProgressNodes.pop()
  312. let url = ''
  313. if (this.ProgressNodes.length > 0) {
  314. this.frameSrc = this.ProgressNodes[this.ProgressNodes.length - 1].nodeUrl
  315. this.projectStage = 'progress'
  316. this.checkedId = this.ProgressNodes[this.ProgressNodes.length - 1].id
  317. url = this.ProgressNodes[this.ProgressNodes.length - 1].nodeUrl
  318. } else {
  319. this.frameSrc = this.djurl
  320. this.projectStage = 'progress'
  321. url = this.djurl
  322. this.deleteflagprogress = true
  323. }
  324. url =
  325. url.replace('sd-webflow', 'law-progress-page') +
  326. '?zt=' +
  327. this.projectStage +
  328. '&id=' +
  329. this.jfId
  330. window.location.href = url
  331. } else {
  332. const instIds = []
  333. instIds.push(node.instId)
  334. Modal.confirm({
  335. title: '你确定删除这项内容吗?',
  336. content: '删除这条数据后,就无法恢复初始的状态。',
  337. okText: '删除',
  338. okType: 'danger',
  339. onOk: () => {
  340. // this.loading = true
  341. const params = {
  342. flowCallbackBeanName: 'formBeanCleanerCallBack',
  343. processInstanceIds: instIds.join(','),
  344. }
  345. FlowcenterService.fnDarftsDelete(params)
  346. .then((res) => {
  347. if (res.status === 200) {
  348. message.success('删除成功')
  349. this.ProgressNodes.pop()
  350. let url = ''
  351. if (this.ProgressNodes.length > 0) {
  352. this.frameSrc = this.ProgressNodes[this.ProgressNodes.length - 1].nodeUrl
  353. this.projectStage = 'progress'
  354. this.checkedId = this.ProgressNodes[this.ProgressNodes.length - 1].id
  355. url = this.ProgressNodes[this.ProgressNodes.length - 1].nodeUrl
  356. } else {
  357. this.frameSrc = this.djurl
  358. this.projectStage = 'regist'
  359. this.checkedId = 'regist'
  360. url = this.djurl
  361. this.deleteflagprogress = true
  362. }
  363. url =
  364. url.replace('sd-webflow', 'law-progress-page') +
  365. '?zt=' +
  366. this.projectStage +
  367. '&id=' +
  368. this.jfId
  369. window.location.href = url
  370. // window.location.reload()
  371. } else {
  372. message.error('删除失败,请联系管理员')
  373. }
  374. })
  375. .catch((e) => {
  376. message.error('删除失败,请联系管理员')
  377. })
  378. },
  379. })
  380. }
  381. },
  382. addProgress() {
  383. // 判断当前纠纷ID下无正在流转的纠纷进展详情
  384. const obj = this.ProgressNodes.find((i) => i.stepStatus === '0')
  385. if (obj) {
  386. Modal.warning({
  387. title: '提示',
  388. content: '当前还存在未流程办结的纠纷进展,请流程办结后再新建',
  389. })
  390. return false
  391. } else {
  392. this.interForm.stageField = ''
  393. this.visible = true
  394. }
  395. },
  396. handleOk() {
  397. if (this.interForm.stageField === '') {
  398. Modal.warning({
  399. title: '提示',
  400. content: '请选择阶段名称',
  401. })
  402. } else {
  403. this.visible = false
  404. this.projectStage = 'progress'
  405. const obj = this.stage.find((o) => o.code === this.interForm.stageField)
  406. let businessTypeId = obj.businessTypeId.toString()
  407. LawService.getTypeBusId(businessTypeId).then((res) => {
  408. businessTypeId = res.data[0].id
  409. this.frameSrc =
  410. '#/sd-webflow/pages/draft/0?businessTypeId=' +
  411. businessTypeId +
  412. '&extParams=%7B%22moduleId%22%3A%22271792223254282240%22%7D&zt=2&id=' +
  413. this.jfId +
  414. '&stage=' +
  415. this.interForm.stageField +
  416. '&parentid=' +
  417. this.jfjzid
  418. const stage = this.interForm.stageField
  419. const sobj = this.stage.find((i) => i.code === stage)
  420. this.ProgressNodes.push({
  421. id: '0',
  422. nodeUrl: this.frameSrc,
  423. nodeName: sobj.name,
  424. stepStatus: '0',
  425. creationTime: moment().format('YYYY-MM-DD'),
  426. instId: '0',
  427. })
  428. this.reload()
  429. })
  430. this.checkedId = '0'
  431. }
  432. },
  433. handleCancel() {
  434. this.visible = false
  435. },
  436. // 初始化项目信息
  437. initData(jfId) {
  438. if (jfId) {
  439. // 获取项目信息
  440. LawService.getProgressData(jfId).then((res) => {
  441. this.jfName = res.data[0].text
  442. this.jfinfo = res.data
  443. const progress = []
  444. this.djurl = res.data[0].props.detailUrl + '/' + res.data[0].props.detailInstid
  445. if (res.data.length > 1) {
  446. if (res.data[1].children && res.data[1].children.length > 0) {
  447. res.data[1].children.forEach((p) => {
  448. const timeStamp = p.props.creationTime
  449. const date = new Date(timeStamp * 1)
  450. progress.push({
  451. id: p.id,
  452. nodeUrl: p.props.detailUrl + '/' + p.props.detailInstid,
  453. nodeName: p.props.stepName,
  454. stepStatus: p.props.stepStatus,
  455. creationTime: moment(date).format('YYYY-MM-DD'),
  456. instId: p.props.detailInstid,
  457. })
  458. })
  459. }
  460. this.jfjzid = res.data[1].id
  461. this.ProgressNodes = [...progress]
  462. if (res.data.length > 1 && res.data.at(-1).props.stepType === 'finish') {
  463. this.jaurl =
  464. res.data.at(-1).props.detailUrl + '/' + res.data.at(-1).props.detailInstid
  465. }
  466. }
  467. this.checkedId = this.projectStage
  468. if (this.projectStage === 'progress') {
  469. let obj = null
  470. if (progress.length > 0) {
  471. obj = progress.find((i) => this.frameSrc.indexOf(i.nodeUrl) > -1)
  472. }
  473. if (obj) {
  474. this.checkedId = obj.id
  475. } else {
  476. if (this.$route.params) {
  477. if (this.$route.params.id && this.$route.params.id === '0') {
  478. // 如果打开新建页面则在对象中增加新节点
  479. const stage = this.$route.query.stage
  480. const sobj = this.stage.find((i) => i.code === stage)
  481. this.ProgressNodes.push({
  482. id: '0',
  483. nodeUrl: this.frameSrc,
  484. nodeName: sobj.name,
  485. stepStatus: '0',
  486. creationTime: moment().format('YYYY-MM-DD'),
  487. instId: '0',
  488. })
  489. this.checkedId = '0'
  490. }
  491. }
  492. }
  493. } else if (this.projectStage === 'finish') {
  494. if (this.$route.params) {
  495. if (this.$route.params.id && this.$route.params.id === '0') {
  496. // 如果打开新建页面则在对象中增加新节点
  497. this.jaurl = this.frameSrc
  498. }
  499. }
  500. }
  501. this.spinning = !this.spinning
  502. window.addEventListener('message', this.onPageUnload)
  503. })
  504. }
  505. },
  506. reload() {
  507. this.ifRouterView = false
  508. this.$nextTick(() => {
  509. this.ifRouterView = true
  510. })
  511. },
  512. foldClick() {
  513. this.fold = !this.fold
  514. },
  515. setChecked(val, url, projectStage) {
  516. this.checkedId = val
  517. if (url.indexOf('?') > -1) {
  518. if (url.indexOf('&id') === -1) {
  519. this.frameSrc = url + '&zt=' + projectStage + '&id=' + this.jfId
  520. } else {
  521. this.frameSrc = url
  522. }
  523. } else {
  524. this.frameSrc = url + '?zt=' + projectStage + '&id=' + this.jfId
  525. }
  526. this.reload()
  527. },
  528. },
  529. }
  530. </script>
  531. <style module lang="scss">
  532. @use '@/common/design' as *;
  533. .fold {
  534. position: absolute;
  535. top: calc(50% - 30px);
  536. right: 5px;
  537. z-index: 2;
  538. width: 15px;
  539. height: 75px;
  540. padding: 0;
  541. border-radius: 0 10px 10px 0;
  542. }
  543. .audit-table {
  544. :global(.sd-readonly) {
  545. margin-bottom: 24px;
  546. }
  547. }
  548. .close-btn {
  549. font-size: 15px;
  550. color: #ffffff;
  551. position: absolute;
  552. right: 15px;
  553. top: 25px;
  554. cursor: pointer;
  555. }
  556. $link-icon-size: 22px;
  557. $line-height-theme: 66px;
  558. $theme-check: #fff;
  559. $icon-size: 15px;
  560. .page {
  561. // 表格样式
  562. :global(div.sd-has-table) {
  563. :global(.ant-table-wrapper) {
  564. margin-top: -8px;
  565. }
  566. :global(.ant-card-body) {
  567. padding: 0;
  568. :global(.ant-table-wrapper) {
  569. margin-top: -8px;
  570. }
  571. }
  572. }
  573. :global(.sd-has-table) {
  574. :global(.ant-table-wrapper) {
  575. margin-top: -8px;
  576. }
  577. }
  578. height: 100%;
  579. .left-sider {
  580. overflow: hidden;
  581. white-space: nowrap;
  582. :global(.ant-layout-sider-children) {
  583. overflow: auto;
  584. }
  585. }
  586. .left-sider-hidden {
  587. flex: 0 0 0 !important;
  588. max-width: 0 !important;
  589. min-width: 0 !important;
  590. width: 0 !important;
  591. padding: 0px;
  592. background: rgb(255, 255, 255);
  593. :global(.ant-layout-sider-children) {
  594. overflow: hidden;
  595. }
  596. }
  597. .left-over {
  598. margin-left: 20px;
  599. }
  600. .trigger {
  601. display: inline-block;
  602. padding: 0 15px;
  603. vertical-align: top;
  604. cursor: pointer;
  605. transition: color 0.3s;
  606. &:hover {
  607. color: $text-color-inverse;
  608. }
  609. }
  610. aside {
  611. overflow: auto;
  612. }
  613. :global(.sd-frame-main) {
  614. height: 100%;
  615. padding: $padding-lg;
  616. overflow: auto;
  617. }
  618. :global(sd-readonly) {
  619. margin-bottom: 24px;
  620. }
  621. }
  622. .title {
  623. display: inline-block;
  624. margin-left: -35px;
  625. font-weight: 600;
  626. line-height: inherit;
  627. text-align: center;
  628. vertical-align: top;
  629. > i {
  630. // 固定大小的logo
  631. /* stylelint-disable-next-line */
  632. font-size: 20px;
  633. transform: scale(10);
  634. }
  635. }
  636. // 主内容区的Card白色背景要占满
  637. :global .sd-frame-main > .ant-card {
  638. min-height: 100%;
  639. }
  640. .header {
  641. background: linear-gradient(to right, #3f9bff, #0e7df6);
  642. height: 48px;
  643. line-height: 48px;
  644. padding: 0 20px 0 20px;
  645. :global .ant-menu {
  646. float: right;
  647. }
  648. :global(.ant-menu-item-selected) {
  649. color: #ffffff;
  650. background: #1366c1;
  651. border-bottom: 0 !important;
  652. top: 0;
  653. }
  654. :global(.ant-menu-item) {
  655. border-bottom: 2px solid #ffffff;
  656. border-bottom: 0 !important;
  657. top: 0;
  658. }
  659. :global(.ant-menu-item-active) {
  660. color: #ffffff !important;
  661. background: #1366c1 !important;
  662. border-bottom: 0 !important;
  663. top: 0;
  664. }
  665. .header-title {
  666. color: #ffffff;
  667. font-size: 25px;
  668. font-weight: 400;
  669. display: inline-block;
  670. width: 40%;
  671. overflow: hidden;
  672. text-overflow: ellipsis;
  673. white-space: nowrap;
  674. }
  675. }
  676. .header > div:last-child {
  677. width: calc(100% - 200px);
  678. }
  679. .links {
  680. display: flex;
  681. align-items: center;
  682. margin: 0 $link-icon-size / 2;
  683. li:global(.ant-menu-item) {
  684. padding: 0;
  685. }
  686. i:global(.anticon) {
  687. padding: 0 $link-icon-size / 2;
  688. margin: 0;
  689. font-size: $link-icon-size;
  690. line-height: $layout-header-height;
  691. vertical-align: middle;
  692. &:hover {
  693. // 悬浮的颜色,与主题无关
  694. /* stylelint-disable-next-line */
  695. background-color: rgba(0, 0, 0, 0.2);
  696. }
  697. }
  698. }
  699. .tools {
  700. display: flex;
  701. float: right;
  702. }
  703. .headerbadge {
  704. bottom: $line-height-theme / 6;
  705. left: -$link-icon-size / 2 - 5;
  706. }
  707. .sider-content {
  708. padding: 0 0;
  709. .sider-title {
  710. position: relative;
  711. margin-left: 23px;
  712. i {
  713. color: #1890ff;
  714. position: absolute;
  715. font-size: 18px;
  716. left: -27px;
  717. top: 3px;
  718. }
  719. font-weight: bold;
  720. }
  721. .sider-li {
  722. :global(.ant-timeline-item-content) {
  723. margin: 0 0 0 15px;
  724. }
  725. :global(.ant-timeline-item-head-blue) {
  726. color: #9f9f9f;
  727. border-color: #9f9f9f;
  728. background-color: #9f9f9f;
  729. top: 4px;
  730. left: 3px;
  731. width: 3px;
  732. height: 3px;
  733. }
  734. :global(.ant-timeline-item-tail) {
  735. height: calc(100% - -18px);
  736. border-left: 2px solid #f5f5f5;
  737. display: none;
  738. }
  739. }
  740. .sider-title-div-first {
  741. padding: 10px 0 10px 20px;
  742. // margin-bottom: 10px;
  743. // border-bottom: 2px solid #e8e8e8;
  744. }
  745. .sider-title-div {
  746. padding: 10px 0 10px 20px;
  747. margin-bottom: 10px;
  748. border-top: 2px solid #e8e8e8;
  749. border-bottom: 2px solid #e8e8e8;
  750. }
  751. ul {
  752. margin-left: 0;
  753. padding-bottom: 5px;
  754. }
  755. .sider-ul-div {
  756. padding: 13px 0px 0px 12px;
  757. width: 100%;
  758. margin: 3px auto;
  759. border-radius: 0px;
  760. cursor: pointer;
  761. :global(.ant-timeline-item) {
  762. padding: 0;
  763. margin-left: 3px;
  764. }
  765. }
  766. .node-readonly {
  767. cursor: normal;
  768. color: #b6b6b6;
  769. }
  770. :global(.checked) {
  771. background: linear-gradient(to right, #13c2c2, #2db7f5);
  772. color: #fff;
  773. :global(.ant-timeline-item-head-blue) {
  774. background-color: #ffffff;
  775. border-color: #ffffff !important;
  776. top: 4px;
  777. left: 3px;
  778. width: 3px;
  779. height: 3px;
  780. }
  781. }
  782. :global(.checkedpro) {
  783. color: #2db7f5;
  784. }
  785. :global(.nocheckdpro) {
  786. color: #7c7c7c;
  787. }
  788. :global(.ant-timeline-item-last .ant-timeline-item-tail) {
  789. display: none;
  790. }
  791. .timeline {
  792. min-height: 150px;
  793. }
  794. }
  795. :global(.ant-tabs) {
  796. overflow-y: auto;
  797. }
  798. .rightfrm {
  799. height: 100%;
  800. width: 100%;
  801. }
  802. .change-status {
  803. margin-left: 150px;
  804. font-size: 20px !important;
  805. color: #28baeb !important;
  806. cursor: pointer;
  807. }
  808. .lawprogress {
  809. :global(.skeleton-box_sd-webflow-panel_webflow) {
  810. width: auto;
  811. height: auto;
  812. }
  813. :global(.panel_sd-webflow-panel_webflow .skeleton-box_sd-webflow-panel_webflow) {
  814. height: 90%;
  815. width: 80%;
  816. }
  817. }
  818. .deletePro {
  819. color: #1890ff;
  820. font-size: 20px;
  821. }
  822. .lawprogress {
  823. position: relative;
  824. // :global .ant-layout > .ant-layout-header {
  825. // :global .titlepoint_sd-header_common {
  826. // display: none;
  827. // }
  828. // }
  829. :global(.webflow_sd-webflow_webflow > .ant-layout-header) {
  830. :global .titlepoint_sd-header_common {
  831. display: none;
  832. }
  833. }
  834. :global(.panel_sd-webflow-panel_webflow > .ant-layout-header) {
  835. position: absolute;
  836. :global .titlepoint_sd-header_common {
  837. position: absolute !important;
  838. }
  839. }
  840. // :global(.titlepoint_sd-header_common) {
  841. // position: absolute !important;
  842. // }
  843. }
  844. </style>