添加智能设备页面
| Before Width: | Height: | Size: 361 KiB | 
| Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 370 KiB | 
| Before Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 2.4 KiB | 
| Before Width: | Height: | Size: 6.7 KiB | 
| Before Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 2.0 KiB | 
| Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 364 KiB | 
| Before Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 8.7 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.8 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 1.7 KiB | 
| Before Width: | Height: | Size: 1.5 KiB | 
| Before Width: | Height: | Size: 1.9 KiB | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 1.6 KiB | 
| Before Width: | Height: | Size: 329 KiB | 
| Before Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 1.2 KiB | 
| Before Width: | Height: | Size: 3.7 KiB | 
| Before Width: | Height: | Size: 4.5 KiB | 
| Before Width: | Height: | Size: 3.6 KiB | 
| Before Width: | Height: | Size: 4.7 KiB | 
| Before Width: | Height: | Size: 2.0 KiB | 
| @ -56,7 +56,7 @@ export default { | ||||
|         { | ||||
|           index: "9", | ||||
|           title: "智能设备", | ||||
|           path: "/09" | ||||
|           path: "/intelligent" | ||||
|         }, | ||||
|         { | ||||
|           index: "7", | ||||
|  | ||||
| @ -92,16 +92,16 @@ | ||||
|               <img src="@/assets/img/elder/1.png" alt=""> | ||||
|               <div> | ||||
|                 <div>长者总数</div> | ||||
|                 <div><span>1761</span>人</div> | ||||
|                 <div><span>1760</span>人</div> | ||||
|               </div> | ||||
|             </div> | ||||
|             <div> | ||||
|               <div><i class="circle"></i>男性长者</div> | ||||
|               <div>1761人</div> | ||||
|               <div>980人</div> | ||||
|             </div> | ||||
|             <div> | ||||
|               <div><i class="circle circle2"></i>女性长者</div> | ||||
|               <div>1761人</div> | ||||
|               <div>780人</div> | ||||
|             </div> | ||||
|           </dv-border-box-8> --> | ||||
|           <dv-border-box-8 :color="['#EE7C11', '#E48900']" class="box8"> | ||||
|  | ||||
| @ -1,954 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="menuSearch"> | ||||
|       <el-date-picker | ||||
|         v-model="date" | ||||
|         value-format="yyyy-MM" | ||||
|         @change="dateChange" | ||||
|         type="monthrange" | ||||
|         range-separator="至" | ||||
|         start-placeholder="开始月份" | ||||
|         end-placeholder="结束月份" | ||||
|         :picker-options="pickerOptions" | ||||
|         :default-value=" | ||||
|           new Date().getFullYear() - 1 + '-' + (new Date().getMonth() + 1) | ||||
|         " | ||||
|       > | ||||
|       </el-date-picker> | ||||
|       <el-button type="primary" round @click="search" | ||||
|         ><i class="iconfont iconchaxun"></i>查询</el-button | ||||
|       > | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="left"> | ||||
|       <ul class="t"> | ||||
|         <li> | ||||
|           <div> | ||||
|             <img src="../../assets/img/intelligent/16.png" /> | ||||
|           </div> | ||||
|           <div> | ||||
|             <p>在押罪犯</p> | ||||
|             <span | ||||
|               ><i class="digifaw">{{ totalData["BE_IN_PRISON"] | formatNum }}</i | ||||
|               >人</span | ||||
|             > | ||||
|           </div> | ||||
|         </li> | ||||
|         <li> | ||||
|           <div> | ||||
|             <img src="../../assets/img/intelligent/17.png" /> | ||||
|           </div> | ||||
|           <div> | ||||
|             <p>减刑</p> | ||||
|             <span | ||||
|               ><i class="digifaw">{{ | ||||
|                 totalData["COMMUTATION_NUM"] | formatNum | ||||
|               }}</i | ||||
|               >人</span | ||||
|             > | ||||
|           </div> | ||||
|         </li> | ||||
|         <li> | ||||
|           <div> | ||||
|             <img src="../../assets/img/intelligent/18.png" /> | ||||
|           </div> | ||||
|           <div> | ||||
|             <p>减刑率</p> | ||||
|             <span | ||||
|               ><i class="digifaw">{{ totalData.proportion1 }}</i></span | ||||
|             > | ||||
|           </div> | ||||
|         </li> | ||||
|         <li> | ||||
|           <div> | ||||
|             <img src="../../assets/img/intelligent/19.png" /> | ||||
|           </div> | ||||
|           <div> | ||||
|             <p>假释</p> | ||||
|             <span | ||||
|               ><i class="digifaw">{{ totalData["PAROLE_NUM"] | formatNum }}</i | ||||
|               >人</span | ||||
|             > | ||||
|           </div> | ||||
|         </li> | ||||
|         <li> | ||||
|           <div> | ||||
|             <img src="../../assets/img/intelligent/20.png" /> | ||||
|           </div> | ||||
|           <div> | ||||
|             <p>假释率</p> | ||||
|             <span | ||||
|               ><i class="digifaw">{{ totalData.proportion2 }}</i></span | ||||
|             > | ||||
|           </div> | ||||
|         </li> | ||||
|       </ul> | ||||
|       <div class="b"> | ||||
|         <ul> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey1" :echartObj="echartObj1"></Echarts> | ||||
|           </li> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey2" :echartObj="echartObj2"></Echarts> | ||||
|           </li> | ||||
|         </ul> | ||||
|         <ul> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey3" :echartObj="echartObj3"></Echarts> | ||||
|           </li> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey4" :echartObj="echartObj4"></Echarts> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="right"> | ||||
|       <h2>北京各监狱减刑假释数量</h2> | ||||
|       <ul> | ||||
|         <li> | ||||
|           <div>假释人数(人)</div> | ||||
|           <div>监狱</div> | ||||
|           <div>减刑人数(人)</div> | ||||
|         </li> | ||||
|         <!-- a1监狱名 a2假释人数 a3减刑人数 a4假释长度 a5减刑长度 --> | ||||
|         <li v-for="(item, index) in data" :key="index"> | ||||
|           <div>{{ item["PAROLE_NUM"] | formatNum }}</div> | ||||
|           <div class="line1"> | ||||
|             <p :style="'width:' + item.width1"></p> | ||||
|           </div> | ||||
|           <div>{{ item["TYPE"] }}</div> | ||||
|           <div class="line2"> | ||||
|             <p :style="'width:' + item.width2"></p> | ||||
|           </div> | ||||
|           <div>{{ item["COMMUTATION_NUM"] | formatNum }}</div> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Echarts from "@/components/echarts"; | ||||
| import { | ||||
|   commutationParole, | ||||
|   commutationParoleAnalyse, | ||||
|   commutationActionCaseRatio, | ||||
|   paroleActionCaseRatio, | ||||
|   prisonCommutationParole, | ||||
| } from "@/api/intelligentApi"; | ||||
| import {createOperationLog} from "@/api/api" | ||||
| export default { | ||||
|   data() { | ||||
|     return { | ||||
|       echartObjKey1: "echartObjKey1", | ||||
|       echartObjKey2: "echartObjKey2", | ||||
|       echartObjKey3: "echartObjKey3", | ||||
|       echartObjKey4: "echartObjKey5", | ||||
| 
 | ||||
|       pickerOptions: { | ||||
|         disabledDate(time) { | ||||
|           return time.getTime() > Date.now() - 8.64e6; | ||||
|         }, | ||||
|       }, | ||||
|       param: { | ||||
|         startYear: "", | ||||
|         endYear: "", | ||||
|       }, | ||||
|       // 减刑假释汇总数据 | ||||
|       totalData: {}, | ||||
|       date: "", | ||||
|       data: [], | ||||
|       // 减刑假释数量分析 | ||||
|       echartObj1: { | ||||
|         title: { | ||||
|           text: "减刑假释数量分析", | ||||
|           top: "10", | ||||
|           left: "20", | ||||
|           textStyle: { | ||||
|             color: "#43ebf7", //图例字体颜色 | ||||
|             fontSize: "22", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|           axisPointer: { | ||||
|             type: "cross", | ||||
|             label: { | ||||
|               backgroundColor: "#6a7985", | ||||
|             }, | ||||
|           }, | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", //圆点 | ||||
|           top: "20", | ||||
|           right: 10, | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         grid: { | ||||
|           top: "70", | ||||
|           left: "30", | ||||
|           right: "40", | ||||
|           bottom: "30", | ||||
|           containLabel: true, | ||||
|         }, | ||||
|         xAxis: [ | ||||
|           { | ||||
|             type: "category", | ||||
|             boundaryGap: true, | ||||
|             data: [], | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|               rotate: 50, | ||||
|               interval: 0, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         yAxis: [ | ||||
|           { | ||||
|             // show:false, | ||||
|             name: "单位(人)", | ||||
|             type: "value", | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "减刑", | ||||
|             type: "bar", | ||||
|             animationDuration: 2000, | ||||
|             barMaxWidth: "20", | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 color: "#d3e352", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                   position: "top", | ||||
|                   textStyle: { | ||||
|                     color: "#fff", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             name: "假释", | ||||
|             type: "bar", | ||||
|             animationDuration: 2000, | ||||
|             barMaxWidth: "20", | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 color: "#34dbe0", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                   position: "top", | ||||
|                   textStyle: { | ||||
|                     color: "#fff", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 减刑案由占比分析 | ||||
|       echartObj2: { | ||||
|         color: [ | ||||
|           "#34dbe0", | ||||
|           "#2d95ff", | ||||
|           "#DC8AB5", | ||||
|           "#d3e352", | ||||
|           "#2ae29e", | ||||
|           "#af7dff", | ||||
|           "#e83828", | ||||
|         ], //图例颜色 | ||||
|         title: { | ||||
|           text: "减刑案由占比分析", | ||||
|           top: "10", | ||||
|           left: "20", | ||||
|           textStyle: { | ||||
|             color: "#43ebf7", //图例字体颜色 | ||||
|             fontSize: "22", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: (param) => { | ||||
|             return ( | ||||
|               param.seriesName + | ||||
|               "<br>" + | ||||
|               param.name + | ||||
|               ":" + | ||||
|               this.formatNum(param.value) + | ||||
|               "人" + | ||||
|               "(" + | ||||
|               param.percent + | ||||
|               "%)" | ||||
|             ); | ||||
|           }, | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", | ||||
|           top: 40, | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         avoidLabelOverlap: false, | ||||
|         label: { | ||||
|           show: false, | ||||
|           position: "center", | ||||
|         }, | ||||
|         labelLine: { | ||||
|           show: false, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             name: "减刑案由占比分析", | ||||
|             type: "pie", | ||||
|             top: 50, | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             data: [], | ||||
|             label: { | ||||
|               //饼图图形上的文本标签 | ||||
|               normal: { | ||||
|                 show: true, | ||||
|                 position: "inner", //标签的位置 | ||||
|                 color: "#fff", | ||||
|                 formatter: "{d}%", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "减刑案由占比分析", | ||||
|             type: "pie", | ||||
|             top: 50, | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   fontSize: 14, | ||||
|                   formatter: (param) => { | ||||
|                     return ( | ||||
|                       param.name + "\n" + this.formatNum(param.value) + "人" | ||||
|                     ); | ||||
|                   }, | ||||
|                 }, | ||||
|                 labelLine: { show: true }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             // 边框的设置 | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "35%"], | ||||
|             type: "pie", | ||||
|             top: 50, | ||||
|             animationDuration: 2000, | ||||
|             animation: false, | ||||
|             tooltip: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 itemStyle: { | ||||
|                   color: "rgba(0,0,0,0.2)", | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 不予减刑、不予假释占比分析 | ||||
|       echartObj3: { | ||||
|         color: [ | ||||
|           "#34dbe0", | ||||
|           "#2d95ff", | ||||
|           "#DC8AB5", | ||||
|           "#d3e352", | ||||
|           "#2ae29e", | ||||
|           "#af7dff", | ||||
|           "#e83828", | ||||
|         ], //图例颜色 | ||||
|         title: { | ||||
|           text: "不予减刑、不予假释占比分析", | ||||
|           top: "10", | ||||
|           left: "20", | ||||
| 
 | ||||
|           textStyle: { | ||||
|             color: "#43ebf7", //图例字体颜色 | ||||
|             fontSize: "22", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: (param) => { | ||||
|             return ( | ||||
|               param.seriesName + | ||||
|               "<br>" + | ||||
|               param.name + | ||||
|               ":" + | ||||
|               this.formatNum(param.value) + | ||||
|               "人" + | ||||
|               "(" + | ||||
|               param.percent + | ||||
|               "%)" | ||||
|             ); | ||||
|           }, | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", | ||||
|           top: 40, | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         avoidLabelOverlap: false, | ||||
|         label: { | ||||
|           show: false, | ||||
|           position: "center", | ||||
|         }, | ||||
|         labelLine: { | ||||
|           show: false, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             name: "不予减刑、不予假释占比分析", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "55%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             data: [], | ||||
|             label: { | ||||
|               //饼图图形上的文本标签 | ||||
|               normal: { | ||||
|                 show: true, | ||||
|                 position: "inner", //标签的位置 | ||||
|                 color: "#fff", | ||||
|                 formatter: "{d}%", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "不予减刑、不予假释占比分析", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "55%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   fontSize: 14, | ||||
|                   formatter: (param) => { | ||||
|                     return ( | ||||
|                       param.name + "\n" + this.formatNum(param.value) + "人" | ||||
|                     ); | ||||
|                   }, | ||||
|                 }, | ||||
|                 labelLine: { show: true }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             // 边框的设置 | ||||
|             center: ["50%", "55%"], | ||||
|             radius: ["30%", "35%"], | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             animation: false, | ||||
|             tooltip: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 itemStyle: { | ||||
|                   color: "rgba(0,0,0,0.2)", | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 假释案由占比分析 | ||||
|       echartObj4: { | ||||
|         color: [ | ||||
|           "#34dbe0", | ||||
|           "#2d95ff", | ||||
|           "#DC8AB5", | ||||
|           "#d3e352", | ||||
|           "#2ae29e", | ||||
|           "#af7dff", | ||||
|           "#e83828", | ||||
|         ], //图例颜色 | ||||
|         title: { | ||||
|           text: "假释案由占比分析", | ||||
|           top: "10", | ||||
|           left: "20", | ||||
|           textStyle: { | ||||
|             color: "#43ebf7", //图例字体颜色 | ||||
|             fontSize: "22", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: (param) => { | ||||
|             return ( | ||||
|               param.seriesName + | ||||
|               "<br>" + | ||||
|               param.name + | ||||
|               ":" + | ||||
|               this.formatNum(param.value) + | ||||
|               "人" + | ||||
|               "(" + | ||||
|               param.percent + | ||||
|               "%)" | ||||
|             ); | ||||
|           }, | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", | ||||
|           right: "0", | ||||
|           top: 40, | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         avoidLabelOverlap: false, | ||||
|         label: { | ||||
|           show: false, | ||||
|           position: "center", | ||||
|         }, | ||||
|         labelLine: { | ||||
|           show: false, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             name: "假释案由占比分析", | ||||
|             type: "pie", | ||||
|             top: 50, | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             data: [], | ||||
|             label: { | ||||
|               //饼图图形上的文本标签 | ||||
|               normal: { | ||||
|                 show: true, | ||||
|                 position: "inner", //标签的位置 | ||||
|                 color: "#fff", | ||||
|                 formatter: "{d}%", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "假释案由占比分析", | ||||
|             type: "pie", | ||||
|             top: 50, | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   fontSize: 14, | ||||
|                   formatter: (param) => { | ||||
|                     return ( | ||||
|                       param.name + "\n" + this.formatNum(param.value) + "人" | ||||
|                     ); | ||||
|                   }, | ||||
|                 }, | ||||
|                 labelLine: { show: true }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             // 边框的设置 | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "35%"], | ||||
|             type: "pie", | ||||
|             top: 50, | ||||
|             animationDuration: 2000, | ||||
|             animation: false, | ||||
|             tooltip: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 itemStyle: { | ||||
|                   color: "rgba(0,0,0,0.2)", | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
|   components: { | ||||
|     Echarts, | ||||
|   }, | ||||
|   created() { | ||||
|     this.param = { | ||||
|       startYear: "", | ||||
|       endYear: "", | ||||
|     }; | ||||
|     this.getData(); | ||||
|   }, | ||||
|   methods: { | ||||
|     search() { | ||||
|       this.getData(); | ||||
|     }, | ||||
|     getData() { | ||||
|       let pointParams ={ | ||||
|         opeLogExceptionInfo: '进入智能办案专题模块查询了减刑假释数据',//日志描述 | ||||
|         opeLogUserAccount:this.$cookies.get('username'),//用户账户 | ||||
|         opeLogSystem:"BJCM-DSJ",//系统编码 | ||||
|         opeLogStatus: 1, | ||||
|         opeLogIp:"" | ||||
|       } | ||||
|       createOperationLog(pointParams).then(res=>{ | ||||
|         console.log(res) | ||||
|       }) | ||||
|       // 减刑假释汇总数据、不予减刑、不予假释占比分析 | ||||
|       commutationParole(this.param) | ||||
|         .then((res) => { | ||||
|           // 减刑假释汇总数据 | ||||
|           this.totalData = { | ||||
|             BE_IN_PRISON: 0, | ||||
|             COMMUTATION_NUM: 0, | ||||
|             proportion1: "0%", | ||||
|             PAROLE_NUM: 0, | ||||
|             proportion2: "0%", | ||||
|           }; | ||||
|           this.echartObj3.series[0].data = []; | ||||
|           this.echartObj3.series[1].data = []; | ||||
|           if (JSON.stringify(res) != "{}" && res) { | ||||
|             this.totalData = res; | ||||
|             this.totalData.proportion1 = | ||||
|               ( | ||||
|                 (this.totalData["COMMUTATION_NUM"] / | ||||
|                   this.totalData["BE_IN_PRISON"]) * | ||||
|                 100 | ||||
|               ).toFixed(2) + "%"; //减刑率 | ||||
|             this.totalData.proportion2 = | ||||
|               ( | ||||
|                 (this.totalData["PAROLE_NUM"] / | ||||
|                   this.totalData["BE_IN_PRISON"]) * | ||||
|                 100 | ||||
|               ).toFixed(2) + "%"; //假释率 | ||||
|             // 不予减刑、不予假释占比分析 | ||||
|             this.echartObj3.series[0].data = [ | ||||
|               { value: this.totalData["COMMUTATION_NUM"], name: "减刑" }, | ||||
|               { | ||||
|                 value: this.totalData["NON_COMMUTATION_NUM"], | ||||
|                 name: "不予减刑", | ||||
|               }, | ||||
|               { value: this.totalData["PAROLE_NUM"], name: "假释" }, | ||||
|               { value: this.totalData["NON_PAROLE_NUM"], name: "不予假释" }, | ||||
|             ]; | ||||
|             this.echartObj3.series[1].data = [ | ||||
|               { value: this.totalData["COMMUTATION_NUM"], name: "减刑" }, | ||||
|               { | ||||
|                 value: this.totalData["NON_COMMUTATION_NUM"], | ||||
|                 name: "不予减刑", | ||||
|               }, | ||||
|               { value: this.totalData["PAROLE_NUM"], name: "假释" }, | ||||
|               { value: this.totalData["NON_PAROLE_NUM"], name: "不予假释" }, | ||||
|             ]; | ||||
|           } | ||||
|           this.echartObjKey3 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 减刑假释数量分析 | ||||
|       commutationParoleAnalyse(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj1.xAxis[0].data = []; | ||||
|           this.echartObj1.series[0].data = []; | ||||
|           this.echartObj1.series[1].data = []; | ||||
|           if (res.commutationParoleAnalyse.length > 0) { | ||||
|             res.commutationParoleAnalyse.forEach((item) => { | ||||
|               this.echartObj1.xAxis[0].data.push(item["YEAR_MONTH"]); | ||||
|               this.echartObj1.series[0].data.push(item["COMMUTATION_NUM"]); // 减刑 | ||||
|               this.echartObj1.series[1].data.push(item["PAROLE_NUM"]); // 假释 | ||||
|             }); | ||||
|           } | ||||
|           this.echartObjKey1 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 减刑案由占比分析 | ||||
|       commutationActionCaseRatio(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj2.series[0].data = res.commutationActionCaseRatio.map( | ||||
|             (item) => { | ||||
|               return { name: item["TYPE"], value: item["NUM"] }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObj2.series[1].data = res.commutationActionCaseRatio.map( | ||||
|             (item) => { | ||||
|               return { name: item["TYPE"], value: item["NUM"] }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObjKey2 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
| 
 | ||||
|       // 假释案由占比分析 | ||||
|       paroleActionCaseRatio(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj4.series[0].data = res.paroleActionCaseRatio.map( | ||||
|             (item) => { | ||||
|               return { name: item["TYPE"], value: item["NUM"] }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObj4.series[1].data = res.paroleActionCaseRatio.map( | ||||
|             (item) => { | ||||
|               return { name: item["TYPE"], value: item["NUM"] }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObjKey4 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 北京各监狱减刑假释数量 | ||||
|       prisonCommutationParole(this.param) | ||||
|         .then((res) => { | ||||
|           this.data = [ | ||||
|             { | ||||
|               PAROLE_NUM: 0, | ||||
|               TYPE: "暂无数据", | ||||
|               COMMUTATION_NUM: 0, | ||||
|               width1: "0%", | ||||
|               width2: "0%", | ||||
|             }, | ||||
|           ]; | ||||
|           if (res.prisonCommutationParole.length > 0) { | ||||
|             let arr1 = []; | ||||
|             let arr2 = []; | ||||
|             res.prisonCommutationParole.forEach((item) => { | ||||
|               arr1.push(item["COMMUTATION_NUM"]); // 减刑数量 | ||||
|               arr2.push(item["PAROLE_NUM"]); //假释数量 | ||||
|             }); | ||||
|             let max1 = this.getMax(arr1); // 减刑数量 | ||||
|             let max2 = this.getMax(arr2); //假释数量 | ||||
|             res.prisonCommutationParole.forEach((item) => { | ||||
|               item.width1 = | ||||
|                 ((item["PAROLE_NUM"] / max2) * 100).toFixed(2) + "%"; // 假释长度 | ||||
|               item.width2 = | ||||
|                 ((item["COMMUTATION_NUM"] / max1) * 100).toFixed(2) + "%"; // 减刑长度 | ||||
|             }); | ||||
|             this.data = res.prisonCommutationParole; | ||||
|           } | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
| 
 | ||||
|       this.echartObjKey = new Date().getTime() + 1; | ||||
|     }, | ||||
|     // 时间选择器 | ||||
|     dateChange(val) { | ||||
|       if (val) { | ||||
|         this.param.startYear = val[0]; | ||||
|         this.param.endYear = val[1]; | ||||
|       } else { | ||||
|         this.param.startYear = ""; | ||||
|         this.param.endYear = ""; | ||||
|       } | ||||
|     }, | ||||
|     //  获取X轴最大值 | ||||
|     getMax(arr) { | ||||
|       arr.sort(function (a, b) { | ||||
|         return a - b; | ||||
|       }); | ||||
|       let max = arr[arr.length - 1]; // 计算最大值 | ||||
|       let num = Math.floor(max / 10) * 10 + 10; // 获取X轴最大值 | ||||
|       return num; | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="less" scoped> | ||||
| .main { | ||||
|   padding: 20px 30px; | ||||
|   display: flex; | ||||
|   .left, | ||||
|   .right { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|   } | ||||
|   .left { | ||||
|     width: 70%; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     .t { | ||||
|       display: flex; | ||||
|       padding-left: 20px; | ||||
|       .digifaw { | ||||
|         color: #03bb62; | ||||
|         font-size: 30px; | ||||
|       } | ||||
|       li { | ||||
|         display: flex; | ||||
|         flex-direction: row; | ||||
|         + li { | ||||
|           margin-left: 30px; | ||||
|         } | ||||
|         > div { | ||||
|           display: flex; | ||||
|           flex-direction: column; | ||||
|           justify-content: space-around; | ||||
|           + div { | ||||
|             margin-left: 5px; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     .b { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       > ul { | ||||
|         flex: 1; | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|         + ul { | ||||
|           padding: 0 100px; | ||||
|         } | ||||
|         li { | ||||
|           flex: 1; | ||||
|           display: flex; | ||||
|           flex-direction: column; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .right { | ||||
|     flex: 1; | ||||
|     padding: 0 20px; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     h2 { | ||||
|       color: #43ebf7; | ||||
|       font-size: 30px; | ||||
|       padding: 20px 0; | ||||
|     } | ||||
|     ul { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       justify-content: space-around; | ||||
|       li { | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         &:first-child { | ||||
|           div:nth-child(2) { | ||||
|             text-align: center; | ||||
|           } | ||||
|           div:nth-child(3) { | ||||
|             width: auto; | ||||
|             text-align: right; | ||||
|           } | ||||
|         } | ||||
|         div:nth-child(1) { | ||||
|           min-width: 60px; | ||||
|         } | ||||
|         div:nth-child(3) { | ||||
|           color: #27d1fc; | ||||
|           width: 160px; | ||||
|           text-align: center; | ||||
|         } | ||||
|         div:nth-child(5) { | ||||
|           min-width: 60px; | ||||
|           text-align: right; | ||||
|         } | ||||
|         &:nth-child(1) div { | ||||
|           color: #fff; | ||||
|         } | ||||
|         .line1, | ||||
|         .line2 { | ||||
|           padding: 0 5px; | ||||
|           p { | ||||
|             transition: width 2s ease-out; | ||||
|             -moz-transition: width 2s ease-out; | ||||
|             -webkit-transition: width 2s ease-out; | ||||
|             -o-transition: width 2s ease-out; | ||||
|             display: inline-block; | ||||
|             height: 10px; | ||||
|             border-radius: 10px 0 0 10px; | ||||
|           } | ||||
|         } | ||||
|         .line1 { | ||||
|           text-align: right; | ||||
|           width: 20%; | ||||
|           p { | ||||
|             background-image: linear-gradient(to right, #fff480, #f49546); | ||||
|           } | ||||
|         } | ||||
|         .line2 { | ||||
|           width: 20%; | ||||
|           p { | ||||
|             border-radius: 0 10px 10px 0; | ||||
|             background-image: linear-gradient(to right, #35ecfe, #fce190); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,697 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="menuSearch"> | ||||
|       <el-date-picker | ||||
|         v-model="date" | ||||
|         value-format="yyyy-MM" | ||||
|         @change="dateChange" | ||||
|         type="monthrange" | ||||
|         range-separator="至" | ||||
|         start-placeholder="开始月份" | ||||
|         end-placeholder="结束月份" | ||||
|         :picker-options="pickerOptions" | ||||
|         :default-value=" | ||||
|           new Date().getFullYear() - 1 + '-' + (new Date().getMonth() + 1) | ||||
|         " | ||||
|       > | ||||
|       </el-date-picker> | ||||
|       <el-button type="primary" round @click="search" | ||||
|         ><i class="iconfont iconchaxun"></i>查询</el-button | ||||
|       > | ||||
|     </div> | ||||
| 
 | ||||
|     <ul class="left"> | ||||
|       <li> | ||||
|         <h2>嫌疑人性别分布</h2> | ||||
|         <div class="sex"> | ||||
|           <div> | ||||
|             <p>男</p> | ||||
|             <p class="digifaw">{{ gender["MAN_REDIO"] }}<i>%</i></p> | ||||
|           </div> | ||||
| 
 | ||||
|           <ul> | ||||
|             <li | ||||
|               v-for="item in 24" | ||||
|               :key="item" | ||||
|               :class="item <= gender.proportion ? 'man' : ''" | ||||
|             ></li> | ||||
|           </ul> | ||||
|           <div> | ||||
|             <p>女</p> | ||||
|             <p class="digifaw">{{ gender["FEMALE_REDIO"] }}<i>%</i></p> | ||||
|           </div> | ||||
|         </div> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h2>嫌疑人文化程度分布</h2> | ||||
|         <Echarts :key="echartObjKey1" :echartObj="echartObj1"></Echarts> | ||||
|       </li> | ||||
|     </ul> | ||||
|     <ul class="middle"> | ||||
|       <li> | ||||
|         <h2>嫌疑人身份分析</h2> | ||||
|         <ul class="identity"> | ||||
|           <li v-for="(item, index) in criminalSuspectIdentity" :key="index"> | ||||
|             <div v-if="item['TYPE'].indexOf('无业人员') != -1"> | ||||
|               <img src="../../assets/img/intelligent/24.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('农民') != -1"> | ||||
|               <img src="../../assets/img/intelligent/25.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('离退休人员') != -1"> | ||||
|               <img src="../../assets/img/intelligent/26.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('职员') != -1"> | ||||
|               <img src="../../assets/img/intelligent/27.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('学生') != -1"> | ||||
|               <img src="../../assets/img/intelligent/28.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('务工人员') != -1"> | ||||
|               <img src="../../assets/img/intelligent/29.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('工人') != -1"> | ||||
|               <img src="../../assets/img/intelligent/30.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('国家工作人员') != -1"> | ||||
|               <img src="../../assets/img/intelligent/31.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('失业人员') != -1"> | ||||
|               <img src="../../assets/img/intelligent/32.png" /> | ||||
|             </div> | ||||
|             <div v-else-if="item['TYPE'].indexOf('私营业主') != -1"> | ||||
|               <img src="../../assets/img/intelligent/33.png" /> | ||||
|             </div> | ||||
|             <div> | ||||
|               <span>{{ item.proportion }}</span | ||||
|               >% | ||||
|             </div> | ||||
|             <p>{{ item["TYPE"] }}</p> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h2>嫌疑人年龄分布</h2> | ||||
|         <Echarts :key="echartObjKey2" :echartObj="echartObj2"></Echarts> | ||||
|       </li> | ||||
|     </ul> | ||||
|     <ul class="right"> | ||||
|       <li> | ||||
|         <h2>案由分析</h2> | ||||
|         <ul> | ||||
|           <li> | ||||
|             <span>案由</span> | ||||
|             <span>数量(人)</span> | ||||
|           </li> | ||||
|           <li v-for="(item, i) in data" :key="i"> | ||||
|             <span style="color: #27d1fc">{{ item["TYPE"] }}</span> | ||||
|             <p><i :style="'width:' + item.width"></i></p> | ||||
|             <span>{{ item["CASE_NUM"] | formatNum }}</span> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h2>有期徒刑量刑分析</h2> | ||||
|         <ul> | ||||
|           <li> | ||||
|             <span>量刑</span> | ||||
|             <span>数量(人)</span> | ||||
|           </li> | ||||
|           <li v-for="(item, i) in data2" :key="i"> | ||||
|             <span style="color: #27d1fc">{{ item["TYPE"] }}</span> | ||||
|             <p><i :style="'width:' + item.width"></i></p> | ||||
|             <span>{{ item["CASE_NUM"] | formatNum }}</span> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </li> | ||||
|     </ul> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Echarts from "@/components/echarts"; | ||||
| import { | ||||
|   criminalSuspectGender, | ||||
|   criminalSuspectEdu, | ||||
|   criminalSuspectFixedTermImprisonment, | ||||
|   criminalSuspectActionCause, | ||||
|   criminalSuspectIdentity, | ||||
|   criminalSuspectAge, | ||||
| } from "@/api/intelligentApi"; | ||||
| import {createOperationLog} from "@/api/api" | ||||
| export default { | ||||
|   data() { | ||||
|     return { | ||||
|       echartObjKey1: "echartObjKey1", | ||||
|       echartObjKey2: "echartObjKey2", | ||||
|       pickerOptions: { | ||||
|         disabledDate(time) { | ||||
|           return time.getTime() > Date.now() - 8.64e6; | ||||
|         }, | ||||
|       }, | ||||
|       param: { | ||||
|         startYear: "", | ||||
|         endYear: "", | ||||
|       }, | ||||
|       // 嫌疑人身份分析 | ||||
|       criminalSuspectIdentity: [], | ||||
|       // 性别 | ||||
|       gender: { MAN_REDIO: 0, FEMALE_REDIO: 0, proportion: 24 }, | ||||
|       date: "", | ||||
|       data: [], | ||||
|       data2: [], | ||||
|       // 嫌疑人文化程度分布 | ||||
|       echartObj1: { | ||||
|         color: [ | ||||
|           "#34dbe0", | ||||
|           "#2d95ff", | ||||
|           "#DC8AB5", | ||||
|           "#d3e352", | ||||
|           "#2ae29e", | ||||
|           "#af7dff", | ||||
|           "#e83828", | ||||
|         ], //图例颜色 | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: (param) => { | ||||
|               return ( | ||||
|                 param.seriesName + | ||||
|                 "<br>" + | ||||
|                 param.name + | ||||
|                 ":" + | ||||
|                 this.formatNum(param.value) + | ||||
|                 "人" + | ||||
|                 "(" + | ||||
|                 param.percent + | ||||
|                 "%)" | ||||
|               ); | ||||
|           }, | ||||
|         }, | ||||
|         graphic: { | ||||
|           elements: [ | ||||
|             { | ||||
|               type: "image", | ||||
|               style: { | ||||
|                 image: require("../../assets/img/cult/img7.png"), | ||||
|                 width: 40, | ||||
|                 height: 40, | ||||
|               }, | ||||
|               left: "center", // 相对父元素居中 | ||||
|               top: "center", | ||||
|             }, | ||||
|           ], | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", | ||||
|           top: "0", | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         avoidLabelOverlap: false, | ||||
|         label: { | ||||
|           show: false, | ||||
|           position: "center", | ||||
|         }, | ||||
|         labelLine: { | ||||
|           show: false, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             name: "嫌疑人文化程度分布", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             data: [], | ||||
|             label: { | ||||
|               //饼图图形上的文本标签 | ||||
|               normal: { | ||||
|                 show: true, | ||||
|                 position: "inner", //标签的位置 | ||||
|                 color: "#fff", | ||||
|                 formatter: "{d}%", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "嫌疑人文化程度分布", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (param) => { | ||||
|                       return ( | ||||
|                         param.name + | ||||
|                         "\n" + | ||||
|                         this.formatNum(param.value) + | ||||
|                         "人" | ||||
|                       ); | ||||
|                   }, | ||||
|                 }, | ||||
|                 labelLine: { show: true }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             // 边框的设置 | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "35%"], | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             animation: false, | ||||
|             tooltip: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 itemStyle: { | ||||
|                   color: "rgba(0,0,0,0.2)", | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 嫌疑人年龄分布 | ||||
|       echartObj2: { | ||||
|         color: [ | ||||
|           "#34dbe0", | ||||
|           "#2d95ff", | ||||
|           "#DC8AB5", | ||||
|           "#d3e352", | ||||
|           "#2ae29e", | ||||
|           "#af7dff", | ||||
|           "#e83828", | ||||
|         ], //图例颜色 | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: (param) => { | ||||
|               return ( | ||||
|                 param.seriesName + | ||||
|                 "<br>" + | ||||
|                 param.name + | ||||
|                 ":" + | ||||
|                 this.formatNum(param.value) + | ||||
|                 "人" + | ||||
|                 "(" + | ||||
|                 param.percent + | ||||
|                 "%)" | ||||
|               ); | ||||
|           }, | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", | ||||
|           top: "0", | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         avoidLabelOverlap: false, | ||||
|         label: { | ||||
|           show: false, | ||||
|           position: "center", | ||||
|         }, | ||||
|         labelLine: { | ||||
|           show: false, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             name: "嫌疑人年龄分布", | ||||
|             type: "pie", | ||||
|             top: 20, | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             data: [], | ||||
|             label: { | ||||
|               //饼图图形上的文本标签 | ||||
|               normal: { | ||||
|                 show: true, | ||||
|                 position: "inner", //标签的位置 | ||||
|                 color: "#fff", | ||||
|                 formatter: "{d}%", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "嫌疑人年龄分布", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "60%"], | ||||
|             top: 20, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (param) => { | ||||
|                       return ( | ||||
|                         param.name + | ||||
|                         "\n" + | ||||
|                         this.formatNum(param.value) + | ||||
|                         "人" | ||||
|                       ); | ||||
|                   }, | ||||
|                 }, | ||||
|                 labelLine: { show: true }, | ||||
|               }, | ||||
|             }, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             // 边框的设置 | ||||
|             center: ["50%", "50%"], | ||||
|             radius: ["30%", "35%"], | ||||
|             type: "pie", | ||||
|             top: 20, | ||||
|             animationDuration: 2000, | ||||
|             animation: false, | ||||
|             tooltip: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 itemStyle: { | ||||
|                   color: "rgba(0,0,0,0.2)", | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
|   components: { | ||||
|     Echarts, | ||||
|   }, | ||||
|   created() { | ||||
|     this.param = { | ||||
|       startYear: "", | ||||
|       endYear: "", | ||||
|     }; | ||||
|     this.getData(); | ||||
|   }, | ||||
|   methods: { | ||||
|     search() { | ||||
|       this.getData(); | ||||
|     }, | ||||
|     getData() { | ||||
|       let pointParams ={ | ||||
|         opeLogExceptionInfo: '进入智能办案专题模块查询了犯罪嫌疑人数据',//日志描述 | ||||
|         opeLogUserAccount:this.$cookies.get('username'),//用户账户 | ||||
|         opeLogSystem:"BJCM-DSJ",//系统编码 | ||||
|         opeLogStatus: 1, | ||||
|         opeLogIp:"" | ||||
|       } | ||||
|       createOperationLog(pointParams).then(res=>{ | ||||
|         console.log(res) | ||||
|       }) | ||||
|       // 性别 | ||||
|       criminalSuspectGender(this.param) | ||||
|         .then((res) => { | ||||
|           this.gender = { | ||||
|             MAN_REDIO: 0, | ||||
|             FEMALE_REDIO: 0, | ||||
|             proportion: 24, | ||||
|           }; | ||||
| 
 | ||||
|           if (JSON.stringify(res) != "{}") { | ||||
|             this.gender = res; | ||||
|             this.gender["MAN_REDIO"] = res["MAN_REDIO"] * 100; | ||||
|             this.gender["FEMALE_REDIO"] = res["FEMALE_REDIO"] * 100; | ||||
|             this.gender.proportion = parseInt(this.gender["MAN_REDIO"] * 0.24); | ||||
|           } | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 文化程度分布 | ||||
|       criminalSuspectEdu(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj1.series[0].data = res.criminalSuspectEdu.map( | ||||
|             (item) => { | ||||
|               return { | ||||
|                 name: item["TYPE"], | ||||
|                 value: item["PEOPLE_NUM"], | ||||
|               }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObj1.series[1].data = res.criminalSuspectEdu.map( | ||||
|             (item) => { | ||||
|               return { | ||||
|                 name: item["TYPE"], | ||||
|                 value: item["PEOPLE_NUM"], | ||||
|               }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObjKey1 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       //有期徒刑量刑分析 | ||||
|       criminalSuspectFixedTermImprisonment(this.param) | ||||
|         .then((res) => { | ||||
|           this.data2 = [{ width: 0, TYPE: "暂无数据", CASE_NUM: 0 }]; | ||||
|           if (res.criminalSuspectFixedTermImprisonment.length > 0) { | ||||
|             let max = this.getMax([ | ||||
|               ...res.criminalSuspectFixedTermImprisonment, | ||||
|             ]); | ||||
|             res.criminalSuspectFixedTermImprisonment.forEach((item) => { | ||||
|               item.width = ((item["CASE_NUM"] / max) * 100).toFixed(2) + "%"; | ||||
|             }); | ||||
|             this.data2 = res.criminalSuspectFixedTermImprisonment; | ||||
|           } | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 案由分析 | ||||
|       criminalSuspectActionCause(this.param) | ||||
|         .then((res) => { | ||||
|           this.data = [{ width: 0, TYPE: "暂无数据", CASE_NUM: 0 }]; | ||||
|           if (res.criminalSuspectActionCause.length > 0) { | ||||
|             let max = this.getMax([...res.criminalSuspectActionCause]); | ||||
|             res.criminalSuspectActionCause.forEach((item) => { | ||||
|               item.width = ((item["CASE_NUM"] / max) * 100).toFixed(2) + "%"; | ||||
|             }); | ||||
|             this.data = res.criminalSuspectActionCause; | ||||
|           } | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 犯罪嫌疑人身份分析 | ||||
|       criminalSuspectIdentity(this.param) | ||||
|         .then((res) => { | ||||
|           let total = 0; | ||||
|           this.criminalSuspectIdentity = res.criminalSuspectIdentity; | ||||
|           this.criminalSuspectIdentity.forEach((item) => { | ||||
|             total += item["NUM"]; | ||||
|           }); | ||||
|           this.criminalSuspectIdentity.forEach((item) => { | ||||
|             item.proportion = ((item["NUM"] / total) * 100).toFixed(2); | ||||
|           }); | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 犯罪嫌疑人年龄分布 | ||||
|       criminalSuspectAge(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj2.series[0].data = res.criminalSuspectAge.map( | ||||
|             (item) => { | ||||
|               return { name: item["TYPE"], value: item["NUM"] }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObj2.series[1].data = res.criminalSuspectAge.map( | ||||
|             (item) => { | ||||
|               return { name: item["TYPE"], value: item["NUM"] }; | ||||
|             } | ||||
|           ); | ||||
|           this.echartObjKey2 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|     }, | ||||
|     // 时间选择器 | ||||
|     dateChange(val) { | ||||
|       if (val) { | ||||
|         this.param.startYear = val[0]; | ||||
|         this.param.endYear = val[1]; | ||||
|       } else { | ||||
|         this.param.startYear = ""; | ||||
|         this.param.endYear = ""; | ||||
|       } | ||||
|     }, | ||||
|     //  获取X轴最大值 | ||||
|     getMax(arr) { | ||||
|       arr.sort(function (a, b) { | ||||
|         return a["CASE_NUM"] - b["CASE_NUM"]; | ||||
|       }); | ||||
|       let max = arr[arr.length - 1]["CASE_NUM"]; // 计算最大值 | ||||
|       let num = Math.floor(max / 10) * 10 + 10; // 获取X轴最大值 | ||||
|       return num; | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="less" scoped> | ||||
| .main { | ||||
|   padding: 20px 30px; | ||||
|   display: flex; | ||||
|   .left, | ||||
|   .middle, | ||||
|   .right { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     > li { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       h2 { | ||||
|         color: #43ebf7; | ||||
|         font-size: 26px; | ||||
|         padding: 20px 0; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .left { | ||||
|     width: 30%; | ||||
|     .sex { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       // align-items: center; | ||||
|       padding: 40px 20px; | ||||
|       > div { | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|         justify-content: center; | ||||
|         color: #41bcff; | ||||
|         i { | ||||
|           font-size: 14px; | ||||
|           color: #fff; | ||||
|         } | ||||
|         p { | ||||
|           font-size: 60px; | ||||
|         } | ||||
|         p + p { | ||||
|           font-size: 40px; | ||||
|         } | ||||
|       } | ||||
|       ul + div { | ||||
|         color: #fca314; | ||||
|       } | ||||
|       > ul { | ||||
|         flex: 1; | ||||
|         display: flex; | ||||
|         flex-wrap: wrap; | ||||
|         justify-content: space-around; | ||||
|         padding: 0 20px; | ||||
|         box-sizing: border-box; | ||||
|         > li.man { | ||||
|           background: url(../../assets/img/intelligent/21.png) no-repeat; | ||||
|           background-size: contain; | ||||
|         } | ||||
|         > li { | ||||
|           width: 12%; | ||||
|           height: 33%; | ||||
|           box-sizing: border-box; | ||||
|           background: url(../../assets/img/intelligent/22.png) no-repeat; | ||||
|           background-size: contain; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .middle { | ||||
|     flex: 1; | ||||
|     margin: 0 100px; | ||||
|     display: flex; | ||||
|     .identity { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-wrap: wrap; | ||||
|       justify-content: space-around; | ||||
|       padding: 0 20px; | ||||
|       box-sizing: border-box; | ||||
|       > li { | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|         width: 18%; | ||||
|         height: 50%; | ||||
|         background: url(../../assets/img/intelligent/23.png) no-repeat; | ||||
|         background-size: contain; | ||||
|         position: relative; | ||||
|         text-align: center; | ||||
|         color: #5ad2ff; | ||||
|         div { | ||||
|           span { | ||||
|             font-size: 22px; | ||||
|             font-weight: 600; | ||||
|           } | ||||
|           &:nth-child(1) { | ||||
|             margin-top: 8px; | ||||
|           } | ||||
|         } | ||||
|         p { | ||||
|           width: 100%; | ||||
|           position: absolute; | ||||
|           top: 60%; | ||||
|           background: #1e4698; | ||||
|           border: 1px solid #60c1ff; | ||||
|           border-radius: 10px; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .right { | ||||
|     width: 30%; | ||||
|     li > ul { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       justify-content: space-around; | ||||
|       li { | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         span { | ||||
|           width: 50%; | ||||
|           text-align: right; | ||||
|         } | ||||
|         span:last-child { | ||||
|           width: 60px; | ||||
|         } | ||||
|         p { | ||||
|           flex: 1; | ||||
|           margin: 0 5px; | ||||
|           i { | ||||
|             transition: width 2s ease-out; | ||||
|             -moz-transition: width 2s ease-out; | ||||
|             -webkit-transition: width 2s ease-out; | ||||
|             -o-transition: width 2s ease-out; | ||||
|             display: inline-block; | ||||
|             height: 10px; | ||||
|             border-radius: 15px; | ||||
|             background-image: linear-gradient(to right, #36ecfe, #fde191); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     li:nth-child(2) > ul li p i { | ||||
|       background-image: linear-gradient(to right, #e05a30, #ff9c70); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,61 +1,91 @@ | ||||
| <!-- 智能办案专题 --> | ||||
| <template> | ||||
|   <div class="page"> | ||||
|     <Header :headerObj="{title: '智能办案专题(机密)',}"/> | ||||
|     <ul class="menu"> | ||||
|       <li v-for="(item,index) in menuList" @click="menuClick(item.path,index)" :class="menuIndex==index?'active':''" :key="index"> | ||||
|         <i :class="'iconfont '+ item.icon"></i> | ||||
|         {{item.name}} | ||||
|       </li> | ||||
|     </ul> | ||||
|     <router-view></router-view> | ||||
|   <div class="main"> | ||||
|     <!--    <userStatus />--> | ||||
|     <!-- <h1>首页</h1> --> | ||||
|     <!--    <img class="h1" src="../../assets/img/h1.png" />--> | ||||
|     <Header :headerObj="{title:'中科软养老大数据分析平台', index: '9'}"/> | ||||
|     <home></home> | ||||
|     <!--    <Nav />--> | ||||
|     <!--    <img class="b" src="../../assets/img/1.png" alt="" />--> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import Header from '@/components/header' | ||||
| import home from './home.vue' | ||||
| import userStatus from "@/components/userStatus"; | ||||
| import { Index } from "@/api/index"; | ||||
| 
 | ||||
| export default { | ||||
|   data: function() { | ||||
|   name: "index", | ||||
|   data: function () { | ||||
|     return { | ||||
|       menuIndex: 0, | ||||
|       menuList: [ | ||||
|         { name: '智能办案首页', icon: 'iconshouye', path: 'home' }, | ||||
|         { name: '法院', icon: 'iconfayuangongzuo', path: 'court'}, | ||||
|         { name: '检察院', icon: 'iconjianchayuangongzuo', path: 'procuratorate'}, | ||||
|         { name: '公安', icon: 'icongongangongzuo', path: '/intelligent/publicSecurity'}, | ||||
|         { name: '司法', icon: 'iconsifagongzuo', path: 'judicial'}, | ||||
|         { name: '涉案财物', icon: 'iconsheancaiwu', path: 'money'}, | ||||
|         { name: '减刑假释', icon: 'iconjianxing', path: 'commutation'}, | ||||
|         { name: '犯罪嫌疑人', icon: 'iconxianyiren', path: 'criminalSuspect'}, | ||||
|       ], | ||||
|     } | ||||
|       param: { | ||||
|         startYear: "", | ||||
|         endYear: "", | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
|   props: { | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.menuInit() | ||||
|   created() { | ||||
|     this.param = { | ||||
|       startYear: "", | ||||
|       endYear: "", | ||||
|     }; | ||||
|     // this.init(); | ||||
|   }, | ||||
|   components: { | ||||
|     Header, | ||||
|     home, | ||||
|     userStatus, | ||||
|   }, | ||||
|   methods: { | ||||
|     menuInit: function() { | ||||
|       var name = this.$route.name; | ||||
|       if(name == 'publicSecurityDetail1' || name == 'publicSecurityDetail2'){ | ||||
|         this.menuIndex = 1 | ||||
|       } | ||||
|       this.menuList.forEach((item,index)=>{ | ||||
|         item.path==name ? this.menuIndex = index : '' | ||||
|       }) | ||||
|     init() { | ||||
|       this.getData(); | ||||
|     }, | ||||
|     menuClick: function(path, index) { | ||||
|       if (path && path != this.$route.name) { | ||||
|         this.$router.push({ path: path }) | ||||
|         this.menuIndex = index; | ||||
|       } | ||||
|     getData() { | ||||
|       Index(this.param).then((res) => { | ||||
|         console.log(res); | ||||
|       }); | ||||
|     }, | ||||
|   }, | ||||
| } | ||||
| }; | ||||
| </script> | ||||
| <style scoped lang="less"> | ||||
| .main { | ||||
|   height: 100%; | ||||
|   background: url(../../assets/img/bigScreen/background.jpg) no-repeat; | ||||
|   background-size: 100% 100%; | ||||
|   /deep/ .modal, | ||||
|   /deep/ .el-icon-close { | ||||
|     display: none; | ||||
|   } | ||||
|   h1 { | ||||
|     font-size: 50px; | ||||
|     font-weight: 600; | ||||
|     padding-top: 50px; | ||||
|     text-align: center; | ||||
|     -webkit-line-clamp: 2; | ||||
|     background-image: -webkit-linear-gradient(bottom, #eefcff, #51dcfe); | ||||
|     -webkit-background-clip: text; | ||||
|     -webkit-text-fill-color: transparent; | ||||
|   } | ||||
|   .h1 { | ||||
|     position: absolute; | ||||
|     left: 50%; | ||||
|     margin-left: -509px; | ||||
|   } | ||||
|   //.b { | ||||
|   //  position: absolute; | ||||
|   //  bottom: 0; | ||||
|   //  width: 100%; | ||||
|   //  // animation:turn 10s linear infinite; | ||||
|   //} | ||||
|   @keyframes turn { | ||||
|     0% { | ||||
|       transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); | ||||
|     } | ||||
|     100% { | ||||
|       transform: rotateX(0deg) rotateY(180deg) rotateZ(0deg); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,698 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="menuSearch"> | ||||
|       <el-date-picker | ||||
|         v-model="date" | ||||
|         value-format="yyyy-MM" | ||||
|         @change="dateChange" | ||||
|         type="monthrange" | ||||
|         range-separator="至" | ||||
|         start-placeholder="开始月份" | ||||
|         end-placeholder="结束月份" | ||||
|         :picker-options="pickerOptions" | ||||
|         :default-value=" | ||||
|           new Date().getFullYear() - 1 + '-' + (new Date().getMonth() + 1) | ||||
|         " | ||||
|       > | ||||
|       </el-date-picker> | ||||
|       <el-button type="primary" round @click="search" | ||||
|         ><i class="iconfont iconchaxun"></i>查询</el-button | ||||
|       > | ||||
|     </div> | ||||
| 
 | ||||
|     <ul class="left"> | ||||
|       <li> | ||||
|         <p> | ||||
|           <span | ||||
|             >减刑<i class="digifaw">{{ | ||||
|               dataSet.commutationSentenceNum | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|           <span | ||||
|             >假释<i class="digifaw">{{ dataSet.parole | formatNum }}</i | ||||
|             >人</span | ||||
|           > | ||||
|         </p> | ||||
|         <p> | ||||
|           <span | ||||
|             >刑满释放<i class="digifaw">{{ | ||||
|               dataSet.releaseAfterSentence | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|         </p> | ||||
|         <p> | ||||
|           <span | ||||
|             >社区入矫<i class="digifaw">{{ | ||||
|               dataSet.communityCorrect | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|           <span | ||||
|             >解除<i class="digifaw">{{ | ||||
|               dataSet.communityCorrectRelieve | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|         </p> | ||||
|         <p> | ||||
|           <span | ||||
|             >收治强制戒毒<i class="digifaw">{{ | ||||
|               dataSet.forceDrugDetoxification | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|           <span | ||||
|             >解除<i class="digifaw">{{ | ||||
|               dataSet.forceDrugDetoxificationRelieve | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|         </p> | ||||
|         <p> | ||||
|           <span | ||||
|             >承办法律援助<i class="digifaw">{{ | ||||
|               dataSet.legalAid | formatNum | ||||
|             }}</i | ||||
|             >人</span | ||||
|           > | ||||
|         </p> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h3 class="title">减刑、假释占比分析</h3> | ||||
|         <Echarts :key="echartObjKey2" :echartObj="echartObj1"></Echarts> | ||||
|       </li> | ||||
|     </ul> | ||||
|     <ul class="middle"> | ||||
|       <li> | ||||
|         <h3 class="title">罪犯收押趋势分析</h3> | ||||
|         <Echarts :key="echartObjKey1" :echartObj="echartObj2"></Echarts> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h3 class="title">社区入矫、强制戒毒情况分析</h3> | ||||
|         <Echarts :key="echartObjKey3" :echartObj="echartObj3"></Echarts> | ||||
|       </li> | ||||
|     </ul> | ||||
|     <div class="right"> | ||||
|       <h3 class="title">北京各区法律援助数量</h3> | ||||
|       <ul> | ||||
|         <li> | ||||
|           <span>区</span> | ||||
|           <span>数量(件)</span> | ||||
|         </li> | ||||
|         <li v-for="(item, i) in data" :key="i"> | ||||
|           <span>{{ item.name }}</span> | ||||
|           <p><i :style="'width:' + item.width"></i></p> | ||||
|           <span>{{ item.value | formatNum }}</span> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Echarts from "@/components/echarts"; | ||||
| import { | ||||
|   judicialSummary, | ||||
|   datainingCriminalsTend, | ||||
|   commutationParoleRatio, | ||||
|   legalAidNum, | ||||
| } from "@/api/intelligentApi"; | ||||
| import {createOperationLog} from "@/api/api" | ||||
| export default { | ||||
|   data() { | ||||
|     return { | ||||
|       echartObjKey1: "echartObjKey1", | ||||
|       echartObjKey2: "echartObjKey2", | ||||
|       echartObjKey3: "echartObjKey3", | ||||
|       pickerOptions: { | ||||
|         disabledDate(time) { | ||||
|           return time.getTime() > Date.now() - 8.64e6; | ||||
|         }, | ||||
|       }, | ||||
| 
 | ||||
|       param: { | ||||
|         startYear: "", | ||||
|         endYear: "", | ||||
|       }, | ||||
|       // 司法汇总数据 | ||||
|       dataSet: {}, | ||||
|       date: "", | ||||
|       data: [], | ||||
|       // 减刑、假释占比分析 | ||||
|       echartObj1: { | ||||
|         color: [ | ||||
|           "#ff7723", | ||||
|           "#29b584", | ||||
|           "#AF7DF3", | ||||
|           "#8fdd20", | ||||
|           "#DC8AB5", | ||||
|           "#35e0e3", | ||||
|           "#ffd200", | ||||
|         ], //图例颜色 | ||||
|         legend: { | ||||
|           right: 0, | ||||
|           orient: "vertical", | ||||
|           top: 0, | ||||
|           icon: "circle", | ||||
|           itemWidth: 20, //图例的宽度 | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
| 
 | ||||
|           formatter: (param) => { | ||||
|               return ( | ||||
|                 param.seriesName + | ||||
|                 "<br>" + | ||||
|                 param.name + | ||||
|                 ":" + | ||||
|                 this.formatNum(param.value) + | ||||
|                 "人" + | ||||
|                 "(" + | ||||
|                 param.percent + | ||||
|                 "%)" | ||||
|               ); | ||||
|           }, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             name: "减刑、假释占比分析", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["30%", "70%"], | ||||
|             center: ["50%", "50%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             data: [], | ||||
|             label: { | ||||
|               //饼图图形上的文本标签 | ||||
|               normal: { | ||||
|                 show: true, | ||||
|                 position: "inner", //标签的位置 | ||||
|                 color: "#fff", | ||||
|                 formatter: "{d}%", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "减刑、假释占比分析", | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["30%", "70%"], | ||||
|             center: ["50%", "50%"], | ||||
|             avoidLabelOverlap: true, | ||||
|             data: [], | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   fontSize: 16, | ||||
|                   formatter: (param) => { | ||||
|                       return ( | ||||
|                         param.name + | ||||
|                         ":" + | ||||
|                         this.formatNum(param.value) + | ||||
|                         "人" | ||||
|                       ); | ||||
|                   }, | ||||
|                 }, | ||||
|                 labelLine: { show: true }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             // 边框的设置 | ||||
|             radius: ["30%", "40%"], | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             animation: false, | ||||
|             tooltip: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 itemStyle: { | ||||
|                   color: "rgba(0,0,0,0.2)", | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 罪犯收押趋势 | ||||
|       echartObj2: { | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|         }, | ||||
|         legend: { | ||||
|           top: 0, | ||||
|           right: "20", | ||||
|           icon: "circle", | ||||
|           itemWidth: 20, //图例的宽度 | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         grid: { | ||||
|           top: "30", | ||||
|           left: "3%", | ||||
|           right: "4%", | ||||
|           bottom: "3%", | ||||
|           containLabel: true, | ||||
|         }, | ||||
|         xAxis: [ | ||||
|           { | ||||
|             type: "category", | ||||
|             boundaryGap: true, | ||||
|             data: [], | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               interval: 0, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         yAxis: [ | ||||
|           { | ||||
|             name: "单位(人)", | ||||
|             type: "value", | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: true, | ||||
|               lineStyle: { | ||||
|                 color: "#355184", | ||||
|                 width: 1, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "数量", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             smooth: true, | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             lineStyle: { | ||||
|               normal: { | ||||
|                 width: 3, | ||||
|               }, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|                 color: "#3aebd5", //折点颜色 | ||||
|                 lineStyle: { | ||||
|                   color: "#3aebd5", //折线颜色 | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|             symbol: "circle", //折线拐点实心圆 | ||||
|             symbolSize: 10, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             name: "同比", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             stack: "总量", | ||||
|             smooth: true, | ||||
|             data: [], | ||||
|             symbol: "circle", //折线拐点实心圆 | ||||
|             symbolSize: 10, | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             lineStyle: { | ||||
|               normal: { | ||||
|                 width: 3, | ||||
|               }, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|                 color: "#f19634", //折点颜色 | ||||
|                 lineStyle: { | ||||
|                   color: "#f19634", //折线颜色 | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 社区入矫、强制戒毒情况分析 | ||||
|       echartObj3: { | ||||
|         color: ["#1179ff", "#f3a858", "#20f292"], //图例颜色 | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|           position: "inside", | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", | ||||
|           top: "10", | ||||
|           right: "20", | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         grid: { | ||||
|           top: "40", | ||||
|           left: "20", | ||||
|           right: "40", | ||||
|           bottom: "10", | ||||
|           containLabel: true, | ||||
|         }, | ||||
|         xAxis: [ | ||||
|           { | ||||
|             // name: '区域', | ||||
|             type: "category", | ||||
|             boundaryGap: true, | ||||
|             data: ["社区入矫", "解除", "强制戒毒", "解除"], | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               // | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|               interval: 0, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         yAxis: [ | ||||
|           { | ||||
|             name: "单位(人)", | ||||
|             type: "value", | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: true, | ||||
|               lineStyle: { | ||||
|                 color: "#355184", | ||||
|                 width: 1, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             type: "bar", | ||||
|             animationDuration: 2000, | ||||
|             barMaxWidth: "20", | ||||
|             data: [], | ||||
|             label: { | ||||
|               show: true, | ||||
|               formatter: (p) => { | ||||
|                 //千分位 | ||||
|                 return this.formatNum(p.value); | ||||
|               }, | ||||
|             }, | ||||
|             showBackground: true, //柱图显示背景色 | ||||
|             // itemStyle: { | ||||
|             //   normal: { | ||||
|             //     barBorderRadius: [5,5,0,0] | ||||
|             //   } | ||||
|             // } | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
|   components: { | ||||
|     Echarts, | ||||
|   }, | ||||
|   created() { | ||||
|     this.param = { | ||||
|       startYear: "", | ||||
|       endYear: "", | ||||
|     }; | ||||
|     this.getData(); | ||||
|   }, | ||||
|   methods: { | ||||
|     search() { | ||||
|       this.getData(); | ||||
|     }, | ||||
|     getData() { | ||||
|       let pointParams ={ | ||||
|         opeLogExceptionInfo: '进入智能办案专题模块查询了司法数据',//日志描述 | ||||
|         opeLogUserAccount:this.$cookies.get('username'),//用户账户 | ||||
|         opeLogSystem:"BJCM-DSJ",//系统编码 | ||||
|         opeLogStatus: 1, | ||||
|         opeLogIp:"" | ||||
|       } | ||||
|       createOperationLog(pointParams).then(res=>{ | ||||
|         console.log(res) | ||||
|       }) | ||||
|       // 司法汇总数据 | ||||
|       judicialSummary(this.param) | ||||
|         .then((res) => { | ||||
|           this.dataSet = res; | ||||
|           // 社区入矫、强制戒毒情况分析 | ||||
|           this.echartObj3.series[0].data = [ | ||||
|             res.communityCorrect, | ||||
|             res.communityCorrectRelieve, | ||||
|             res.forceDrugDetoxification, | ||||
|             res.forceDrugDetoxificationRelieve, | ||||
|           ]; | ||||
|           this.echartObjKey3 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 罪犯收押趋势 | ||||
|       datainingCriminalsTend(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj2.xAxis[0].data = []; | ||||
|           this.echartObj2.series[0].data = []; // 数量 | ||||
|           this.echartObj2.series[1].data = []; // 同比 | ||||
|           res.datainingCriminalsTendList.forEach((item) => { | ||||
|             this.echartObj2.xAxis[0].data.push(item["TYPE"]); | ||||
|             this.echartObj2.series[0].data.push( | ||||
|               item["DATAINING_CRIMINALS_NUM"] | ||||
|             ); | ||||
|             this.echartObj2.series[1].data.push( | ||||
|               item["DATAINING_CRIMINALS_SANME_PERIOD"] | ||||
|             ); | ||||
|           }); | ||||
|           this.echartObjKey1 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // -减刑、假释占比分析 | ||||
|       commutationParoleRatio(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj1.series[0].data = []; | ||||
|           this.echartObj1.series[1].data = []; | ||||
|           if (JSON.stringify(res) != "{}" && res) { | ||||
|             this.echartObj1.series[0].data = [ | ||||
|               { value: res["DATAINING_CRIMINALS_NUM"], name: "收押犯罪" }, | ||||
|               { value: res["COMMUTATION_SENTENCE_NUM"], name: "减刑" }, | ||||
|               { value: res["PAROLE"], name: "假释" }, | ||||
|             ]; | ||||
|             this.echartObj1.series[1].data = [ | ||||
|               { value: res["DATAINING_CRIMINALS_NUM"], name: "收押犯罪" }, | ||||
|               { value: res["COMMUTATION_SENTENCE_NUM"], name: "减刑" }, | ||||
|               { value: res["PAROLE"], name: "假释" }, | ||||
|             ]; | ||||
|           } | ||||
|           this.echartObjKey2 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
| 
 | ||||
|       // 北京各区法律援助数量 | ||||
|       legalAidNum(this.param) | ||||
|         .then((res) => { | ||||
|           let data = [], | ||||
|             max = 0; | ||||
|           if (res.legalAidNumList.length) { | ||||
|             max = this.getMax([...res.legalAidNumList]); | ||||
|           } | ||||
|           res.listclass.forEach((item, index) => { | ||||
|             data[index] = { | ||||
|               name: item, | ||||
|               value: 0, | ||||
|               width: "0%", | ||||
|             }; | ||||
|             if (res.legalAidNumList.length > 0) { | ||||
|               res.legalAidNumList.forEach((i) => { | ||||
|                 if (item == i["AREA_NAME"]) { | ||||
|                   data[index].value = i["LEGAL_AID_NUM"]; | ||||
|                   data[index].width = | ||||
|                     ((i["LEGAL_AID_NUM"] / max) * 100).toFixed(2) + "%"; | ||||
|                 } | ||||
|               }); | ||||
|             } | ||||
|           }); | ||||
|           this.data = data; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|     }, | ||||
|     //  获取X轴最大值 | ||||
|     getMax(arr) { | ||||
|       arr.sort(function (a, b) { | ||||
|         return a["LEGAL_AID_NUM"] - b["LEGAL_AID_NUM"]; | ||||
|       }); | ||||
|       let max = arr[arr.length - 1]["LEGAL_AID_NUM"]; // 计算最大值 | ||||
|       let num = Math.floor(max / 10) * 10 + 10; // 获取X轴最大值 | ||||
|       return num; | ||||
|     }, | ||||
|     // 时间选择器 | ||||
|     dateChange(val) { | ||||
|       if (val) { | ||||
|         this.param.startYear = val[0]; | ||||
|         this.param.endYear = val[1]; | ||||
|       } else { | ||||
|         this.param.startYear = ""; | ||||
|         this.param.endYear = ""; | ||||
|       } | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="less" scoped> | ||||
| .main { | ||||
|   padding: 20px 30px; | ||||
|   display: flex; | ||||
|   padding: 20px 50px; | ||||
|   .left, | ||||
|   .middle { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     & > li { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       padding-bottom: 50px; | ||||
|     } | ||||
|   } | ||||
|   .left { | ||||
|     width: 30%; | ||||
|     li:nth-child(1) { | ||||
|       justify-content: space-around; | ||||
|       p { | ||||
|         background: url(../../assets/img/intelligent/15.png) no-repeat center; | ||||
|         text-align: center; | ||||
|         background-size: contain; | ||||
|         min-height: 36px; | ||||
|         span + span { | ||||
|           margin-left: 20px; | ||||
|         } | ||||
|         .digifaw { | ||||
|           font-size: 22px; | ||||
|           color: #08d778; | ||||
|           margin-left: 5px; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .middle { | ||||
|     flex: 1; | ||||
|     margin: 0 100px; | ||||
|   } | ||||
|   .right { | ||||
|     width: 20%; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     ul { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       justify-content: space-around; | ||||
|       li { | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         span { | ||||
|           min-width: 60px; | ||||
|         } | ||||
|         span:last-child { | ||||
|           text-align: right; | ||||
|         } | ||||
|         p { | ||||
|           flex: 1; | ||||
|           i { | ||||
|             transition: width 2s ease-out; | ||||
|             -moz-transition: width 2s ease-out; | ||||
|             -webkit-transition: width 2s ease-out; | ||||
|             -o-transition: width 2s ease-out; | ||||
|             display: inline-block; | ||||
|             height: 10px; | ||||
|             border-radius: 15px; | ||||
|             background-image: linear-gradient(to right, #36ecfe, #fde191); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   h3.title { | ||||
|     font-size: 20px; | ||||
|     line-height: 40px; | ||||
|     color: #43ebf6; | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,999 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="menuSearch"> | ||||
|       <el-date-picker | ||||
|         v-model="date" | ||||
|         value-format="yyyy-MM" | ||||
|         @change="dateChange" | ||||
|         type="monthrange" | ||||
|         range-separator="至" | ||||
|         start-placeholder="开始月份" | ||||
|         end-placeholder="结束月份" | ||||
|         :picker-options="pickerOptions" | ||||
|         :default-value=" | ||||
|           new Date().getFullYear() - 1 + '-' + (new Date().getMonth() + 1) | ||||
|         " | ||||
|       > | ||||
|       </el-date-picker> | ||||
|       <el-button type="primary" @click="search" round | ||||
|         ><i class="iconfont iconchaxun"></i>查询</el-button | ||||
|       > | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="left"> | ||||
|       <div class="t"> | ||||
|         <h2>审查逮捕</h2> | ||||
|         <ul> | ||||
|           <li> | ||||
|             <div> | ||||
|               <p><img src="../../assets/img/intelligent/1.png" /></p> | ||||
|               <p>批准逮捕</p> | ||||
|             </div> | ||||
|             <div> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #5ad2ff">{{ | ||||
|                   approvalArrestPersonCase["REQUESTARRESTCASENUM2"] | formatNum | ||||
|                 }}</span | ||||
|                 >件 | ||||
|               </p> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #5bd87b">{{ | ||||
|                   approvalArrestPersonCase["APPROVALARRESTPERSON"] | formatNum | ||||
|                 }}</span | ||||
|                 >人 | ||||
|               </p> | ||||
|             </div> | ||||
|           </li> | ||||
|           <li> | ||||
|             <div> | ||||
|               <p><img src="../../assets/img/intelligent/2.png" /></p> | ||||
|               <p>不捕</p> | ||||
|             </div> | ||||
|             <div> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #ff9d47">{{ | ||||
|                   approvalArrestPersonCase["UNAPPROVALARRESTCASE"] | formatNum | ||||
|                 }}</span | ||||
|                 >件 | ||||
|               </p> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #dc8ab5">{{ | ||||
|                   approvalArrestPersonCase["UNAPPROVALARRESTPERSON"] | formatNum | ||||
|                 }}</span | ||||
|                 >人 | ||||
|               </p> | ||||
|             </div> | ||||
|           </li> | ||||
|           <li> | ||||
|             <div> | ||||
|               <p><img src="../../assets/img/intelligent/3.png" /></p> | ||||
|               <p>监督</p> | ||||
|             </div> | ||||
|             <div> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #5ad2ff">{{ | ||||
|                   approvalArrestPersonCase["PROCURATORATESUPERVISE"] | formatNum | ||||
|                 }}</span | ||||
|                 >件次 | ||||
|               </p> | ||||
|             </div> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </div> | ||||
|       <ul> | ||||
|         <li> | ||||
|           <p class="echart_title"> | ||||
|             不捕数量趋势分析 | ||||
|             <!-- <span class="detail">查看></span> --> | ||||
|           </p> | ||||
|           <Echarts :key="echartObjKey1" :echartObj="echartObj1"></Echarts> | ||||
|         </li> | ||||
|         <li> | ||||
|           <p class="echart_title">不捕原因分析</p> | ||||
|           <Echarts :key="echartObjKey3" :echartObj="echartObj2"></Echarts> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|     <div class="middle"> | ||||
|       <div class="t"> | ||||
|         <h2>审查起诉</h2> | ||||
|         <ul> | ||||
|           <li> | ||||
|             <div> | ||||
|               <p><img src="../../assets/img/intelligent/4.png" /></p> | ||||
|               <p>起诉</p> | ||||
|             </div> | ||||
|             <div> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #da9bff">{{ | ||||
|                   prosecutionPersonCase["PROSECUTIONCASE"] | formatNum | ||||
|                 }}</span | ||||
|                 >件 | ||||
|               </p> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #7e7fe4">{{ | ||||
|                   prosecutionPersonCase["PROSECUTIONPERSON"] | formatNum | ||||
|                 }}</span | ||||
|                 >人 | ||||
|               </p> | ||||
|             </div> | ||||
|           </li> | ||||
|           <li> | ||||
|             <div> | ||||
|               <p><img src="../../assets/img/intelligent/5.png" /></p> | ||||
|               <p>未起诉</p> | ||||
|             </div> | ||||
|             <div> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #60bdff">{{ | ||||
|                   prosecutionPersonCase["UNROSECUTIONCASE"] | formatNum | ||||
|                 }}</span | ||||
|                 >件 | ||||
|               </p> | ||||
|               <p> | ||||
|                 <span class="digifaw" style="color: #559ae7">{{ | ||||
|                   prosecutionPersonCase["UNPROSECUTIONPSERSON"] | formatNum | ||||
|                 }}</span | ||||
|                 >人 | ||||
|               </p> | ||||
|             </div> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </div> | ||||
|       <ul> | ||||
|         <li> | ||||
|           <p class="echart_title"> | ||||
|             不起诉案件趋势分析 | ||||
|             <!-- <span class="detail">查看></span> --> | ||||
|           </p> | ||||
|           <Echarts :key="echartObjKey2" :echartObj="echartObj3"></Echarts> | ||||
|         </li> | ||||
|         <li> | ||||
|           <p class="echart_title">不起诉原因分析</p> | ||||
|           <Echarts :key="echartObjKey4" :echartObj="echartObj4"></Echarts> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|     <div class="right"> | ||||
|       <h2 class="title">各区审查逮捕、审查起诉数量(件)</h2> | ||||
|       <ul> | ||||
|         <li> | ||||
|           <div>起诉/不起诉(件)</div> | ||||
|           <div>区</div> | ||||
|           <div>逮捕/不捕数量(件)</div> | ||||
|         </li> | ||||
|         <li v-for="(item, index) in data" :key="index"> | ||||
|           <div> | ||||
|             <span>{{ item["PROSECUTIONNUM"] | formatNum }}</span | ||||
|             >/{{ item["UNPROSECUTIONRNUM"] | formatNum }} | ||||
|           </div> | ||||
|           <div class="line1"> | ||||
|             <p :style="'width:' + item.width1"> | ||||
|               <i :style="'width:' + item.subWidth3"></i> | ||||
|               <i :style="'width:' + item.subWidth4"></i> | ||||
|             </p> | ||||
|           </div> | ||||
|           <div style="width:6em; text-align: center">{{ item.name }}</div> | ||||
|           <div class="line2"> | ||||
|             <p :style="'width:' + item.width"> | ||||
|               <i :style="'width:' + item.subWidth"></i> | ||||
|               <i :style="'width:' + item.subWidth2"></i> | ||||
|             </p> | ||||
|           </div> | ||||
|           <div> | ||||
|             <span>{{ item["ARRESTNUM"] | formatNum }}</span | ||||
|             >/{{ item["ARRESTNUM2"] | formatNum }} | ||||
|           </div> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Echarts from "@/components/echarts"; | ||||
| import { | ||||
|   approvalArrestPersonCase, | ||||
|   procuratorateArrestProsecutionNum, | ||||
|   procuratorateUnArrestReason, | ||||
|   procuratorateUnProsecutionReason, | ||||
|   prosecutionPersonCase, | ||||
|   unApprovalArrestPerson, | ||||
|   unProsecutionPserson, | ||||
| } from "@/api/intelligentApi"; | ||||
| import {createOperationLog} from "@/api/api" | ||||
| export default { | ||||
|   data() { | ||||
|     return { | ||||
|       echartObjKey1: "echartObjKey1", | ||||
|       echartObjKey2: "echartObjKey2", | ||||
|       echartObjKey3: "echartObjKey3", | ||||
|       echartObjKey4: "echartObjKey4", | ||||
|       pickerOptions: { | ||||
|         disabledDate(time) { | ||||
|           return time.getTime() > Date.now() - 8.64e6; | ||||
|         }, | ||||
|       }, | ||||
| 
 | ||||
|       param: { | ||||
|         startYear: "", | ||||
|         endYear: "", | ||||
|       }, | ||||
|       date: "", | ||||
|       // 审查逮捕 | ||||
|       approvalArrestPersonCase: {}, | ||||
|       // 审查起诉 | ||||
|       prosecutionPersonCase: {}, | ||||
|       // 各区审查逮捕、审查起诉数量 | ||||
|       data: [], | ||||
|       // 不捕量趋势分析 | ||||
|       echartObj1: { | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|         }, | ||||
|         legend: { | ||||
|           top: "0", | ||||
|           right: "20", | ||||
|           icon: "circle", | ||||
|           itemWidth: 20, //图例的宽度 | ||||
|           textStyle: { | ||||
|             color: "#ffffff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         grid: { | ||||
|           top: "40", | ||||
|           left: "3%", | ||||
|           right: "4%", | ||||
|           bottom: "3%", | ||||
|           containLabel: true, | ||||
|         }, | ||||
|         xAxis: [ | ||||
|           { | ||||
|             type: "category", | ||||
|             boundaryGap: true, | ||||
|             data: [], | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               rotate: 50, | ||||
|               interval: 0, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         yAxis: [ | ||||
|           { | ||||
|             name: "单位(件)", | ||||
|             type: "value", | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: true, | ||||
|               lineStyle: { | ||||
|                 color: "#355184", | ||||
|                 width: 1, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "当月数量", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             smooth: true, | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             lineStyle: { | ||||
|               normal: { | ||||
|                 width: 3, | ||||
|               }, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|                 color: "#3aebd5", //折点颜色 | ||||
|                 lineStyle: { | ||||
|                   color: "#3aebd5", //折线颜色 | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|             symbol: "circle", //折线拐点实心圆 | ||||
|             symbolSize: 10, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             name: "同比数量", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             stack: "总量", | ||||
|             smooth: true, | ||||
|             data: [], | ||||
|             symbol: "circle", //折线拐点实心圆 | ||||
|             symbolSize: 10, | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             lineStyle: { | ||||
|               normal: { | ||||
|                 width: 3, | ||||
|               }, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|                 color: "#f19634", //折点颜色 | ||||
|                 lineStyle: { | ||||
|                   color: "#f19634", //折线颜色 | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 不捕原因分析 | ||||
|       echartObj2: { | ||||
|         color: ["#20f292"], //图例颜色 | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|         }, | ||||
|         radar: [ | ||||
|           { | ||||
|             radius: "70%", | ||||
|             indicator: [{ text: "", max: 0 }], | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "不捕原因分析", | ||||
|             type: "radar", | ||||
|             animationDuration: 2000, | ||||
|             tooltip: { | ||||
|               trigger: "item", | ||||
|             }, | ||||
|             areaStyle: {}, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: [], | ||||
|               }, | ||||
|             ], | ||||
|             label: { | ||||
|               show: true, | ||||
|               position: "inside", | ||||
|               color: "#fff", | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value) + "件"; | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 不起诉案件趋势分析 | ||||
|       echartObj3: { | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|         }, | ||||
|         legend: { | ||||
|           top: "0", | ||||
|           right: "20", | ||||
|           icon: "circle", | ||||
|           itemWidth: 20, //图例的宽度 | ||||
|           textStyle: { | ||||
|             color: "#ffffff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         grid: { | ||||
|           top: "40", | ||||
|           left: "3%", | ||||
|           right: "4%", | ||||
|           bottom: "3%", | ||||
|           containLabel: true, | ||||
|         }, | ||||
|         xAxis: [ | ||||
|           { | ||||
|             type: "category", | ||||
|             boundaryGap: true, | ||||
|             data: [], | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               rotate: 50, | ||||
|               interval: 0, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         yAxis: [ | ||||
|           { | ||||
|             name: "单位(件)", | ||||
|             type: "value", | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: true, | ||||
|               lineStyle: { | ||||
|                 color: "#355184", | ||||
|                 width: 1, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "当月数量", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             smooth: true, | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             lineStyle: { | ||||
|               normal: { | ||||
|                 width: 3, | ||||
|               }, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|                 color: "#3aebd5", //折点颜色 | ||||
|                 lineStyle: { | ||||
|                   color: "#3aebd5", //折线颜色 | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|             symbol: "circle", //折线拐点实心圆 | ||||
|             symbolSize: 10, | ||||
|             data: [], | ||||
|           }, | ||||
|           { | ||||
|             name: "同比数量", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             stack: "总量", | ||||
|             smooth: true, | ||||
|             data: [], | ||||
|             symbol: "circle", //折线拐点实心圆 | ||||
|             symbolSize: 10, | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             lineStyle: { | ||||
|               normal: { | ||||
|                 width: 3, | ||||
|               }, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|                 color: "#f19634", //折点颜色 | ||||
|                 lineStyle: { | ||||
|                   color: "#f19634", //折线颜色 | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 不起诉原因分析 | ||||
|       echartObj4: { | ||||
|         color: ["#20f292"], //图例颜色 | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|         }, | ||||
|         radar: [ | ||||
|           { | ||||
|             radius: "70%", | ||||
|             indicator: [{ text: "", max: 0 }], | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "不起诉原因分析", | ||||
|             type: "radar", | ||||
|             animationDuration: 2000, | ||||
|             tooltip: { | ||||
|               trigger: "item", | ||||
|             }, | ||||
|             areaStyle: {}, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: [], | ||||
|               }, | ||||
|             ], | ||||
|             label: { | ||||
|               show: true, | ||||
|               position: "inside", | ||||
|               color: "#fff", | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value) + "件"; | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
|   created() { | ||||
|     this.param = { | ||||
|       startYear: "", | ||||
|       endYear: "", | ||||
|     }; | ||||
|     this.getData(); | ||||
|   }, | ||||
|   components: { | ||||
|     Echarts, | ||||
|   }, | ||||
|   methods: { | ||||
|     search() { | ||||
|       this.getData(); | ||||
|     }, | ||||
|     getData() { | ||||
|       let pointParams ={ | ||||
|         opeLogExceptionInfo: '进入智能办案专题模块查询了检察院数据',//日志描述 | ||||
|         opeLogUserAccount:this.$cookies.get('username'),//用户账户 | ||||
|         opeLogSystem:"BJCM-DSJ",//系统编码 | ||||
|         opeLogStatus: 1, | ||||
|         opeLogIp:"" | ||||
|       } | ||||
|       createOperationLog(pointParams).then(res=>{ | ||||
|         console.log(res) | ||||
|       }) | ||||
|       // 审查逮捕 | ||||
|       approvalArrestPersonCase(this.param) | ||||
|         .then((res) => { | ||||
|           this.approvalArrestPersonCase = { | ||||
|             REQUESTARRESTCASENUM2: 0, | ||||
|             APPROVALARRESTPERSON: 0, | ||||
|             UNAPPROVALARRESTCASE: 0, | ||||
|             UNAPPROVALARRESTPERSON: 0, | ||||
|             PROCURATORATESUPERVISE: 0, | ||||
|           }; | ||||
|           if ( | ||||
|             JSON.stringify(res.approvalArrestPersonCase) != "{}" && | ||||
|             res.approvalArrestPersonCase | ||||
|           ) { | ||||
|             this.approvalArrestPersonCase = res.approvalArrestPersonCase; | ||||
|           } | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 各区审查逮捕、审查起诉数量 | ||||
|       procuratorateArrestProsecutionNum(this.param) | ||||
|         .then((res) => { | ||||
|           let data = []; | ||||
|           res.listclass.forEach((item, index) => { | ||||
|             data[index] = { | ||||
|               name: item, | ||||
|               ARRESTNUM: 0, | ||||
|               ARRESTNUM2: 0, | ||||
|               PROSECUTIONNUM: 0, | ||||
|               UNPROSECUTIONRNUM: 0, | ||||
|               width: "0%", | ||||
|               width1: "0%", | ||||
|               subWidth: "0%", | ||||
|               subWidth2: "0%", | ||||
|               subWidth3: "0%", | ||||
|               subWidth4: "0%", | ||||
|             }; | ||||
|             if (res.procuratorateArrestProsecutionNum.length > 0) { | ||||
|               res.procuratorateArrestProsecutionNum.forEach((i) => { | ||||
|                 if (item == i["AREACODENAME"]) { | ||||
|                   data[index]["ARRESTNUM"] = i["ARRESTNUM"]; //逮捕 | ||||
|                   data[index]["ARRESTNUM2"] = i["ARRESTNUM2"]; //不捕 | ||||
|                   data[index]["PROSECUTIONNUM"] = i["PROSECUTIONNUM"]; // 起诉 | ||||
|                   data[index]["UNPROSECUTIONRNUM"] = i["UNPROSECUTIONRNUM"]; //不起诉 | ||||
|                 } | ||||
|               }); | ||||
|             } | ||||
|           }); | ||||
|           let arr = [], | ||||
|             arr1 = []; | ||||
|           data.forEach((item) => { | ||||
|             arr.push(item["ARRESTNUM"] + item["ARRESTNUM2"]); | ||||
|             arr1.push(item["PROSECUTIONNUM"] + item["UNPROSECUTIONRNUM"]); | ||||
|           }); | ||||
|           let max = this.getMax([...arr]); | ||||
|           let max1 = this.getMax([...arr1]); | ||||
|           data.forEach((item) => { | ||||
|             if (max) { | ||||
|               item.width = | ||||
|                 ( | ||||
|                   ((item["ARRESTNUM"] + item["ARRESTNUM2"]) / max) * | ||||
|                   100 | ||||
|                 ).toFixed(2) + "%"; | ||||
|             } | ||||
|             if (max1) { | ||||
|               item.width1 = | ||||
|                 ( | ||||
|                   ((item["PROSECUTIONNUM"] + item["UNPROSECUTIONRNUM"]) / | ||||
|                     max1) * | ||||
|                   100 | ||||
|                 ).toFixed(2) + "%"; | ||||
|             } | ||||
| 
 | ||||
|             item.subWidth = | ||||
|               ( | ||||
|                 (item["ARRESTNUM"] / (item["ARRESTNUM"] + item["ARRESTNUM2"])) * | ||||
|                 100 | ||||
|               ).toFixed(2) + "%"; | ||||
|             item.subWidth2 = | ||||
|               ( | ||||
|                 (item["ARRESTNUM2"] / | ||||
|                   (item["ARRESTNUM"] + item["ARRESTNUM2"])) * | ||||
|                 100 | ||||
|               ).toFixed(2) + "%"; | ||||
|             item.subWidth3 = | ||||
|               ( | ||||
|                 (item["PROSECUTIONNUM"] / | ||||
|                   (item["PROSECUTIONNUM"] + item["UNPROSECUTIONRNUM"])) * | ||||
|                 100 | ||||
|               ).toFixed(2) + "%"; | ||||
|             item.subWidth4 = | ||||
|               ( | ||||
|                 (item["UNPROSECUTIONRNUM"] / | ||||
|                   (item["PROSECUTIONNUM"] + item["UNPROSECUTIONRNUM"])) * | ||||
|                 100 | ||||
|               ).toFixed(2) + "%"; | ||||
|           }); | ||||
|           this.data = data; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 不捕原因分析 | ||||
|       procuratorateUnArrestReason(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj2.radar[0].indicator = [{ text: "暂无数据", max: 0 }]; | ||||
|           this.echartObj2.series[0].data[0].value = [0]; | ||||
|           if (res.procuratorateUnArrestReason.length > 0) { | ||||
|             let arr = []; | ||||
|             res.procuratorateUnArrestReason.forEach((item) => { | ||||
|               arr.push(item["NUM"]); | ||||
|             }); | ||||
|             let max = this.getMax([...arr]); | ||||
|             this.echartObj2.radar[0].indicator = res.procuratorateUnArrestReason.map( | ||||
|               (item) => { | ||||
|                 return { text: item["UNARRESTREASONNAME"], max: max }; | ||||
|               } | ||||
|             ); | ||||
|             this.echartObj2.series[0].data[0].value = arr; | ||||
|           } | ||||
|           this.echartObjKey3 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 不起诉原因分析 | ||||
|       procuratorateUnProsecutionReason(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj4.radar[0].indicator = [{ text: "暂无数据", max: 0 }]; | ||||
|           this.echartObj4.series[0].data[0].value = [0]; | ||||
|           if (res.procuratorateUnProsecutionReason.length > 0) { | ||||
|             let arr = []; | ||||
|             res.procuratorateUnProsecutionReason.forEach((item) => { | ||||
|               arr.push(item["NUM"]); | ||||
|             }); | ||||
|             let max = this.getMax([...arr]); | ||||
|             this.echartObj4.radar[0].indicator = res.procuratorateUnProsecutionReason.map( | ||||
|               (item) => { | ||||
|                 return { text: item["UNPROSECUTIONREASONNAME"], max: max }; | ||||
|               } | ||||
|             ); | ||||
|             this.echartObj4.series[0].data[0].value = arr; | ||||
|           } | ||||
|           this.echartObjKey4 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 审查起诉 | ||||
|       prosecutionPersonCase(this.param) | ||||
|         .then((res) => { | ||||
|           this.prosecutionPersonCase = { | ||||
|             PROSECUTIONCASE: 0, | ||||
|             PROSECUTIONPERSON: 0, | ||||
|             UNROSECUTIONCASE: 0, | ||||
|             UNPROSECUTIONPSERSON: 0, | ||||
|           }; | ||||
|           if ( | ||||
|             JSON.stringify(res.prosecutionPersonCase) != "{}" && | ||||
|             res.prosecutionPersonCase | ||||
|           ) { | ||||
|             this.prosecutionPersonCase = res.prosecutionPersonCase; | ||||
|           } | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 不捕量趋势分析 | ||||
|       unApprovalArrestPerson(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj1.xAxis[0].data = []; | ||||
|           this.echartObj1.series[0].data = []; | ||||
|           this.echartObj1.series[1].data = []; | ||||
|           res.unApprovalArrestPerson.forEach((item) => { | ||||
|             this.echartObj1.xAxis[0].data.push(item["YEARMONTH"]); | ||||
|             this.echartObj1.series[0].data.push(item["UNAPPROVALARRESTPERSON"]); // 数量 | ||||
|             this.echartObj1.series[1].data.push( | ||||
|               item["COLUMN1UNAPPROVALARRESTCASESAMEPERIOD"] | ||||
|             ); //同比 | ||||
|           }); | ||||
|           this.echartObjKey1 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 不起诉案件趋势分析 | ||||
|       unProsecutionPserson(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj3.xAxis[0].data = []; | ||||
|           this.echartObj3.series[0].data = []; | ||||
|           this.echartObj3.series[1].data = []; | ||||
|           res.unProsecutionPserson.forEach((item) => { | ||||
|             this.echartObj3.xAxis[0].data.push(item["YEARMONTH"]); | ||||
|             this.echartObj3.series[0].data.push(item["UNPROSECUTIONPSERSON"]); // 数量 | ||||
|             this.echartObj3.series[1].data.push( | ||||
|               item["UNPROSECUTIONPSERSONSAMEPERIOD"] | ||||
|             ); //同比 | ||||
|           }); | ||||
|           this.echartObjKey2 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|     }, | ||||
|     // 时间选择器 | ||||
|     dateChange(val) { | ||||
|       if (val) { | ||||
|         this.param.startYear = val[0]; | ||||
|         this.param.endYear = val[1]; | ||||
|       } else { | ||||
|         this.param.startYear = ""; | ||||
|         this.param.endYear = ""; | ||||
|       } | ||||
|     }, | ||||
|     //  获取X轴最大值 | ||||
|     getMax(arr) { | ||||
|       arr.sort(function (a, b) { | ||||
|         return a - b; | ||||
|       }); | ||||
|       let max = arr[arr.length - 1]; // 计算最大值 | ||||
|       let num = Math.floor(max / 10) * 10 + 10; // 获取X轴最大值 | ||||
|       return num; | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="less" scoped> | ||||
| .main { | ||||
|   padding: 20px 30px; | ||||
|   display: flex; | ||||
|   padding: 20px 50px; | ||||
|   h2 { | ||||
|     font-size: 26px; | ||||
|     color: #43ebf7; | ||||
|   } | ||||
|   .left, | ||||
|   .middle { | ||||
|     width: 30%; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     .t { | ||||
|       > ul { | ||||
|         display: flex; | ||||
|         width: 100%; | ||||
|         margin: 10px 0; | ||||
|         > li { | ||||
|           flex: 1; | ||||
|           display: flex; | ||||
|           align-items: center; | ||||
|           > div { | ||||
|             display: flex; | ||||
|             flex-direction: column; | ||||
|             align-items: center; | ||||
|             p .digifaw { | ||||
|               font-size: 22px; | ||||
|             } | ||||
|           } | ||||
|           > div + div { | ||||
|             margin-left: 5px; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     > ul { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       > li { | ||||
|         flex: 1; | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .middle { | ||||
|     margin: 0 50px; | ||||
|   } | ||||
|   .right { | ||||
|     flex: 1; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     ul { | ||||
|       width: 100%; | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       justify-content: space-around; | ||||
|       li { | ||||
|         width: 100%; | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         div:nth-child(1) { | ||||
|           width: 18%; | ||||
|           color: #5999ff; | ||||
|           span { | ||||
|             color: #7e6dff; | ||||
|           } | ||||
|         } | ||||
|         div:nth-child(5) { | ||||
|            width: 18%; | ||||
|            text-align: right; | ||||
|           color: #f59c4a; | ||||
|           span { | ||||
|             color: #88febf; | ||||
|           } | ||||
|         } | ||||
|         &:nth-child(1) div { | ||||
|           color: #fff; | ||||
|         } | ||||
|         .line1, | ||||
|         .line2 { | ||||
|           width: 30%; | ||||
|           padding: 0 5px; | ||||
|           p { | ||||
|             display: inline-block; | ||||
|             transition: width 2s ease-out; | ||||
|             -moz-transition: width 2s ease-out; | ||||
|             -webkit-transition: width 2s ease-out; | ||||
|             -o-transition: width 2s ease-out; | ||||
|             i { | ||||
|               display: inline-block; | ||||
|               height: 10px; | ||||
|               border-radius: 10px 0 0 10px; | ||||
|               &:nth-child(2) { | ||||
|                 border-radius: 0 10px 10px 0; | ||||
|                 position: relative; | ||||
|                 &:after { | ||||
|                   content: ""; | ||||
|                   display: inline-block; | ||||
|                   width: 5px; | ||||
|                   height: 20px; | ||||
|                   background: #0f2246; | ||||
|                   position: absolute; | ||||
|                   top: -5px; | ||||
|                   left: -2px; | ||||
|                   transform: rotate(15deg); | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|         .line1 { | ||||
|           text-align: right; | ||||
|           i { | ||||
|             background-image: linear-gradient(to right, #7e6dff, #a99eff); | ||||
|             &:nth-child(2) { | ||||
|               background-image: linear-gradient(to right, #61c0ff, #5999ff); | ||||
|               &:after { | ||||
|                 content: ""; | ||||
|                 display: inline-block; | ||||
|                 width: 5px; | ||||
|                 height: 20px; | ||||
|                 background: #0f2246; | ||||
|                 position: absolute; | ||||
|                 top: -5px; | ||||
|                 left: -2px; | ||||
|                 transform: rotate(15deg); | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|         .line2 i { | ||||
|           background-image: linear-gradient(to right, #36edfe, #88febf); | ||||
|           &:nth-child(2) { | ||||
|             background-image: linear-gradient(to right, #feeb7b, #f59c4a); | ||||
|           } | ||||
|         } | ||||
|         span:last-child { | ||||
|           text-align: right; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,951 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="menuSearch"> | ||||
|       <el-date-picker | ||||
|         v-model="date" | ||||
|         value-format="yyyy-MM" | ||||
|         @change="dateChange" | ||||
|         type="monthrange" | ||||
|         range-separator="至" | ||||
|         start-placeholder="开始月份" | ||||
|         end-placeholder="结束月份" | ||||
|         :picker-options="pickerOptions" | ||||
|         :default-value=" | ||||
|           new Date().getFullYear() - 1 + '-' + (new Date().getMonth() + 1) | ||||
|         " | ||||
|       > | ||||
|       </el-date-picker> | ||||
|       <el-button type="primary" round @click="search" | ||||
|         ><i class="iconfont iconchaxun"></i>查询</el-button | ||||
|       > | ||||
|     </div> | ||||
| 
 | ||||
|     <ul class="left"> | ||||
|       <li> | ||||
|         <h3 class="title">街(乡)镇发案数量TOP10</h3> | ||||
|         <div class="top10"> | ||||
|           <ul> | ||||
|             <li> | ||||
|               <span>所属区</span> | ||||
|               <span>所属街(乡)镇</span> | ||||
|               <span>数量(件)</span> | ||||
|             </li> | ||||
|             <li v-for="(item, index) in townshipCaseTop101" :key="index"> | ||||
|               <span | ||||
|                 ><i>{{ index + 1 }}</i | ||||
|                 >{{ item["AREACODENAME"] }}</span | ||||
|               > | ||||
|               <span>{{ item["TOWNSHIPCODENAME"] }}</span> | ||||
|               <span>{{ item["CASENUM"] | formatNum }}</span> | ||||
|             </li> | ||||
|           </ul> | ||||
|           <ul v-if="townshipCaseTop102.length>0"> | ||||
|             <li> | ||||
|               <span>所属区</span> | ||||
|               <span>所属街(乡)镇</span> | ||||
|               <span>数量(件)</span> | ||||
|             </li> | ||||
|             <li v-for="(item, index) in townshipCaseTop102" :key="index"> | ||||
|               <span | ||||
|                 ><i>{{ index + 6 }}</i | ||||
|                 >{{ item["AREACODENAME"] }}</span | ||||
|               > | ||||
|               <span>{{ item["TOWNSHIPCODENAME"] }}</span> | ||||
|               <span>{{ item["CASENUM"] | formatNum }}</span> | ||||
|             </li> | ||||
|           </ul> | ||||
|         </div> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h3 class="title"> | ||||
|           刑事案件趋势分析 | ||||
|           <!-- <span @click="$router.push('publicSecurityDetail1')" | ||||
|             >查看></span | ||||
|           > --> | ||||
|         </h3> | ||||
|         <Echarts :key="echartObjKey1" :echartObj="echartObj1"></Echarts> | ||||
|       </li> | ||||
|     </ul> | ||||
|     <ul class="middle"> | ||||
|       <li> | ||||
|         <h3 class="title"> | ||||
|           案由数量TOP10 | ||||
|           <!-- <span @click="$router.push('publicSecurityDetail1')" | ||||
|             >查看></span | ||||
|           > --> | ||||
|         </h3> | ||||
|         <div class="top10"> | ||||
|           <ul> | ||||
|             <li> | ||||
|               <span>案由</span> | ||||
|               <span>发案案量(件)</span> | ||||
|             </li> | ||||
|             <li v-for="(item, index) in causeActionNumTop101" :key="index"> | ||||
|               <span | ||||
|                 ><i>{{ index + 1 }}</i | ||||
|                 >{{ item["CAUSEACTIONCODENAME"] }}</span | ||||
|               > | ||||
|               <span>{{ item["CASENUM"] | formatNum }}</span> | ||||
|             </li> | ||||
|           </ul> | ||||
|           <ul> | ||||
|             <li> | ||||
|               <span>案由</span> | ||||
|               <span>发案案量(件)</span> | ||||
|             </li> | ||||
|             <li v-for="(item, index) in causeActionNumTop102" :key="index"> | ||||
|               <span | ||||
|                 ><i>{{ index + 6 }}</i | ||||
|                 >{{ item["CAUSEACTIONCODENAME"] }}</span | ||||
|               > | ||||
|               <span>{{ item["CASENUM"] | formatNum }}</span> | ||||
|             </li> | ||||
|           </ul> | ||||
|         </div> | ||||
|       </li> | ||||
|       <li> | ||||
|         <h3 class="title"> | ||||
|           强制措施占比分析 | ||||
|           <!-- <span @click="$router.push('publicSecurityDetail2')" | ||||
|             >查看></span | ||||
|           > --> | ||||
|         </h3> | ||||
|         <ul class="box"> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey2" :echartObj="echartObj2"></Echarts> | ||||
|           </li> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey2" :echartObj="echartObj3"></Echarts> | ||||
|           </li> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey2" :echartObj="echartObj4"></Echarts> | ||||
|           </li> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey2" :echartObj="echartObj5"></Echarts> | ||||
|           </li> | ||||
|           <li> | ||||
|             <Echarts :key="echartObjKey2" :echartObj="echartObj6"></Echarts> | ||||
|           </li> | ||||
|         </ul> | ||||
|       </li> | ||||
|     </ul> | ||||
|     <div class="right"> | ||||
|       <h3 class="title">各区提请逮捕数量</h3> | ||||
|       <ul> | ||||
|         <li> | ||||
|           <span>区</span> | ||||
|           <span>数量(件)</span> | ||||
|         </li> | ||||
|         <li v-for="(item, index) in areRequestArrestNum" :key="index"> | ||||
|           <span>{{ item.name }}</span> | ||||
|           <p><i :style="{ width: item.width }"></i></p> | ||||
|           <span>{{ item.value | formatNum }}</span> | ||||
|         </li> | ||||
|       </ul> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import Echarts from "@/components/echarts"; | ||||
| import { | ||||
|   areRequestArrestNum, | ||||
|   causeActionNumTop10, | ||||
|   coerciveMeasures, | ||||
|   intelligentCaseHandingCriminaCaseTrend, | ||||
|   townshipCaseTop10, | ||||
| } from "@/api/intelligentApi"; | ||||
| import {createOperationLog} from "@/api/api" | ||||
| export default { | ||||
|   data() { | ||||
|     return { | ||||
|       echartObjKey1: "echartObjKey1", | ||||
|       echartObjKey2: "echartObjKey2", | ||||
|       pickerOptions: { | ||||
|         disabledDate(time) { | ||||
|           return time.getTime() > Date.now() - 8.64e6; | ||||
|         }, | ||||
|       }, | ||||
| 
 | ||||
|       param: { | ||||
|         startYear: "", | ||||
|         endYear: "", | ||||
|       }, | ||||
|       // 各区提请逮捕数量 | ||||
|       areRequestArrestNum: [], | ||||
|       // 案由数量TOP10 | ||||
|       causeActionNumTop101: [], | ||||
|       causeActionNumTop102: [], | ||||
|       // 街(乡)镇发案数量TOP10 | ||||
|       townshipCaseTop101: [], | ||||
|       townshipCaseTop102: [], | ||||
|       date: "", | ||||
|       // 刑事案件趋势 | ||||
|       echartObj1: { | ||||
|         color: ["#149bea", "#f35a6c"], //图例颜色 | ||||
|         tooltip: { | ||||
|           trigger: "axis", | ||||
|           position: "inside", | ||||
|         }, | ||||
|         legend: { | ||||
|           icon: "circle", //圆点 | ||||
|           top: "10", | ||||
|           right: "20", | ||||
|           textStyle: { | ||||
|             color: "#fff", //图例字体颜色 | ||||
|           }, | ||||
|         }, | ||||
|         grid: { | ||||
|           top: "60", | ||||
|           left: "10", | ||||
|           right: "40", | ||||
|           bottom: "10", | ||||
|           containLabel: true, | ||||
|         }, | ||||
|         xAxis: [ | ||||
|           { | ||||
|             type: "category", | ||||
|             boundaryGap: true, | ||||
|             data: [], | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               // | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|               interval: 0, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         yAxis: [ | ||||
|           { | ||||
|             name: "单位(件)", | ||||
|             type: "value", | ||||
|             axisLine: { | ||||
|               //轴线修改 | ||||
|               lineStyle: { | ||||
|                 color: "#2dd4fc", // 颜色 | ||||
|                 width: 2, // 粗细 | ||||
|               }, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: true, | ||||
|               textStyle: { | ||||
|                 color: "#2dd4fc", | ||||
|               }, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: true, | ||||
|               lineStyle: { | ||||
|                 color: "#355184", | ||||
|                 width: 1, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|         series: [ | ||||
|           { | ||||
|             name: "案件数", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             smooth: true, | ||||
|             showBackground: true, //柱图显示背景色 | ||||
|             data: [], | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|           { | ||||
|             name: "提请逮捕数", | ||||
|             type: "line", | ||||
|             animationDuration: 2000, | ||||
|             smooth: true, | ||||
|             showBackground: true, //柱图显示背景色 | ||||
|             data: [], | ||||
|             label: { | ||||
|               show: true, | ||||
|             }, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   // formatter: '{b} : {c}人 ({d}%)', | ||||
|                   formatter: (p) => { | ||||
|                     //千分位 | ||||
|                     return this.formatNum(p.value); | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             }, | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       // 强制措施占比分析 | ||||
|       echartObj2: { | ||||
|         title: { | ||||
|           text: "", | ||||
|           left: "center", | ||||
|           bottom: 0, | ||||
|           textStyle: { | ||||
|             color: "#27d1fc", | ||||
|             fontSize: "14", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: "{b}({d}%)", | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["40%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             label: { | ||||
|               show: false, | ||||
|             }, | ||||
|             labelLine: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: "{d}%", | ||||
|                   position: "center", | ||||
|                   color: "#fff", | ||||
|                   fontSize: 18, | ||||
|                   fontWeight: "bold", | ||||
|                 }, | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: new this.$echarts.graphic.LinearGradient( | ||||
|                       0, | ||||
|                       0, | ||||
|                       0, | ||||
|                       1, | ||||
|                       [ | ||||
|                         { offset: 0, color: "#00DDDF" }, | ||||
|                         { offset: 1, color: "#00A7B9" }, | ||||
|                       ] | ||||
|                     ), | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "其他", | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: "#004878", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       echartObj3: { | ||||
|         title: { | ||||
|           text: "", | ||||
|           left: "center", | ||||
|           bottom: 0, | ||||
|           textStyle: { | ||||
|             color: "#27d1fc", | ||||
|             fontSize: "14", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: "{b}({d}%)", | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["40%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             label: { | ||||
|               show: false, | ||||
|             }, | ||||
|             labelLine: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: "{d}%", | ||||
|                   position: "center", | ||||
|                   color: "#fff", | ||||
|                   fontSize: 18, | ||||
|                   fontWeight: "bold", | ||||
|                 }, | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: new this.$echarts.graphic.LinearGradient( | ||||
|                       0, | ||||
|                       0, | ||||
|                       0, | ||||
|                       1, | ||||
|                       [ | ||||
|                         { offset: 0, color: "#00DDDF" }, | ||||
|                         { offset: 1, color: "#00A7B9" }, | ||||
|                       ] | ||||
|                     ), | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "其他", | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: "#004878", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       echartObj4: { | ||||
|         title: { | ||||
|           text: "", | ||||
|           left: "center", | ||||
|           bottom: 0, | ||||
|           textStyle: { | ||||
|             color: "#27d1fc", | ||||
|             fontSize: "14", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: "{b}({d}%)", | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["40%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             label: { | ||||
|               show: false, | ||||
|             }, | ||||
|             labelLine: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: "{d}%", | ||||
|                   position: "center", | ||||
|                   color: "#fff", | ||||
|                   fontSize: 18, | ||||
|                   fontWeight: "bold", | ||||
|                 }, | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: new this.$echarts.graphic.LinearGradient( | ||||
|                       0, | ||||
|                       0, | ||||
|                       0, | ||||
|                       1, | ||||
|                       [ | ||||
|                         { offset: 0, color: "#00DDDF" }, | ||||
|                         { offset: 1, color: "#00A7B9" }, | ||||
|                       ] | ||||
|                     ), | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "其他", | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: "#004878", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       echartObj5: { | ||||
|         title: { | ||||
|           text: "", | ||||
|           left: "center", | ||||
|           bottom: 0, | ||||
|           textStyle: { | ||||
|             color: "#27d1fc", | ||||
|             fontSize: "14", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: "{b}({d}%)", | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["40%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             label: { | ||||
|               show: false, | ||||
|             }, | ||||
|             labelLine: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: "{d}%", | ||||
|                   position: "center", | ||||
|                   color: "#fff", | ||||
|                   fontSize: 18, | ||||
|                   fontWeight: "bold", | ||||
|                 }, | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: new this.$echarts.graphic.LinearGradient( | ||||
|                       0, | ||||
|                       0, | ||||
|                       0, | ||||
|                       1, | ||||
|                       [ | ||||
|                         { offset: 0, color: "#00DDDF" }, | ||||
|                         { offset: 1, color: "#00A7B9" }, | ||||
|                       ] | ||||
|                     ), | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "其他", | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: "#004878", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       echartObj6: { | ||||
|         title: { | ||||
|           text: "", | ||||
|           left: "center", | ||||
|           bottom: 0, | ||||
|           textStyle: { | ||||
|             color: "#27d1fc", | ||||
|             fontSize: "14", | ||||
|           }, | ||||
|         }, | ||||
|         tooltip: { | ||||
|           trigger: "item", | ||||
|           formatter: "{b}({d}%)", | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type: "pie", | ||||
|             animationDuration: 2000, | ||||
|             radius: ["40%", "60%"], | ||||
|             avoidLabelOverlap: false, | ||||
|             label: { | ||||
|               show: false, | ||||
|             }, | ||||
|             labelLine: { | ||||
|               show: false, | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "", | ||||
|                 label: { | ||||
|                   show: true, | ||||
|                   formatter: "{d}%", | ||||
|                   position: "center", | ||||
|                   color: "#fff", | ||||
|                   fontSize: 18, | ||||
|                   fontWeight: "bold", | ||||
|                 }, | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: new this.$echarts.graphic.LinearGradient( | ||||
|                       0, | ||||
|                       0, | ||||
|                       0, | ||||
|                       1, | ||||
|                       [ | ||||
|                         { offset: 0, color: "#00DDDF" }, | ||||
|                         { offset: 1, color: "#00A7B9" }, | ||||
|                       ] | ||||
|                     ), | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|               { | ||||
|                 value: 0, | ||||
|                 name: "其他", | ||||
|                 itemStyle: { | ||||
|                   normal: { | ||||
|                     color: "#004878", | ||||
|                   }, | ||||
|                 }, | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }; | ||||
|   }, | ||||
| 
 | ||||
|   components: { | ||||
|     Echarts, | ||||
|   }, | ||||
|   created() { | ||||
|     this.param = { | ||||
|       startYear: "", | ||||
|       endYear: "", | ||||
|     }; | ||||
|     this.getData(); | ||||
|   }, | ||||
|   methods: { | ||||
|     search() { | ||||
|       this.getData(); | ||||
|     }, | ||||
|     getData() { | ||||
|       let pointParams ={ | ||||
|         opeLogExceptionInfo: '进入智能办案专题模块查询了公安数据',//日志描述 | ||||
|         opeLogUserAccount:this.$cookies.get('username'),//用户账户 | ||||
|         opeLogSystem:"BJCM-DSJ",//系统编码 | ||||
|         opeLogStatus: 1, | ||||
|         opeLogIp:"" | ||||
|       } | ||||
|       createOperationLog(pointParams).then(res=>{ | ||||
|         console.log(res) | ||||
|       }) | ||||
|       //各区提请逮捕数量 | ||||
|       areRequestArrestNum(this.param) | ||||
|         .then((res) => { | ||||
|           let data = []; | ||||
|           let max; | ||||
|           res.listclass.forEach((item, index) => { | ||||
|             data[index] = { | ||||
|               name: item, | ||||
|               value: 0, | ||||
|               width: "0%", | ||||
|             }; | ||||
|             if (res.areRequestArrestNum.length > 0) { | ||||
|               if (!max) { | ||||
|                 max = this.getMax([...res.areRequestArrestNum]); | ||||
|               } | ||||
|               res.areRequestArrestNum.forEach((i) => { | ||||
|                 if (item == i["AREACODENAME"]) { | ||||
|                   data[index].value = i["REQUESTARREST"]; | ||||
|                 } | ||||
|               }); | ||||
|             } | ||||
|             data.forEach((item) => { | ||||
|               if (max) { | ||||
|                 item.width = ((item.value / max) * 100).toFixed(2) + "%"; | ||||
|               } | ||||
|             }); | ||||
|           }); | ||||
|           this.areRequestArrestNum = data; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       //案由数量TOP10 | ||||
|       causeActionNumTop10(this.param) | ||||
|         .then((res) => { | ||||
|           this.causeActionNumTop101 = []; | ||||
|           this.causeActionNumTop102 = []; | ||||
|           res.causeActionNumTop10.forEach((item, index) => { | ||||
|             if (index < 5) { | ||||
|               this.causeActionNumTop101.push(item); | ||||
|             } else { | ||||
|               this.causeActionNumTop102.push(item); | ||||
|             } | ||||
|           }); | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 强制措施占比分析 | ||||
|       coerciveMeasures(this.param) | ||||
|         .then((res) => { | ||||
|           for (let i = 2; i < 7; i++) { | ||||
|             this["echartObj" + i].title.text = ""; | ||||
|             this["echartObj" + i].series[0].data[0].name = ""; | ||||
|             this["echartObj" + i].series[0].data[0].value = 0; | ||||
|             this["echartObj" + i].series[0].data[1].value = 0; | ||||
|           } | ||||
|           if (res.coerciveMeasures.length > 0) { | ||||
|             let total = 0; | ||||
|             res.coerciveMeasures.forEach((item) => { | ||||
|               total += item["NUM"]; | ||||
|             }); | ||||
|             res.coerciveMeasures.forEach((item, index) => { | ||||
|               this["echartObj" + (index + 2)].title.text = | ||||
|                 item["COERCIVEMEASURESCODENAME"] + | ||||
|                 ":" + | ||||
|                 this.formatNum(item["NUM"]) + | ||||
|                 "人"; | ||||
|               this["echartObj" + (index + 2)].series[0].data[0].name = | ||||
|                 item["COERCIVEMEASURESCODENAME"]; | ||||
|               this["echartObj" + (index + 2)].series[0].data[0].value = | ||||
|                 item["NUM"]; | ||||
|               this["echartObj" + (index + 2)].series[0].data[1].value = | ||||
|                 total - item["NUM"]; | ||||
|             }); | ||||
|           } | ||||
|           this.echartObjKey2 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       //刑事案件趋势 | ||||
|       intelligentCaseHandingCriminaCaseTrend(this.param) | ||||
|         .then((res) => { | ||||
|           this.echartObj1.xAxis[0].data = []; | ||||
|           this.echartObj1.series[0].data = []; | ||||
|           this.echartObj1.series[1].data = []; | ||||
|           if (res.intelligentCaseHandingCriminaCaseTrend.length > 0) { | ||||
|             res.intelligentCaseHandingCriminaCaseTrend.forEach((item) => { | ||||
|               this.echartObj1.xAxis[0].data.push(item["YEAR_MONTH"]); | ||||
|               this.echartObj1.series[0].data.push(item["CASENUM"]); //案件数 | ||||
|               this.echartObj1.series[1].data.push(item["REQUESTARREST"]); //提请逮捕数 | ||||
|             }); | ||||
|           } | ||||
|           this.echartObjKey1 = new Date().getTime() + 1; | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|       // 街(乡)镇发案数量TOP10 | ||||
|       townshipCaseTop10(this.param) | ||||
|         .then((res) => { | ||||
|           this.townshipCaseTop101 = []; | ||||
|           this.townshipCaseTop102 = []; | ||||
|           res.townshipCaseTop10.forEach((item, index) => { | ||||
|             if (index < 5) { | ||||
|               this.townshipCaseTop101.push(item); | ||||
|             } else { | ||||
|               this.townshipCaseTop102.push(item); | ||||
|             } | ||||
|           }); | ||||
|         }) | ||||
|         .catch((res) => { | ||||
|           console.error(res); | ||||
|         }); | ||||
|     }, | ||||
|     // 时间选择器 | ||||
|     dateChange(val) { | ||||
|       if (val) { | ||||
|         this.param.startYear = val[0]; | ||||
|         this.param.endYear = val[1]; | ||||
|       } else { | ||||
|         this.param.startYear = ""; | ||||
|         this.param.endYear = ""; | ||||
|       } | ||||
|     }, | ||||
|     //  获取X轴最大值 | ||||
|     getMax(arr) { | ||||
|       arr.sort(function (a, b) { | ||||
|         return a["REQUESTARREST"] - b["REQUESTARREST"]; | ||||
|       }); | ||||
|       let max = arr[arr.length - 1]["REQUESTARREST"]; // 计算最大值 | ||||
|       let num = Math.floor(max / 10) * 10 + 10; // 获取X轴最大值 | ||||
|       return num; | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="less" scoped> | ||||
| .main { | ||||
|   padding: 20px 30px; | ||||
|   display: flex; | ||||
|   padding: 20px 50px; | ||||
|   .left, | ||||
|   .middle { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     & > li { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       padding-bottom: 50px; | ||||
|     } | ||||
|   } | ||||
|   .top10 { | ||||
|     flex: 1; | ||||
|     display: flex; | ||||
|     > ul { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       justify-content: space-around; | ||||
|       li { | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         &:nth-child(1) span { | ||||
|           color: #fff; | ||||
|         } | ||||
|         span { | ||||
|           width: 90px; | ||||
|           color: #27d1fc; | ||||
|           &:nth-child(2) { | ||||
|             flex: 1; | ||||
|             padding: 0 10px; | ||||
|             text-align: center; | ||||
|           } | ||||
|           &:nth-child(3) { | ||||
|             color: #fff; | ||||
|             text-align: right; | ||||
|           } | ||||
|         } | ||||
|         i { | ||||
|           display: inline-block; | ||||
|           width: 22px; | ||||
|           height: 22px; | ||||
|           line-height: 22px; | ||||
|           text-align: center; | ||||
|           color: #3cd2ff; | ||||
|           border: 1px solid #3cd2ff; | ||||
|           border-radius: 8px; | ||||
|           margin-right: 5px; | ||||
|         } | ||||
|       } | ||||
|       &:nth-child(1) { | ||||
|         margin-right: 40px; | ||||
|         li:nth-child(2) i { | ||||
|           color: #f72121; | ||||
|           border: 1px solid #f72121; | ||||
|         } | ||||
|         li:nth-child(3) i { | ||||
|           color: #f05613; | ||||
|           border: 1px solid #f05613; | ||||
|         } | ||||
|         li:nth-child(4) i { | ||||
|           color: #f8a925; | ||||
|           border: 1px solid #f8a925; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .left { | ||||
|     flex: 1; | ||||
|   } | ||||
|   .middle { | ||||
|     width: 30%; | ||||
|     margin: 0 100px; | ||||
|     .top10 > ul li span { | ||||
|       flex: 1; | ||||
|       &:nth-child(2) { | ||||
|         flex: 0 1 auto; | ||||
|         width: 80px; | ||||
|         color: #fff; | ||||
|         text-align: right; | ||||
|         padding: 0; | ||||
|       } | ||||
|     } | ||||
|     .box { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-wrap: wrap; | ||||
|       li { | ||||
|         width: 33%; | ||||
|         height: 50%; | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|         > div { | ||||
|           flex: 1; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .right { | ||||
|     width: 20%; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     ul { | ||||
|       flex: 1; | ||||
|       display: flex; | ||||
|       flex-direction: column; | ||||
|       justify-content: space-around; | ||||
|       li { | ||||
|         display: flex; | ||||
|         justify-content: space-between; | ||||
|         span { | ||||
|           min-width: 60px; | ||||
|         } | ||||
|         span:last-child { | ||||
|           text-align: right; | ||||
|         } | ||||
|         p { | ||||
|           flex: 1; | ||||
| 
 | ||||
|           i { | ||||
|             transition: width 2s ease-out; | ||||
|             -moz-transition: width 2s ease-out; | ||||
|             -webkit-transition: width 2s ease-out; | ||||
|             -o-transition: width 2s ease-out; | ||||
|             display: inline-block; | ||||
|             height: 10px; | ||||
|             border-radius: 15px; | ||||
|             background-image: linear-gradient(to right, #36ecfe, #fde191); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   h3.title { | ||||
|     font-size: 20px; | ||||
|     line-height: 40px; | ||||
|     color: #43ebf6; | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|     span { | ||||
|       font-size: 14px; | ||||
|       color: #0fd4f9; | ||||
|       cursor: pointer; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,248 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="search"> | ||||
|       <div> | ||||
|         <label>时间:</label> | ||||
|         <el-date-picker | ||||
|           v-model="value1" | ||||
|           type="monthrange" | ||||
|           range-separator="至" | ||||
|           start-placeholder="开始月份" | ||||
|           end-placeholder="结束月份"> | ||||
|         </el-date-picker> | ||||
|       </div> | ||||
|       <div> | ||||
|         <label>所属区:</label> | ||||
|         <el-select v-model="value3" clearable placeholder="请选择"> | ||||
|           <el-option | ||||
|             v-for="item in options1" | ||||
|             :key="item.value" | ||||
|             :label="item.label" | ||||
|             :value="item.value"> | ||||
|           </el-option> | ||||
|         </el-select> | ||||
|       </div> | ||||
|       <div> | ||||
|         <label>所属街道:</label> | ||||
|         <el-select v-model="value4" clearable placeholder="请选择"> | ||||
|           <el-option | ||||
|             v-for="item in options2" | ||||
|             :key="item.value" | ||||
|             :label="item.label" | ||||
|             :value="item.value"> | ||||
|           </el-option> | ||||
|         </el-select> | ||||
|       </div> | ||||
|       <el-button type="primary" round><i class="iconfont iconchaxun"></i>查询</el-button> | ||||
|     </div> | ||||
| 
 | ||||
|     <dv-border-box-7 :color="['#15369F','#fff']" style="padding: 20px 15px;box-sizing: border-box"> | ||||
|       <el-table class="lh40 mgasj" :max-height="tableHeight" border :data="tableData"> | ||||
|         <el-table-column align="center" width="60" type="index" label="序号"></el-table-column> | ||||
|         <el-table-column align="center" width="100" prop="a1" label="所属区"></el-table-column> | ||||
|         <el-table-column align="center" prop="a2" label="所属街道"></el-table-column> | ||||
|         <el-table-column align="center" prop="a3" label="立案量(件)"></el-table-column> | ||||
|         <el-table-column align="center" prop="a4" label="提请逮捕(件)"></el-table-column> | ||||
|         <el-table-column align="center" prop="a5" label="提请逮捕人数(人)"></el-table-column> | ||||
|       </el-table> | ||||
|     </dv-border-box-7> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| export default { | ||||
|   data: function() { | ||||
|     return { | ||||
|       tableHeight: (window.innerHeight  -76-72-10-10 - 40 -60 -40), | ||||
|       value1: '', | ||||
|       value2: '', | ||||
|       value3: '', | ||||
|       value4: '', | ||||
|       options1: [ | ||||
|         { value: '', label: '全部', }, | ||||
|         { value: '东城区', label: '东城区', }, | ||||
|         { value: '西城区', label: '西城区', }, | ||||
|         { value: '朝阳区', label: '朝阳区', }, | ||||
|         { value: '海淀区', label: '海淀区', }, | ||||
|         { value: '丰台区', label: '丰台区', }, | ||||
|         { value: '石景山区', label: '石景山区', }, | ||||
|         { value: '大兴区', label: '大兴区', }, | ||||
|         { value: '通州区', label: '通州区', }, | ||||
|         { value: '顺义区', label: '顺义区', }, | ||||
|         { value: '昌平区', label: '昌平区', }, | ||||
|         { value: '房山区', label: '房山区', }, | ||||
|         { value: '门头沟区', label: '门头沟区', }, | ||||
|         { value: '怀柔区', label: '怀柔区', }, | ||||
|         { value: '平谷区', label: '平谷区', }, | ||||
|         { value: '密云区', label: '密云区', }, | ||||
|         { value: '延庆区', label: '延庆区', }, | ||||
|       ], | ||||
|       options2: [ | ||||
|         { value: '', label: '全部'}, | ||||
|         { value: '1', label: '**街道'}, | ||||
|         { value: '2', label: '***街道'}, | ||||
|         { value: '3', label: '***街道'}, | ||||
|         { value: '4', label: '****街道'}, | ||||
|       ], | ||||
|       tableData: [ | ||||
|         { | ||||
|           a1: '东城区', | ||||
|           a2: '*******街道', | ||||
|           a3: '3080', | ||||
|           a4: '3080', | ||||
|           a5: '3080', | ||||
|         }, | ||||
|         { | ||||
|           a1: '西城区', | ||||
|           a2: '*******街道', | ||||
|           a3: '7000', | ||||
|           a4: '7000', | ||||
|           a5: '7000', | ||||
|         }, | ||||
|         { | ||||
|           a1: '朝阳区', | ||||
|           a2: '*******街道', | ||||
|           a3: '12000', | ||||
|           a4: '12000', | ||||
|           a5: '12000', | ||||
|         }, | ||||
|         { | ||||
|           a1: '海淀区', | ||||
|           a2: '*******街道', | ||||
|           a3: '8500', | ||||
|           a4: '8500', | ||||
|           a5: '8500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '丰台区', | ||||
|           a2: '*******街道', | ||||
|           a3: '1900', | ||||
|           a4: '1900', | ||||
|           a5: '1900', | ||||
|         }, | ||||
|         { | ||||
|           a1: '石景山区', | ||||
|           a2: '*******街道', | ||||
|           a3: '6010', | ||||
|           a4: '6010', | ||||
|           a5: '6010', | ||||
|         }, | ||||
|         { | ||||
|           a1: '大兴区', | ||||
|           a2: '*******街道', | ||||
|           a3: '1500', | ||||
|           a4: '1500', | ||||
|           a5: '1500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '通州区', | ||||
|           a2: '*******街道', | ||||
|           a3: '4020', | ||||
|           a4: '4020', | ||||
|           a5: '4020', | ||||
|         }, | ||||
|         { | ||||
|           a1: '顺义区', | ||||
|           a2: '*******街道', | ||||
|           a3: '4500', | ||||
|           a4: '4500', | ||||
|           a5: '4500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '昌平区', | ||||
|           a2: '*******街道', | ||||
|           a3: '3800', | ||||
|           a4: '3800', | ||||
|           a5: '3800', | ||||
|         }, | ||||
|         { | ||||
|           a1: '房山区', | ||||
|           a2: '*******街道', | ||||
|           a3: '4200', | ||||
|           a4: '4200', | ||||
|           a5: '4200', | ||||
|         }, | ||||
|         { | ||||
|           a1: '门头沟区', | ||||
|           a2: '*******街道', | ||||
|           a3: '4800', | ||||
|           a4: '4800', | ||||
|           a5: '4800', | ||||
|         }, | ||||
|         { | ||||
|           a1: '怀柔区', | ||||
|           a2: '*******街道', | ||||
|           a3: '1700', | ||||
|           a4: '1700', | ||||
|           a5: '1700', | ||||
|         }, | ||||
|         { | ||||
|           a1: '平谷区', | ||||
|           a2: '*******街道', | ||||
|           a3: '1600', | ||||
|           a4: '1600', | ||||
|           a5: '1600', | ||||
|         }, | ||||
|         { | ||||
|           a1: '密云区', | ||||
|           a2: '*******街道', | ||||
|           a3: '1500', | ||||
|           a4: '1500', | ||||
|           a5: '1500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '延庆区', | ||||
|           a2: '*******街道', | ||||
|           a3: '1900', | ||||
|           a4: '1900', | ||||
|           a5: '1900', | ||||
|         }, | ||||
|       ], | ||||
|     } | ||||
|   }, | ||||
|   props: {}, | ||||
|   mounted() { | ||||
|     console.log("1111111"); | ||||
|   }, | ||||
|   components: { | ||||
|   }, | ||||
|   methods: { | ||||
|     handleDelete(obj){ | ||||
|       console.log(obj); | ||||
|     } | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
| <style scoped lang="less"> | ||||
| .main { | ||||
|   display: flex; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|     flex-direction: column; | ||||
|   .search{ | ||||
|     display: flex; | ||||
|     padding: 30px 0px; | ||||
|     justify-content: center; | ||||
|     &>div{ | ||||
|       display: flex; | ||||
|       label{ | ||||
|         line-height: 40px; | ||||
|         margin-left: 15px; | ||||
|       } | ||||
|       .el-input{ | ||||
|         flex: 1; | ||||
|       } | ||||
|     } | ||||
|     .el-button{ | ||||
|       margin-left: 15px; | ||||
|       width: 120px; | ||||
|       .iconfont{ | ||||
|         margin-right: 5px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .el-table:before { | ||||
|     height: 0px; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -1,265 +0,0 @@ | ||||
| <template> | ||||
|   <div class="main"> | ||||
|     <div class="search"> | ||||
|       <div> | ||||
|         <label>时间:</label> | ||||
|         <el-date-picker | ||||
|           v-model="value1" | ||||
|           type="monthrange" | ||||
|           range-separator="至" | ||||
|           start-placeholder="开始月份" | ||||
|           end-placeholder="结束月份"> | ||||
|         </el-date-picker> | ||||
|       </div> | ||||
|       <div> | ||||
|         <label>所属区:</label> | ||||
|         <el-select v-model="value3" clearable placeholder="请选择"> | ||||
|           <el-option | ||||
|             v-for="item in options1" | ||||
|             :key="item.value" | ||||
|             :label="item.label" | ||||
|             :value="item.value"> | ||||
|           </el-option> | ||||
|         </el-select> | ||||
|       </div> | ||||
|       <div> | ||||
|         <label>所属街道:</label> | ||||
|         <el-select v-model="value4" clearable placeholder="请选择"> | ||||
|           <el-option | ||||
|             v-for="item in options2" | ||||
|             :key="item.value" | ||||
|             :label="item.label" | ||||
|             :value="item.value"> | ||||
|           </el-option> | ||||
|         </el-select> | ||||
|       </div> | ||||
|       <el-button type="primary" round><i class="iconfont iconchaxun"></i>查询</el-button> | ||||
|     </div> | ||||
| 
 | ||||
|     <dv-border-box-7 :color="['#15369F','#fff']" style="padding: 20px 15px;box-sizing: border-box"> | ||||
|       <el-table class="lh40 mgasj" :max-height="tableHeight" border :data="tableData"> | ||||
|         <el-table-column align="center" width="60" type="index" label="序号"></el-table-column> | ||||
|         <el-table-column align="center" width="100" prop="a1" label="所属区"></el-table-column> | ||||
|         <el-table-column align="center" prop="a2" label="拘传(人)"></el-table-column> | ||||
|         <el-table-column align="center" prop="a3" label="取保候审(人)"></el-table-column> | ||||
|         <el-table-column align="center" prop="a4" label="监视居住(人)"></el-table-column> | ||||
|         <el-table-column align="center" prop="a5" label="拘留(人)"></el-table-column> | ||||
|         <el-table-column align="center" prop="a5" label="逮捕(人)"></el-table-column> | ||||
|       </el-table> | ||||
|     </dv-border-box-7> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| export default { | ||||
|   data: function() { | ||||
|     return { | ||||
|       tableHeight: (window.innerHeight  -76-72-10-10 - 40 -60 -40), | ||||
|       value1: '', | ||||
|       value2: '', | ||||
|       value3: '', | ||||
|       value4: '', | ||||
|       options1: [ | ||||
|         { value: '', label: '全部', }, | ||||
|         { value: '东城区', label: '东城区', }, | ||||
|         { value: '西城区', label: '西城区', }, | ||||
|         { value: '朝阳区', label: '朝阳区', }, | ||||
|         { value: '海淀区', label: '海淀区', }, | ||||
|         { value: '丰台区', label: '丰台区', }, | ||||
|         { value: '石景山区', label: '石景山区', }, | ||||
|         { value: '大兴区', label: '大兴区', }, | ||||
|         { value: '通州区', label: '通州区', }, | ||||
|         { value: '顺义区', label: '顺义区', }, | ||||
|         { value: '昌平区', label: '昌平区', }, | ||||
|         { value: '房山区', label: '房山区', }, | ||||
|         { value: '门头沟区', label: '门头沟区', }, | ||||
|         { value: '怀柔区', label: '怀柔区', }, | ||||
|         { value: '平谷区', label: '平谷区', }, | ||||
|         { value: '密云区', label: '密云区', }, | ||||
|         { value: '延庆区', label: '延庆区', }, | ||||
|       ], | ||||
|       options2: [ | ||||
|         { value: '', label: '全部'}, | ||||
|         { value: '1', label: '**街道'}, | ||||
|         { value: '2', label: '***街道'}, | ||||
|         { value: '3', label: '***街道'}, | ||||
|         { value: '4', label: '****街道'}, | ||||
|       ], | ||||
|       tableData: [ | ||||
|         { | ||||
|           a1: '东城区', | ||||
|           a2: '3080', | ||||
|           a3: '3080', | ||||
|           a4: '3080', | ||||
|           a5: '3080', | ||||
|           a6: '3080', | ||||
|         }, | ||||
|         { | ||||
|           a1: '西城区', | ||||
|           a2: '7000', | ||||
|           a3: '7000', | ||||
|           a4: '7000', | ||||
|           a5: '7000', | ||||
|           a6: '7000', | ||||
|         }, | ||||
|         { | ||||
|           a1: '朝阳区', | ||||
|           a2: '12000', | ||||
|           a3: '12000', | ||||
|           a4: '12000', | ||||
|           a5: '12000', | ||||
|           a6: '12000', | ||||
|         }, | ||||
|         { | ||||
|           a1: '海淀区', | ||||
|           a2: '8500', | ||||
|           a3: '8500', | ||||
|           a4: '8500', | ||||
|           a5: '8500', | ||||
|           a6: '8500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '丰台区', | ||||
|           a2: '1900', | ||||
|           a3: '1900', | ||||
|           a4: '1900', | ||||
|           a5: '1900', | ||||
|           a6: '1900', | ||||
|         }, | ||||
|         { | ||||
|           a1: '石景山区', | ||||
|           a2: '6010', | ||||
|           a3: '6010', | ||||
|           a4: '6010', | ||||
|           a5: '6010', | ||||
|           a6: '6010', | ||||
|         }, | ||||
|         { | ||||
|           a1: '大兴区', | ||||
|           a2: '1500', | ||||
|           a3: '1500', | ||||
|           a4: '1500', | ||||
|           a5: '1500', | ||||
|           a6: '1500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '通州区', | ||||
|           a2: '4020', | ||||
|           a3: '4020', | ||||
|           a4: '4020', | ||||
|           a5: '4020', | ||||
|           a6: '4020', | ||||
|         }, | ||||
|         { | ||||
|           a1: '顺义区', | ||||
|           a2: '4500', | ||||
|           a3: '4500', | ||||
|           a4: '4500', | ||||
|           a5: '4500', | ||||
|           a6: '4500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '昌平区', | ||||
|           a2: '3800', | ||||
|           a3: '3800', | ||||
|           a4: '3800', | ||||
|           a5: '3800', | ||||
|           a6: '3800', | ||||
|         }, | ||||
|         { | ||||
|           a1: '房山区', | ||||
|           a2: '4200', | ||||
|           a3: '4200', | ||||
|           a4: '4200', | ||||
|           a5: '4200', | ||||
|           a6: '4200', | ||||
|         }, | ||||
|         { | ||||
|           a1: '门头沟区', | ||||
|           a2: '4800', | ||||
|           a3: '4800', | ||||
|           a4: '4800', | ||||
|           a5: '4800', | ||||
|           a6: '4800', | ||||
|         }, | ||||
|         { | ||||
|           a1: '怀柔区', | ||||
|           a2: '1700', | ||||
|           a3: '1700', | ||||
|           a4: '1700', | ||||
|           a5: '1700', | ||||
|           a6: '1700', | ||||
|         }, | ||||
|         { | ||||
|           a1: '平谷区', | ||||
|           a2: '1600', | ||||
|           a3: '1600', | ||||
|           a4: '1600', | ||||
|           a5: '1600', | ||||
|           a6: '1600', | ||||
|         }, | ||||
|         { | ||||
|           a1: '密云区', | ||||
|           a2: '1500', | ||||
|           a3: '1500', | ||||
|           a4: '1500', | ||||
|           a5: '1500', | ||||
|           a6: '1500', | ||||
|         }, | ||||
|         { | ||||
|           a1: '延庆区', | ||||
|           a2: '1900', | ||||
|           a3: '1900', | ||||
|           a4: '1900', | ||||
|           a5: '1900', | ||||
|           a6: '1900', | ||||
|         }, | ||||
|       ], | ||||
|     } | ||||
|   }, | ||||
|   props: {}, | ||||
|   mounted() { | ||||
|     console.log("1111111"); | ||||
|   }, | ||||
|   components: { | ||||
|   }, | ||||
|   methods: { | ||||
|     handleDelete(obj){ | ||||
|       console.log(obj); | ||||
|     } | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
| <style scoped lang="less"> | ||||
| .main { | ||||
|   display: flex; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|     flex-direction: column; | ||||
|   .search{ | ||||
|     display: flex; | ||||
|     padding: 30px 0px; | ||||
|     justify-content: center; | ||||
|     &>div{ | ||||
|       display: flex; | ||||
|       label{ | ||||
|         line-height: 40px; | ||||
|         margin-left: 15px; | ||||
|       } | ||||
|       .el-input{ | ||||
|         flex: 1; | ||||
|       } | ||||
|     } | ||||
|     .el-button{ | ||||
|       margin-left: 15px; | ||||
|       width: 120px; | ||||
|       .iconfont{ | ||||
|         margin-right: 5px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .el-table:before { | ||||
|     height: 0px; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -88,13 +88,14 @@ export default new Router({ | ||||
|         index: 0, | ||||
|       } | ||||
|     }, | ||||
|     // 智能设备
 | ||||
|     { | ||||
|       path: '/09', | ||||
|       name: '09', | ||||
|       component: () => import('@/pages/page/09'), | ||||
|       path: '/intelligent', | ||||
|       name: 'intelligent', | ||||
|       component: () => import('@/pages/intelligent/index'), | ||||
|       meta: { | ||||
|         index: 0, | ||||
|       } | ||||
|       }, | ||||
|     }, | ||||
|     // 首页
 | ||||
|     { | ||||
| @ -502,77 +503,6 @@ export default new Router({ | ||||
|         }, | ||||
|       ] | ||||
|     }, | ||||
|     // 智能办案
 | ||||
|     { | ||||
|       path: '/intelligent', | ||||
|       name: 'intelligent', | ||||
|       redirect: '/intelligent/home', // 设置默认路由
 | ||||
|       component: () => import('@/pages/intelligent/index'), | ||||
|       meta: { | ||||
|         index: 1, | ||||
|       }, | ||||
|       children: [ | ||||
|         { | ||||
|           name: 'intelligentHome', | ||||
|           path: 'home', | ||||
|           component: resolve => require(['@/pages/intelligent/home'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 公安
 | ||||
|           name: '/intelligent/publicSecurity', | ||||
|           path: 'publicSecurity', | ||||
|           component: resolve => require(['@/pages/intelligent/publicSecurity'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 公安-趋势各区量查询、案由
 | ||||
|           name: 'publicSecurityDetail1', | ||||
|           path: 'publicSecurityDetail1', | ||||
|           component: resolve => require(['@/pages/intelligent/publicSecurityDetail1'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 公安-强制措施
 | ||||
|           name: 'publicSecurityDetail2', | ||||
|           path: 'publicSecurityDetail2', | ||||
|           component: resolve => require(['@/pages/intelligent/publicSecurityDetail2'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 检察院
 | ||||
|           name: 'procuratorate', | ||||
|           path: 'procuratorate', | ||||
|           component: resolve => require(['@/pages/intelligent/procuratorate'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 法院
 | ||||
|           name: 'court', | ||||
|           path: 'court', | ||||
|           component: resolve => require(['@/pages/intelligent/court'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 司法
 | ||||
|           name: 'judicial', | ||||
|           path: 'judicial', | ||||
|           component: resolve => require(['@/pages/intelligent/judicial'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 涉案财物
 | ||||
|           name: 'money', | ||||
|           path: 'money', | ||||
|           component: resolve => require(['@/pages/intelligent/money'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 减刑假释
 | ||||
|           name: 'commutation', | ||||
|           path: 'commutation', | ||||
|           component: resolve => require(['@/pages/intelligent/commutation'], resolve), | ||||
|         }, | ||||
|         { | ||||
|           // 犯罪嫌疑人
 | ||||
|           name: 'criminalSuspect', | ||||
|           path: 'criminalSuspect', | ||||
|           component: resolve => require(['@/pages/intelligent/criminalSuspect'], resolve), | ||||
|         }, | ||||
|       ] | ||||
|     }, | ||||
|     // 反邪教专题
 | ||||
|     { | ||||
|       path: '/cult', | ||||
|  | ||||
 杨侠磊
						杨侠磊