audit-sqapply-from.vue 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364
  1. <template>
  2. <span>
  3. <sd-webflow
  4. ref="docform"
  5. :validate-form="validForm"
  6. :removed-tabs="['sdRelatedDoc']"
  7. :class="$style.form"
  8. @actionBtnClick="actionBtnClick"
  9. >
  10. <template v-slot:form="{ model, fields, FlowData }">
  11. <table>
  12. <colgroup>
  13. <col style="width: 15%;"/>
  14. <col style="width: 35%;"/>
  15. <col style="width: 15%;"/>
  16. <col style="width: 35%;"
  17. /></colgroup>
  18. <tr v-show="false">
  19. <!-- 标题 -->
  20. <sd-form-item-td name="title" :colspan="3" />
  21. </tr>
  22. <tr>
  23. <td colspan="4" style="border:none">
  24. <audit-advanced-group
  25. :expand="expandJ"
  26. :expand-str="'expandJ'"
  27. :group-label="'基本信息'"
  28. @changedClick="changedClick"
  29. />
  30. </td>
  31. </tr>
  32. <tr v-show="expandJ">
  33. <!-- 申请人 -->
  34. <sd-form-item-td name="creatorName" />
  35. <!-- 公司 -->
  36. <sd-form-item-td name="createDeptName" />
  37. </tr>
  38. <tr v-show="expandJ">
  39. <!-- 申请时间 -->
  40. <sd-form-item-td name="creationTime" />
  41. <!-- 授权类型 -->
  42. <sd-form-item-td name="empowerType">
  43. <template>
  44. <a-select v-model="model.empowerType" @change="changeType">
  45. <a-select-option
  46. v-for="(key, i) in fields.empowerType.attr.selectListItem"
  47. :key="i"
  48. :value="key.value"
  49. >
  50. {{ key.label }}
  51. </a-select-option>
  52. </a-select>
  53. </template>
  54. </sd-form-item-td>
  55. </tr>
  56. <tr v-if="(model.empowerType === '1' || model.empowerType === '2') && expandJ">
  57. <td class="ant-form-item-label ant-form-item-label">
  58. <label title="开始日期"> 开始日期 </label>
  59. </td>
  60. <td class="ant-form-item-control-wrapper">
  61. <a-date-picker v-model="model.startDate" :disabled="true" />
  62. </td>
  63. <td class="ant-form-item-label ant-form-item-label">
  64. <label title="结束日期"> 结束日期 </label>
  65. </td>
  66. <td class="ant-form-item-control-wrapper">
  67. <a-date-picker v-model="model.endDate" :disabled="true" />
  68. </td>
  69. </tr>
  70. <tr v-if="model.empowerType !== '1' && model.empowerType !== '2' && expandJ">
  71. <!-- 授权开始时间 -->
  72. <!-- <sd-form-item-td name="startDate" /> -->
  73. <!-- 授权截止时间 -->
  74. <!-- <sd-form-item-td name="endDate" /> -->
  75. <td class="ant-form-item-label ant-form-item-label">
  76. <label title="开始日期" class="ant-form-item-required"> 开始日期 </label>
  77. </td>
  78. <td class="ant-form-item-control-wrapper">
  79. <a-form-model-item :label="null" :rules="rules" prop="startDate">
  80. <a-date-picker v-model="model.startDate" />
  81. </a-form-model-item>
  82. </td>
  83. <td class="ant-form-item-label ant-form-item-label">
  84. <label title="结束日期" class="ant-form-item-required"> 结束日期 </label>
  85. </td>
  86. <td class="ant-form-item-control-wrapper">
  87. <a-form-model-item :label="null" :rules="rules" prop="endDate">
  88. <a-date-picker v-model="model.endDate" />
  89. </a-form-model-item>
  90. </td>
  91. </tr>
  92. <tr v-show="expandJ">
  93. <!-- 申请原因 -->
  94. <sd-form-item-td name="empowerReason" :colspan="3">
  95. <a-textarea v-model="model.empowerReason" :rows="3" />
  96. </sd-form-item-td>
  97. </tr>
  98. <tr
  99. ><td
  100. v-if="getClassdata(model, fields)"
  101. :colspan="4"
  102. style="line-height:40px;border:none1;"
  103. :class="$style.maintaintable"
  104. >
  105. <audit-advanced-group
  106. :expand="expandY"
  107. :expand-str="'expandY'"
  108. :group-label="'数据分类'"
  109. @changedClick="changedClick"
  110. ><template>
  111. <!-- </td></tr><tr><td v-if="getmaintaindata(model,fields)" :colspan="4" :class="$style.maintaintable" style="border:none"> -->
  112. <div :class="$style.wrapper">
  113. <div v-show="expandY && classtable" :class="$style.btnselectmaintain">
  114. <a-button type="link" :class="$style.batchselect" @click="flRelSelect">
  115. <a-icon type="check-circle" :theme="'filled'" />
  116. 选择
  117. </a-button>
  118. <a-button
  119. type="link"
  120. :disabled="selectedRowKeys.length === 0"
  121. style="z-index:10"
  122. @click="removemx(selectedRowKeys)"
  123. >
  124. <a-icon type="minus-circle" :theme="'filled'" />
  125. 删除
  126. </a-button>
  127. </div>
  128. </div>
  129. <sd-table
  130. v-show="expandY"
  131. ref="classtable"
  132. :row-key="(record, index) => index"
  133. :loading="false"
  134. class="maintaintable"
  135. :columns="childMXColumns"
  136. :data-source="classdata"
  137. :pagination="false"
  138. :bordered="true"
  139. :row-selection="
  140. classtable
  141. ? {
  142. getCheckboxProps(record) {
  143. return {
  144. props: { disabled: !showSelection(record) },
  145. }
  146. },
  147. selectedRowKeys: selectedRowKeys,
  148. onChange: onSelectChange,
  149. }
  150. : null
  151. "/></template
  152. ></audit-advanced-group>
  153. </td>
  154. </tr>
  155. <tr>
  156. <td :colspan="4" style="border:none1">
  157. <audit-advanced-group
  158. :expand="classShow"
  159. :expand-str="'classShow'"
  160. :group-label="'审搜索引'"
  161. tablestyle="''"
  162. @changedClick="changedClick"
  163. ><template>
  164. <div :class="$style.wrapper">
  165. <div v-show="classShow" :class="$style.btnselectmaintain">
  166. <a-button type="link" :class="$style.batchselect" @click="indexRelSelect">
  167. <a-icon type="check-circle" :theme="'filled'" />
  168. 选择
  169. </a-button>
  170. <a-button
  171. type="link"
  172. :disabled="indexSelectedRowKeys.length === 0"
  173. style="z-index:10"
  174. @click="removemxIndex(indexSelectedRowKeys)"
  175. >
  176. <a-icon type="minus-circle" :theme="'filled'" />
  177. 删除
  178. </a-button>
  179. </div>
  180. </div>
  181. <sd-table
  182. ref="indexTable"
  183. :row-key="(record, index) => index"
  184. :loading="false"
  185. class="maintaintable"
  186. :columns="indexColumns"
  187. :data-source="classIndexData"
  188. :pagination="false"
  189. :row-selection="
  190. classtable
  191. ? {
  192. getCheckboxProps(record) {
  193. return {
  194. props: { disabled: !showSelection(record) },
  195. }
  196. },
  197. selectedRowKeys: indexSelectedRowKeys,
  198. onChange: onSelectChangeIndex,
  199. }
  200. : null
  201. "
  202. />
  203. </template>
  204. </audit-advanced-group> </td
  205. ></tr>
  206. <tr
  207. ><td :colspan="4" style="border:none1">
  208. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  209. <template v-slot:read-and-edit="{ editable }">
  210. <audit-advanced-group
  211. :expand="expandCompany"
  212. :expand-str="'expandCompany'"
  213. :group-label="'指定公司'"
  214. @changedClick="changedClick"
  215. ><template>
  216. <template>
  217. <div :class="$style.wrapper">
  218. <div v-show="expandCompany && editable" :class="$style.btnselect">
  219. <a-button
  220. type="link"
  221. :class="$style.batchselect"
  222. @click="companylSelect"
  223. >
  224. <a-icon type="check-circle" :theme="'filled'" />
  225. 选择
  226. </a-button>
  227. </div>
  228. </div>
  229. </template>
  230. <xm-child-table
  231. v-model="model.iamAppointUnitEntitys"
  232. :read-only="!editable"
  233. label=""
  234. :fields="
  235. [
  236. {
  237. caption: '序号',
  238. name: 'sortNum',
  239. dataType: 'sortNum',
  240. },
  241. ].concat(Array.from(fields.iamAppointUnitEntitys.attr.dync))
  242. "
  243. :columns="companyColumns"
  244. :width="1200"
  245. :addbuttonvisiable="false"
  246. @change="saveForm"
  247. >
  248. <template v-slot:unitName="{ field, text, index, value }">
  249. {{ text }}
  250. </template>
  251. <template v-slot:unitCode="{ field, text, index, value }">
  252. {{ text }}
  253. </template>
  254. </xm-child-table>
  255. </template>
  256. </audit-advanced-group>
  257. </template>
  258. </sd-form-item></td
  259. >
  260. </tr>
  261. <!-- <tr
  262. ><td :colspan="4" style="border:none1">
  263. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  264. <template v-slot:read-and-edit="{ editable }">
  265. <audit-advanced-group
  266. :expand="expandW"
  267. :expand-str="'expandW'"
  268. :group-label="'申请单位'"
  269. @changedClick="changedClick"
  270. ><template>
  271. <template>
  272. <div :class="$style.wrapper">
  273. <div v-show="expandW && editable" :class="$style.btnselect">
  274. <a-button type="link" :class="$style.batchselect" @click="dwRelSelect">
  275. <a-icon type="check-circle" :theme="'filled'" />
  276. 选择
  277. </a-button>
  278. </div>
  279. </div>
  280. </template>
  281. <xm-child-table
  282. v-model="model.iamLicenseUnitEntitys"
  283. :read-only="!editable"
  284. label=""
  285. :fields="
  286. [
  287. {
  288. caption: '序号',
  289. name: 'sortNum',
  290. dataType: 'sortNum',
  291. },
  292. ].concat(Array.from(fields.iamLicenseUnitEntitys.attr.dync))
  293. "
  294. :columns="childDWColumns"
  295. :width="1200"
  296. :addbuttonvisiable="false"
  297. @change="saveForm"
  298. >
  299. <template v-slot:unitName="{ field, text, index, value }">
  300. {{ text }}
  301. </template>
  302. <template v-slot:unitCode="{ field, text, index, value }">
  303. {{ text }}
  304. </template>
  305. </xm-child-table>
  306. </template>
  307. </audit-advanced-group>
  308. </template>
  309. </sd-form-item></td
  310. >
  311. </tr> -->
  312. <tr
  313. ><td :colspan="4" style="border:none1">
  314. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  315. <template v-slot:read-and-edit="{ editable }">
  316. <audit-advanced-group
  317. :expand="expandPeople"
  318. :expand-str="'expandPeople'"
  319. :group-label="'申请用户'"
  320. @changedClick="changedClick"
  321. ><template>
  322. <template>
  323. <div :class="$style.wrapper">
  324. <div v-show="expandPeople && editable" :class="$style.btnselect">
  325. <a-button
  326. type="link"
  327. :class="$style.batchselect"
  328. @click="peopleRelSelect"
  329. >
  330. <a-icon type="check-circle" :theme="'filled'" />
  331. 选择
  332. </a-button>
  333. </div>
  334. </div>
  335. </template>
  336. <xm-child-table
  337. v-model="model.iamLicensePeopleEntitys"
  338. :read-only="!editable"
  339. label=""
  340. :fields="
  341. [
  342. {
  343. caption: '序号',
  344. name: 'sortNum',
  345. dataType: 'sortNum',
  346. },
  347. ].concat(Array.from(fields.iamLicensePeopleEntitys.attr.dync))
  348. "
  349. :columns="peopleColumns"
  350. :width="1200"
  351. :addbuttonvisiable="false"
  352. @change="saveForm"
  353. >
  354. <template v-slot:userName="{ field, text, index, value }">
  355. {{ text }}
  356. </template>
  357. <template v-slot:userUnit="{ field, text, index, value }">
  358. {{ text }}
  359. </template>
  360. </xm-child-table>
  361. </template>
  362. </audit-advanced-group>
  363. </template>
  364. </sd-form-item></td
  365. >
  366. </tr>
  367. <tr
  368. ><td :colspan="4" style="border:none1">
  369. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  370. <template v-slot:read-and-edit="{ editable }">
  371. <audit-advanced-group
  372. :expand="expandProject"
  373. :expand-str="'expandProject'"
  374. :group-label="'申请项目'"
  375. @changedClick="changedClick"
  376. ><template>
  377. <template>
  378. <div :class="$style.wrapper">
  379. <div v-show="expandProject && editable" :class="$style.btnselect">
  380. <a-button
  381. type="link"
  382. :class="$style.batchselect"
  383. @click="projectRelSelect"
  384. >
  385. <a-icon type="check-circle" :theme="'filled'" />
  386. 选择
  387. </a-button>
  388. </div>
  389. </div>
  390. </template>
  391. <xm-child-table
  392. v-model="model.iamLicenseProjectEntitys"
  393. :read-only="!editable"
  394. label=""
  395. :fields="
  396. [
  397. {
  398. caption: '序号',
  399. name: 'sortNum',
  400. dataType: 'sortNum',
  401. },
  402. ].concat(Array.from(fields.iamLicenseProjectEntitys.attr.dync))
  403. "
  404. :columns="projectColumns"
  405. :width="1200"
  406. :addbuttonvisiable="false"
  407. @change="saveForm"
  408. >
  409. <template v-slot:projectName="{ field, text, index, value }">
  410. {{ text }}
  411. </template>
  412. <template v-slot:projectUnit="{ field, text, index, value }">
  413. {{ text }}
  414. </template>
  415. </xm-child-table>
  416. </template>
  417. </audit-advanced-group>
  418. </template>
  419. </sd-form-item></td
  420. >
  421. </tr>
  422. <tr
  423. ><td :colspan="4" style="border:none1">
  424. <sd-form-item name="iamLicenseUnitEntitys" :label="null">
  425. <template v-slot:read-and-edit="{ editable }">
  426. <audit-advanced-group
  427. :expand="expandRole"
  428. :expand-str="'expandRole'"
  429. :group-label="'申请角色'"
  430. @changedClick="changedClick"
  431. ><template>
  432. <template>
  433. <div :class="$style.wrapper">
  434. <div v-show="expandRole && editable" :class="$style.btnselect">
  435. <a-button
  436. type="link"
  437. :class="$style.batchselect"
  438. @click="roleRelSelect"
  439. >
  440. <a-icon type="check-circle" :theme="'filled'" />
  441. 选择
  442. </a-button>
  443. </div>
  444. </div>
  445. </template>
  446. <xm-child-table
  447. v-model="model.iamLicenseRoleEntitys"
  448. :read-only="!editable"
  449. label=""
  450. :fields="
  451. [
  452. {
  453. caption: '序号',
  454. name: 'sortNum',
  455. dataType: 'sortNum',
  456. },
  457. ].concat(Array.from(fields.iamLicenseRoleEntitys.attr.dync))
  458. "
  459. :columns="projectColumns"
  460. :width="1200"
  461. :addbuttonvisiable="false"
  462. @change="saveForm"
  463. >
  464. <template v-slot:roleName="{ field, text, index, value }">
  465. {{ text }}
  466. </template>
  467. <!-- 角色ID -->
  468. <template v-slot:roleId="{ field, text, index, value }">
  469. {{ text }}
  470. </template>
  471. <!-- <template v-slot:projectId="{ field, text, index, value }">
  472. {{ text }}
  473. </template> -->
  474. </xm-child-table>
  475. </template>
  476. </audit-advanced-group>
  477. </template>
  478. </sd-form-item></td
  479. >
  480. </tr>
  481. <tr v-show="false">
  482. <sd-form-item-td name="iamLicensePeopleEntitys" :label="null" :colspan="3">
  483. </sd-form-item-td>
  484. </tr>
  485. </table>
  486. </template>
  487. </sd-webflow>
  488. <AuditSelectMaintain :visible="visibleY" @listMxSelected="listMxSelected">
  489. </AuditSelectMaintain>
  490. <auditClassTable :visible="flTableShow" @listMxSelected="classListMxSelected">
  491. </auditClassTable>
  492. <div v-show="false">
  493. <sd-group-picker
  494. ref="dwRelSelect"
  495. v-model="mainSendUnit"
  496. :single="false"
  497. :root-node="rootNodeData"
  498. :read-only="false"
  499. @change="change"
  500. />
  501. </div>
  502. <roleModal v-model="roleShow" @selectRoleList="changeRole" />
  503. <projectModal v-model="projectShow" @selectProject="changeProject" />
  504. <div v-show="false">
  505. <sd-user-picker
  506. ref="peopleRelSelect"
  507. v-model="mainSendPersonal"
  508. :root-node="rootNodeData"
  509. :single="false"
  510. :read-only="false"
  511. @change="changePeople"
  512. />
  513. </div>
  514. <div v-show="false">
  515. <SdGroupPicker
  516. ref="cRelSelect"
  517. v-model="companyUnit"
  518. :single="false"
  519. :read-only="false"
  520. :root-node="rootNodeData"
  521. @change="changecompany"
  522. />
  523. </div>
  524. <AuditClassIndexTable
  525. ref="indexSelect"
  526. :visible="indexTableShow"
  527. :root-node="rootNodeData"
  528. :class-data="classdata"
  529. @listMxSelected="indexlistMxSelected"
  530. />
  531. </span>
  532. </template>
  533. <script>
  534. import { Modal, message } from 'ant-design-vue'
  535. import auditAdvancedGroup from '../../components/audit-advanced-group.vue'
  536. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  537. import auditMaintainService from '../maintain/audit-maintain-service'
  538. import AuditSelectMaintain from '../maintain/audit-select-maintain.vue'
  539. import roleModal from './role-modal.vue'
  540. import projectModal from './project-modal.vue'
  541. import components from './_import-components/audit-sqapply-from-import'
  542. import auditClassTable from './audit-class-table.vue'
  543. import axios from '@/common/services/axios-instance'
  544. import moment from 'moment'
  545. import AuditClassIndexTable from '../dataUphold/audit-class-index-table.vue'
  546. import { getUserInfo } from '@/common/store-mixin'
  547. import DataService from './data-config'
  548. export default {
  549. name: 'AuditSqapplyFrom',
  550. metaInfo: {
  551. title: '授权申请',
  552. },
  553. components: {
  554. ...components,
  555. auditAdvancedGroup,
  556. AuditSelectMaintain,
  557. roleModal,
  558. projectModal,
  559. auditClassTable,
  560. AuditClassIndexTable,
  561. },
  562. mixins: [auditAdvancedGroupMixins],
  563. data() {
  564. return {
  565. mainSendUnit: [],
  566. mainSendPersonal: [],
  567. mainSendProject: [],
  568. // 控制是否展开
  569. expandY: true,
  570. expandW: true,
  571. expandJ: true,
  572. expandPeople: true,
  573. expandRole: true,
  574. expandProject: true,
  575. expandCompany: true,
  576. visibleY: false,
  577. maintaineditable: false,
  578. expandModel: true,
  579. modelChildMXColumns: [
  580. {
  581. title: '序号',
  582. dataIndex: 'sortNum',
  583. customRender: (text, record, index) => `${index + 1}`,
  584. width: '80px',
  585. },
  586. {
  587. title: '模型名称',
  588. dataIndex: 'modelName',
  589. },
  590. {
  591. title: '模型编号',
  592. dataIndex: 'modelCode',
  593. },
  594. {
  595. title: '模型描述',
  596. dataIndex: 'modelDesc',
  597. },
  598. {
  599. dataIndex: 'indexId',
  600. sdHidden: true,
  601. },
  602. ],
  603. companyColumns: [
  604. {
  605. title: '序号',
  606. dataIndex: 'sortNum',
  607. customRender: (text, record, index) => `${index + 1}`,
  608. width: '80px',
  609. },
  610. { dataIndex: 'maintainId', sdHidden: true },
  611. {
  612. title: '公司名称',
  613. dataIndex: 'unitName',
  614. },
  615. {
  616. title: '公司编号',
  617. dataIndex: 'unitCode',
  618. },
  619. {
  620. dataIndex: 'unitId',
  621. sdHidden: true,
  622. },
  623. {
  624. dataIndex: 'indexId',
  625. sdHidden: true,
  626. },
  627. ],
  628. childMXColumns: [
  629. {
  630. title: '序号',
  631. dataIndex: 'sortNum',
  632. customRender: (text, record, index) => `${index + 1}`,
  633. width: '80px',
  634. },
  635. {
  636. title: '分类名称',
  637. dataIndex: 'categoryName',
  638. },
  639. {
  640. title: '分类编号',
  641. dataIndex: 'categoryId',
  642. },
  643. {
  644. dataIndex: 'indexId',
  645. sdHidden: true,
  646. },
  647. ],
  648. childDWColumns: [
  649. {
  650. title: '序号',
  651. dataIndex: 'sortNum',
  652. customRender: (text, record, index) => `${index + 1}`,
  653. width: '80px',
  654. },
  655. { dataIndex: 'id', sdHidden: true },
  656. { dataIndex: 'maintainId', sdHidden: true },
  657. {
  658. title: '单位名称',
  659. dataIndex: 'unitName',
  660. },
  661. {
  662. title: '单位编号',
  663. dataIndex: 'unitCode',
  664. },
  665. {
  666. title: '单位Id',
  667. dataIndex: 'unitId',
  668. sdHidden: true,
  669. },
  670. {
  671. dataIndex: 'indexId',
  672. sdHidden: true,
  673. },
  674. ],
  675. peopleColumns: [
  676. {
  677. title: '序号',
  678. dataIndex: 'sortNum',
  679. customRender: (text, record, index) => `${index + 1}`,
  680. width: '80px',
  681. },
  682. { dataIndex: 'maintainId', sdHidden: true },
  683. {
  684. title: '用户名称',
  685. dataIndex: 'userName',
  686. },
  687. // 所属单位
  688. {
  689. title: '所属单位',
  690. dataIndex: 'userUnit',
  691. },
  692. // userId
  693. {
  694. title: '用户Id',
  695. dataIndex: 'userId',
  696. sdHidden: true,
  697. },
  698. {
  699. dataIndex: 'indexId',
  700. sdHidden: true,
  701. },
  702. ],
  703. projectColumns: [
  704. {
  705. title: '序号',
  706. dataIndex: 'sortNum',
  707. customRender: (text, record, index) => `${index + 1}`,
  708. width: '80px',
  709. },
  710. { dataIndex: 'maintainId', sdHidden: true },
  711. {
  712. title: '项目名称',
  713. dataIndex: 'projectName',
  714. },
  715. // 所属单位
  716. {
  717. title: '所属单位',
  718. dataIndex: 'projectUnit',
  719. },
  720. // userId
  721. {
  722. title: '项目Id',
  723. dataIndex: 'projectId',
  724. sdHidden: true,
  725. },
  726. {
  727. dataIndex: 'indexId',
  728. sdHidden: true,
  729. },
  730. ],
  731. roleColumns: [
  732. {
  733. title: '序号',
  734. dataIndex: 'sortNum',
  735. customRender: (text, record, index) => `${index + 1}`,
  736. width: '80px',
  737. },
  738. { dataIndex: 'maintainId', sdHidden: true },
  739. {
  740. title: '角色名称',
  741. dataIndex: 'roleName',
  742. },
  743. {
  744. dataIndex: 'roleId',
  745. sdHidden: true,
  746. },
  747. {
  748. dataIndex: 'indexId',
  749. sdHidden: true,
  750. },
  751. ],
  752. classIndexFileds: [
  753. {
  754. caption: '序号',
  755. name: 'sortNum',
  756. dataType: 'sortNum',
  757. },
  758. {
  759. caption: '业务名称',
  760. name: 'indexName',
  761. dataType: 'string',
  762. },
  763. {
  764. caption: '业务编号',
  765. name: 'id',
  766. dataType: 'string',
  767. },
  768. {
  769. caption: '系统来源名称',
  770. name: 'indexRemark',
  771. dataType: 'string',
  772. },
  773. {
  774. dataIndex: 'indexId',
  775. sdHidden: true,
  776. },
  777. ],
  778. classIndexData: [],
  779. classShow: true,
  780. indexColumns: [
  781. // 序号 ,业务名称 业务编号
  782. {
  783. title: '序号',
  784. dataIndex: 'sortNum',
  785. customRender: (text, record, index) => `${index + 1}`,
  786. width: '80px',
  787. },
  788. {
  789. title: '业务名称',
  790. dataIndex: 'indexName',
  791. },
  792. {
  793. title: '业务编号',
  794. dataIndex: 'id',
  795. },
  796. {
  797. title: '系统来源名称',
  798. dataIndex: 'indexRemark',
  799. },
  800. {
  801. dataIndex: 'indexId',
  802. sdHidden: true,
  803. },
  804. ],
  805. // 控制显隐
  806. indexShowColumns: true,
  807. maintaindata: [],
  808. selectedRowKeys: [],
  809. indexSelectedRowKeys: [],
  810. flag: true,
  811. modelFlag: true,
  812. classtable: false,
  813. rules: [
  814. {
  815. required: true,
  816. trigger: ['change', 'blur'],
  817. },
  818. ],
  819. // 控制是否弹出提示框
  820. roleShow: false,
  821. projectShow: false,
  822. peopleShow: false,
  823. CompanyShow: false,
  824. // flTableShow 是否显示分类表格
  825. flTableShow: false,
  826. indexTableShow: false,
  827. // 分类列表
  828. classdata: [],
  829. // 人员
  830. personaldata: [],
  831. personal: [],
  832. projectData: [],
  833. projectTable: [],
  834. companyData: [],
  835. companyUnit: [],
  836. roleData: [],
  837. roleTable: [],
  838. docType: 'date_apply',
  839. rootNodeData: null,
  840. }
  841. },
  842. watch: {
  843. classdata() {
  844. this.saveForm()
  845. },
  846. },
  847. mounted() {
  848. const userInfo = getUserInfo()
  849. DataService.getCompany(userInfo.account).then((res) => {
  850. this.rootNodeData = {
  851. code: res.data.id,
  852. name: res.data.name,
  853. }
  854. const roles = this.$store.state.sd.common.userInfo.default.roles
  855. const isExport = roles.map((val) => val.code).includes('G-1_DATA_AUDIT_RULE')
  856. if (isExport) {
  857. this.rootNodeData = {
  858. code: '28951',
  859. name: '国家电力投资集团有限公司',
  860. }
  861. }
  862. })
  863. },
  864. methods: {
  865. changeType() {
  866. const empowerType = this.$refs.docform.getFieldValue('empowerType')
  867. if (empowerType === '1') {
  868. this.$refs.docform.setFieldValue('startDate', '')
  869. this.$refs.docform.setFieldValue('endDate', '')
  870. }
  871. if (empowerType === '2') {
  872. // 设置开始时间 为当前时间
  873. // 结束时间为当年最后一天
  874. // 使用moment格式
  875. const start = moment()
  876. const end = moment().endOf('year')
  877. this.$refs.docform.setFieldValue('startDate', start)
  878. this.$refs.docform.setFieldValue('endDate', end)
  879. }
  880. this.saveForm()
  881. },
  882. getmodelsqdata(model) {
  883. this.mainSendUnit = []
  884. },
  885. saveForm() {
  886. const save = new Promise((resolve) => {
  887. this.$refs.docform.setFieldValue('docType', this.docType)
  888. let udata = []
  889. if (this.$refs.docform.getFieldValue('iamLicenseUnitEntitys') !== undefined) {
  890. udata = this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')
  891. }
  892. // 指定公司
  893. let cdata = []
  894. if (this.$refs.docform.getFieldValue('iamAppointUnitEntitys') !== undefined) {
  895. cdata = cdata.concat(this.$refs.docform.getFieldValue('iamAppointUnitEntitys'))
  896. }
  897. // 人员
  898. let pdata = []
  899. if (this.$refs.docform.getFieldValue('iamLicensePeopleEntitys') !== undefined) {
  900. pdata = pdata.concat(this.$refs.docform.getFieldValue('iamLicensePeopleEntitys'))
  901. }
  902. // 角色
  903. let rdata = []
  904. if (this.$refs.docform.getFieldValue('iamLicenseRoleEntitys') !== undefined) {
  905. rdata = rdata.concat(this.$refs.docform.getFieldValue('iamLicenseRoleEntitys'))
  906. }
  907. // 项目
  908. let pjdata = []
  909. if (this.$refs.docform.getFieldValue('iamLicenseProjectEntitys') !== undefined) {
  910. pjdata = pjdata.concat(this.$refs.docform.getFieldValue('iamLicenseProjectEntitys'))
  911. }
  912. if (this.classdata.length > 0) {
  913. const empowerType = this.$refs.docform.getFieldValue('empowerType')
  914. const creatorName = this.$refs.docform.getFieldValue('creatorId')
  915. const createDeptName = this.$refs.docform.getFieldValue('createDeptName')
  916. let sl = null
  917. let el = null
  918. if (empowerType === '0') {
  919. if (this.$refs.docform.getFieldValue('startDate') !== undefined) {
  920. const s = new Date(this.$refs.docform.getFieldValue('startDate'))
  921. const e = new Date(this.$refs.docform.getFieldValue('endDate'))
  922. sl = s.getTime()
  923. el = e.getTime()
  924. // 如果开始时间大于结束时间则提示开始时间不能大于结束时间
  925. if (sl > el) {
  926. message.warning({
  927. title: '提示',
  928. content: '开始时间不能大于结束时间!',
  929. })
  930. return
  931. }
  932. }
  933. }
  934. let idListKeys = []
  935. idListKeys = this.classdata.map((item) => item?.id) || []
  936. const { categoryName, categoryId } = this.classdata[0]
  937. this.$refs.docform.setFieldValue('modelName', categoryName)
  938. this.$refs.docform.setFieldValue('modelCode', categoryId)
  939. let maintainId = ''
  940. if (idListKeys.length > 0) {
  941. maintainId = idListKeys.join(',')
  942. }
  943. let indexKeys = []
  944. indexKeys = this.classIndexData.map((item) => item?.id) || []
  945. const indexIds = indexKeys.join(',')
  946. udata.forEach((item) => {
  947. item.docType = this.docType
  948. item.indexId = indexIds
  949. item.maintainId = maintainId
  950. item.empowerType = empowerType
  951. item.startDate = sl
  952. item.endDate = el
  953. })
  954. this.$refs.docform.setFieldValue('iamLicenseUnitEntitys', udata)
  955. // 处理指定公司数据
  956. cdata.forEach((item) => {
  957. item.indexId = indexIds
  958. item.docType = this.docType
  959. item.maintainId = maintainId
  960. item.empowerType = empowerType
  961. item.startDate = sl
  962. item.endDate = el
  963. })
  964. this.$refs.docform.setFieldValue('iamAppointUnitEntitys', cdata)
  965. // 处理角色数据
  966. rdata.forEach((item) => {
  967. item.indexId = indexIds
  968. item.docType = this.docType
  969. item.maintainId = maintainId
  970. item.empowerType = empowerType
  971. item.startDate = sl
  972. item.endDate = el
  973. })
  974. this.$refs.docform.setFieldValue('iamLicenseRoleEntitys', rdata)
  975. // 处理项目数据
  976. pjdata.forEach((item) => {
  977. item.docType = this.docType
  978. item.indexId = indexIds
  979. item.maintainId = maintainId
  980. item.empowerType = empowerType
  981. item.startDate = sl
  982. item.endDate = el
  983. })
  984. this.$refs.docform.setFieldValue('iamLicenseProjectEntitys', pjdata)
  985. // 处理人员数据
  986. pdata.forEach((item) => {
  987. item.docType = this.docType
  988. item.indexId = indexIds
  989. item.maintainId = maintainId
  990. item.empowerType = empowerType
  991. item.startDate = sl
  992. item.endDate = el
  993. })
  994. this.$refs.docform.setFieldValue('iamLicensePeopleEntitys', pdata)
  995. }
  996. resolve(true)
  997. })
  998. return save
  999. },
  1000. validForm() {
  1001. if (this.classdata.length === 0) {
  1002. Modal.warning({
  1003. title: '提示',
  1004. content: '请选择需要授权的分类!',
  1005. })
  1006. return Promise.resolve(false)
  1007. } else {
  1008. const udata = this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')
  1009. const cdata = this.$refs.docform.getFieldValue('iamAppointUnitEntitys')
  1010. const pdata = this.$refs.docform.getFieldValue('iamLicensePeopleEntitys')
  1011. const rdata = this.$refs.docform.getFieldValue('iamLicenseRoleEntitys')
  1012. const pjdata = this.$refs.docform.getFieldValue('iamLicenseProjectEntitys')
  1013. if (
  1014. udata.length === 0 &&
  1015. pdata.length === 0 &&
  1016. pjdata.length === 0 &&
  1017. rdata.length === 0 &&
  1018. cdata.length === 0 &&
  1019. this.classIndexData.length === 0
  1020. ) {
  1021. Modal.warning({
  1022. title: '提示',
  1023. content: '请至少选择一个授权项!',
  1024. })
  1025. return Promise.resolve(false)
  1026. }
  1027. this.$refs.docform.setFieldValue(
  1028. 'title',
  1029. this.$refs.docform.getFieldValue('creatorName') + '分类授权申请'
  1030. )
  1031. return Promise.resolve(true)
  1032. // }
  1033. }
  1034. },
  1035. actionBtnClick(evt, { button, FlowData }) {
  1036. if (button.fakeId === 'save' || button.fakeId === 'workflow-push') {
  1037. // 保存前先校验计划是否已经存在
  1038. evt.waitUntil(
  1039. new Promise((resolve, reject) => {
  1040. this.saveForm().then((res) => {
  1041. if (!res) {
  1042. evt.preventDefault()
  1043. }
  1044. resolve()
  1045. })
  1046. })
  1047. )
  1048. }
  1049. },
  1050. removemx(keys) {
  1051. // 用的序号作key,从大往小删,防止串了
  1052. const removeKeys = keys.sort((a, b) => b - a)
  1053. removeKeys.forEach((key) => {
  1054. this.classdata.splice(key, 1)
  1055. })
  1056. this.selectedRowKeys = []
  1057. },
  1058. removemxIndex(keys) {
  1059. // 用的序号作key,从大往小删,防止串了
  1060. const removeKeys = keys.sort((a, b) => b - a)
  1061. removeKeys.forEach((key) => {
  1062. this.classIndexData.splice(key, 1)
  1063. })
  1064. this.indexSelectedRowKeys = []
  1065. },
  1066. getmaintaindata(model, fields) {
  1067. if (this.modelFlag) {
  1068. this.maintaineditable = !fields.iamLicenseUnitEntitys.readonly
  1069. const id = model.id
  1070. if (id) {
  1071. auditMaintainService.getmaintainsqdata(id).then((data) => {
  1072. this.maintaindata = data
  1073. this.getmodelsqdata(model)
  1074. })
  1075. }
  1076. this.modelFlag = false
  1077. }
  1078. return true
  1079. },
  1080. getClassdata(model, fields) {
  1081. if (this.flag) {
  1082. this.classtable = !fields.iamLicenseUnitEntitys.readonly
  1083. const id = model.id
  1084. if (id) {
  1085. auditMaintainService.getclassdata(id).then((res) => {
  1086. this.classdata = res.category
  1087. this.classIndexData = res.index
  1088. this.getmodelsqdata(model)
  1089. })
  1090. }
  1091. this.flag = false
  1092. }
  1093. return true
  1094. },
  1095. showSelection() {
  1096. return true
  1097. },
  1098. onSelectChange(selectedRowKeys) {
  1099. this.selectedRowKeys = selectedRowKeys
  1100. },
  1101. onSelectChangeIndex(selectedRowKeys) {
  1102. this.indexSelectedRowKeys = selectedRowKeys
  1103. },
  1104. // 单位
  1105. change(values) {
  1106. let iamAuditDwMxs = []
  1107. if (this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')) {
  1108. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicenseUnitEntitys')
  1109. }
  1110. if (values.length < iamAuditDwMxs.length) {
  1111. iamAuditDwMxs = []
  1112. }
  1113. values.forEach((element) => {
  1114. if (iamAuditDwMxs.findIndex((dw) => dw.unitCode === element.code) === -1) {
  1115. const mmc = {}
  1116. mmc.unitName = element.name
  1117. // mmc.unitCode = element.props?.code
  1118. mmc.unitCode = element.code + ''
  1119. mmc.unitId = element.code
  1120. iamAuditDwMxs.push(mmc)
  1121. }
  1122. })
  1123. this.$refs.docform.setFieldValue('iamLicenseUnitEntitys', iamAuditDwMxs)
  1124. this.saveForm()
  1125. },
  1126. // 公司
  1127. changecompany(values) {
  1128. let iamAuditDwMxs = []
  1129. // 公司
  1130. if (this.$refs.docform.getFieldValue('iamAppointUnitEntitys')) {
  1131. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamAppointUnitEntitys')
  1132. }
  1133. if (values.length < iamAuditDwMxs.length) {
  1134. iamAuditDwMxs = []
  1135. }
  1136. values.forEach((element) => {
  1137. if (iamAuditDwMxs.findIndex((dw) => dw.unitCode === element.code) === -1) {
  1138. const mmc = {}
  1139. mmc.unitName = element.name
  1140. mmc.unitCode = element.code + ''
  1141. mmc.unitId = element.code
  1142. iamAuditDwMxs.push(mmc)
  1143. }
  1144. })
  1145. this.$refs.docform.setFieldValue('iamAppointUnitEntitys', iamAuditDwMxs)
  1146. this.saveForm()
  1147. },
  1148. // 用户
  1149. // iamLicensePeopleEntitys
  1150. changePeople(values) {
  1151. let iamAuditDwMxs = []
  1152. if (this.$refs.docform.getFieldValue('iamLicensePeopleEntitys')) {
  1153. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicensePeopleEntitys')
  1154. }
  1155. // 如果values长度小于iamAuditDwMxs长度,说明有删除
  1156. if (values.length < iamAuditDwMxs.length) {
  1157. iamAuditDwMxs = []
  1158. }
  1159. values.forEach((element) => {
  1160. if (iamAuditDwMxs.findIndex((dw) => dw.userId === element.code) === -1) {
  1161. const mmc = {}
  1162. mmc.userName = element.name
  1163. mmc.userId = element.code
  1164. axios({
  1165. url: 'api/xcoa-mobile/v1/iammodelmaintain/findGroupByAccount?account=' + element.code,
  1166. method: 'get',
  1167. }).then((res) => {
  1168. mmc.userUnit = res.data.name
  1169. iamAuditDwMxs.push(mmc)
  1170. this.$refs.docform.setFieldValue('iamLicensePeopleEntitys', iamAuditDwMxs)
  1171. })
  1172. }
  1173. })
  1174. this.saveForm()
  1175. },
  1176. // 角色
  1177. changeRole(values) {
  1178. let iamAuditDwMxs = []
  1179. if (this.$refs.docform.getFieldValue('iamLicenseRoleEntitys')) {
  1180. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicenseRoleEntitys')
  1181. }
  1182. if (values.length < iamAuditDwMxs.length) {
  1183. iamAuditDwMxs = []
  1184. }
  1185. values.forEach((element) => {
  1186. if (iamAuditDwMxs.findIndex((dw) => dw.roleId === element.id) === -1) {
  1187. const mmc = {}
  1188. mmc.roleName = element.name
  1189. mmc.roleId = element.id
  1190. iamAuditDwMxs.push(mmc)
  1191. }
  1192. })
  1193. this.$refs.docform.setFieldValue('iamLicenseRoleEntitys', iamAuditDwMxs)
  1194. this.saveForm()
  1195. },
  1196. // 项目
  1197. changeProject(values) {
  1198. let iamAuditDwMxs = []
  1199. // iamAuditDwMxs = this.projectData
  1200. if (this.$refs.docform.getFieldValue('iamLicenseProjectEntitys')) {
  1201. iamAuditDwMxs = this.$refs.docform.getFieldValue('iamLicenseProjectEntitys')
  1202. }
  1203. if (values.length < iamAuditDwMxs.length) {
  1204. iamAuditDwMxs = []
  1205. }
  1206. values.forEach((element) => {
  1207. if (iamAuditDwMxs.findIndex((dw) => dw.projectId === element.id) === -1) {
  1208. const mmc = {}
  1209. mmc.projectName = element.projectTitle
  1210. mmc.projectId = element.id
  1211. mmc.projectUnit = element.leadUnitName
  1212. iamAuditDwMxs.push(mmc)
  1213. }
  1214. })
  1215. this.$refs.docform.setFieldValue('iamLicenseProjectEntitys', iamAuditDwMxs)
  1216. this.saveForm()
  1217. },
  1218. // 选择模型列表
  1219. mxRelSelect() {
  1220. // 选择模型列表
  1221. this.visibleY = true
  1222. },
  1223. flRelSelect() {
  1224. this.flTableShow = true
  1225. },
  1226. indexRelSelect() {
  1227. if (this.classdata.length === 0) {
  1228. message.warning({
  1229. title: '提示',
  1230. content: '请先选择分类!',
  1231. })
  1232. return
  1233. }
  1234. this.indexTableShow = true
  1235. },
  1236. peopleRelSelect() {
  1237. setTimeout(() => {
  1238. this.$refs.peopleRelSelect.openPicker()
  1239. }, 0)
  1240. },
  1241. projectRelSelect() {
  1242. this.projectShow = true
  1243. },
  1244. roleRelSelect() {
  1245. this.roleShow = true
  1246. },
  1247. companylSelect() {
  1248. // 选择申请单位
  1249. setTimeout(() => {
  1250. this.$refs.cRelSelect.openPicker()
  1251. }, 0)
  1252. },
  1253. // 选择申请单位
  1254. dwRelSelect() {
  1255. // 选择申请单位
  1256. setTimeout(() => {
  1257. this.$refs.dwRelSelect.openPicker()
  1258. }, 0)
  1259. },
  1260. indexlistMxSelected(keys, keyinfos) {
  1261. let iamAuditDwMxs = []
  1262. iamAuditDwMxs = this.classIndexData
  1263. keyinfos.forEach((element) => {
  1264. if (iamAuditDwMxs.findIndex((dw) => dw.id === element.id) === -1) {
  1265. iamAuditDwMxs.push(element)
  1266. }
  1267. })
  1268. this.indexTableShow = false
  1269. this.classIndexData = iamAuditDwMxs
  1270. },
  1271. listMxSelected(keys, keyinfos) {
  1272. const iamAuditMxs = []
  1273. // iamAuditMxs = this.maintaindata
  1274. keyinfos.forEach((element) => {
  1275. const mmc = {}
  1276. mmc.modelName = element.modelName
  1277. mmc.modelCode = element.modelCode
  1278. mmc.modelDesc = element.modelDesc
  1279. mmc.id = element.id
  1280. iamAuditMxs.push(mmc)
  1281. })
  1282. this.maintaindata = iamAuditMxs
  1283. // 处理人员数据-仅增加新增的
  1284. // pdata.forEach((item) => {
  1285. // item.docType = 'apply'
  1286. // item.maintainId = maintainId
  1287. // })
  1288. },
  1289. classListMxSelected(keys, keyinfos) {
  1290. const iamAuditMxs = []
  1291. keyinfos.map((item) => {
  1292. // 判断当前模型ID是否存在存在则不添加
  1293. const m = iamAuditMxs.find((p) => p.id === item.id)
  1294. if (!m) {
  1295. const mmc = {}
  1296. mmc.id = item.id
  1297. mmc.categoryName = item.categoryName
  1298. mmc.categoryId = item.categoryId
  1299. iamAuditMxs.push(mmc)
  1300. }
  1301. })
  1302. this.classdata = iamAuditMxs
  1303. this.saveForm()
  1304. },
  1305. },
  1306. }
  1307. </script>
  1308. <style module lang="scss">
  1309. @use '@/common/design' as *;
  1310. @import '@/webflow/sd-flow-form.scss';
  1311. .btnselect {
  1312. position: relative;
  1313. top: 2px;
  1314. right: 80px;
  1315. float: right;
  1316. .batchselect {
  1317. z-index: 100;
  1318. margin-left: 10px;
  1319. }
  1320. }
  1321. .btnselectmaintain {
  1322. position: relative;
  1323. float: right;
  1324. .batchselect {
  1325. z-index: 100;
  1326. margin-right: -10px;
  1327. margin-left: 10px;
  1328. }
  1329. }
  1330. .maintaintable {
  1331. :global(.ant-table-thead > tr > th) {
  1332. border-right: none;
  1333. }
  1334. :global(.ant-table-bordered.ant-table-empty .ant-table-placeholder) {
  1335. border: none;
  1336. }
  1337. :global(.ant-table-body table) {
  1338. // border-left:none;
  1339. border: none;
  1340. }
  1341. }
  1342. </style>