audit-company-situation.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. <template>
  2. <div :class="[$style.wrapHeight, $style.company]">
  3. <div :class="$style.rowHeight">
  4. <a-card :class="$style.cardBox">
  5. <a-form-model
  6. v-bind="{
  7. layout: 'inline',
  8. }"
  9. >
  10. <a-form-model-item label="年份:">
  11. <div style="width: 240px">
  12. <audit-year-time v-model="year" :single="true" @change="yearChange" />
  13. </div>
  14. </a-form-model-item>
  15. <a-form-model-item label="组织机构:">
  16. <div style="width: 240px">
  17. <a-select
  18. v-model="mdgOrgCode"
  19. show-search
  20. placeholder="请先选择"
  21. :disabled="year.length === 0"
  22. :filter-option="filterOption"
  23. allow-clear
  24. >
  25. <a-select-option v-for="(item, i) in unitList" :key="i" :value="item.code">
  26. <a-tooltip placement="right">
  27. <template slot="title">
  28. <span>{{ item.name }}</span>
  29. </template>
  30. <div style="width:230px">{{ item.name }}</div>
  31. </a-tooltip>
  32. </a-select-option>
  33. </a-select>
  34. </div>
  35. </a-form-model-item>
  36. <a-form-model-item>
  37. <a-button type="primary" @click="searchData">
  38. 搜索
  39. </a-button>
  40. </a-form-model-item>
  41. </a-form-model>
  42. <template v-if="isData">
  43. <div>
  44. <a-descriptions bordered size="small" :column="4" :class="$style.descriptions">
  45. <template v-slot:title>
  46. <div :class="$style.flex">
  47. <div :class="$style.flexLeft">
  48. 公司基本信息
  49. </div>
  50. <div :class="$style.flexRight">
  51. <div :class="$style.info">数据来源:年度工作报告</div>
  52. <div :class="$style.date">{{ nowYear }}更新</div>
  53. </div>
  54. </div>
  55. </template>
  56. <a-descriptions-item label="公司名称" :span="2">
  57. {{ selecSpicCompanyInfo.COMPANY_NAME }}
  58. </a-descriptions-item>
  59. <a-descriptions-item label="公司简称" :span="2">
  60. {{ selecSpicCompanyInfo.COMPANY_SHORT_NAME }}
  61. </a-descriptions-item>
  62. <a-descriptions-item label="成立时间" :span="2">
  63. {{ selecSpicCompanyInfo.BUILD_DATE }}</a-descriptions-item
  64. >
  65. <a-descriptions-item label="公司地址" :span="2">
  66. {{ selecSpicCompanyInfo.ADDRESS }}</a-descriptions-item
  67. >
  68. <a-descriptions-item label="公司性质" :span="2">
  69. {{ selecSpicCompanyInfo.INTRODUCE }}</a-descriptions-item
  70. >
  71. </a-descriptions>
  72. </div>
  73. <table :class="$style.tableBox">
  74. <div>
  75. <audit-advanced-group
  76. :expand="peoShow"
  77. :expand-str="'peoShow'"
  78. :group-label="'领导班子简介:'"
  79. tablestyle="''"
  80. @changedClick="changedClick"
  81. ><template>
  82. <sd-table
  83. :columns="peoColumns"
  84. :data-source="peoData"
  85. :row-key="(r, index) => index"
  86. bordered
  87. :pagination="false"
  88. :scroll="{ x: 1300 }"
  89. >
  90. </sd-table>
  91. </template>
  92. </audit-advanced-group>
  93. </div>
  94. <div>
  95. <audit-advanced-group
  96. :expand="headShow"
  97. :expand-str="'headShow'"
  98. :group-label="'负责人简介:'"
  99. tablestyle="''"
  100. @changedClick="changedClick"
  101. ><template>
  102. <sd-table
  103. :pagination="false"
  104. :scroll="{ x: 1300 }"
  105. :row-key="(r, index) => index"
  106. :columns="headColumns"
  107. :data-source="headData"
  108. bordered
  109. >
  110. </sd-table>
  111. </template>
  112. </audit-advanced-group>
  113. </div>
  114. <div>
  115. <audit-advanced-group
  116. :expand="staffShow"
  117. :expand-str="'staffShow'"
  118. :group-label="'员工情况:'"
  119. tablestyle="''"
  120. @changedClick="changedClick"
  121. ><template>
  122. <sd-table
  123. :pagination="false"
  124. :scroll="{ x: 1300 }"
  125. :columns="staffColumns"
  126. :row-key="(r, index) => index"
  127. :data-source="staffData"
  128. bordered
  129. >
  130. <span slot="type" slot-scope="text">
  131. {{ text === '1' ? '本部' : '全公司' }}
  132. </span>
  133. </sd-table>
  134. </template>
  135. </audit-advanced-group>
  136. </div>
  137. <div>
  138. <audit-advanced-group
  139. :expand="shareShow"
  140. :expand-str="'shareShow'"
  141. :group-label="'控股参股:'"
  142. tablestyle="''"
  143. @changedClick="changedClick"
  144. ><template>
  145. <sd-table
  146. :pagination="false"
  147. :scroll="{ x: 1300 }"
  148. :columns="shareColumns"
  149. :data-source="shareData"
  150. :row-key="(r, index) => index"
  151. bordered
  152. >
  153. </sd-table>
  154. </template>
  155. </audit-advanced-group>
  156. </div>
  157. </table>
  158. </template>
  159. <a-empty v-else description="暂无数据,请重新选择条件后查询" />
  160. </a-card>
  161. </div>
  162. </div>
  163. </template>
  164. <script>
  165. import components from './_import-components/audit-company-situation-import'
  166. import auditAdvancedGroup from '../../components/audit-advanced-group.vue'
  167. import auditAdvancedGroupMixins from '../../components/audit-advanced-group-mixins'
  168. import auditYearTime from './audit-year-time.vue'
  169. import auditPortraitService from './audit-portrait-service'
  170. import { message } from 'ant-design-vue'
  171. import sdTable from '@/common/components/sd-table.vue'
  172. export default {
  173. name: 'AuditCompanySituation',
  174. metaInfo: {
  175. title: '公司及领导情况',
  176. },
  177. components: {
  178. ...components,
  179. auditYearTime,
  180. auditAdvancedGroup,
  181. sdTable,
  182. },
  183. mixins: [auditAdvancedGroupMixins],
  184. data() {
  185. return {
  186. mainSendUnit: [],
  187. year: [],
  188. peoShow: true,
  189. mdgOrgCode: '',
  190. isData: false,
  191. // 公司基本信息
  192. selecSpicCompanyInfo: {},
  193. unitList: [],
  194. peoColumns: [
  195. {
  196. title: '姓名',
  197. dataIndex: 'NAME',
  198. width: '100px',
  199. },
  200. {
  201. title: '性别',
  202. dataIndex: 'GENDER',
  203. width: '60px',
  204. },
  205. {
  206. title: '出生年月',
  207. dataIndex: 'BIRTHDAY',
  208. width: '80px',
  209. },
  210. {
  211. title: '职务及任职时间',
  212. dataIndex: 'DUTY',
  213. width: '180px',
  214. },
  215. {
  216. title: '兼职情况',
  217. dataIndex: 'PART_TIME_JOB',
  218. width: '100px',
  219. },
  220. {
  221. title: '学历',
  222. dataIndex: 'EDUCATION',
  223. width: '120px',
  224. },
  225. {
  226. title: '毕业院校及专业',
  227. dataIndex: 'GRADUATE_INSTITUTIONS',
  228. width: '140px',
  229. },
  230. ],
  231. peoData: [],
  232. headShow: true,
  233. headColumns: [
  234. {
  235. title: '姓名',
  236. dataIndex: 'NAME',
  237. width: '100px',
  238. },
  239. {
  240. title: '性别',
  241. dataIndex: 'GENDER',
  242. width: '60px',
  243. },
  244. {
  245. title: '出生年月',
  246. dataIndex: 'BIRTHDAY',
  247. width: '80px',
  248. },
  249. {
  250. title: '职务及任职时间',
  251. dataIndex: 'DUTY',
  252. width: '180px',
  253. },
  254. {
  255. title: '兼职情况',
  256. dataIndex: 'PART_TIME_JOB',
  257. width: '100px',
  258. },
  259. {
  260. title: '学历',
  261. dataIndex: 'EDUCATION',
  262. width: '120px',
  263. },
  264. {
  265. title: '毕业院校及专业',
  266. dataIndex: 'GRADUATE_INSTITUTIONS',
  267. width: '140px',
  268. },
  269. ],
  270. headData: [],
  271. staffShow: true,
  272. staffColumns: [
  273. {
  274. title: '类别',
  275. dataIndex: 'TYPE',
  276. width: '180px',
  277. // scopedSlots: { customRender: 'type' },
  278. },
  279. {
  280. title: '本部',
  281. children: [
  282. {
  283. title: '上年末',
  284. dataIndex: 'TYPE_BB_LAST_YEAR',
  285. width: '120px',
  286. },
  287. {
  288. title: '本年末',
  289. dataIndex: 'TYPE_BB_THIS_YEAR',
  290. width: '120px',
  291. },
  292. ],
  293. },
  294. {
  295. title: '全公司',
  296. children: [
  297. {
  298. title: '上年末',
  299. dataIndex: 'TYPE_QT_LAST_YEAR',
  300. width: '120px',
  301. },
  302. {
  303. title: '本年末',
  304. dataIndex: 'TYPE_QT_THIS_YEAR',
  305. width: '120px',
  306. },
  307. ],
  308. },
  309. {
  310. title: '学历',
  311. dataIndex: 'EDUCATION',
  312. width: '120px',
  313. },
  314. {
  315. title: '本部',
  316. children: [
  317. {
  318. title: '上年末',
  319. dataIndex: 'EDUCATION_BB_LAST_YEAR',
  320. width: '120px',
  321. },
  322. {
  323. title: '本年末',
  324. dataIndex: 'EDUCATION_BB_THIS_YEAR',
  325. width: '120px',
  326. },
  327. ],
  328. },
  329. {
  330. title: '全公司',
  331. children: [
  332. {
  333. title: '上年末',
  334. dataIndex: 'EDUCATION_QT_LAST_YEAR',
  335. width: '120px',
  336. },
  337. {
  338. title: '本年末',
  339. dataIndex: 'EDUCATION_QT_THIS_YEAR',
  340. width: '120px',
  341. },
  342. ],
  343. },
  344. ],
  345. staffData: [],
  346. shareShow: true,
  347. shareData: [],
  348. shareColumns: [
  349. {
  350. title: '序号',
  351. dataIndex: 'sortNum',
  352. customRender: (text, record, index) => `${index + 1}`,
  353. width: '80px',
  354. fixed: 'left',
  355. },
  356. // 除年份外
  357. // 公司编号
  358. // 统一社会信用代码
  359. // 年度报告库ID
  360. {
  361. title: '公司编号',
  362. dataIndex: 'COMPANY_CODE',
  363. width: '120px',
  364. },
  365. {
  366. title: '统一社会信用代码',
  367. dataIndex: 'UNIFIED_SOCIAL_CREDIT_IDENTIFIER',
  368. width: '180px',
  369. },
  370. {
  371. title: '年度报告库ID',
  372. dataIndex: 'ANNUAL_REPORT_ITEM_ID',
  373. width: '180px',
  374. },
  375. {
  376. title: '并购主体',
  377. dataIndex: 'ACQUISITIONS_SUBJECT',
  378. width: '280px',
  379. },
  380. {
  381. title: '被并购企业',
  382. dataIndex: 'BE_MERGED',
  383. width: '280px',
  384. },
  385. {
  386. title: '企业性质',
  387. dataIndex: 'ENTERPRISE_PROPERTY',
  388. width: '120px',
  389. },
  390. {
  391. title: '所属行业',
  392. dataIndex: 'INDUSTRY',
  393. width: '100px',
  394. },
  395. {
  396. title: '境内、境外',
  397. dataIndex: 'HOME_AND_ABROAD',
  398. width: '140px',
  399. },
  400. {
  401. title: '所在地',
  402. dataIndex: 'ADDRESS',
  403. width: '180px',
  404. },
  405. {
  406. title: '并购方式',
  407. dataIndex: 'ACQUISITIONS_TYPE',
  408. width: '180px',
  409. },
  410. {
  411. title: '是否主业',
  412. dataIndex: 'IS_MAJOR_WORKS',
  413. width: '120px',
  414. },
  415. {
  416. title: '净资产价值',
  417. dataIndex: 'NET_ASSET_VALUE',
  418. width: '180px',
  419. },
  420. {
  421. title: '准基日审计资产值',
  422. dataIndex: 'AUDIT_VALUE',
  423. width: '180px',
  424. },
  425. {
  426. title: '评估备案值',
  427. dataIndex: 'ASSESS_VALUE',
  428. width: '140px',
  429. },
  430. {
  431. title: '支付对价',
  432. dataIndex: 'PAY_VALUE',
  433. width: '140px',
  434. },
  435. {
  436. title: '所占股权比例%',
  437. dataIndex: 'EQUITY_RATIO',
  438. width: '180px',
  439. },
  440. {
  441. title: '并购后企业状态',
  442. dataIndex: 'STATE_AFTER_ACQUISITIONS',
  443. width: '180px',
  444. },
  445. {
  446. title: '存在问题或风险',
  447. dataIndex: 'RISK',
  448. width: '180px',
  449. },
  450. ],
  451. // 当前日期
  452. nowYear:
  453. new Date().getFullYear() + '.' + (new Date().getMonth() + 1) + '.' + new Date().getDate(),
  454. }
  455. },
  456. methods: {
  457. changeUnit(val) {},
  458. yearChange() {
  459. // 清空所选的组织机构
  460. this.mdgOrgCode = ''
  461. auditPortraitService.getSelectCompany(this.year).then((res) => {
  462. // COMPANY_CODE
  463. // COMPANY_NAME
  464. // 过滤等于null的数据
  465. this.unitList = res.data
  466. .map((item) => {
  467. return {
  468. code: item.COMPANY_CODE,
  469. name: item.COMPANY_NAME,
  470. }
  471. })
  472. .filter((item) => item.code !== null)
  473. })
  474. },
  475. filterOption(input, option) {
  476. return option.componentOptions.children[0].text.indexOf(input) >= 0
  477. },
  478. searchData() {
  479. // 长度必须大于0
  480. if (this.year.length === 0) {
  481. message.error('请选择年份')
  482. return
  483. }
  484. if (!this.mdgOrgCode) {
  485. message.error('请选择组织机构')
  486. return
  487. }
  488. const params = {
  489. code: this.mdgOrgCode,
  490. year: this.year[0],
  491. }
  492. // // todo
  493. // params.code = '100190'
  494. // params.year = '2021'
  495. auditPortraitService.getSelectCompanyInformation(params).then((res) => {
  496. if (res.status !== 200) return
  497. const data = res.data
  498. message.success('查询成功')
  499. // 如果五个接口都没有数据,显示暂无数据
  500. this.isData = Object.values(data).some((item) => item.length > 0)
  501. if (!this.isData) return
  502. this.selecSpicCompanyInfo = data.selec_spic_company_info_202403200950[0] || {}
  503. // selec_spic_company_info_202403200950 公司基本信息
  504. // ID
  505. // DATA_YEAR 年份
  506. // COMPANY_CODE 公司编号
  507. // UNIFIED_SOCIAL_CREDIT_IDENTIFIER 统一社会信用代码
  508. // COMPANY_NAME 公司名称
  509. // COMPANY_SHORT_NAME 公司简称
  510. // BUILD_DATE 成立时间
  511. // ADDRESS 公司地址
  512. // INTRODUCE 公司简介
  513. // ANNUAL_REPORT_ITEM_ID 年度报告库ID
  514. this.peoData = data.selec_spic_company_leader_202403200951 || []
  515. // selec_spic_company_leader_202403200951 公司领导
  516. // ID
  517. // DATA_YEAR 年份
  518. // COMPANY_CODE 公司编号
  519. // UNIFIED_SOCIAL_CREDIT_IDENTIFIER 统一社会信用编码
  520. // ANNUAL_REPORT_ITEM_ID ORDER_INDEX 年度报告库ID
  521. // NAME 姓名
  522. // GENDER 性别
  523. // BIRTHDAY 出生年月
  524. // DUTY 职务及任职时间
  525. // PART_TIME_JOB 兼职情况
  526. // EDUCATION 学历
  527. // GRADUATE_INSTITUTIONS 毕业院校及专业
  528. this.staffData = data.selec_spic_employee_status_202403201001 || []
  529. // selec_spic_employee_status_202403201001 员工情况
  530. // ANNUAL_REPORT_ITEM_ID 年度报告库ID
  531. // COMPANY_CODE 公司编号
  532. // DATA_YEAR 年份
  533. // EDUCATION 员工学历
  534. // EDUCATION_BB_LAST_YEAR 员工学历 本部上年未人数
  535. // EDUCATION_BB_THIS_YEAR 本部本年未人数
  536. // EDUCATION_QT_LAST_YEAR 全公司 上年未人数
  537. // EDUCATION_QT_THIS_YEAR 全公司本年未人数
  538. // ID
  539. // TYPE 员工类别
  540. // TYPE_BB_LAST_YEAR 本部上年未人数
  541. // TYPE_BB_THIS_YEAR 本部本年未人数
  542. // TYPE_QT_LAST_YEAR 全公司上年未人数
  543. // TYPE_QT_THIS_YEAR 全公司本年未人数
  544. // UNIFIED_SOCIAL_CREDIT_IDENTIFIER 统一社会信用代码
  545. this.headData = data.selec_spic_company_principal_202403200951 || []
  546. // selec_spic_company_principal_202403200951 公司负责人
  547. // ID
  548. // DATA_YEAR 年份
  549. // COMPANY_CODE 公司编号
  550. // UNIFIED_SOCIAL_CREDIT_IDENTIFIER 统一社会信用代码
  551. // ANNUAL_REPORT_ITEM_ID 年度报告库ID
  552. // ORDER_INDEX 序号
  553. // NAME 姓名
  554. // GENDER 性别
  555. // BIRTHDAY 出生年月
  556. // DUTY 职务及任职时间
  557. // PART_TIME_JOB 兼职情况
  558. // EDUCATION 学历
  559. // GRADUATE_INSTITUTIONS 毕业院校及专业
  560. // WORK_IN_CHARGE 分管工作
  561. // JOB_RESUME 工作简历
  562. this.shareData = data.selec_spic_asset_acquisitions_202403200952 || []
  563. // selec_spic_asset_acquisitions_202403200952 参股控股
  564. // ID
  565. // DATA_YEAR 年份 X
  566. // COMPANY_CODE 公司编号
  567. // UNIFIED_SOCIAL_CREDIT_IDENTIFIER 统一社会信用代码
  568. // ANNUAL_REPORT_ITEM_ID ORDER_INDEX 年度报告库ID
  569. // ACQUISITIONS_SUBJECT 并购主体
  570. // BE_MERGED 被并购企业
  571. // ENTERPRISE_PROPERTY 企业性质
  572. // INDUSTRY 所属行业
  573. // HOME_AND_ABROAD 境内、境外
  574. // ADDRESS 所在地
  575. // ACQUISITIONS_TYPE 并购方式
  576. // IS_MAJOR_WORKS 是否主业
  577. // NET_ASSET_VALUE 净资产价值
  578. // AUDIT_VALUE 准基日审计资产值
  579. // ASSESS_VALUE 评估备案值
  580. // PAY_VALUE 支付对价
  581. // GOOD_WILL_1 形成商誉1
  582. // GOOD_WILL_2 形成商誉2
  583. // EQUITY_RATIO 所占股权比例%
  584. // STATE_AFTER_ACQUISITIONS 并购后企业状态
  585. // RISK 存在问题或风险
  586. })
  587. },
  588. },
  589. }
  590. </script>
  591. <style module lang="scss">
  592. @use '@/common/design' as *;
  593. .table-box {
  594. display: flex;
  595. flex-direction: column;
  596. width: 100%;
  597. }
  598. .wrap-height {
  599. position: relative;
  600. height: 100%;
  601. .row-height {
  602. display: flex;
  603. flex: auto;
  604. gap: 10px;
  605. min-height: 100%;
  606. }
  607. }
  608. // :deep(.sd-body .ant-card-body) {
  609. // height: 100%;
  610. // padding: 2px;
  611. // }
  612. .descriptions {
  613. :global(.ant-descriptions-item-label) {
  614. width: 200px;
  615. }
  616. :global(.ant-descriptions-item-content) {
  617. width: calc(100% - 200px);
  618. }
  619. }
  620. .company {
  621. .card-box {
  622. width: 100%;
  623. }
  624. .flex {
  625. display: flex;
  626. align-items: center;
  627. justify-content: space-between;
  628. padding: 0 10px;
  629. margin-top: 10px;
  630. font-size: 16px;
  631. font-weight: normal;
  632. .flex-right {
  633. display: flex;
  634. align-items: center;
  635. justify-content: space-between;
  636. .date {
  637. margin-left: 50px;
  638. }
  639. }
  640. }
  641. .table-box {
  642. width: 100%;
  643. }
  644. }
  645. // :global(.ant-table td) {
  646. // white-space: nowrap;
  647. // }
  648. :global(.sd-body .ant-table-empty .ant-table-body) {
  649. overflow-x: scroll !important;
  650. }
  651. </style>