law-case-finished-query.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. <template>
  2. <div :class="$style.searchdiv">
  3. <a-card :class="$style.searchWrap">
  4. <a-form-model
  5. ref="advancedSearchForm"
  6. :class="$style.antAdvancedSearchForm"
  7. :model="form"
  8. layout="horizontal"
  9. v-bind="formItemLayout"
  10. >
  11. <a-row :gutter="24">
  12. <a-col :span="12">
  13. <a-form-model-item label="案件名称">
  14. <a-input v-model="form.CASE_NAME"></a-input>
  15. </a-form-model-item>
  16. </a-col>
  17. <a-col :span="12">
  18. <a-form-model-item label="案号">
  19. <a-input v-model="form.CASE_NO" />
  20. </a-form-model-item>
  21. </a-col>
  22. </a-row>
  23. <a-row :gutter="24">
  24. <a-col :span="12">
  25. <a-form-model-item label="案件类型">
  26. <sd-select v-model="form.CASE_TYPE" :options="caseTypeOptions" :allow-clear="true" />
  27. </a-form-model-item>
  28. </a-col>
  29. <a-col :span="12">
  30. <a-form-model-item label="我方地位">
  31. <sd-select
  32. v-model="form.OWNER_POSITION"
  33. :options="owerOptions"
  34. :allow-clear="true"
  35. @change="selectChanged"
  36. />
  37. </a-form-model-item>
  38. </a-col>
  39. </a-row>
  40. <a-row :gutter="24">
  41. <a-col :span="12" :class="$style.amountNum">
  42. <a-form-model-item label="涉案金额(元)">
  43. <a-input-number v-model="form.CASE_AMOUNT_S" style="width: 47%"></a-input-number>至
  44. <a-input-number v-model="form.CASE_AMOUNT_E" style="width: 47%"></a-input-number>
  45. </a-form-model-item>
  46. </a-col>
  47. <a-col :span="12">
  48. <a-form-model-item label="立案日期">
  49. <a-range-picker
  50. v-model="form.CASE_DATE"
  51. style="width: 100%"
  52. :time-range.sync="form.CASE_DATE"
  53. />
  54. </a-form-model-item>
  55. </a-col>
  56. </a-row>
  57. <a-row>
  58. <a-col :span="16"> </a-col>
  59. <a-col :class="$style.searchbutton" :span="8">
  60. <div class="reportbuttonContent" style="margin-right: 15%">
  61. <a-button @click="handleReset"> 重置 </a-button>
  62. <a-button type="primary" @click="handleSearch"> 查询 </a-button>
  63. </div>
  64. </a-col>
  65. </a-row>
  66. </a-form-model>
  67. </a-card>
  68. <a-card class="reporttablecardxm">
  69. <sd-data-table
  70. ref="sjzlTable"
  71. :filter-expressions="expressions"
  72. :columns="columns"
  73. data-url="api/xcoa-mobile/v1/casefinishedQueryController/getCasefinishedList"
  74. :process-req="processReq"
  75. :show-advance-query="false"
  76. :defultpagination-pagesize="50"
  77. @dataLoaded="dataLoaded"
  78. @searchbtnClick="searchbtnClick"
  79. >
  80. <template slot="action" slot-scope="text, record">
  81. <a-button type="link" @click="openMm(record)"
  82. ><a class="opt-btn_sd-data-table_common">查看</a>
  83. </a-button>
  84. <a-button v-show="mmflag" type="link" @click="openCreatAlk(record)"
  85. ><a class="opt-btn_sd-data-table_common">创建案例库</a></a-button
  86. >
  87. </template>
  88. </sd-data-table>
  89. </a-card>
  90. </div>
  91. </template>
  92. <script>
  93. import moment from 'moment'
  94. import { router } from '@/common/router-ready'
  95. import auditAdvancedQueryMixins from '../../../components/audit-advanced-query-mixins'
  96. import LawService from '../../law-service'
  97. import components from './_import-components/law-case-finished-query-import'
  98. import { getUserInfo } from '@/common/store-mixin'
  99. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  100. export default {
  101. name: 'LawCaseFinishedQuery',
  102. metaInfo: {
  103. title: '已结案件',
  104. },
  105. components: {
  106. ...components,
  107. },
  108. mixins: [auditAdvancedQueryMixins],
  109. data() {
  110. return {
  111. mmflag: false,
  112. expressions: [],
  113. caseTypeOptions: [],
  114. owerOptions: [],
  115. caseStatusOptions: [],
  116. columns: [
  117. {
  118. title: '序号',
  119. customRender: (text, record, index) => `${index + 1}`,
  120. width: '80px',
  121. },
  122. {
  123. title: '案件名称',
  124. dataIndex: 'CASE_NAME',
  125. sorter: true,
  126. },
  127. {
  128. title: '上报单位',
  129. dataIndex: 'REPORT_UNIT_NAME',
  130. },
  131. {
  132. title: '案件类型',
  133. dataIndex: 'CASE_TYPE',
  134. sorter: true,
  135. width: '150px',
  136. },
  137. {
  138. title: '我方诉讼地位',
  139. dataIndex: 'OWNER_POSITION',
  140. scopedSlots: { customRender: 'OWNER_POSITION' },
  141. sorter: true,
  142. },
  143. {
  144. title: '最终结案方式',
  145. dataIndex: 'FINISH_TYPE',
  146. width: '150px',
  147. },
  148. {
  149. title: '胜诉或败诉',
  150. dataIndex: 'FINISH_RESULT',
  151. width: '125px',
  152. },
  153. {
  154. title: '结案金额',
  155. dataIndex: 'FINISH_AMOUNT',
  156. width: '100px',
  157. },
  158. {
  159. title: '减损金额',
  160. dataIndex: 'LOSE_AMOUNT',
  161. width: '100px',
  162. },
  163. {
  164. dataIndex: 'Id',
  165. sdHidden: true,
  166. sorter: true,
  167. defaultSortOrder: 'desc',
  168. },
  169. {
  170. title: '操作',
  171. dataIndex: '',
  172. scopedSlots: { customRender: 'action' },
  173. align: 'center',
  174. },
  175. ],
  176. formItemLayout: {
  177. labelCol: { span: 6 },
  178. wrapperCol: { span: 14 },
  179. },
  180. form: {
  181. OWNER_POSITION: '',
  182. },
  183. }
  184. },
  185. created() {
  186. // 获取案件类型
  187. LawService.getdict('272818597314232320').then((res) => {
  188. const dict = []
  189. res.data.forEach((d) => {
  190. dict.push({
  191. name: d.label,
  192. id: d.value,
  193. disabled: false,
  194. })
  195. })
  196. this.caseTypeOptions = [...dict]
  197. })
  198. // 获取我方地位
  199. LawService.getdict('272888833908473856').then((res) => {
  200. const dict = []
  201. res.data.forEach((d) => {
  202. dict.push({
  203. id: d.value,
  204. name: d.label,
  205. disabled: false,
  206. })
  207. })
  208. this.owerOptions = [...dict]
  209. })
  210. // 判断用户是否拥有角色
  211. LawService.isUserHasRole(getUserInfo().account, 'G-1_LAW_LEADER').then((res) => {
  212. if (res.data) {
  213. this.mmflag = true
  214. }
  215. })
  216. },
  217. mounted() {},
  218. methods: {
  219. moment,
  220. // 获取流程实例的当前活动环节信息
  221. selectChanged(item) {},
  222. openCreatAlk(record) {
  223. window.open(
  224. '#/sd-flow-guide?moduleId=272154534334758912&finishId=' +
  225. record.ID +
  226. '&caseId=' +
  227. record.CASE_ID
  228. )
  229. },
  230. handleSearch() {
  231. this.$refs.advancedSearchForm.validate((valid, values) => {
  232. if (valid) {
  233. this.search(this.form)
  234. }
  235. })
  236. },
  237. handleReset() {
  238. this.$refs.advancedSearchForm.resetFields()
  239. this.form = {}
  240. this.search(this.form)
  241. },
  242. dataLoaded(eventData) {
  243. if (!eventData.data) {
  244. return
  245. }
  246. eventData.data.forEach((item, index) => {
  247. item.id = index
  248. })
  249. return eventData
  250. },
  251. // 刷新列表
  252. refresh() {
  253. this.$refs.sjzlTable.refresh()
  254. },
  255. // 查询
  256. search(form) {
  257. // 默认查询条件
  258. this.expressions = []
  259. // 案件名称
  260. if (form.CASE_NAME) {
  261. this.expressions.push({
  262. dataType: 'str',
  263. name: 'CASE_NAME',
  264. op: 'like',
  265. stringValue: '%' + form.CASE_NAME + '%',
  266. })
  267. }
  268. // 案件类型
  269. if (form.CASE_TYPE) {
  270. if (form.CASE_TYPE.length > 0) {
  271. this.expressions.push({
  272. dataType: 'str',
  273. name: 'CASE_TYPE',
  274. op: 'in',
  275. stringValue: form.CASE_TYPE.map((item) => {
  276. return item.id
  277. }).join(','),
  278. })
  279. }
  280. }
  281. // 案号
  282. if (form.CASE_NO) {
  283. if (form.CASE_NO.length > 0) {
  284. this.expressions.push({
  285. dataType: 'str',
  286. name: 'CASE_TYPE',
  287. op: 'eq',
  288. stringValue: form.CASE_NO,
  289. })
  290. }
  291. }
  292. // 我方地位
  293. if (form.OWNER_POSITION) {
  294. if (form.OWNER_POSITION.length > 0) {
  295. this.expressions.push({
  296. dataType: 'str',
  297. name: 'OWNER_POSITION',
  298. op: 'in',
  299. stringValue: form.OWNER_POSITION.map((item) => {
  300. return item.id
  301. }).join(','),
  302. })
  303. }
  304. }
  305. // 立案日期
  306. if (form.CASE_DATE) {
  307. if (form.CASE_DATE.length > 0) {
  308. if (form.CASE_DATE[0]) {
  309. var startYear = new Date(form.CASE_DATE[0].format('YYYY-MM-DD') + ' 00:00:00')
  310. this.expressions.push({
  311. dataType: 'str',
  312. name: 'CASE_DATE',
  313. op: 'ge',
  314. stringValue: startYear.getTime(),
  315. })
  316. }
  317. if (form.CASE_DATE[1]) {
  318. var endYear = new Date(form.CASE_DATE[1].format('YYYY-MM-DD') + ' 23:59:59')
  319. this.expressions.push({
  320. dataType: 'str',
  321. name: 'CASE_DATE',
  322. op: 'le',
  323. stringValue: endYear.getTime(),
  324. })
  325. }
  326. }
  327. }
  328. // 涉案金额
  329. if (form.CASE_AMOUNT_S) {
  330. this.expressions.push({
  331. dataType: 'str',
  332. name: 'CASE_AMOUNT',
  333. op: 'ge',
  334. stringValue: form.CASE_AMOUNT_S,
  335. })
  336. }
  337. if (form.CASE_AMOUNT_E) {
  338. this.expressions.push({
  339. dataType: 'str',
  340. name: 'CASE_AMOUNT',
  341. op: 'le',
  342. stringValue: form.CASE_AMOUNT_E,
  343. })
  344. }
  345. },
  346. clickRow(record) {
  347. const url = '/sd-webflow/done-pages/' + record.instId
  348. crossWindowWatcher.waitForChanged(url).then((refreshFlag) => {
  349. if (refreshFlag) {
  350. // 这里写或者调刷新的方法
  351. this.refreshDataTable()
  352. }
  353. })
  354. },
  355. processReq(req) {
  356. req.data = {
  357. ...req.data,
  358. formId: 'onlhead:6d9b334e035840fba7843dbdccfd6862',
  359. }
  360. return req
  361. },
  362. openMm(record) {
  363. LawService.getProgressData(record.CASE_ID).then((res1) => {
  364. this.openlastpage(res1.data, record.CASE_ID)
  365. })
  366. },
  367. openlastpage(data, id) {
  368. const obj = data.at(-1)
  369. let url = ''
  370. if (obj.props.stepType === 'progress') {
  371. // 进展
  372. if (obj.children && obj.children.length > 0) {
  373. const zobj = obj.children.at(-1)
  374. if (zobj.props.detailUrl && zobj.props.detailUrl !== '') {
  375. url = this.fngetobjurl(zobj, id)
  376. } else {
  377. if (zobj.children && zobj.children.length > 0) {
  378. const zcobj = zobj.children.at(-1)
  379. if (zcobj.props.detailUrl && zcobj.props.detailUrl !== '') {
  380. url = this.fngetobjurl(zcobj, id)
  381. }
  382. }
  383. }
  384. }
  385. } else if (obj.props.stepType === 'execute') {
  386. if (obj.children && obj.children.length > 0) {
  387. const zobj = obj.children.at(-1)
  388. if (zobj.props.detailUrl && zobj.props.detailUrl !== '') {
  389. url = this.fngetobjurl(zobj, id)
  390. }
  391. }
  392. } else {
  393. if (obj.props.detailUrl && obj.props.detailUrl !== '') {
  394. url = this.fngetobjurl(obj, id)
  395. }
  396. }
  397. if (url === '') {
  398. url = this.fngetobjurl(data[0], id)
  399. }
  400. this.open(url)
  401. },
  402. fngetobjurl(obj, id) {
  403. let url = ''
  404. url = obj.props.detailUrl + '/' + obj.props.detailInstid
  405. const page = '/case-progress-page'
  406. url = url.replace('#/sd-webflow', page)
  407. url = url + '?zt=' + obj.props.stepType + '&id=' + id // 打开结案页面
  408. return url
  409. },
  410. open(url) {
  411. const query = {}
  412. url = url + '&view=1'
  413. const oRoute = router.resolve({
  414. path: url,
  415. query: {
  416. ...query,
  417. },
  418. })
  419. window.open(oRoute.href, '_blank')
  420. },
  421. },
  422. }
  423. </script>
  424. <style module lang="scss">
  425. @use '@/common/design' as *;
  426. .toptitle {
  427. margin-left: calc(50% - 150px);
  428. font-size: 22px;
  429. font-weight: bold;
  430. color: #404040;
  431. }
  432. .search-wrap {
  433. margin-bottom: $padding-lg;
  434. :global(.ant-advanced-search-form) {
  435. padding: 0;
  436. background: transparent;
  437. border: none;
  438. }
  439. :global .ant-divider-horizontal {
  440. margin: 10px 0;
  441. }
  442. }
  443. .searchdiv {
  444. height: 100%;
  445. :global(.sd-has-table.ant-card) {
  446. min-height: 50%;
  447. }
  448. :global(.reporttablecardxm) {
  449. :global(.ant-table-body) {
  450. height: auto !important;
  451. min-height: auto !important;
  452. overflow: auto;
  453. }
  454. }
  455. :global(.ant-table-placeholder) {
  456. height: auto !important;
  457. }
  458. :global(.ant-form-item) {
  459. :global(.ant-form-item-label):first-child {
  460. width: 200px;
  461. }
  462. }
  463. .amount-num {
  464. :global(.ant-input-number) {
  465. width: 15%;
  466. }
  467. }
  468. }
  469. </style>