1940e732287fdc5afc5a58c3b3f15194f437c84d.svn-base 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. <template xmlns:background-color="http://www.w3.org/1999/xhtml">
  2. <a-row :gutter="10">
  3. <a-col :md="12" :sm="24">
  4. <a-card :bordered="false">
  5. <!-- 按钮操作区域 -->
  6. <a-row style="margin: 0 0 0 14px" class="table-operator">
  7. <a-button @click="handleAdd(1)" type="primary">添加部门</a-button>
  8. <a-button @click="handleAdd(2)" type="primary">添加下级</a-button>
  9. <a-button type="primary" icon="download" @click="handleExportXls('部门信息')">导出</a-button>
  10. <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
  11. <a-button type="primary" icon="import">导入</a-button>
  12. </a-upload>
  13. <j-third-app-button biz-type="depart" :selected-row-keys="selectedRowKeys" syncToApp @sync-finally="onSyncFinally"/>
  14. <a-button title="删除多条数据" @click="batchDel" type="default">批量删除</a-button>
  15. </a-row>
  16. <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px">
  17. <a-alert type="info" :showIcon="true">
  18. <div slot="message">
  19. 当前选择:<span v-if="this.currSelected.title">{{ getCurrSelectedTitle() }}</span>
  20. <a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">取消选择</a>
  21. </div>
  22. </a-alert>
  23. <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="请输入部门名称"/>
  24. <!-- 树-->
  25. <a-col :md="10" :sm="24">
  26. <template>
  27. <a-dropdown :trigger="[this.dropTrigger]" @visibleChange="dropStatus">
  28. <span style="user-select: none">
  29. <a-tree
  30. v-if="loading"
  31. checkable
  32. multiple
  33. @select="onSelect"
  34. @check="onCheck"
  35. @rightClick="rightHandle"
  36. :selectedKeys="selectedKeys"
  37. :checkedKeys="checkedKeys"
  38. :treeData="departTree"
  39. :checkStrictly="checkStrictly"
  40. :expandedKeys.sync="iExpandedKeys"
  41. :load-data="loadSubTree"
  42. @expand="onExpand"/>
  43. </span>
  44. <a-menu slot="overlay">
  45. <a-menu-item @click="handleAdd(3)" key="1">添加</a-menu-item>
  46. <a-menu-item @click="handleDelete" key="2">删除</a-menu-item>
  47. <a-menu-item @click="closeDrop" key="3">取消</a-menu-item>
  48. </a-menu>
  49. </a-dropdown>
  50. </template>
  51. </a-col>
  52. </div>
  53. </a-card>
  54. <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
  55. <div class="drawer-bootom-button">
  56. <a-dropdown :trigger="['click']" placement="topCenter">
  57. <a-menu slot="overlay">
  58. <a-menu-item key="1" @click="switchCheckStrictly(1)">父子关联</a-menu-item>
  59. <a-menu-item key="2" @click="switchCheckStrictly(2)">取消关联</a-menu-item>
  60. <a-menu-item key="3" @click="checkALL">全部勾选</a-menu-item>
  61. <a-menu-item key="4" @click="cancelCheckALL">取消全选</a-menu-item>
  62. <a-menu-item key="5" @click="expandAll">展开所有</a-menu-item>
  63. <a-menu-item key="6" @click="closeAll">合并所有</a-menu-item>
  64. </a-menu>
  65. <a-button>
  66. 树操作 <a-icon type="up" />
  67. </a-button>
  68. </a-dropdown>
  69. </div>
  70. <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
  71. </a-col>
  72. <a-col :md="12" :sm="24">
  73. <a-tabs defaultActiveKey="1">
  74. <a-tab-pane tab="基本信息" key="1" >
  75. <a-card :bordered="false" v-if="selectedKeys.length>0">
  76. <a-form-model ref="form" :model="model" :rules="validatorRules">
  77. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="机构名称" prop="departName" >
  78. <a-input placeholder="请输入机构/部门名称" v-model="model.departName"/>
  79. </a-form-model-item>
  80. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级部门" prop="parentId">
  81. <a-tree-select style="width:100%" :dropdownStyle="{maxHeight:'200px',overflow:'auto'}" :treeData="treeData" :disabled="disable" v-model="model.parentId" placeholder="无">
  82. </a-tree-select>
  83. </a-form-model-item>
  84. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="机构编码" prop="orgCode">
  85. <a-input disabled placeholder="请输入机构编码" v-model="model.orgCode"/>
  86. </a-form-model-item>
  87. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="机构类型" prop="orgCategory">
  88. <template v-if="orgCategoryDisabled">
  89. <a-radio-group v-model="model.orgCategory" placeholder="请选择机构类型">
  90. <a-radio value="1">
  91. 公司
  92. </a-radio>
  93. </a-radio-group>
  94. </template>
  95. <template v-else>
  96. <a-radio-group v-model="model.orgCategory" placeholder="请选择机构类型">
  97. <a-radio value="2">
  98. 部门
  99. </a-radio>
  100. <a-radio value="3">
  101. 岗位
  102. </a-radio>
  103. </a-radio-group>
  104. </template>
  105. </a-form-model-item>
  106. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="排序" prop="departOrder">
  107. <a-input v-model="model.departOrder"/>
  108. </a-form-model-item>
  109. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="手机号" prop="mobile">
  110. <a-input placeholder="请输入手机号" v-model="model.mobile"/>
  111. </a-form-model-item>
  112. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="地址" prop="address">
  113. <a-input placeholder="请输入地址" v-model="model.address"/>
  114. </a-form-model-item>
  115. <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="备注" prop="memo">
  116. <a-textarea placeholder="请输入备注" v-model="model.memo"/>
  117. </a-form-model-item>
  118. </a-form-model>
  119. <div class="anty-form-btn">
  120. <a-button @click="emptyCurrForm" type="default" htmlType="button" icon="sync">重置</a-button>
  121. <a-button @click="submitCurrForm" type="primary" htmlType="button" icon="form">保存</a-button>
  122. </div>
  123. </a-card>
  124. <a-card v-else >
  125. <a-empty>
  126. <span slot="description"> 请先选择一个部门! </span>
  127. </a-empty>
  128. </a-card>
  129. </a-tab-pane>
  130. <a-tab-pane tab="部门权限" key="2" forceRender>
  131. <depart-auth-modal ref="departAuth"/>
  132. </a-tab-pane>
  133. </a-tabs>
  134. </a-col>
  135. <depart-modal ref="departModal" @ok="loadTree"></depart-modal>
  136. </a-row>
  137. </template>
  138. <script>
  139. import DepartModal from './modules/DepartModal'
  140. import { deleteByDepartId, queryDepartTreeSync, searchByKeywords } from '@/api/api'
  141. import { deleteAction, httpAction } from '@/api/manage'
  142. import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  143. import DepartAuthModal from './modules/DepartAuthModal'
  144. import { cloneObject } from '@/utils/util'
  145. import JThirdAppButton from '@comp/jeecgbiz/thirdApp/JThirdAppButton'
  146. // 表头
  147. const columns = [
  148. {
  149. title: '机构名称',
  150. dataIndex: 'departName'
  151. },
  152. {
  153. title: '机构类型',
  154. align: 'center',
  155. dataIndex: 'orgType'
  156. },
  157. {
  158. title: '机构编码',
  159. dataIndex: 'orgCode',
  160. },
  161. {
  162. title: '手机号',
  163. dataIndex: 'mobile'
  164. },
  165. {
  166. title: '传真',
  167. dataIndex: 'fax'
  168. },
  169. {
  170. title: '地址',
  171. dataIndex: 'address'
  172. },
  173. {
  174. title: '排序',
  175. align: 'center',
  176. dataIndex: 'departOrder'
  177. },
  178. {
  179. title: '操作',
  180. align: 'center',
  181. dataIndex: 'action',
  182. scopedSlots: {customRender: 'action'}
  183. }
  184. ]
  185. export default {
  186. name: 'DepartList',
  187. mixins: [JeecgListMixin],
  188. components: {
  189. JThirdAppButton,
  190. DepartAuthModal,
  191. DepartModal
  192. },
  193. data() {
  194. return {
  195. iExpandedKeys: [],
  196. loading: true,
  197. autoExpandParent: false,
  198. currFlowId: '',
  199. currFlowName: '',
  200. disable: true,
  201. treeData: [],
  202. visible: false,
  203. departTree: [],
  204. departTreeAll: [],
  205. loadedKeys: [],
  206. allIds: [],
  207. rightClickSelectedKey: '',
  208. rightClickSelectedOrgCode: '',
  209. hiding: true,
  210. model: {},
  211. dropTrigger: '',
  212. depart: {},
  213. columns: columns,
  214. disableSubmit: false,
  215. checkedKeys: [],
  216. selectedKeys: [],
  217. autoIncr: 1,
  218. currSelected: {},
  219. allTreeKeys:[],
  220. loadTreeKeys:[],
  221. checkStrictly: true,
  222. labelCol: {
  223. xs: {span: 24},
  224. sm: {span: 5}
  225. },
  226. wrapperCol: {
  227. xs: {span: 24},
  228. sm: {span: 16}
  229. },
  230. graphDatasource: {
  231. nodes: [],
  232. edges: []
  233. },
  234. validatorRules: {
  235. departName: [{required: true, message: '请输入机构/部门名称!'}],
  236. orgCode: [{required: true, message: '请输入机构编码!'}],
  237. orgCategory: [{required: true, message: '请输入机构类型!'}],
  238. mobile: [{validator: this.validateMobile}]
  239. },
  240. url: {
  241. delete: '/sys/sysDepart/delete',
  242. edit: '/sys/sysDepart/edit',
  243. deleteBatch: '/sys/sysDepart/deleteBatch',
  244. exportXlsUrl: "sys/sysDepart/exportXls",
  245. importExcelUrl: "sys/sysDepart/importExcel",
  246. },
  247. orgCategoryDisabled:false,
  248. }
  249. },
  250. computed: {
  251. importExcelUrl: function () {
  252. return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
  253. }
  254. },
  255. methods: {
  256. loadData() {
  257. this.refresh();
  258. },
  259. loadTree() {
  260. var that = this
  261. //上级部门树信息
  262. that.treeData = []
  263. //保存的树信息,搜索是需要用到
  264. that.departTreeAll = []
  265. //所有的树信息
  266. that.departTree = []
  267. //所有的树节点key信息
  268. that.allIds = []
  269. that.iExpandedKeys = []
  270. that.loading = false
  271. queryDepartTreeSync().then((res) => {
  272. if (res.success) {
  273. this.allTreeKeys = [];
  274. for (let i = 0; i < res.result.length; i++) {
  275. let temp = res.result[i]
  276. that.treeData.push(temp)
  277. that.departTreeAll.push(temp)
  278. that.departTree.push(temp)
  279. that.allIds.push(temp.key)
  280. that.allTreeKeys.push(temp.key)
  281. if(that.loadTreeKeys.indexOf(temp.key)>=0){
  282. that.iExpandedKeys.push(temp.key)
  283. }
  284. }
  285. that.$nextTick(()=>{
  286. that.loading = true
  287. })
  288. }
  289. })
  290. },
  291. loadSubTree(treeNode) {
  292. var that = this;
  293. return new Promise(resolve => {
  294. queryDepartTreeSync({pid:treeNode.dataRef.id}).then((res) => {
  295. if (res.success) {
  296. //判断chidlren是否为空,并修改isLeaf属性值
  297. if(res.result.length == 0){
  298. treeNode.dataRef['isLeaf']=true
  299. return;
  300. }else{
  301. treeNode.dataRef['children']= res.result;
  302. }
  303. for (let i = 0; i < res.result.length; i++) {
  304. let temp = res.result[i]
  305. that.allIds.push(temp.key)
  306. if(that.loadTreeKeys.indexOf(temp.key)>0){
  307. that.iExpandedKeys.push(temp.key)
  308. }
  309. }
  310. }
  311. })
  312. resolve();
  313. });
  314. //保存全部部门信息,方便后面搜索使用
  315. that.departTreeAll=that.departTree
  316. },
  317. refresh() {
  318. this.loading = true
  319. this.loadTree()
  320. },
  321. // 右键操作方法
  322. rightHandle(node) {
  323. this.dropTrigger = 'contextmenu'
  324. console.log(node.node.eventKey)
  325. this.rightClickSelectedKey = node.node.eventKey
  326. this.rightClickSelectedOrgCode = node.node.dataRef.orgCode
  327. },
  328. onExpand(expandedKeys) {
  329. console.log('onExpand', expandedKeys)
  330. this.iExpandedKeys = expandedKeys
  331. this.autoExpandParent = false
  332. this.allTreeKeys=expandedKeys
  333. this.loadTreeKeys=expandedKeys
  334. },
  335. backFlowList() {
  336. this.$router.back(-1)
  337. },
  338. // 右键点击下拉框改变事件
  339. dropStatus(visible) {
  340. if (visible == false) {
  341. this.dropTrigger = ''
  342. }
  343. },
  344. // 右键店家下拉关闭下拉框
  345. closeDrop() {
  346. this.dropTrigger = ''
  347. },
  348. addRootNode() {
  349. this.$refs.nodeModal.add(this.currFlowId, '')
  350. },
  351. batchDel: function () {
  352. console.log(this.checkedKeys)
  353. if (this.checkedKeys.length <= 0) {
  354. this.$message.warning('请选择一条记录!')
  355. } else {
  356. var ids = ''
  357. for (var a = 0; a < this.checkedKeys.length; a++) {
  358. ids += this.checkedKeys[a]+ ','
  359. }
  360. var that = this
  361. this.$confirm({
  362. title: '确认删除',
  363. content: '确定要删除所选中的 ' + this.checkedKeys.length + ' 条数据,以及子节点数据吗?',
  364. onOk: function () {
  365. deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
  366. if (res.success) {
  367. that.$message.success(res.message)
  368. that.loadTree()
  369. that.onClearSelected()
  370. } else {
  371. that.$message.warning(res.message)
  372. }
  373. })
  374. }
  375. })
  376. }
  377. },
  378. onSearch(value) {
  379. let that = this
  380. if (value) {
  381. searchByKeywords({keyWord: value}).then((res) => {
  382. if (res.success) {
  383. that.departTree = []
  384. for (let i = 0; i < res.result.length; i++) {
  385. let temp = res.result[i]
  386. that.departTree.push(temp)
  387. }
  388. } else {
  389. that.$message.warning(res.message)
  390. }
  391. })
  392. } else {
  393. that.departTree=that.departTreeAll
  394. }
  395. },
  396. nodeModalOk() {
  397. this.loadTree()
  398. },
  399. nodeModalClose() {
  400. },
  401. hide() {
  402. this.visible = false
  403. },
  404. onCheck(checkedKeys, info) {
  405. console.log('onCheck', checkedKeys, info)
  406. this.hiding = false
  407. //this.checkedKeys = checkedKeys.checked
  408. // <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
  409. if(this.checkStrictly){
  410. this.checkedKeys = checkedKeys.checked;
  411. }else{
  412. this.checkedKeys = checkedKeys
  413. }
  414. // <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
  415. },
  416. onSelect(selectedKeys, e) {
  417. console.log('selected', selectedKeys, e)
  418. this.hiding = false
  419. let record = e.node.dataRef
  420. console.log('onSelect-record', record)
  421. this.currSelected = Object.assign({}, record)
  422. this.model = this.currSelected
  423. this.selectedKeys = [record.key]
  424. this.model.parentId = record.parentId
  425. this.setValuesToForm(record)
  426. this.$refs.departAuth.show(record.id);
  427. },
  428. // 触发onSelect事件时,为部门树右侧的form表单赋值
  429. setValuesToForm(record) {
  430. if(record.orgCategory == '1'){
  431. this.orgCategoryDisabled = true;
  432. }else{
  433. this.orgCategoryDisabled = false;
  434. }
  435. this.$nextTick(() => {
  436. this.model = cloneObject(record)
  437. })
  438. },
  439. getCurrSelectedTitle() {
  440. return !this.currSelected.title ? '' : this.currSelected.title
  441. },
  442. onClearSelected() {
  443. this.hiding = true
  444. this.checkedKeys = []
  445. this.currSelected = {}
  446. this.model = cloneObject(this.currSelected)
  447. this.selectedKeys = []
  448. this.$refs.departAuth.departId = ''
  449. },
  450. handleNodeTypeChange(val) {
  451. this.currSelected.nodeType = val
  452. },
  453. notifyTriggerTypeChange(value) {
  454. this.currSelected.notifyTriggerType = value
  455. },
  456. receiptTriggerTypeChange(value) {
  457. this.currSelected.receiptTriggerType = value
  458. },
  459. submitCurrForm() {
  460. this.$refs.form.validate((ok, err) => {
  461. if (ok) {
  462. if (!this.currSelected.id) {
  463. this.$message.warning('请点击选择要修改部门!')
  464. return
  465. }
  466. let formData = Object.assign(this.currSelected, this.model)
  467. console.log('Received values of form: ', formData)
  468. httpAction(this.url.edit, formData, 'put').then((res) => {
  469. if (res.success) {
  470. this.$message.success('保存成功!')
  471. this.loadTree()
  472. } else {
  473. this.$message.error(res.message)
  474. }
  475. })
  476. }
  477. })
  478. },
  479. emptyCurrForm() {
  480. this.model = this.currSelected
  481. },
  482. nodeSettingFormSubmit() {
  483. this.$refs.form.validate((ok, err) => {
  484. if (ok) {
  485. console.log('Received values of form: ', this.model)
  486. }
  487. })
  488. },
  489. openSelect() {
  490. this.$refs.sysDirectiveModal.show()
  491. },
  492. handleAdd(num) {
  493. if (num == 1) {
  494. this.$refs.departModal.add()
  495. this.$refs.departModal.title = '新增'
  496. } else if (num == 2) {
  497. let key = this.currSelected.key
  498. if (!key) {
  499. this.$message.warning('请先点击选中上级部门!')
  500. return false
  501. }
  502. this.$refs.departModal.add(this.selectedKeys[0])
  503. this.$refs.departModal.title = '新增'
  504. } else {
  505. this.$refs.departModal.add(this.rightClickSelectedKey)
  506. this.$refs.departModal.title = '新增'
  507. }
  508. },
  509. handleDelete() {
  510. var that = this
  511. this.$confirm({
  512. title: '确认删除',
  513. content: '确定要删除此部门以及子节点数据吗?',
  514. onOk: function () {
  515. deleteByDepartId({id: that.rightClickSelectedKey}).then((resp) => {
  516. if (resp.success) {
  517. //删除成功后,去除已选中中的数据
  518. that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey), 1);
  519. that.$message.success('删除成功!')
  520. that.loadTree()
  521. //删除后同步清空右侧基本信息内容
  522. let orgCode = that.model.orgCode
  523. if(orgCode && orgCode === that.rightClickSelectedOrgCode){
  524. that.onClearSelected()
  525. }
  526. } else {
  527. that.$message.warning('删除失败!')
  528. }
  529. })
  530. }
  531. })
  532. },
  533. selectDirectiveOk(record) {
  534. console.log('选中指令数据', record)
  535. this.nodeSettingForm.setFieldsValue({directiveCode: record.directiveCode})
  536. this.currSelected.sysCode = record.sysCode
  537. },
  538. getFlowGraphData(node) {
  539. this.graphDatasource.nodes.push({
  540. id: node.id,
  541. text: node.flowNodeName
  542. })
  543. if (node.children.length > 0) {
  544. for (let a = 0; a < node.children.length; a++) {
  545. let temp = node.children[a]
  546. this.graphDatasource.edges.push({
  547. source: node.id,
  548. target: temp.id
  549. })
  550. this.getFlowGraphData(temp)
  551. }
  552. }
  553. },
  554. // <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
  555. expandAll () {
  556. this.iExpandedKeys = this.allTreeKeys
  557. //this.loadTree()
  558. },
  559. closeAll () {
  560. this.iExpandedKeys = []
  561. },
  562. checkALL () {
  563. this.checkStriccheckStrictlytly = false
  564. //this.checkedKeys = this.allTreeKeys
  565. this.checkedKeys = this.allIds
  566. },
  567. cancelCheckALL () {
  568. //this.checkedKeys = this.defaultCheckedKeys
  569. this.checkedKeys = []
  570. },
  571. switchCheckStrictly (v) {
  572. if(v==1){
  573. this.checkStrictly = false
  574. }else if(v==2){
  575. this.checkStrictly = true
  576. }
  577. },
  578. getAllKeys(node) {
  579. // console.log('node',node);
  580. this.allTreeKeys.push(node.key)
  581. if (node.children && node.children.length > 0) {
  582. for (let a = 0; a < node.children.length; a++) {
  583. this.getAllKeys(node.children[a])
  584. }
  585. }
  586. },
  587. // <!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
  588. // 验证手机号
  589. validateMobile(rule,value,callback){
  590. if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)){
  591. callback();
  592. }else{
  593. callback("您的手机号码格式不正确!");
  594. }
  595. },
  596. onSyncFinally({isToLocal}) {
  597. // 同步到本地时刷新下数据
  598. if (isToLocal) {
  599. this.loadData()
  600. }
  601. },
  602. },
  603. created() {
  604. this.currFlowId = this.$route.params.id
  605. this.currFlowName = this.$route.params.name
  606. // this.loadTree()
  607. },
  608. }
  609. </script>
  610. <style scoped>
  611. @import '~@assets/less/common.less';
  612. </style>
  613. <style scoped>
  614. .ant-card-body .table-operator {
  615. margin: 15px;
  616. }
  617. .anty-form-btn {
  618. width: 100%;
  619. text-align: center;
  620. }
  621. .anty-form-btn button {
  622. margin: 0 5px;
  623. }
  624. .anty-node-layout .ant-layout-header {
  625. padding-right: 0
  626. }
  627. .header {
  628. padding: 0 8px;
  629. }
  630. .header button {
  631. margin: 0 3px
  632. }
  633. .ant-modal-cust-warp {
  634. height: 100%
  635. }
  636. .ant-modal-cust-warp .ant-modal-body {
  637. height: calc(100% - 110px) !important;
  638. overflow-y: auto
  639. }
  640. .ant-modal-cust-warp .ant-modal-content {
  641. height: 90% !important;
  642. overflow-y: hidden
  643. }
  644. #app .desktop {
  645. height: auto !important;
  646. }
  647. /** Button按钮间距 */
  648. .drawer-bootom-button {
  649. /*position: absolute;*/
  650. bottom: 0;
  651. width: 100%;
  652. border-top: 1px solid #e8e8e8;
  653. padding: 10px 16px;
  654. text-align: left;
  655. left: 0;
  656. background: #fff;
  657. border-radius: 0 0 2px 2px;
  658. }
  659. </style>