auditManageList.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. <template>
  2. <rx-layout>
  3. <div slot="center" style>
  4. <rx-fit>
  5. <div slot="toolheader" border="false" foldbtn="false">
  6. <breadcrumb firstLevel="知识仓库管理" lastLevel="审核管理" />
  7. <div class="mainContent">
  8. <div class="body" :style="{'padding-right': $store.state.appSetting.collapsed ? '0px' : '20px' }">
  9. <div class="content">
  10. <a-form ref="auditFrom" layout="inline" style="display:flex;flex-wrap:wrap;">
  11. <a-form-item
  12. class="form-item-style"
  13. label="知识标题"
  14. name="name">
  15. <a-input class="set-input" v-model="queryParam.titles" placeholder="请输入"/>
  16. </a-form-item>
  17. <a-form-item
  18. class="form-item-style"
  19. label="创建时间"
  20. name="createTime">
  21. <a-range-picker v-model="createTime"
  22. class="set-range-picker"
  23. separator="→"
  24. format="YYYY/MM/DD"
  25. valueFormat="YYYY-MM-DD"
  26. @change="handleClearTimeChange">
  27. </a-range-picker>
  28. </a-form-item>
  29. <a-form-item
  30. class="form-item-style"
  31. label="审核状态"
  32. name="online">
  33. <a-select class="set-input" v-model="queryParam.approvalStatus" placeholder="请选择" allowClear :getPopupContainer="triggerNode => { return triggerNode.parentNode }">
  34. <a-select-option v-for="(item,index) in approvalStatusList" :key="index" :value="item.value">
  35. {{item.label}}
  36. </a-select-option>
  37. </a-select>
  38. </a-form-item>
  39. <a-form-item
  40. class="form-item-style"
  41. label="知识类别"
  42. name="online">
  43. <a-select class="set-input" v-model="queryParam.type" placeholder="请选择" allowClear :getPopupContainer="triggerNode => { return triggerNode.parentNode }">
  44. <a-select-option v-for="(item,index) in knowledgeList" :key="index" :value="item.value">
  45. {{item.label}}
  46. </a-select-option>
  47. </a-select>
  48. </a-form-item>
  49. <a-form-item
  50. class="form-item-style"
  51. label="所属分类"
  52. name="categoryIds">
  53. <a-cascader v-model="categoryIds"
  54. class="set-input scroll-ckunk"
  55. :popupStyle="{
  56. maxWidth: widthVar + 'px',
  57. 'overflow-x': 'auto'
  58. }"
  59. :getPopupContainer="triggerNode => { return triggerNode.parentNode }"
  60. :options="classifyList"
  61. :fieldNames="{ label: 'name', value: 'pkId', children: 'children' }"
  62. placeholder="请选择"
  63. changeOnSelect
  64. @change="handleClassifyChange" />
  65. </a-form-item>
  66. <a-form-item
  67. class="form-item-style"
  68. label="作者"
  69. name="creator">
  70. <a-input class="set-input" v-model="queryParam.author" placeholder="请输入" />
  71. </a-form-item>
  72. <div style="display:flex;justify-content:center;margin-top: 8px;">
  73. <a-button @click="handleResetClick(true)">重置</a-button>
  74. <a-button type="primary" @click="handleSearchClick">查询</a-button>
  75. </div>
  76. <!-- <div style="width:80%;;display:flex;flex-wrap:wrap;">
  77. <div style="display:flex;flex-wrap:wrap;">
  78. <a-form-item
  79. style="width:320px;margin: 5px 40px 5px 0;"
  80. label="知识标题"
  81. name="name">
  82. <a-input v-model="queryParam.titles" placeholder="请输入"/>
  83. </a-form-item>
  84. <a-form-item
  85. style="width:320px;margin: 5px 40px 5px 0;"
  86. label="创建时间"
  87. name="createTime">
  88. <a-range-picker v-model="createTime"
  89. separator="→"
  90. format="YYYY/MM/DD"
  91. valueFormat="YYYY-MM-DD"
  92. @change="handleClearTimeChange">
  93. <a-icon v-if="$store.state.appSetting.collapsed" slot="suffixIcon" type="calendar" />
  94. </a-range-picker>
  95. </a-form-item>
  96. <a-form-item
  97. style="width:320px;margin: 5px 40px 5px 0;"
  98. label="审核状态"
  99. name="online">
  100. <a-select v-model="queryParam.approvalStatus" placeholder="请选择" allowClear>
  101. <a-select-option v-for="(item,index) in approvalStatusList" :key="index" :value="item.value">
  102. {{item.label}}
  103. </a-select-option>
  104. </a-select>
  105. </a-form-item>
  106. </div>
  107. <div style="display:flex;flex-wrap:wrap;" v-if="extend" :class="{'show-other': extend}">
  108. <a-form-item
  109. style="width:320px;margin: 5px 40px 5px 0;"
  110. label="知识类别"
  111. name="online">
  112. <a-select v-model="queryParam.type" placeholder="请选择" allowClear>
  113. <a-select-option v-for="(item,index) in knowledgeList" :key="index" :value="item.value">
  114. {{item.label}}
  115. </a-select-option>
  116. </a-select>
  117. </a-form-item>
  118. <a-form-item
  119. style="width:320px;margin: 5px 40px 5px 0;"
  120. label="所属分类"
  121. name="categoryIds">
  122. <a-cascader v-model="categoryIds"
  123. :options="classifyList"
  124. :fieldNames="{ label: 'name', value: 'pkId', children: 'children' }"
  125. placeholder="请选择"
  126. changeOnSelect
  127. @change="handleClassifyChange" />
  128. </a-form-item>
  129. <a-form-item
  130. style="width:320px;margin: 5px 40px 5px 0;"
  131. label="作者"
  132. name="creator">
  133. <a-input v-model="queryParam.author" placeholder="请输入" />
  134. </a-form-item>
  135. </div>
  136. </div>
  137. <div style="width:20%;display:flex;justify-content:flex-end;align-content: flex-start;flex-wrap:wrap;">
  138. <div style="display:flex;justify-content:center;margin-top: 8px;">
  139. <a-button @click="handleResetClick">重置</a-button>
  140. <a-button type="primary" @click="handleSearchClick">查询</a-button>
  141. </div>
  142. <div style="margin-top: 8px;">
  143. <a-button type="link" @click="extend = !extend">
  144. <template v-if="!extend">
  145. <div>
  146. 展开
  147. <a-icon type="down" />
  148. </div>
  149. </template>
  150. <template v-else>
  151. <div>
  152. 收起
  153. <a-icon type="up" />
  154. </div>
  155. </template>
  156. </a-button>
  157. </div>
  158. </div> -->
  159. </a-form>
  160. <rx-button alias="processEdit" :butn-icon="'false'" @click="$router.push('/knowledge/auditProcessMaintain')">维护审核流程</rx-button>
  161. <rx-button alias="processBatch" :butn-icon="'false'" @click="handldAuditClick('batch')">批量审核</rx-button>
  162. </div>
  163. </div>
  164. </div>
  165. </div>
  166. <rx-grid
  167. ref="auditRef"
  168. class="table-style"
  169. style="background: #fff"
  170. :columns="columns"
  171. :allowRowSelect="true"
  172. :multiSelect="true"
  173. :url="urls"
  174. :queryParam="queryParam"
  175. data-field="result.data"
  176. :defaultPageSize="10"
  177. :heightAuto="true"
  178. :pageSizeOptions="['10','20','30','40']"
  179. idField="pkId"
  180. >
  181. <template slot="pkId" slot-scope="{text,record}">
  182. <div>{{ $route.query.showUnchecked ? record.approvalsFirst.pkId : text }}</div>
  183. </template>
  184. <template slot="titles" slot-scope="{text}">
  185. <div style="white-space: pre-line">{{ text }}</div>
  186. </template>
  187. <template slot="type" slot-scope="{text}">
  188. <div>{{ text == 1 ? '文档知识' : '维基知识' }}</div>
  189. </template>
  190. <template slot="knowledgeCategoryAdminVo" slot-scope="{text}">
  191. <div style="white-space: pre-line">{{ getCategory(text) }}</div>
  192. </template>
  193. <template slot="approvalStatus" slot-scope="{text}">
  194. <div>{{ getApprovalStatus(text) }}</div>
  195. </template>
  196. <template slot="action" slot-scope="{text,record}">
  197. <!-- isAudit 0能审核 1不能审核 -->
  198. <template v-if="($route.query.showUnchecked ? true : record.isAudit == 0) && (record.approvalStatus == 1 || record.approvalStatus == 3)" >
  199. <!-- <template v-if="(record.approvalStatus == 1 || record.approvalStatus == 3) && record.approverId == $store.state.appSetting.user.userId" > -->
  200. <rx-button class="clearBtn" alias="processDo" :butn-icon="'none'" @click="handleJumpUpdateClick(record)">审核</rx-button>
  201. <rx-button class="clearBtn" alias="processFast" :butn-icon="'none'" @click="handldAuditClick('fast',record)">快速审核</rx-button>
  202. </template>
  203. <template v-else>
  204. <rx-button class="clearBtn" alias="processLook" :butn-icon="'none'" @click="handleJumpUpdateClick(record,true)">查看</rx-button>
  205. </template>
  206. </template>
  207. </rx-grid>
  208. </rx-fit>
  209. <a-modal v-model="auditShow"
  210. :title="modalTitle"
  211. centered
  212. okText="保存"
  213. @ok="handleOk"
  214. :confirmLoading="saveLoading">
  215. <a-form ref="labelRef" :model="auditForm" layout="inline">
  216. <a-form-item prop="result">
  217. <a-radio-group v-model="auditForm.result">
  218. <a-radio value="1">通过</a-radio>
  219. <a-radio value="0">驳回</a-radio>
  220. </a-radio-group>
  221. </a-form-item>
  222. <a-form-item prop="remark" style="margin-top:10px;">
  223. <a-input v-model="auditForm.remark" type="textarea" :autosize="{minRows: 3, maxRows: 6}" :maxLength="200" placeholder="请输入审批意见" />
  224. </a-form-item>
  225. <a-form-item v-if="isShowOrg && isDocument" label="权限:" prop="actualApproverName" style="margin-top:10px;">
  226. <div @click="showAuditFlag = true">
  227. <a-select v-model="authName" :showArrow="false" :open="false" placeholder="请选择组织部门、职系、职称等授予知识访问权限"></a-select>
  228. </div>
  229. </a-form-item>
  230. </a-form>
  231. </a-modal>
  232. <a-modal v-model="showAuditFlag"
  233. width="800"
  234. title="选择组织架构"
  235. centered
  236. okText="保存"
  237. @ok="handleSaveOk">
  238. <org-people style="width:800px;height:65vh;"
  239. :isOnlyOrg="false"
  240. @transCheckedTarget="transCheckedTarget"
  241. @returnSequencesInfo="handleSequencesChange"
  242. @returnGradeInfo="handleGradeChange" ></org-people>
  243. </a-modal>
  244. </div>
  245. </rx-layout>
  246. </template>
  247. <script>
  248. import breadcrumb from '../components/breadcrumb'
  249. import orgPeople from './components/orgPeople'
  250. import api from '@/api/knowledge/audit'
  251. import classApi from '@/api/knowledge/classify'
  252. import { getCategory } from '../aJs/getClassifyTree'
  253. import mixin from "../aMixin/mixin"
  254. import initMixin from "../aMixin/initMixin"
  255. const auditMixin = new mixin('audit')
  256. export default {
  257. name: 'auditManageList',
  258. components: {
  259. breadcrumb,
  260. orgPeople
  261. },
  262. mixins: [ initMixin, auditMixin ],
  263. data() {
  264. return {
  265. api,
  266. classApi,
  267. saveLoading: false,
  268. urls: '',
  269. modalTitle: '快速审核',
  270. extend: true,
  271. queryParam: {
  272. titles: '',
  273. beginTime: '',
  274. endTime: '',
  275. approvalStatus: undefined,
  276. type: undefined,
  277. categoryId: '',
  278. author: '',
  279. },
  280. createTime: [],
  281. categoryIds: [],
  282. knowledgeList: [
  283. {value: null, label: '全部'},
  284. {value: '1', label: '文档知识'},
  285. {value: '2', label: '维基知识'}
  286. ],
  287. approvalStatusList: [
  288. {value: '1', label: '待节点审核'},
  289. {value: '2', label: '节点驳回'},
  290. {value: '3', label: '待最终审核'},
  291. {value: '4', label: '最终驳回'},
  292. {value: '5', label: '最终通过'},
  293. ],
  294. columns: [
  295. {
  296. title: 'ID',
  297. dataIndex: 'pkId',
  298. align: 'center',
  299. scopedSlots: {customRender: 'pkId'}
  300. },
  301. {
  302. title: '知识标题',
  303. dataIndex: 'titles',
  304. align: 'center',
  305. scopedSlots: {customRender: 'titles'}
  306. },
  307. {
  308. title: '知识类型',
  309. dataIndex: 'type',
  310. align: 'center',
  311. width: 100,
  312. scopedSlots: {customRender: 'type'}
  313. },
  314. {
  315. title: '所属分类',
  316. dataIndex: 'knowledgeCategoryAdminVo',
  317. align: 'center',
  318. width: 150,
  319. scopedSlots: {customRender: 'knowledgeCategoryAdminVo'}
  320. },
  321. {
  322. title: '作者',
  323. dataIndex: 'author',
  324. align: 'center',
  325. width: 100
  326. },
  327. {
  328. title: '创建时间',
  329. dataIndex: 'createTime',
  330. align: 'center',
  331. },
  332. {
  333. title: '状态',
  334. dataIndex: 'approvalStatus',
  335. align: 'center',
  336. scopedSlots: {customRender: 'approvalStatus'},
  337. width: 100
  338. },
  339. {
  340. title: '审核人',
  341. dataIndex: 'approverName',
  342. align: 'center',
  343. width: 100
  344. },
  345. {
  346. title: '最后一次审核时间',
  347. dataIndex: 'approvalTime',
  348. align: 'center',
  349. },
  350. {
  351. title: '操作',
  352. dataIndex: 'action',
  353. // align: 'center',
  354. scopedSlots: {customRender: 'action'},
  355. width: 140
  356. }
  357. ],
  358. options: [
  359. {
  360. value: 'zhejiang',
  361. label: 'Zhejiang',
  362. children: [
  363. {
  364. value: 'hangzhou',
  365. label: 'Hangzhou',
  366. },
  367. ],
  368. },
  369. {
  370. value: 'jiangsu',
  371. label: 'Jiangsu',
  372. children: [
  373. {
  374. value: 'nanjing',
  375. label: 'Nanjing',
  376. },
  377. ],
  378. }
  379. ],
  380. auditShow: false,
  381. showAuditFlag: false,
  382. // 要审核的数据
  383. willAuditData: [],
  384. auditForm: {
  385. pkId: '',
  386. result:'1',
  387. remark:'',
  388. actualApprover: '',
  389. actualApproverName: '',
  390. organizationId: ''
  391. },
  392. authName: undefined,
  393. isShowOrg: false,
  394. classifyList: [],
  395. // 组织架构
  396. checkedTarget: {},
  397. // 职系
  398. sequencesInfo: {},
  399. // 职等
  400. gradesInfo: {},
  401. // 文档知识不能选择权限
  402. isDocument: false,
  403. widthVar: 800
  404. }
  405. },
  406. created() {
  407. // 从知识管理页跳转
  408. if(this.$route.query.showUnchecked) {
  409. this.urls = api.findAllAuditKnowledge
  410. this.approvalStatusList = [
  411. {value: '1', label: '待节点审核'},
  412. {value: '3', label: '待最终审核'}
  413. ]
  414. } else {
  415. this.urls = api.findAllKnowledgeApprove
  416. this.approvalStatusList = [
  417. {value: '1', label: '待节点审核'},
  418. {value: '2', label: '节点驳回'},
  419. {value: '3', label: '待最终审核'},
  420. {value: '4', label: '最终驳回'},
  421. {value: '5', label: '最终通过'},
  422. ]
  423. }
  424. this.init()
  425. },
  426. mounted() {
  427. let innerWidth = window.innerWidth
  428. // 计算
  429. setTimeout(() => {
  430. let offsetWidth = document.querySelector('.scroll-ckunk').getBoundingClientRect().left
  431. this.widthVar = innerWidth - offsetWidth - 40
  432. }, 1000);
  433. document.onclick=function(element){
  434. if(element.target.className.indexOf('ant-cascader-menu-item')>-1){
  435. document.querySelector('.ant-cascader-menus').scrollLeft = 20480
  436. }
  437. }
  438. /*setInterval(() => {
  439. document.querySelectorAll('.ant-cascader-menu-item').forEach(el => {
  440. el.onclick = function() {
  441. document.querySelector('.ant-cascader-menus').scrollLeft = 2048
  442. }
  443. })
  444. }, 1000)*/
  445. },
  446. computed: {
  447. getApprovalStatus(){
  448. return function(arg) {
  449. switch(arg) {
  450. case 1:
  451. return '待节点审核'
  452. case 2:
  453. return '节点驳回'
  454. case 3:
  455. return '待最终审核'
  456. case 4:
  457. return '最终驳回'
  458. case 5:
  459. return '最终通过'
  460. }
  461. }
  462. }
  463. },
  464. methods: {
  465. getCategory,
  466. handleSearchClick() {
  467. if(this.createTime && this.createTime.length) {
  468. this.queryParam.beginTime = this.createTime[0]
  469. this.queryParam.endTime = this.createTime[1]
  470. }
  471. if(this.categoryIds && this.categoryIds.length) {
  472. this.queryParam.categoryId = this.categoryIds.slice('-1')[0]
  473. }
  474. this.reloadTable()
  475. },
  476. // 审核
  477. handleJumpUpdateClick(record,arg) {
  478. // 从知识管理跳转
  479. let query = {}
  480. if(this.$route.query.showUnchecked) {
  481. if(arg) {
  482. // 查看
  483. query = {
  484. pkId: record.pkId,
  485. type: 'auditManageList',
  486. auditId: record.approvalsFirst.pkId,
  487. show: true,
  488. }
  489. } else {
  490. // 审核
  491. query = {
  492. pkId: record.pkId,
  493. type: 'auditManageList',
  494. auditId: record.approvalsFirst.pkId,
  495. show: true,
  496. isAudit: true
  497. }
  498. }
  499. } else {
  500. // 当前审核管理跳转
  501. if(arg) {
  502. // 查看
  503. query = {
  504. pkId: record.knowledgerId,
  505. type: 'auditManageList',
  506. auditId: record.pkId,
  507. show: true
  508. }
  509. } else {
  510. // 审核
  511. query = {
  512. pkId: record.knowledgerId,
  513. type: 'auditManageList',
  514. auditId: record.pkId,
  515. show: true,
  516. isAudit: true
  517. }
  518. }
  519. }
  520. this.$router.push({
  521. path: '/knowledge/knowledgeAddUpdate',
  522. query
  523. })
  524. },
  525. // 确认审核
  526. handleOk(){
  527. this.saveLoading = true
  528. let ids = this.willAuditData.map(item => item.pkId)
  529. if(this.$route.query.showUnchecked) {
  530. ids = this.willAuditData.map(item => item.approvalsFirst.pkId)
  531. }
  532. this.auditForm.actualApprover = this.$store.state.appSetting.user.userId
  533. this.auditForm.actualApproverName = this.$store.state.appSetting.user.fullName
  534. // 快速审核
  535. if(ids.length == 1) {
  536. this.auditForm.pkId = ids[0]
  537. api.knowledgeApproveById(this.auditForm).then(res => {
  538. if(res.code == 200) {
  539. this.auditShow = false
  540. this.reloadTable()
  541. this.saveLoading = false
  542. }
  543. })
  544. } else {
  545. // 批量审核
  546. this.auditForm.pkIds = ids
  547. api.knowledgeApproveBatchById(this.auditForm).then(res => {
  548. if(res.code == 200) {
  549. this.auditShow = false
  550. this.reloadTable()
  551. this.saveLoading = false
  552. }
  553. })
  554. }
  555. },
  556. // 快速审核/批量审核
  557. handldAuditClick(title,arg = {}) {
  558. this.modalTitle = title == 'fast' ? '快速审核' : '批量审核'
  559. this.auditForm = Object.assign({},this.$options.data().auditForm)
  560. this.authName = undefined
  561. this.willAuditData = []
  562. if(title == 'fast') {
  563. this.isDocument = arg.type == 1 ? true : false
  564. this.isShowOrg = arg.approvalStatus == 3 ? true : false
  565. this.willAuditData.push(arg)
  566. } else {
  567. this.willAuditData = this.$refs.auditRef.getSelectedRows()
  568. for(let i of this.willAuditData) {
  569. if(i.approvalStatus != 1 && i.approvalStatus != 3) {
  570. this.$message.error("审核存在状态为驳回/通过的节点,无法审批");
  571. return
  572. }
  573. if(i.approvalStatus == 3) {
  574. this.isShowOrg = true
  575. this.isDocument = i.type == 1 ? true : false
  576. break
  577. } else {
  578. this.isShowOrg = false
  579. }
  580. }
  581. }
  582. if(!this.willAuditData.length) return
  583. this.auditShow = true
  584. },
  585. transCheckedTarget(arg) {
  586. this.checkedTarget = arg
  587. },
  588. handleSequencesChange(arg) {
  589. this.sequencesInfo = arg
  590. },
  591. handleGradeChange(arg) {
  592. this.gradesInfo = arg
  593. },
  594. handleSaveOk() {
  595. if(this.isShowOrg) {
  596. let info = []
  597. let res = []
  598. if(this.checkedTarget.organizationId) {
  599. info.push(`${this.checkedTarget.organizationTree.join('-')}`)
  600. res.push(this.checkedTarget)
  601. }
  602. if(this.sequencesInfo.gradeId) {
  603. info.push(`职系-${this.sequencesInfo.gradeName}`)
  604. res.push(this.sequencesInfo)
  605. }
  606. if(this.gradesInfo.gradeLevelId) {
  607. info.push(`职等-${this.gradesInfo.gradeLevelName}`)
  608. res.push(this.gradesInfo)
  609. }
  610. if(info.length) {
  611. this.authName = info.join('/')
  612. }
  613. if(res.length) {
  614. this.auditForm.organizationId = JSON.stringify([...res])
  615. } else {
  616. this.auditForm.organizationId = ""
  617. }
  618. }
  619. this.showAuditFlag = false
  620. },
  621. // 重新加载表格
  622. reloadTable() {
  623. this.$refs.auditRef.loadData()
  624. }
  625. }
  626. }
  627. </script>
  628. <style lang="less" scoped>
  629. @gary: #f8f8f8;
  630. @white: #fff;
  631. .rx-fit {
  632. padding: 40px!important;
  633. background: @gary;
  634. overflow-y: auto!important;
  635. display: block!important;
  636. .fit-header {
  637. .mainContent {
  638. width: 100%;
  639. .body {
  640. background: @white;
  641. padding: 10px 0 10px 20px;
  642. .content {
  643. background: @white;
  644. button:first-child {
  645. margin-right: 20px;
  646. }
  647. >button {
  648. margin: 10px;
  649. margin-left: 0;
  650. }
  651. }
  652. }
  653. }
  654. }
  655. .table-style {
  656. padding: 20px;
  657. min-height: 400px;
  658. .clearBtn {
  659. background: none;
  660. color: #3294F7;
  661. text-shadow: none;
  662. padding: 0px 6px;
  663. border: none;
  664. box-shadow: none;
  665. }
  666. }
  667. }
  668. .knowledge-manage {
  669. position: relative;
  670. }
  671. .knowledge-manage::after {
  672. position: absolute;
  673. top: -11px;
  674. left: 76px;
  675. content: attr(data-attr);
  676. width: 20px;
  677. height: 20px;
  678. background: red;
  679. border-radius: 50%;
  680. }
  681. .show-other{
  682. width: 100%;
  683. animation:show-other-search 0.8s;
  684. }
  685. .form-item-style {
  686. margin: 5px 20px 5px 0;
  687. }
  688. .set-input {
  689. width:180px;
  690. }
  691. .set-select {
  692. width:120px;
  693. }
  694. .set-range-picker {
  695. width:230px!important;
  696. }
  697. @keyframes show-other-search{
  698. 0%{opacity:0;}
  699. 50%{opacity:0.8;}
  700. 100%{opacity: 1;}
  701. }
  702. </style>
  703. <style scoped>
  704. /deep/ .divdefault {
  705. position: inherit!important;
  706. }
  707. /deep/ .ant-btn > .anticon + span {
  708. margin-left: 0;
  709. }
  710. /deep/.ant-table-thead > tr > th {
  711. text-align: center;
  712. height: 54px;
  713. }
  714. /deep/ .ant-table-tbody > tr > td {
  715. height: 54px;
  716. }
  717. /deep/ .ant-form{
  718. padding: 0;
  719. }
  720. /deep/ .gridContent{
  721. border: none;
  722. }
  723. /deep/ .ant-cascader-menus {
  724. left: 0!important;
  725. }
  726. /deep/ .ant-cascader-menu:last-child {
  727. margin-right: 0;
  728. }
  729. </style>