移动端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

459 regels
13 KiB

  1. <template>
  2. <div class="app-container">
  3. <van-nav-bar title="案件" fixed placeholder />
  4. <div style="display: flex;padding: 0 3% 0.2rem;">
  5. <form action="#" style="flex: 0.75;">
  6. <van-search
  7. v-model="queryParams.caseNum"
  8. placeholder="请输入案件编号"
  9. :search="handleQuery"
  10. >
  11. </van-search>
  12. </form>
  13. <van-button type="info" @click="sheetShow = true" style="flex: 0.25;border-radius: 30PX;height: 0.95rem;">
  14. <van-icon name="../../../static/images/lawEnforcement/icon/icon_ssbt.png" size="17" style="vertical-align: middle;margin-right: 5px;" />筛选
  15. </van-button>
  16. </div>
  17. <van-row style="padding: 0.2rem 3%;" v-show="showSxtj">
  18. <van-col :span="20"><p style="line-height: 20px;font-size: 14px;color: #878787;">筛选条件:{{showType}} {{showCaseStatus}} {{showCaseProgress}}</p></van-col>
  19. <van-col :span="4" align="right"><van-icon name="close" size="20" @click="resetQuery"/></van-col>
  20. </van-row>
  21. <van-action-sheet v-model="sheetShow" title="筛选" duration="0.2" close-icon="arrow-down">
  22. <div class="sheetContent">
  23. <van-field
  24. readonly
  25. clickable
  26. name="picker"
  27. v-model="showType"
  28. label="当事人类型"
  29. placeholder="点击选择当事人类型"
  30. @click="showDsrlx = true"
  31. />
  32. <van-popup v-model="showDsrlx" position="bottom">
  33. <van-picker
  34. show-toolbar
  35. :columns="typeColumns"
  36. @confirm="onConfirmDsrlx"
  37. @cancel="showDsrlx = false"
  38. />
  39. </van-popup>
  40. <van-field
  41. readonly
  42. clickable
  43. name="picker"
  44. v-model="showCaseStatus"
  45. label="案件状态"
  46. placeholder="点击选择案件状态"
  47. @click="showAjzt = true"
  48. />
  49. <van-popup v-model="showAjzt" position="bottom">
  50. <van-picker
  51. show-toolbar
  52. :columns="caseStatusColumns"
  53. @confirm="onConfirmAjzt"
  54. @cancel="showAjzt = false"
  55. />
  56. </van-popup>
  57. <van-field
  58. readonly
  59. clickable
  60. name="picker"
  61. v-model="showCaseProgress"
  62. label="案件执法进度"
  63. placeholder="点击选择案件执法进度"
  64. @click="showAjzfjd = true"
  65. />
  66. <van-popup v-model="showAjzfjd" position="bottom">
  67. <van-picker
  68. show-toolbar
  69. :columns="caseProgressColumns"
  70. @confirm="onConfirmAjzfjd"
  71. @cancel="showAjzfjd = false"
  72. />
  73. </van-popup>
  74. <!-- <p class="sheetTitle">当事人类型</p>-->
  75. <!-- <van-row>-->
  76. <!-- <van-col :span="6"><p class="active">全部</p></van-col>-->
  77. <!-- <van-col :span="12"><p>个人/个体工商户</p></van-col>-->
  78. <!-- <van-col :span="6"><p>企业</p></van-col>-->
  79. <!-- </van-row>-->
  80. <!-- <p class="sheetTitle">案件状态</p>-->
  81. <!-- <van-row>-->
  82. <!-- <van-col :span="6"><p class="active">全部</p></van-col>-->
  83. <!-- <van-col :span="6"><p>进行中</p></van-col>-->
  84. <!-- <van-col :span="6"><p>结束</p></van-col>-->
  85. <!-- <van-col :span="6"><p>中断</p></van-col>-->
  86. <!-- </van-row>-->
  87. <!-- <p class="sheetTitle">案件执法进度</p>-->
  88. <!-- <van-row>-->
  89. <!-- <van-col :span="6"><p class="active">全部</p></van-col>-->
  90. <!-- <van-col :span="6"><p>登记</p></van-col>-->
  91. <!-- <van-col :span="6"><p>勘察</p></van-col>-->
  92. <!-- <van-col :span="6"><p>立案</p></van-col>-->
  93. <!-- </van-row>-->
  94. <!-- <van-row>-->
  95. <!-- <van-col :span="6"><p>取证</p></van-col>-->
  96. <!-- <van-col :span="6"><p>处理</p></van-col>-->
  97. <!-- <van-col :span="6"><p>裁决</p></van-col>-->
  98. <!-- <van-col :span="6"><p>执行</p></van-col>-->
  99. <!-- </van-row>-->
  100. <!-- <van-row>-->
  101. <!-- <van-col :span="6"><p>备案</p></van-col>-->
  102. <!-- <van-col :span="6"><p>结案</p></van-col>-->
  103. <!-- </van-row>-->
  104. </div>
  105. <van-row>
  106. <van-col :span="12" align="center"><van-button type="default" style="width: 90%;height: 1.2rem;border-radius: 4PX;" @click="resetQuery">重置</van-button></van-col>
  107. <van-col :span="12" align="center"><van-button type="info" style="width: 90%;height: 1.2rem;border-radius: 4PX;" @click="handleQuery">确定</van-button></van-col>
  108. </van-row>
  109. </van-action-sheet>
  110. <van-list
  111. v-model="loading"
  112. :finished="finished"
  113. finished-text="没有更多了"
  114. @load="getList"
  115. >
  116. <van-swipe-cell v-for="(item,index) in caseList" :key="index">
  117. <van-cell :title="item.caseName" :value="22222" center :to="{name:'caseDetail',query:{id:item.id}}">
  118. <template #icon>
  119. <van-icon name="../../../static/images/lawEnforcement/icon/icon_aj.png" size="30" color="#539FFD" style="margin-right: 10px;" />
  120. </template>
  121. <template #label>
  122. <p>{{item.caseNum}}<i style="margin-right: 0.5rem;"></i><i style="margin-right: 0.5rem;"></i>{{item.name}}</p>
  123. </template>
  124. <template #default>
  125. <p>{{item.caseStatus}}</p>
  126. <p style="color: #1D6FE9;">{{item.caseProgress}}</p>
  127. </template>
  128. </van-cell>
  129. </van-swipe-cell>
  130. </van-list>
  131. <law></law>
  132. </div>
  133. </template>
  134. <script>
  135. import { getTopDeptId , listCase } from "@/api/lawEnforcement/index";
  136. import law from "@/components/common/law_footer";
  137. export default {
  138. name: "index",
  139. components: {
  140. law
  141. },
  142. data() {
  143. return {
  144. value:'',
  145. radio:'',
  146. //是否显示加载
  147. loading: false,
  148. //是否滚动到底部
  149. finished: false,
  150. sheetShow: false,
  151. showDsrlx: false,
  152. showAjzt: false,
  153. showAjzfjd: false,
  154. showSxtj: false,
  155. // 查询参数
  156. queryParams: {
  157. // 分页
  158. pageNum: 1,
  159. pageSize: 10,
  160. // 查询排序
  161. orderByColumn: "id",
  162. isAsc: "desc",
  163. caseNum: null,
  164. type: null,
  165. caseStatus: null,
  166. caseProgress: null,
  167. },
  168. //新闻集合
  169. newList:[],
  170. // 案件登记表格数据
  171. caseList: [],
  172. caseStatusOptions:[],
  173. caseProgressOptions:[],
  174. typeOptions:[],
  175. typeColumns:[],
  176. caseStatusColumns:[],
  177. caseProgressColumns:[],
  178. showType : '',
  179. showCaseStatus : '',
  180. showCaseProgress : '',
  181. };
  182. },
  183. created() {
  184. this.getDicts("enforce_body_type").then(response => {
  185. this.typeOptions = response.data;
  186. for (var i = 0 ; i < response.data.length ; i++){
  187. this.typeColumns.push({text: response.data[i].dictLabel, value: response.data[i].dictValue})
  188. }
  189. });
  190. this.getDicts("case_status").then(response => {
  191. this.caseStatusOptions = response.data;
  192. for (var i = 0 ; i < response.data.length ; i++){
  193. this.caseStatusColumns.push({text: response.data[i].dictLabel, value: response.data[i].dictValue})
  194. }
  195. });
  196. this.getDicts("case_node").then(response => {
  197. this.caseProgressOptions = response.data;
  198. for (var i = 0 ; i < response.data.length ; i++){
  199. this.caseProgressColumns.push({text: response.data[i].dictLabel, value: response.data[i].dictValue})
  200. }
  201. });
  202. },
  203. methods: {
  204. getList(){
  205. this.loading = true;
  206. listCase(this.queryParams).then(response => {
  207. for (var i = 0; i < response.rows.length; i++) {
  208. response.rows[i].caseStatus = this.selectDictLabel(this.caseStatusOptions, response.rows[i].caseStatus);
  209. response.rows[i].caseProgress = this.selectDictLabel(this.caseProgressOptions, response.rows[i].caseProgress);
  210. this.caseList.push(response.rows[i])
  211. }
  212. if(this.caseList.length >= response.total){
  213. this.finished = true;
  214. return;
  215. }
  216. this.queryParams.pageNum += 1 ;
  217. this.loading = false;
  218. });
  219. },
  220. getBanner(){
  221. this.loading = true;
  222. this.queryParams.number = 1 ;
  223. this.queryParams.pageSize = 5 ;
  224. newList(this.queryParams).then(response => {
  225. this.bannerList = response.rows;
  226. for (var i = 0; i < response.rows.length; i++) {
  227. var imgStrs = response.rows[i].content.match(/<IMG src=\"([^\"]*?)\">/gi)
  228. if (imgStrs != null && imgStrs != '') {
  229. this.bannerList[i].img = imgStrs[0].substr(10,(imgStrs[0].length-12));
  230. }
  231. }
  232. this.loading = false;
  233. });
  234. },
  235. goDetail(id){
  236. console.log(id)
  237. window.location = 'news/newDetail?id='+id;
  238. },
  239. onConfirmDsrlx(data){
  240. this.queryParams.type = data.value;
  241. this.showType = data.text;
  242. this.showDsrlx = false;
  243. },
  244. onConfirmAjzt(data){
  245. this.queryParams.caseStatus = data.value;
  246. this.showCaseStatus = data.text
  247. this.showAjzt = false;
  248. },
  249. onConfirmAjzfjd(data){
  250. this.queryParams.caseProgress = data.value;
  251. this.showCaseProgress = data.text
  252. this.showAjzfjd = false;
  253. },
  254. resetQuery(){
  255. this.queryParams = {
  256. // 分页
  257. pageNum: 1,
  258. pageSize: 10,
  259. // 查询排序
  260. orderByColumn: "id",
  261. isAsc: "desc",
  262. caseNum: null,
  263. type: null,
  264. caseStatus: null,
  265. caseProgress: null,
  266. };
  267. this.showType = '';
  268. this.showCaseStatus = '';
  269. this.showCaseProgress = '';
  270. this.showSxtj = false;
  271. this.getList()
  272. },
  273. /** 搜索按钮操作 */
  274. handleQuery() {
  275. if(this.showType != '' || this.showCaseStatus != '' || this.showCaseProgress != ''){
  276. this.showSxtj = true;
  277. }
  278. this.caseList = [];
  279. this.queryParams.pageNum = 1;
  280. this.getList();
  281. },
  282. },
  283. };
  284. </script>
  285. <style scoped lang="scss">
  286. @font-face {
  287. font-family: SourceHanSansCNBold;
  288. src: url("../../../assets/fonts/SourceHanSansCN-Bold.otf");
  289. }
  290. .app-container {
  291. padding: 0.2rem 3%;
  292. }
  293. /deep/ .van-action-sheet__content{
  294. padding-bottom: 0.5rem;
  295. }
  296. .sheetContent{
  297. padding: 10PX 1% 0;
  298. margin-bottom: 0.5rem;
  299. .sheetTitle{
  300. font-size: 0.42rem;
  301. background-color: transparent;
  302. width:auto;
  303. color: #333333;
  304. border:none;
  305. margin-bottom: 10PX;
  306. padding: 0 15px;
  307. }
  308. /deep/ .van-row{
  309. margin-bottom: 10PX;
  310. }
  311. /deep/ .van-col{
  312. text-align: center;
  313. padding: 0 15px;
  314. }
  315. .active{
  316. background-color: #1D6FE9;
  317. color: #FFFFFF;
  318. border: none;
  319. }
  320. p{
  321. font-size: 0.42rem;
  322. padding: 0.2rem 0;
  323. color: #666666;
  324. border-radius: 4PX;
  325. border: 1px solid #B4B0B0;
  326. }
  327. }
  328. /deep/ .van-action-sheet__header{
  329. border-bottom: 8PX solid #eeeeee;
  330. }
  331. /deep/.van-swipe-cell{
  332. margin-bottom: 0.2rem;
  333. border-radius: 0.2rem;
  334. overflow: hidden;
  335. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  336. }
  337. /deep/ .van-search__content{
  338. background-color: #ffffff;
  339. border-radius: 20PX;
  340. border: 1px solid #cccccc;
  341. margin-right: 2%;
  342. }
  343. /deep/ .van-search__action{
  344. background-color: #1D6FE9;
  345. border-radius: 20PX;
  346. text-align: center;
  347. color: #ffffff;
  348. }
  349. /deep/ .van-search{
  350. background-color: transparent;
  351. padding: 0;
  352. }
  353. .van-cell__title{
  354. color: #666666;
  355. }
  356. /deep/ .van-nav-bar--fixed{
  357. background: url("../../../../static/images/lawEnforcement/head_bg.png") 100%;
  358. }
  359. /deep/.van-cell__title{
  360. flex: 0.7;
  361. }
  362. /deep/.van-cell__title span{
  363. font-family: Arial;
  364. font-size: 0.4rem;
  365. font-weight: normal;
  366. }
  367. /deep/.van-cell__value{
  368. flex: 0.3;
  369. }
  370. /deep/ .van-nav-bar__title{
  371. display: flex;
  372. max-width: initial;
  373. color: #ffffff;
  374. p{
  375. line-height: 30Px;
  376. margin-left: 6Px;
  377. font-size: 21Px;
  378. color: #D60303;
  379. font-family: SourceHanSansCNBold;
  380. }
  381. }
  382. /deep/ .van-tabs__content{
  383. width: 96%;
  384. margin: 0 auto;
  385. }
  386. /deep/ van-tab__pane-wrapper{
  387. padding: 0 2%;
  388. }
  389. /deep/ .van-tab{
  390. border: none;
  391. color: #1D6FE9;
  392. }
  393. /deep/ .van-tab--active{
  394. border-radius: 30Px;
  395. box-shadow: 0px 5px 5px #ccc;
  396. background-color: #FE1313!important;
  397. }
  398. /deep/ .van-tabs--card>.van-tabs__wrap{
  399. height: 0.9rem;
  400. margin: 10Px 0;
  401. }
  402. /deep/ .van-tab__pane{
  403. background: #FFF;
  404. border-radius: 8Px;
  405. overflow: hidden;
  406. }
  407. /deep/ .van-tabs__nav--card{
  408. padding: 3Px 2%;
  409. border: none;
  410. border-radius: 1rem;
  411. height: 0.9rem;
  412. }
  413. .bannerTit{
  414. position: absolute;
  415. bottom: 10px;
  416. background: rgba(255,255,255,0.3);
  417. width: 100%;
  418. height: 0.8rem;
  419. line-height: 0.8rem;
  420. color: #fff;
  421. overflow: hidden;
  422. padding: 0 3%;
  423. font-size: 16Px;
  424. }
  425. .link{
  426. color: #000;
  427. }
  428. .my-swipe {
  429. border-radius: 8Px;
  430. }
  431. .my-swipe .van-swipe-item .van-image{
  432. width: 100%;
  433. }
  434. .van-grid-item p{
  435. margin-top: 10px;
  436. }
  437. .newTit{
  438. font-size: 0.45rem;
  439. margin: 0.4rem 0;
  440. font-family: Source Han Sans SC, Source Han Sans SC-Medium;
  441. font-weight: 500;
  442. text-align: left;
  443. color: #333333;
  444. }
  445. .newContent{
  446. display: -webkit-box;
  447. -webkit-box-orient: vertical;
  448. -webkit-line-clamp: 2;
  449. word-break: break-all;
  450. overflow: hidden;
  451. }
  452. .search-icon {
  453. line-height: inherit;
  454. margin-left: 10px;
  455. }
  456. </style>