iam-audit-extrnal-form.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. <template>
  2. <audit-form-top-banner :handel-save-form="saveForm" :form-data="mode" @handelSaveForm="saveForm">
  3. <sd-detail-form
  4. ref="iamExternalBaseDetail"
  5. form-id="iamExternalBase"
  6. page-id="audit/auditsource/extrnal/iamExternalBase"
  7. :record-id="this.$route.query.record ? parseInt(this.$route.query.record) : null"
  8. :class="$style.form"
  9. @close="close(true)"
  10. @saved="WPJGKSave"
  11. @sdFormReady="sdFormReady"
  12. >
  13. <template v-slot="{ model, fields }">
  14. <table>
  15. <tr>
  16. <td>
  17. <audit-advanced-group
  18. :expand="basicExpand"
  19. :expand-str="'basicExpand'"
  20. :group-label="'基本信息'"
  21. tablestyle="''"
  22. @changedClick="changedClick"
  23. ></audit-advanced-group>
  24. </td>
  25. </tr>
  26. </table>
  27. <table v-show="basicExpand">
  28. <tr>
  29. <!-- 统一社会信用代码 -->
  30. <sd-form-item-td name="code" />
  31. <!-- 企业名称 -->
  32. <sd-form-item-td name="name" />
  33. </tr>
  34. <tr>
  35. <!-- 类型 -->
  36. <sd-form-item-td name="category" />
  37. <!-- 住所 -->
  38. <sd-form-item-td name="address" />
  39. </tr>
  40. <tr>
  41. <!-- 法定代表人 -->
  42. <sd-form-item-td name="juridicalPerson" />
  43. <!-- 注册资本 -->
  44. <sd-form-item-td name="capital" />
  45. </tr>
  46. <tr>
  47. <!-- 成立日期 -->
  48. <sd-form-item-td name="foundTime" :colspan="3" :input-props="{ style: 'width:100%' }" />
  49. </tr>
  50. <tr>
  51. <!-- 简介 -->
  52. <sd-form-item-td name="introducation" :colspan="3">
  53. <a-textarea v-model="model.introducation" :rows="3" />
  54. </sd-form-item-td>
  55. </tr>
  56. <tr>
  57. <!-- 企业状态 -->
  58. <sd-form-item-td name="status" />
  59. <!-- 是否黑名单 -->
  60. <!-- <sd-form-item-td name="isBlackList" /> -->
  61. </tr>
  62. <tr>
  63. <!-- 是否入库 -->
  64. <sd-form-item-td name="isWarehousing" />
  65. <!-- 入库期限 -->
  66. <sd-form-item-td name="warehousingTerm" />
  67. </tr>
  68. <tr>
  69. <!-- 编制人员 -->
  70. <sd-form-item-td name="authName" />
  71. <!-- 编制日期 -->
  72. <sd-form-item-td name="authTime" />
  73. </tr>
  74. <tr>
  75. <!-- 编制单位 -->
  76. <sd-form-item-td name="authUnit" :colspan="3" />
  77. </tr>
  78. <tr>
  79. <!-- 附件 -->
  80. <sd-form-item-td name="attachment" :colspan="3" />
  81. </tr>
  82. <tr>
  83. <!-- id -->
  84. <sd-form-item-td name="id" :hidden="true" />
  85. </tr>
  86. </table>
  87. <table>
  88. <tr
  89. ><td :colspan="4">
  90. <sd-form-item name="iamExtrnalContactEntitys" :label="null">
  91. <template v-slot:read-and-edit="{ editable }">
  92. <audit-advanced-group
  93. :expand="contactExpand"
  94. :expand-str="'contactExpand'"
  95. :group-label="'联系人信息'"
  96. @changedClick="changedClick"
  97. >
  98. <template>
  99. <xm-child-table
  100. v-if="contactExpand"
  101. ref="tabaData"
  102. v-model="model.iamExtrnalContactEntitys"
  103. :class="$style.deptPlanChild"
  104. label="联系人信息"
  105. :read-only="!editable"
  106. :fields="Array.from(fields.iamExtrnalContactEntitys.attr.dync)"
  107. :columns="contactColumns"
  108. >
  109. <!-- input-form 表示这部分是子表组件的form插槽 -->
  110. <template v-slot:input-form="{ model }">
  111. <!-- 外聘机构id -->
  112. <sd-form-item-td name="extrnalId" />
  113. <!-- 序号 -->
  114. <sd-form-item-td name="contactOrder" />
  115. <!-- 姓名 -->
  116. <sd-form-item-td name="contactName" />
  117. <!-- 电话 -->
  118. <sd-form-item-td name="phone" />
  119. <!-- 邮箱 -->
  120. <sd-form-item-td name="email" />
  121. <!-- 职位 -->
  122. <sd-form-item-td name="post" />
  123. <!-- 备注 -->
  124. <sd-form-item-td name="remark" />
  125. </template>
  126. </xm-child-table>
  127. </template>
  128. </audit-advanced-group>
  129. </template> </sd-form-item
  130. ></td>
  131. </tr>
  132. </table>
  133. <table>
  134. <tr>
  135. <td>
  136. <audit-advanced-group
  137. :expand="qualificationExpand"
  138. :expand-str="'qualificationExpand'"
  139. :group-label="'资质信息'"
  140. tablestyle="''"
  141. @changedClick="changedClick"
  142. ></audit-advanced-group>
  143. </td>
  144. </tr>
  145. </table>
  146. <table v-show="qualificationExpand">
  147. <tr>
  148. <!-- 注册会计师人数 -->
  149. <sd-form-item-td name="accountingNumber" :input-props="{ style: 'width:100%' }" />
  150. <!-- 注册造价工程师人数 -->
  151. <sd-form-item-td name="engineerNumber" :input-props="{ style: 'width:100%' }" />
  152. </tr>
  153. <tr
  154. ><td :colspan="4">
  155. <sd-form-item name="iamExtrnalQualityEntitys" :label="null">
  156. <template v-slot:read-and-edit="{ editable }">
  157. <audit-advanced-group
  158. :expand="qualityExpand"
  159. :expand-str="'qualityExpand'"
  160. :group-label="'资质信息列表'"
  161. @changedClick="changedClick"
  162. >
  163. <template>
  164. <xm-child-table
  165. v-if="qualityExpand"
  166. ref="tabaData"
  167. v-model="model.iamExtrnalQualityEntitys"
  168. :class="$style.deptPlanChild"
  169. label="资质信息"
  170. :read-only="!editable"
  171. :fields="Array.from(fields.iamExtrnalQualityEntitys.attr.dync)"
  172. :columns="qualityColumns"
  173. >
  174. <!-- input-form 表示这部分是子表组件的form插槽 -->
  175. <template v-slot:input-form="{ model }">
  176. <!-- 外聘机构id -->
  177. <sd-form-item-td name="extrnalId" />
  178. <!-- 序号 -->
  179. <sd-form-item-td name="qualityOrder" />
  180. <!-- 资质名称 -->
  181. <sd-form-item-td name="qualityName" />
  182. <!-- 有效期限 -->
  183. <sd-form-item-td name="effectiveDate" />
  184. <!-- 资质证书 -->
  185. <sd-form-item-td name="attachment" />
  186. </template>
  187. </xm-child-table>
  188. </template>
  189. </audit-advanced-group>
  190. </template> </sd-form-item
  191. ></td>
  192. </tr>
  193. </table>
  194. <table>
  195. <tr
  196. ><td :colspan="4">
  197. <sd-form-item name="iamExtrnalProjectEntitys" :label="null">
  198. <template v-slot:read-and-edit="{ editable }">
  199. <audit-advanced-group
  200. :expand="projectExpand"
  201. :expand-str="'projectExpand'"
  202. :group-label="'项目经验'"
  203. @changedClick="changedClick"
  204. >
  205. <template>
  206. <sd-child-table
  207. ref="tabaData"
  208. v-model="model.iamExtrnalProjectEntitys"
  209. :class="$style.deptPlanChild"
  210. label="项目信息"
  211. :read-only="!editable"
  212. :fields="
  213. [
  214. {
  215. caption: '序号',
  216. name: 'sortNum',
  217. dataType: 'number',
  218. },
  219. ].concat(Array.from(fields.iamExtrnalProjectEntitys.attr.dync))
  220. "
  221. :columns="projectChildColumns"
  222. :flagpage="true"
  223. @change="changeProjectStartEndTime"
  224. >
  225. <!-- form 表示这部分是子表组件的form插槽 -->
  226. <template v-slot:form="{ model }">
  227. <table>
  228. <tr>
  229. <!-- 项目名称 -->
  230. <sd-form-item-td name="projectName" />
  231. <!-- 项目编号 -->
  232. <sd-form-item-td name="projectNo" />
  233. </tr>
  234. <tr>
  235. <!-- 审计机构 -->
  236. <sd-form-item-td name="auditOrg" />
  237. <!-- 被审计单位 -->
  238. <sd-form-item-td name="auditedUnit" />
  239. </tr>
  240. <tr>
  241. <!-- 项目组长 -->
  242. <sd-form-item-td name="projectHeadman" />
  243. </tr>
  244. <tr>
  245. <!-- 项目开始日期 -->
  246. <!-- 项目结束日期 -->
  247. <sd-form-item-td
  248. label="项目起止日期"
  249. :colspan="3"
  250. :name="['projectStartTime', 'projectEndTime']"
  251. />
  252. </tr>
  253. <tr>
  254. <!-- 审计期间开始时间 -->
  255. <!-- 审计期间结束时间 -->
  256. <sd-form-item-td
  257. label="审计期间"
  258. :colspan="3"
  259. :name="['auditStartTime', 'auditEndTime']"
  260. />
  261. </tr>
  262. <tr>
  263. <!-- 审计情况描述 -->
  264. <sd-form-item-td name="auditCondition" :colspan="3">
  265. <a-textarea v-model="model.auditCondition" :rows="3" />
  266. </sd-form-item-td>
  267. </tr>
  268. <tr>
  269. <!-- 维护人员 -->
  270. <sd-form-item-td name="creatorName" />
  271. <!-- 维护日期 -->
  272. <sd-form-item-td name="creationTime" />
  273. </tr>
  274. <tr>
  275. <!-- 附件 -->
  276. <sd-form-item-td name="attachment" :colspan="3" />
  277. </tr>
  278. </table>
  279. </template>
  280. </sd-child-table>
  281. </template>
  282. </audit-advanced-group>
  283. </template> </sd-form-item
  284. ></td>
  285. </tr>
  286. <tr
  287. ><td :colspan="4">
  288. <sd-form-item name="iamExtrnalCheckEntitys" :label="null">
  289. <template v-slot:read-and-edit="{ editable }">
  290. <audit-advanced-group
  291. :expand="CheckExpand"
  292. :expand-str="'CheckExpand'"
  293. :group-label="'考评记录'"
  294. @changedClick="changedClick"
  295. >
  296. <template>
  297. <sd-child-table
  298. ref="tabaData"
  299. v-model="model.iamExtrnalCheckEntitys"
  300. :class="$style.deptPlanChild"
  301. label="考评记录"
  302. :read-only="!editable"
  303. :fields="
  304. [
  305. {
  306. caption: '序号',
  307. name: 'sortNum',
  308. dataType: 'number',
  309. },
  310. ].concat(Array.from(fields.iamExtrnalCheckEntitys.attr.dync))
  311. "
  312. :columns="checkChildColumns"
  313. :flagpage="true"
  314. >
  315. <!-- form 表示这部分是子表组件的form插槽 -->
  316. <template v-slot:form="{ model }">
  317. <table>
  318. <tr>
  319. <td style="width:15%"></td>
  320. </tr>
  321. <tr>
  322. <!-- 考评名称 -->
  323. <sd-form-item-td name="checkName" :input-td-attrs="{ colspan: 3 }" />
  324. </tr>
  325. <tr>
  326. <!-- 考评结果 -->
  327. <sd-form-item-td name="checkResult" :colspan="3">
  328. <a-textarea
  329. v-model="model.checkResult"
  330. :autosize="{ minRows: 3, maxRows: 3 }"
  331. ></a-textarea>
  332. </sd-form-item-td>
  333. </tr>
  334. <tr>
  335. <!-- 附件 -->
  336. <sd-form-item-td name="attachment" :colspan="3" />
  337. </tr>
  338. <tr>
  339. <!-- 编制人员 -->
  340. <sd-form-item-td name="creatorName" />
  341. <!-- 编制时间 -->
  342. <sd-form-item-td name="creationTime" />
  343. </tr>
  344. </table>
  345. </template>
  346. </sd-child-table>
  347. </template>
  348. </audit-advanced-group>
  349. </template> </sd-form-item
  350. ></td>
  351. </tr>
  352. </table>
  353. <table>
  354. <tr
  355. ><td :colspan="4">
  356. <sd-form-item name="iamExternalEvaluationEntitys" :label="null">
  357. <template v-slot:read-and-edit="{ editable }">
  358. <audit-advanced-group
  359. :expand="evaluationExpand"
  360. :expand-str="'evaluationExpand'"
  361. :group-label="'人员考评信息'"
  362. @changedClick="changedClick"
  363. >
  364. <template>
  365. <xm-child-table
  366. v-if="evaluationExpand"
  367. ref="tabaData"
  368. v-model="model.iamExternalEvaluationEntitys"
  369. :class="$style.deptPlanChild"
  370. label="人员考评信息"
  371. :read-only="!editable"
  372. :fields="Array.from(fields.iamExternalEvaluationEntitys.attr.dync)"
  373. :columns="evaluationChildColumns"
  374. >
  375. <!-- input-form 表示这部分是子表组件的form插槽 -->
  376. <template v-slot:input-form="{ model }">
  377. <!-- 外聘机构id -->
  378. <sd-form-item-td name="externalId" />
  379. <!-- 审计年度 -->
  380. <!-- <sd-form-item-td name="auditYear"/> -->
  381. <sd-form-item-td label="审计年度" prop="auditYear">
  382. <a-date-picker
  383. v-model="model.iamExternalEvaluationEntitys.auditYear"
  384. mode="year"
  385. picker="YYYY"
  386. format="yyyy"
  387. :allow-clear="false"
  388. placeholder="选择年度"
  389. :input-read-only="true"
  390. :value="year"
  391. :open="endOpen"
  392. @panelChange="yearChange"
  393. @openChange="handleEndOpenChange"
  394. />
  395. </sd-form-item-td>
  396. <!-- 序号 -->
  397. <sd-form-item-td name="evaluationOrder" />
  398. <!-- 项目名称 -->
  399. <sd-form-item-td name="projectName" />
  400. <!-- 项目编号 -->
  401. <sd-form-item-td name="projectNo" />
  402. <!-- 考核对象 -->
  403. <sd-form-item-td name="evaluationObject" />
  404. <!-- 审计机构 -->
  405. <sd-form-item-td name="auditOrg" />
  406. <!-- 项目组长 -->
  407. <sd-form-item-td name="projectHeadman" />
  408. <!-- 本项目担任角色 -->
  409. <sd-form-item-td name="projectRole" />
  410. <!-- 人员考评结果 -->
  411. <sd-form-item-td name="evaluationResult" />
  412. <!-- 人员评分 -->
  413. <sd-form-item-td name="evaluationGrade" />
  414. </template>
  415. </xm-child-table>
  416. </template>
  417. </audit-advanced-group>
  418. </template> </sd-form-item
  419. ></td>
  420. </tr>
  421. </table>
  422. </template>
  423. <span slot="AppointmentTime" slot-scope="appointmentTime">
  424. {{ appointmentTime | sdDateFormat('YYYY-MM-DD HH:mm') }}
  425. </span>
  426. </sd-detail-form>
  427. </audit-form-top-banner>
  428. </template>
  429. <script>
  430. import moment from 'moment'
  431. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  432. import { Message } from 'ant-design-vue'
  433. import axios from '@/common/services/axios-instance'
  434. import sdDateFormat from '@/common/filters/sd-date-format'
  435. import auditFormTopBanner from '../../../components/audit-form-top-banner'
  436. import auditAdvancedGroup from '../../../components/audit-advanced-group.vue'
  437. import auditAdvancedGroupMixins from '../../../components/audit-advanced-group-mixins'
  438. import components from './_import-components/iam-audit-extrnal-form-import'
  439. export default {
  440. name: 'IamAuditExtrnalForm',
  441. metaInfo: {
  442. title: '外聘机构',
  443. },
  444. components: {
  445. ...components,
  446. auditFormTopBanner,
  447. auditAdvancedGroup,
  448. },
  449. mixins: [auditAdvancedGroupMixins],
  450. props: {
  451. defaultTime: {
  452. type: [Date, String],
  453. default: null,
  454. },
  455. },
  456. data() {
  457. return {
  458. endOpen: false,
  459. year: null,
  460. basicExpand: true,
  461. mode: null,
  462. contactExpand: true,
  463. qualificationExpand: true,
  464. qualityExpand: true,
  465. projectExpand: true,
  466. CheckExpand: true,
  467. evaluationExpand: true,
  468. contactColumns: [
  469. {
  470. title: '序号',
  471. dataIndex: 'contactOrder',
  472. width: '80px',
  473. customRender: (text, record, index) => `${index + 1}`,
  474. },
  475. { dataIndex: 'email', width: '20%' },
  476. { dataIndex: 'remark', width: '20%' },
  477. ],
  478. qualityColumns: [
  479. {
  480. title: '序号',
  481. dataIndex: 'qualityOrder',
  482. width: '80px',
  483. customRender: (text, record, index) => `${index + 1}`,
  484. },
  485. { dataIndex: 'effectiveDate', width: '200px' },
  486. ],
  487. projectChildColumns: [
  488. {
  489. title: '序号',
  490. dataIndex: 'sortNum',
  491. width: '80px',
  492. customRender: (text, record, index) => `${index + 1}`,
  493. },
  494. { dataIndex: 'projectName', sdHidden: false },
  495. { dataIndex: 'projectNo', sdHidden: false, width: '150px' },
  496. { dataIndex: 'auditOrg', sdHidden: false, width: '180px' },
  497. { dataIndex: 'projectHeadman', sdHidden: false, width: '120px' },
  498. {
  499. dataIndex: 'projectStartEndTime',
  500. sdHidden: false,
  501. customRender: (text, record, index) => {
  502. var startTime = sdDateFormat(record.projectStartTime, 'yyyy-MM-DD')
  503. var endTime = sdDateFormat(record.projectEndTime, 'yyyy-MM-DD')
  504. return startTime + '~' + endTime
  505. },
  506. },
  507. { dataIndex: 'projectStartTime', sdHidden: true },
  508. { dataIndex: 'projectEndTime', sdHidden: true },
  509. { dataIndex: 'auditStartTime', sdHidden: true },
  510. { dataIndex: 'auditEndTime', sdHidden: true, title: '审计结束日期', width: '150px' },
  511. { dataIndex: 'auditCondition', sdHidden: false, width: '15%' },
  512. { dataIndex: 'creatorName', sdHidden: true },
  513. { dataIndex: 'creationTime', sdHidden: true },
  514. { dataIndex: 'attachment', sdHidden: true },
  515. { dataIndex: 'auditedUnit', sdHidden: true },
  516. ],
  517. checkChildColumns: [
  518. {
  519. title: '序号',
  520. dataIndex: 'sortNum',
  521. width: '80px',
  522. customRender: (text, record, index) => `${index + 1}`,
  523. },
  524. { dataIndex: 'creatorName', sdHidden: true },
  525. { dataIndex: 'creationTime', sdHidden: true },
  526. ],
  527. evaluationChildColumns: [
  528. {
  529. title: '序号',
  530. dataIndex: 'evaluationOrder',
  531. width: '80px',
  532. customRender: (text, record, index) => `${index + 1}`,
  533. },
  534. { dataIndex: 'externalId', sdHidden: true },
  535. { dataIndex: 'auditYear', sdHidden: false },
  536. { dataIndex: 'evaluationOrder', sdHidden: false },
  537. { dataIndex: 'projectName', sdHidden: false },
  538. { dataIndex: 'projectNo', sdHidden: false },
  539. { dataIndex: 'evaluationObject', sdHidden: false },
  540. { dataIndex: 'auditOrg', sdHidden: false },
  541. { dataIndex: 'projectHeadman', sdHidden: false },
  542. { dataIndex: 'projectRole', sdHidden: false },
  543. { dataIndex: 'evaluationResult', sdHidden: false },
  544. { dataIndex: 'evaluationGrade', sdHidden: false },
  545. { dataIndex: 'creatorName', sdHidden: true },
  546. { dataIndex: 'creationTime', sdHidden: true },
  547. ],
  548. }
  549. },
  550. methods: {
  551. moment,
  552. // 页面加载完成后
  553. handleEndOpenChange(open) {
  554. this.endOpen = open
  555. },
  556. sdFormReady() {
  557. this.mode = this.$refs.iamExternalBaseDetail.formData.mode
  558. },
  559. yearChange(value) {
  560. this.year = value
  561. this.advSearchForm.planYear = value.format('YYYY')
  562. if (document.getElementsByClassName('ant-calendar-picker-container').length > 0) {
  563. document.getElementsByClassName('ant-calendar-picker-container')[0].style.display = 'none'
  564. }
  565. },
  566. // 项目起止日期赋值
  567. changeProjectStartEndTime(data) {
  568. data.forEach((item, index) => {
  569. item.sortNum = index + 1
  570. var startTime = sdDateFormat(item.projectStartTime, 'yyyy-MM-DD')
  571. var endTime = sdDateFormat(item.projectEndTime, 'yyyy-MM-DD')
  572. item.projectStartEndTime = startTime + '~' + endTime
  573. })
  574. },
  575. // 保存
  576. saveForm() {
  577. var id = this.$refs.iamExternalBaseDetail.getFieldValue('id')
  578. var code = this.$refs.iamExternalBaseDetail.getFieldValue('code')
  579. if (code && id == null) {
  580. axios({
  581. url: 'api/xcoa-mobile/v1/iamexternalbase/validate/code?code=' + code,
  582. method: 'get',
  583. }).then((res) => {
  584. if (res.status === 200) {
  585. if (res.data) {
  586. this.$refs.iamExternalBaseDetail.saveBtnClick()
  587. } else {
  588. Message.error('信用代码已存在', 1)
  589. }
  590. }
  591. })
  592. } else {
  593. this.$refs.iamExternalBaseDetail.saveBtnClick()
  594. }
  595. },
  596. close(flag) {
  597. crossWindowWatcher.notifyChange(this.$route.fullPath, flag)
  598. window.close()
  599. },
  600. WPJGKSave(model) {
  601. Message.success('保存成功', 1).then((res) => {
  602. this.close(true)
  603. })
  604. },
  605. },
  606. }
  607. </script>
  608. <style module lang="scss">
  609. @import '@/webflow/sd-flow-form.scss';
  610. .ant-card-body {
  611. padding: 12px;
  612. :global(.buttons_sd-detail-form_common) {
  613. :global(.ant-form-item-control-wrapper) {
  614. padding-top: 4%;
  615. padding-left: 24%;
  616. }
  617. }
  618. .tr_border {
  619. box-sizing: border-box;
  620. border-right: 1px solid #e8e8e8;
  621. border-left: 1px solid #e8e8e8;
  622. }
  623. :global(.title_sd-detail-form_common) {
  624. font-size: 1.5em;
  625. text-align: center;
  626. }
  627. }
  628. </style>