日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue若依管理系统-实现管理员配置首页计数框/折线图

發布時間:2023/12/16 vue 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue若依管理系统-实现管理员配置首页计数框/折线图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 需求
  • 實現效果
  • 主要代碼
    • 前端首頁
    • 面板組組件:
    • 折線圖組件:
  • 詳細解釋
        • 面板組
        • 折線圖
      • 關于他們底下的數據
  • 后端傳來的json參考
  • 租戶配置的頁面
    • 后端,這里做個參考就好,每個項目都不一樣,就是把數據返回前端,樣子就是json上那個樣子

關鍵詞:Vue;若依管理系統;實現管理員配置 首頁計數框/折線圖 數據

需求

自定義若依首頁展示的數據內容,并且每個租戶能夠自行配置
沒實現之前的頁面:

實現效果

管理員配置展示信息(計數框選擇入庫、提交、核銷、采集。折線圖選發票數/轉出數。):

效果(頁面展示與用戶設置的選擇相同):

主要代碼

首頁+首頁中的組件 代碼:https://cloud.189.cn/web/share?code=MZfaQnqi6Nbm(訪問碼:0w36)

前端首頁

  • 主頁
  • <template><div className="dashboard-editor-container"><panel-group @handleSetLineChartData="handleSetLineChartData":count01="countList.count01":count-t0="countList.countT0":count-s0="countList.countS0":count05="countList.count05":count10="countList.count10":count15="countList.count15":count20="countList.count20":count25="countList.count25"/><!--折線圖--><el-row style="background:#fff; padding:16px 16px 0; margin-bottom:32px;"><line-chart :chart-data="lineChartData" /></el-row><!--用不到的幾個,因為我只用到了計數框和折線圖,其他就不讓顯示了--> <!-- <el-row :gutter="32">--> <!-- &lt;!&ndash;雷達圖&ndash;&gt;--> <!-- <el-col :xs="24" :sm="24" :lg="8">--> <!-- <div class="chart-wrapper">--> <!-- <raddar-chart />--> <!-- </div>--> <!-- </el-col>--> <!-- &lt;!&ndash;餅狀圖&ndash;&gt;--> <!-- <el-col :xs="24" :sm="24" :lg="8">--> <!-- <div class="chart-wrapper">--> <!-- <pie-chart />--> <!-- </div>--> <!-- </el-col>--> <!-- &lt;!&ndash;條形圖&ndash;&gt;--> <!-- <el-col :xs="24" :sm="24" :lg="8">--> <!-- <div class="chart-wrapper">--> <!-- <bar-chart />--> <!-- </div>--> <!-- </el-col>--> <!-- </el-row>--></div> </template><script> import {getConfigInfo,getIndexLinechartData,getIndexLinechartDataByMonth,getIndexSelectBoxCount01,getIndexSelectBoxCount05,getIndexSelectBoxCount10,getIndexSelectBoxCount15,getIndexSelectBoxCount20,getIndexSelectBoxCount25,getIndexSelectBoxCountS0,getIndexSelectBoxCountT0 } from "@/api/index"; // 面板組 import PanelGroup from './dashboard/PanelGroup' // 折線圖 import LineChart from './dashboard/LineChart' // 雷達圖 import RaddarChart from './dashboard/RaddarChart' // 餅狀圖 import PieChart from './dashboard/PieChart' // 條形圖 import BarChart from './dashboard/BarChart'export default {name: 'Index',components: {PanelGroup,LineChart,RaddarChart,PieChart,BarChart},data() {return {/** 當前配置信息,這里是存放獲取的租戶管理員配置的展示信息 */config: {},/** 面板組,該用戶配置的計數列表,這里你顯示什么需要先定義 */countList: {count01: null,countT0: null,countS0: null,count05: null,count10: null,count15: null,count20: null,count25: null,},// 該用戶選擇的面板組(數組)selected: null,/** 折線圖 */lineChartData: {expectedData: [200, 192, 120, 144, 160, 130, 140],actualData: [180, 160, 151, 106, 145, 150, 130],dateData: ["1", "2", "3", "4", "5", "6", "7"]},}},created() {/** 2022-5-31,初始化租戶參數 */this.configInfo();},methods: {/** 2022-5-27,獲取接口參數信息,這里是配置的,我做了管理員選項,讓每個租戶管理自己選要展示的框 */configInfo(){getConfigInfo().then(response => {this.config = response.data;this.selected = this.config.selectBoxCount.split(",");/** 2022-5-31,獲取面板組框:獲取該租戶設置了展示哪幾個計數框 */this.check(this.selected);/** 2022-5-31,獲取折線圖數據 */this.getLinechardData();});},/** 判斷當前選中了那些,注:這是面板組的,getIndexSelectBoxCount01-xx,這些方法是每個框各自獲取自己的框的數據,因為是配置的,就分別獲取的 */check(selected) {for (const s of selected) {switch (s) {case "01":getIndexSelectBoxCount01().then(response => {this.countList.count01 = parseInt(response.data);});break;case "S0":getIndexSelectBoxCountS0().then(response => {this.countList.countT0 = parseInt(response.data);});break;case "T0":getIndexSelectBoxCountT0().then(response => {this.countList.countS0 = parseInt(response.data);});break;case "05":getIndexSelectBoxCount05().then(response => {this.countList.count05 = parseInt(response.data);});break;case "10":getIndexSelectBoxCount10().then(response => {this.countList.count10 = parseInt(response.data)});break;case "15":getIndexSelectBoxCount15().then(response => {this.countList.count15 = parseInt(response.data);});break;case "20":getIndexSelectBoxCount20().then(response => {this.countList.count20 = parseInt(response.data);});break;case "25":getIndexSelectBoxCount25().then(response => {this.countList.count25 = parseInt(response.data);});break;}}},/** 獲取折現圖的數據,這里也是管理員可配置,所以用到了判斷 */getLinechardData() {getIndexLinechartDataByMonth(this.config.selectLine).then(response => {this.lineChartData = response.data;// 當前租戶設置中選擇展示的折線圖(1:第一種,2:第二種)if (this.config.selectLine === '1') {this.lineChartData.selectName = ['發票數','核銷數']} else {this.lineChartData.selectName = ['發票數','轉出數']}})},// 調用變化線型圖,給4個數據卡片調用的,卡片調用的時候就加載卡片傳過來的數據handleSetLineChartData(type) {// 根據子集的調用切換對應的數據// this.lineChartData = lineChartData[type]},} } </script><style lang="scss" scoped> .dashboard-editor-container {padding: 32px;background-color: rgb(240, 242, 245);position: relative;.chart-wrapper {background: #fff;padding: 16px 16px 0;margin-bottom: 32px;} }@media (max-width: 1024px) {.chart-wrapper {padding: 8px;} } </style>
  • 在webStorm找到src/views/dashboard,里面就是首頁這幾個組件
  • 面板組組件:

    <template><el-row :gutter="40" class="panel-group"><el-col v-show="count01 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-people"><svg-icon icon-class="nested" class-name="card-panel-icon"/></div><div class="card-panel-description"><div class="card-panel-text">入庫</div><count-to :start-val="0" :end-val="count01" :duration="2600" class="card-panel-num" /></div></div></el-col><el-col v-show="countT0 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-message"><svg-icon icon-class="nested" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">提交</div><count-to :start-val="0" :end-val="countT0" :duration="2600" class="card-panel-num" /></div></div></el-col><el-col v-show="countS0 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-money"><svg-icon icon-class="post" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">核銷</div><count-to :start-val="0" :end-val="countS0" :duration="3200" class="card-panel-num" /></div></div></el-col><el-col v-show="count05 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-shopping"><svg-icon icon-class="xy-choice2" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">采集</div><count-to :start-val="0" :end-val="count05" :duration="2600" class="card-panel-num" /></div></div></el-col><el-col v-show="count10 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-shopping"><svg-icon icon-class="nested" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">認證提交</div><count-to :start-val="0" :end-val="count10" :duration="2600" class="card-panel-num" /></div></div></el-col><el-col v-show="count15 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-shopping"><svg-icon icon-class="nested" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">驗收</div><count-to :start-val="0" :end-val="count15" :duration="2600" class="card-panel-num" /></div></div></el-col><el-col v-show="count20 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-shopping"><svg-icon icon-class="nested" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">認證</div><count-to :start-val="0" :end-val="count20" :duration="2600" class="card-panel-num" /></div></div></el-col><el-col v-show="count25 != null" :xs="12" :sm="12" :lg="6" class="card-panel-col"><div class="card-panel"><div class="card-panel-icon-wrapper icon-shopping"><svg-icon icon-class="nested" class-name="card-panel-icon" /></div><div class="card-panel-description"><div class="card-panel-text">轉出</div><count-to :start-val="0" :end-val="count25" :duration="2600" class="card-panel-num" /></div></div></el-col></el-row> </template><script> import CountTo from 'vue-count-to'export default {props:{count01: {type: Number, default: 0},countT0: {type: Number, default: 0},countS0: {type: Number, default: 0},count05: {type: Number, default: 0},count10: {type: Number, default: 0},count15: {type: Number, default: 0},count20: {type: Number, default: 0},count25: {type: Number, default: 0},},components: {CountTo} } </script><style lang="scss" scoped> .panel-group {margin-top: 18px;.card-panel-col {margin-bottom: 32px;}.card-panel {height: 108px;font-size: 12px;position: relative;overflow: hidden;color: #666;background: #fff;box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);border-color: rgba(0, 0, 0, .05);&:hover {.card-panel-icon-wrapper {color: #fff;}.icon-people {background: #40c9c6;}.icon-message {background: #36a3f7;}.icon-money {background: #f4516c;}.icon-shopping {background: #34bfa3}}.icon-people {color: #40c9c6;}.icon-message {color: #36a3f7;}.icon-money {color: #f4516c;}.icon-shopping {color: #34bfa3}.card-panel-icon-wrapper {float: left;margin: 14px 0 0 14px;padding: 16px;transition: all 0.38s ease-out;border-radius: 6px;}.card-panel-icon {float: left;font-size: 48px;}.card-panel-description {float: right;font-weight: bold;margin: 26px;margin-left: 0px;.card-panel-text {line-height: 18px;color: rgba(0, 0, 0, 0.45);font-size: 16px;margin-bottom: 12px;}.card-panel-num {font-size: 20px;}}} }@media (max-width:550px) {.card-panel-description {display: none;}.card-panel-icon-wrapper {float: none !important;width: 100%;height: 100%;margin: 0 !important;.svg-icon {display: block;margin: 14px auto !important;float: none !important;}} } </style>

    折線圖組件:

    <template><div :class="className" :style="{height:height,width:width}" /> </template><script> import echarts from 'echarts' require('echarts/theme/macarons') // echarts theme import resize from './mixins/resize'export default {mixins: [resize],props: {className: {type: String,default: 'chart'},width: {type: String,default: '100%'},height: {type: String,default: '350px'},autoResize: {type: Boolean,default: true},chartData: {type: Object,required: true,}},data() {return {chart: null,}},watch: {chartData: {deep: true,handler(val) {// console.log('觸發了Line組件調用x軸初始化')this.setOptions(val)}}},mounted() {this.$nextTick(() => {this.initChart()})},created() {this.$nextTick(() => {this.initChart()})},beforeDestroy() {if (!this.chart) {return}this.chart.dispose()this.chart = null},methods: {initChart() {this.chart = echarts.init(this.$el, 'macarons')this.setOptions(this.chartData)},setOptions({ dateData, firstData, secondData, selectName } = {}) {this.chart.setOption({xAxis: {data: dateData,boundaryGap: false,axisTick: {show: false}},grid: {left: 10,right: 10,bottom: 20,top: 30,containLabel: true},tooltip: {trigger: 'axis',axisPointer: {type: 'cross'},padding: [5, 10]},yAxis: {axisTick: {show: false}},legend: {// data: ['發票數', '核銷數']data: selectName},// 圖表描述series: [{name: selectName?.[0], itemStyle: {normal: {color: '#FF005A',lineStyle: {color: '#FF005A',width: 2}}},// 柔性過過渡smooth: true,type: 'line',data: firstData,animationDuration: 2800,animationEasing: 'cubicInOut'},{name: selectName?.[1],smooth: true,type: 'line',itemStyle: {normal: {color: '#3888fa',lineStyle: {color: '#3888fa',width: 2},areaStyle: {color: '#f3f8ff'}}},data: secondData,animationDuration: 2800,animationEasing: 'quadraticOut'}]})}} } </script>

    詳細解釋

    面板組

    大概說一下,實現面板組的話,需要先在組件里面寫好,你都要有哪些框,先在頁面寫好,通過v-show控制其是否渲染

    可以看到這里面都用了v-show,之后如果管理員沒有選中的話,返回到前端肯定是null,那樣就不會顯示了,從而實現根據配置展示

    折線圖


    這個方法,就是對應首頁的折線圖的標題。data: [‘發票數’, ‘核銷數’]這樣標題就是固定的,為了實現需求,我們需要通過后端傳過來,這個selectName就是折線圖的標題數組

    首頁把這個selectName傳遞給組件

    這是用到了父傳子,可以看到:chart-data=“lineChartData”,將父組件的數據傳給了折線圖組件

    關于他們底下的數據

    比如折線圖,原來的數據如下,這些是寫死的,所以通過后端傳入的數據改一下就行。折線圖不是有兩個標題嗎,firstData:就是第一個標題的數值;secondData:就是第二個標題的;dateData:就是底下的數(天數)

    lineChartData: {firstData: [200, 192, 120, 144, 160, 130, 140],secondData: [180, 160, 151, 106, 145, 150, 130],dateData: ["1", "2", "3", "4", "5", "6", "7"]},

    把上面固定的數據通過后端傳過來,就能實現租戶自定義了

    這塊就是后端返回的數據,賦值給了這些數據:

    后端傳來的json參考

    面板組 {"msg":"操作成功","code":200,"data":"0"} 折線圖 {"msg": "獲取數據成功!","code": 200,"data": {"dateData": ["2021-07","2021-08","2021-09","2021-10","2021-11","2021-12","2022-01","2022-02","2022-03","2022-04","2022-05","2022-06","本月"],"firstData": ["0","0","0","0","0","0","0","0","0","0","0","0","0"],"secondData": ["0","0","0","0","0","0","0","0","0","0","0","0","0"]} } 管理員配置的 {"selectBoxCount": "05,01,S0,T0","selectLine": "2", }
  • js
  • /*** 2022-5-27,獲取接口參數*/ export function getConfigInfo(){return request({url: 'invoice/invoice/getConfigInfo',method: 'get',}) } /*** 2022-5-27,首頁展示面板圖*/ export function getIndexSelectBoxCount01(){return request({url: 'invoice/invoice/getIndexSelectBoxCount01',method: 'get',}) } export function getIndexSelectBoxCountS0(){return request({url: 'invoice/invoice/getIndexSelectBoxCountS0',method: 'get',}) } export function getIndexSelectBoxCountT0(){return request({url: 'invoice/invoice/getIndexSelectBoxCountT0',method: 'get',}) } export function getIndexSelectBoxCount05(){return request({url: 'invoice/invoice/getIndexSelectBoxCount05',method: 'get',}) } export function getIndexSelectBoxCount10(){return request({url: 'invoice/invoice/getIndexSelectBoxCount10',method: 'get',}) } export function getIndexSelectBoxCount15(){return request({url: 'invoice/invoice/getIndexSelectBoxCount15',method: 'get',}) } export function getIndexSelectBoxCount20(){return request({url: 'invoice/invoice/getIndexSelectBoxCount20',method: 'get',}) } export function getIndexSelectBoxCount25(){return request({url: 'invoice/invoice/getIndexSelectBoxCount25',method: 'get',}) }//查詢首頁折線圖 當前周數據 export function getIndexLinechartData(){return request({url: '/invoice/invoice/getindexlinechart',method: 'get'}) }//查詢首頁折線圖 當年數據 export function getIndexLinechartDataByMonth(query){return request({url: '/invoice/invoice/getIndexLineChartByMonth',method: 'get',params: {type: query}}) }

    租戶配置的頁面

  • template
  • <!--首頁參數--><el-col :span="24"><el-divider content-position="center">首頁參數</el-divider></el-col><el-col :span="24"><label style="display: flex;margin-bottom: 20px">首頁中展示的計數框</label><el-checkbox-group v-model="checkboxGroup" :min="1" :max="4" size="small" @change="handleUpdateCheck"><el-col :span="24"><el-checkbox label="入庫" border></el-checkbox><el-checkbox label="提交" border></el-checkbox><el-checkbox label="核銷" border></el-checkbox></el-col><el-col :span="24" style="display: flex; margin-top: 5px"><el-checkbox label="采集" border></el-checkbox><el-checkbox label="認證提交" border></el-checkbox><el-checkbox label="驗收" border></el-checkbox><el-checkbox label="認證" border></el-checkbox><el-checkbox label="轉出" border></el-checkbox></el-col></el-checkbox-group></el-col><el-col :span="24"><label style="display: flex;margin-bottom: 20px; margin-top: 20px">首頁中展示的折線圖</label><el-col :span="24"><el-radio-group v-model="form.selectLine" size="small" @change="handleUpdateLineCheck"><el-radio label="1" border>發票數/核銷數</el-radio><el-radio label="2" border>發票數/轉出數</el-radio></el-radio-group></el-col></el-col>
  • data
  • data{checkboxGroup: [], }
  • methods
  • methods: {/** 2022-5-27,kxb,獲得并計算當前選中的首頁計數框的值 */setSelectCountBox(v){this.checkboxGroup = [];for (let node of v) {if (node === "01") this.checkboxGroup.push("入庫");if (node === "S0") this.checkboxGroup.push("提交");if (node === "T0") this.checkboxGroup.push("核銷");if (node === "05") this.checkboxGroup.push("采集");if (node === "10") this.checkboxGroup.push("認證提交");if (node === "15") this.checkboxGroup.push("驗收");if (node === "20") this.checkboxGroup.push("認證");if (node === "25") this.checkboxGroup.push("轉出");}},// 多選框改變調用handleUpdateCheck(checkeds){let str = "";for (let check of checkeds) {switch (check) {case "入庫":str === "" ? str = "01" : str += ",01"break;case "提交":str === "" ? str = "S0" : str += ",S0"break;case "核銷":str === "" ? str = "T0" : str += ",T0"break;case "采集":str === "" ? str = "05" : str += ",05"break;case "認證提交":str === "" ? str = "10" : str += ",10"break;case "驗收":str === "" ? str = "15" : str += ",15"break;case "認證":str === "" ? str = "20" : str += ",20"break;case "轉出":str === "" ? str = "25" : str += ",25"break;}}this.form.selectBoxCount = str;},handleUpdateLineCheck(checked){this.form.selectLine = checked.toString();}, }

    存到sql的數據長這個樣子

    后端,這里做個參考就好,每個項目都不一樣,就是把數據返回前端,樣子就是json上那個樣子

  • controller
  • /*** 2022-5-27,獲取當前用戶展示的顯示框的信息。區別:根據后綴01、S0、T0來區分*/// 獲取接口參數@GetMapping("getConfigInfo")public AjaxResult getConfigInfo(){YsIvInterfacelinemsg ysIvInterfacelinemsg = ysIvInterfacelinemsgService.selectCurIvInterfaceLinemsg();RemoteYsIvInterfacelinemsg remoteYsIvInterfacelinemsg = new RemoteYsIvInterfacelinemsg();BeanUtils.copyBeanProp(remoteYsIvInterfacelinemsg, ysIvInterfacelinemsg);return AjaxResult.success(ysIvInterfacelinemsg);}// 入庫@GetMapping("getIndexSelectBoxCount01")public AjaxResult getIndexSelectBoxCount01(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_NOTYET));}// 提交@GetMapping("getIndexSelectBoxCountS0")public AjaxResult getIndexSelectBoxCountS0(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_SUBMIT));}// 核銷@GetMapping("getIndexSelectBoxCountT0")public AjaxResult getIndexSelectBoxCountT0(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_DESTROY));}// 采集@GetMapping("getIndexSelectBoxCount05")public AjaxResult getIndexSelectBoxCount05(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_CONFIRMED));}// 認證提交@GetMapping("getIndexSelectBoxCount10")public AjaxResult getIndexSelectBoxCount10(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_AUTH_SUBMIT));}// 驗收@GetMapping("getIndexSelectBoxCount15")public AjaxResult getIndexSelectBoxCount15(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_AUTH_CHECK));}// 認證@GetMapping("getIndexSelectBoxCount20")public AjaxResult getIndexSelectBoxCount20(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_AUTH));}// 轉出@GetMapping("getIndexSelectBoxCount25")public AjaxResult getIndexSelectBoxCount25(){return AjaxResult.success(ysInvoiceService.getIndexSelectBoxCount(InvoiceConstants.OPERATE_STATUS_TRANSFER));}/** 獲取折線圖數據 */@GetMapping("/getIndexLineChartByMonth")public AjaxResult getIndexLineChart(@RequestParam String type){Map<String,Object> map = ysInvoiceService.getOrSetLineCountByRedis(type);return AjaxResult.success("獲取數據成功!", map);}
  • service
  • /*** 2022-5-27,獲取最上方的采集、提交等等的數量* @return*/public Long getIndexSelectBoxCount(String status){ArrayList<String> condition = new ArrayList<>();switch (status){case InvoiceConstants.OPERATE_STATUS_NOTYET:// 入庫過condition.add(InvoiceConstants.OPERATE_STATUS_NOTYET);condition.add(InvoiceConstants.OPERATE_STATUS_SUBMIT);condition.add(InvoiceConstants.OPERATE_STATUS_DESTROY);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_NOTYET, condition);case InvoiceConstants.OPERATE_STATUS_SUBMIT:// 提交過condition.add(InvoiceConstants.OPERATE_STATUS_NOTYET);condition.add(InvoiceConstants.OPERATE_STATUS_SUBMIT);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_SUBMIT, condition);case InvoiceConstants.OPERATE_STATUS_DESTROY:// 核銷過condition.add(InvoiceConstants.OPERATE_STATUS_DESTROY);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_DESTROY,condition);case InvoiceConstants.OPERATE_STATUS_CONFIRMED:// 采集過condition.add(InvoiceConstants.OPERATE_STATUS_CONFIRMED);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_SUBMIT);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_CHECK);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH);condition.add(InvoiceConstants.OPERATE_STATUS_TRANSFER);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_CONFIRMED, condition);case InvoiceConstants.OPERATE_STATUS_AUTH_SUBMIT:// 認證提交過condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_SUBMIT);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_CHECK);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH);condition.add(InvoiceConstants.OPERATE_STATUS_TRANSFER);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_AUTH_SUBMIT, condition);case InvoiceConstants.OPERATE_STATUS_AUTH_CHECK:// 驗收過condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_CHECK);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH);condition.add(InvoiceConstants.OPERATE_STATUS_TRANSFER);case InvoiceConstants.OPERATE_STATUS_AUTH:// 認證過condition.add(InvoiceConstants.OPERATE_STATUS_AUTH);condition.add(InvoiceConstants.OPERATE_STATUS_TRANSFER);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_AUTH, condition);case InvoiceConstants.OPERATE_STATUS_TRANSFER:// 轉出過condition.add(InvoiceConstants.OPERATE_STATUS_TRANSFER);return getOrSetBoxCountByRedis(InvoiceConstants.OPERATE_STATUS_TRANSFER, condition);}return 0L;}/*** 通過redis獲取,或存到redis* @param status* @return*/private Long getOrSetBoxCountByRedis(String status, ArrayList<String> condition){String key = "index_SelectBox:" + SecurityUtils.getEnterpriseId();// 1.如果緩存存在,則從緩存取if (RedisHashUtils.hExist(key,status)) {return (Long) RedisHashUtils.hGet(key, status);}// 2.如果緩存不存在,則從數據庫取YsInvoice invoice = new YsInvoice();invoice.getParams().put("operateStatus",condition);Long value = ysInvoiceMapper.selectBoxCount(invoice);RedisHashUtils.hSetExpireOneDay(key, status, value);return value;}/*** 獲取首頁折線圖數據 最近7天發票數據* invoiceData:[],* destroyedData:[],* dateData:[]** @return*/@Overridepublic Map<String, Object> getIndexLineChartByMonth(String type) {Map<String, Object> dataMap = new LinkedHashMap<>();List<String> dateData = new ArrayList<>();List<Long> fisstDataList = new ArrayList<>();List<Long> secondDataList = new ArrayList<>();Long enterpriseId = SecurityUtils.getEnterpriseId();for (int i = 12; i >= 0; i--) {String month = DateUtils.getNowBeforeMonthStr2(i);if (i == 0) {dateData.add("本月");} else {dateData.add(month);}// 1.查詢當前發票數YsInvoice invoice = new YsInvoice();ArrayList<String> condition = new ArrayList<>();// 2.查詢當前核銷數/轉出數Long first = 0L;Long second = 0L;if ("1".equals(type)) {condition.add(InvoiceConstants.OPERATE_STATUS_NOTYET);condition.add(InvoiceConstants.OPERATE_STATUS_SUBMIT);condition.add(InvoiceConstants.OPERATE_STATUS_DESTROY);invoice.getParams().put("operateStatus", condition);invoice.getParams().put("startDate", month + "-01");invoice.getParams().put("endDate",month + "-31");first = ysInvoiceMapper.selectLineCount(invoice);second = ysInvoiceLogMapper.selectByTypeBetween(InvoiceConstants.OPERATE_STATUS_DESTROY,month + "-01",month + "-31", enterpriseId);} else if ("2".equals(type)) {condition.add(InvoiceConstants.OPERATE_STATUS_NOTYET);condition.add(InvoiceConstants.OPERATE_STATUS_CONFIRMED);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_SUBMIT);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH_CHECK);condition.add(InvoiceConstants.OPERATE_STATUS_AUTH);condition.add(InvoiceConstants.OPERATE_STATUS_TRANSFER);invoice.getParams().put("operateStatus", condition);invoice.getParams().put("startDate", month + "-01");invoice.getParams().put("endDate",month + "-31");first = ysInvoiceMapper.selectLineCount(invoice);second = ysInvoiceLogMapper.selectByTypeBetween(InvoiceConstants.OPERATE_STATUS_TRANSFER,month + "-01",month + "-31", enterpriseId);}fisstDataList.add(first);secondDataList.add(second);}dataMap.put("dateData", dateData);dataMap.put("firstData", fisstDataList);dataMap.put("secondData", secondDataList);return dataMap;}/*** 獲取當前折線圖的數據或從redis獲取* @param type 當前用戶選擇的類型* @return*/@Overridepublic Map<String, Object> getOrSetLineCountByRedis(String type){String key = "index_SelectLine:" + SecurityUtils.getEnterpriseId();// 1.如果緩存存在,則從緩存取if (RedisHashUtils.hExist(key,type)) {return (Map<String, Object>) RedisHashUtils.hGet(key, type);}// 2.如果緩存不存在,則從數據庫取Map<String, Object> map = getIndexLineChartByMonth(type);// 當前日期到當月最后一天的秒數LocalDateTime midnight = LocalDateTime.now().plusMonths(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);long between = ChronoUnit.SECONDS.between(LocalDateTime.now(), midnight);RedisHashUtils.hSetExpireOneMonth(key, type, map, between);return map;}
  • 工具類
  • public class RedisHashUtils {private final static RedisService redisService = SpringUtils.getBean(RedisService.class);/*** 直接以map集合的方式添加key對應的值* @param key map中key已經存在,覆蓋替換* @param map map中key不存在,新增* @return*/public static Boolean hmSet(final String key, Map map) {boolean result = false;try {redisService.redisTemplate.opsForHash().putAll(key, map);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 以map集合的方式添加key對應的值,并緩存一天時間*/public static Boolean hmSetExpireOneDay(final String key, Map map) {boolean result = false;try {redisService.redisTemplate.opsForHash().putAll(key, map);redisService.redisTemplate.expire(key, 1, TimeUnit.DAYS);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 新增hashMap值* @param key 為Redis的key* @param mapKey 為key對應的map值的key* @param value 為key對應的map值的值* @return*/public static Boolean hSet(String key, String mapKey, Object value){boolean result = false;try {redisService.redisTemplate.opsForHash().put(key, mapKey, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 新增hashMap值,并緩存一天時間*/public static Boolean hSetExpireOneDay(String key, String mapKey, Object value){boolean result = false;try {redisService.redisTemplate.opsForHash().put(key, mapKey, value);redisService.redisTemplate.expire(key, 86400, TimeUnit.SECONDS);result = true;} catch (Exception e) {e.printStackTrace();}return result;}public static Boolean hSetExpireOneMonth(String key, String mapKey, Object value, Long time){boolean result = false;try {redisService.redisTemplate.opsForHash().put(key, mapKey, value);redisService.redisTemplate.expire(key, time, TimeUnit.SECONDS);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 以hashMap集合的方式添加key對應的值,并緩存到指定的時間*/public static Boolean hSetExpireCustomize(final String key, String mapKey, Object value, Date date) {boolean result = false;try {redisService.redisTemplate.opsForHash().put(key, mapKey, value);redisService.redisTemplate.expireAt(key, date);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 獲取hash緩存* @param key redis的key* @param filed hash的map的key* @return*/public static Object hGet(String key, Object filed) {return redisService.redisTemplate.opsForHash().get(key, filed);}/*** 當前key是否存在value*/public static Boolean hExist(String key, String mapName){return redisService.redisTemplate.opsForHash().hasKey(key, mapName);}/*** 以集合的方式獲取這些鍵對應的map* @param key redis的key* @param list 將hash中的key存到list當中查找* @return*/public static List HmultiGet(String key, List list) {return redisService.redisTemplate.opsForHash().multiGet(key, list);}/*** 刪除整個對應key的redis數據*/public static Boolean DelAll(String key) {return redisService.redisTemplate.delete(key);}/*** 刪除hash中某個對應key的數據* @param key redis的key* @param filed key* @return*/public static Long HDelete(String key, Object filed){return redisService.redisTemplate.opsForHash().delete(key, filed);}/*** redis的hash自助工具:先判空,有數據就刪除,重新寫入;否則,直接寫入* @param key redis的key* @param filed 數據的key* @param obj 數據的value*/public static void HelpMeSet(String key, Object filed, Object obj){if (RedisHashUtils.hExist(key, String.valueOf(filed))) {RedisHashUtils.HDelete(key, String.valueOf(filed));}RedisHashUtils.hSet(key, String.valueOf(filed), obj);} }

    總結

    以上是生活随笔為你收集整理的Vue若依管理系统-实现管理员配置首页计数框/折线图的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    中文av字幕在线观看 | 91av视频在线免费观看 | 九九热1| 久久免费毛片 | 成人免费在线看片 | 国产一级一级国产 | 欧美日韩激情视频8区 | 毛片网在线 | 国产小视频免费观看 | 欧美日韩高清一区二区 | 麻豆视频免费在线播放 | 日韩成人精品在线观看 | 欧美日韩精品免费观看 | 欧美日韩国产综合网 | 国产午夜精品一区二区三区四区 | 麻豆视频www| 国产精品综合av一区二区国产馆 | 一级片观看 | 97精品伊人 | 色视频 在线 | 中文字幕一区二区三区乱码在线 | 美女视频免费一区二区 | 91亚洲视频在线观看 | 天天射天天添 | 婷婷电影网 | 97在线观看视频 | 亚洲a资源 | 天堂av最新网址 | 999电影免费在线观看 | www看片网站| 久久久久久久看片 | 久久精品一区二区三区中文字幕 | 中文字幕一区二区三区在线播放 | 国产成人精品av | 国产福利小视频在线 | 国产黄在线播放 | 在线观看黄色的网站 | 最近中文字幕mv免费高清在线 | 日本99干网 | 国产精品1区2区在线观看 | 亚洲激情 | 久草在线费播放视频 | 久久久精品高清 | 亚洲精品日韩在线观看 | 91成品视频 | 久久国产亚洲视频 | 热久久国产 | 九九热只有这里有精品 | 中文字幕日本在线 | 黄色官网在线观看 | www.伊人网| 国产尤物视频在线 | 天天干天天弄 | 99免费| 久久爱导航 | 天天操天天色综合 | 日韩啪啪小视频 | 成人黄色一级视频 | 91成人短视频在线观看 | 亚洲精品视频免费在线观看 | 超碰在线中文字幕 | 久草视频在线免费 | av不卡中文字幕 | 国产成人av电影 | 黄色三级久久 | 97人人模人人爽人人少妇 | 亚洲成人动漫在线观看 | 亚洲综合国产精品 | 狠狠色丁香久久婷婷综合五月 | 国产高清视频在线播放 | 日韩在线字幕 | 亚洲国产成人精品久久 | 成人毛片在线视频 | 国产视频 久久久 | 亚洲经典中文字幕 | 免费h精品视频在线播放 | 在线www色 | 日日爱夜夜爱 | 久久永久视频 | 国产精品久久嫩一区二区免费 | 麻豆影视在线免费观看 | 91国内在线视频 | 日本h在线播放 | 天天射天天射天天射 | 亚洲黄色小说网址 | 国产另类av | 色在线国产 | 国产1区在线 | 四虎国产精品成人免费4hu | 一区二区三区 中文字幕 | 五月婷婷天堂 | 91精品国产99久久久久 | 91c网站色版视频 | 日韩精品中文字幕av | 91丨九色丨91啦蝌蚪老版 | 99久热在线精品 | 九九热99视频 | 亚洲一一在线 | 91精品网站在线观看 | 91刺激视频 | 美国av大片 | 久久电影国产免费久久电影 | www.久久成人 | 天天操福利视频 | 456免费视频| 国产成人精品一区二区三区福利 | 国产日产精品久久久久快鸭 | 99久久精品免费看国产四区 | 黄色一级在线免费观看 | 久久字幕网 | 精品一区二区三区电影 | 久久久国产精品一区二区中文 | 九九热只有这里有精品 | 97理论片| 日韩视频www | 91亚洲精品久久久 | 色丁香久久 | 九9热这里真品2 | 国产高清免费av | 亚洲欧美国产精品va在线观看 | 欧美日本啪啪无遮挡网站 | 日韩av成人在线观看 | 午夜久久电影网 | 韩国av一区二区三区 | 日韩欧美视频一区二区三区 | 五月婷婷影视 | 亚洲精品在线观看的 | 天天曰视频 | 久久亚洲欧美 | 国产精品99久久久久久宅男 | 在线看国产一区 | av大全在线观看 | 欧美va天堂va视频va在线 | 91禁在线观看 | 99精品免费| 国产成人一区二区三区影院在线 | 最新中文字幕视频 | 精品国产欧美一区二区 | 99超碰在线观看 | 久久久久久久免费观看 | 精品一二三四在线 | 黄色性av| 日批视频 | 国产精品电影一区二区 | 久久久国产电影 | 精品99在线 | 99久久久成人国产精品 | 黄色在线成人 | 欧美激情综合五月色丁香 | 麻豆国产电影 | 不卡电影一区二区三区 | 日韩 在线a | 国产黄网在线 | 久久精品网站免费观看 | 涩涩网站在线看 | 国产亚洲精品bv在线观看 | 亚洲欧美综合精品久久成人 | 成人免费观看视频网站 | 成人三级网址 | 91资源在线 | 97超碰人人网 | 丁香五月缴情综合网 | 久草综合在线 | 黄色在线观看免费网站 | 亚洲精品自拍视频在线观看 | 免费国产在线精品 | 亚洲激情电影在线 | 天天干天天干 | 久久精品视频3 | 精品国产福利在线 | 成年人免费在线观看 | 国产色a在线观看 | 久久精品一区二区三区中文字幕 | 久久国产亚洲精品 | 精品亚洲国产视频 | 国产精品久久久久久久久久久不卡 | 可以免费看av | 日本久久电影 | 九九热国产视频 | 久久一区二区三区日韩 | 日韩在线视频一区二区三区 | 又湿又紧又大又爽a视频国产 | 久久不射网站 | 精品福利网站 | 亚洲精品一区二区18漫画 | 亚洲高清视频在线观看 | 99热9| 国产视频 亚洲视频 | 九九热只有这里有精品 | 看av在线| 91精品办公室少妇高潮对白 | 亚洲精品网址在线观看 | 免费在线看成人av | 69视频永久免费观看 | 国产在线中文字幕 | 中文字幕欧美日韩va免费视频 | 中文字幕丝袜制服 | 不卡的av在线播放 | 99热高清| 亚洲国产精品成人综合 | 亚洲成a人片在线观看网站口工 | 天天干天天上 | 韩国av免费观看 | 国产日产精品一区二区三区四区 | 婷婷五天天在线视频 | 91久久精品日日躁夜夜躁国产 | 欧美影片 | 在线观看完整版 | 国产精品久久久久一区 | 中文字幕免费一区二区 | 亚洲视频在线观看免费 | 中文字幕av最新更新 | www操操操 | 91精品婷婷国产综合久久蝌蚪 | 亚洲成人家庭影院 | 麻花豆传媒mv在线观看网站 | 最新中文字幕 | 免费热情视频 | 在线成人中文字幕 | 亚洲aaa级| 在线免费三级 | 国产免费一区二区三区网站免费 | 久久久久久蜜桃一区二区 | 91网站在线视频 | 夜夜躁狠狠躁日日躁视频黑人 | 日日操日日 | 久久久久久久免费 | 麻豆视传媒官网免费观看 | 精品中文字幕在线播放 | 超碰公开在线观看 | 狠狠躁夜夜a产精品视频 | 久久久影院官网 | 日韩大陆欧美高清视频区 | 国产 色 | 成人欧美一区二区三区在线观看 | 97视频入口免费观看 | 亚洲精品永久免费视频 | 观看免费av | 国产精品无 | 夜夜爽88888免费视频4848 | 久久久91精品国产一区二区精品 | 亚洲精品视频在线观看免费视频 | 欧美精品久久 | 国产色女人 | 久久精品第一页 | 国产综合精品一区二区三区 | 国产视频一区二区在线观看 | 久久久91精品国产一区二区三区 | 色狠狠干 | 久久色视频| 97人人添人澡人人爽超碰动图 | 国色综合| 成人黄色免费观看 | 久久久国产精品一区二区中文 | 九色视频网 | 黄色国产区 | 国产精品18久久久久久首页狼 | 国产一区免费在线 | av在线播放中文字幕 | 欧美日韩大片在线观看 | 天天射一射 | 久久国色夜色精品国产 | 欧美亚洲一区二区在线 | 黄色大全免费观看 | 国产专区欧美专区 | 亚洲蜜桃av| 天堂av一区二区 | 在线亚洲午夜片av大片 | 久久精品国产精品亚洲精品 | 在线观看第一页 | 中文国产字幕 | 92av视频| 91字幕| 久久精品牌麻豆国产大山 | 深爱激情站 | 婷婷免费视频 | 99这里只有久久精品视频 | 97av影院 | 亚洲激情av | 97中文字幕| 91大神精品视频在线观看 | 美女网色| 国产日产精品一区二区三区四区的观看方式 | 国产免费成人av | 一区二区三区四区在线免费观看 | 久久99国产精品自在自在app | 91亚洲永久精品 | 日韩精品亚洲专区在线观看 | 97碰碰精品嫩模在线播放 | 国产精品女主播一区二区三区 | 五月天狠狠操 | 国产在线高清 | 国产精品男女 | 天天操夜夜做 | 久久久国产成人 | 国产在线精品一区二区不卡了 | 成人资源在线观看 | 91成人网在线观看 | 亚洲精品永久免费视频 | 国产精品久久久久aaaa | av免费电影网站 | 日韩在线三级 | 2023年中文无字幕文字 | 美女性爽视频国产免费app | 欧美日韩国产精品一区二区三区 | 天天操天天色天天射 | 人人玩人人添人人 | 久久久综合电影 | 1024手机基地在线观看 | 97精品在线观看 | 久色网| 免费a级观看 | av高清在线观看 | 午夜国产一区二区 | 色综合色综合久久综合频道88 | 久久伊人国产精品 | 成av在线 | 欧美在线视频一区二区三区 | 在线观看免费av网站 | 国产精品久久久区三区天天噜 | 成人a在线观看高清电影 | 色小说在线 | 欧美日韩1区 | 国产精品乱码一区二三区 | 国产精品久久中文字幕 | 99视频在线观看一区三区 | 四虎影视成人精品国库在线观看 | 久草在线观看视频免费 | 午夜精品电影一区二区在线 | 国产精品9999久久久久仙踪林 | 国外av在线 | 人人精久 | 国产精品99久久久久人中文网介绍 | 热久精品 | 人人插人人| 国产成人一区二区三区久久精品 | 久久一视频 | 欧美日韩一区二区三区在线免费观看 | 五月婷婷中文网 | 国产免费大片 | 日韩精品视频久久 | 黄色片网站免费 | 蜜臀av网址 | 久久精品之 | 精品国产精品一区二区夜夜嗨 | 免费av的网站| 五月天综合婷婷 | 97av在线视频免费播放 | 在线看中文字幕 | av网站手机在线观看 | 国产精品一区二区三区在线免费观看 | 黄色aa久久 | 欧美精品首页 | www亚洲国产 | 日韩三级免费观看 | www欧美xxxx| 免费观看性生交 | 麻豆精品传媒视频 | 又黄又爽又色无遮挡免费 | 精品在线一区二区三区 | 在线观看国产 | 国产情侣一区 | 97精品国自产拍在线观看 | 国产黄色资源 | 久久国产精品一二三区 | 日韩在线视频一区二区三区 | 日韩一级黄色大片 | 91九色蝌蚪视频在线 | 亚洲综合视频在线播放 | 国产又粗又猛又爽又黄的视频先 | 成人一区二区在线观看 | 不卡的av中文字幕 | 久久久久久久影院 | 狠狠色丁香九九婷婷综合五月 | 亚洲三级av | 伊人五月 | 五月激情电影 | 久久久久久97三级 | 午夜的福利 | av在线等 | 日韩影视在线观看 | www.天天干 | 日韩在线国产精品 | 在线成人免费电影 | 久久久久亚洲精品中文字幕 | 国产一卡久久电影永久 | 成人a大片| 精品久久久久久国产91 | 综合网五月天 | 亚洲在线网址 | 啪啪免费视频网站 | 成人毛片网 | 精品国产精品久久 | 在线观看的a站 | 狠狠干狠狠操 | 91av国产视频| 国产九色视频在线观看 | 婷婷香蕉 | 国产精品九九九九九 | 久久影院一区 | 在线看av的网址 | 久久这里精品视频 | 四虎www.| 日日夜夜天天射 | 色播五月婷婷 | 中文字幕一区二区三区在线观看 | 国产偷在线 | 欧美成人精品欧美一级乱 | 丁香婷婷久久久综合精品国产 | 激情婷婷久久 | 国产免费区 | 夜夜嗨av色一区二区不卡 | 午夜精品久久久久久久久久久久 | 色综合久久88色综合天天人守婷 | 日韩欧美在线一区 | 婷婷精品国产欧美精品亚洲人人爽 | 不卡av在线免费观看 | 免费在线激情视频 | 国产精品一区免费在线观看 | 午夜久久久久久久久久影院 | 成人观看| 99热在线精品观看 | 日本免费久久高清视频 | 日韩伦理一区二区三区av在线 | 国产精品日韩在线观看 | 狠狠插狠狠干 | 毛片888| 亚洲在线色 | 国产亚洲精品久久久久久久久久 | 在线观看一二三区 | 蜜桃av久久久亚洲精品 | 91在线观看视频 | 国产精品99久久久精品 | 香蕉影视在线观看 | 成x99人av在线www | 在线看v片成人 | 国产麻豆精品95视频 | 久久丁香网 | 99久久精品免费看国产一区二区三区 | 奇米影视在线99精品 | 在线看av的网址 | 日韩一区二区免费视频 | 91黄站| av中文天堂 | 久久综合中文字幕 | 国产精品久久久久久久久久99 | 亚洲成人av在线电影 | 日本性xxxxx 亚洲精品午夜久久久 | 五月天久久狠狠 | 在线观看韩日电影免费 | 丰满少妇在线观看 | 国产精品自产拍在线观看 | 亚洲电影成人 | 久久精品www人人爽人人 | 亚洲va天堂va欧美ⅴa在线 | 六月丁香在线观看 | 免费人成网ww44kk44 | 一区二区国产精品 | 国产一区在线视频观看 | 中文字幕在线免费播放 | 激情一区二区三区欧美 | 色播五月激情五月 | 日韩网站在线看片你懂的 | 国产精品久久久久久久久久久久冷 | 中文字幕在线视频一区二区三区 | 精品视频不卡 | 日韩精品一区二 | 亚洲国产精久久久久久久 | 国产精品一区二区三区在线免费观看 | 色中射 | 国产剧情在线一区 | 狂野欧美激情性xxxx欧美 | 日韩欧美一区二区在线 | 一区二区三区四区影院 | 欧美做受xxx | 国产精品mm | 久久综合之合合综合久久 | 91.dizhi永久地址最新 | 国产精品美女久久 | 国产精品久久久电影 | 天天爱天天色 | 天天操夜夜爱 | 国产亚洲精品精品精品 | 亚洲国产精品小视频 | 日韩丝袜视频 | 亚洲无吗av | 中文字幕在线观看视频一区 | 免费av在线 | 九九热只有精品 | 三级av在线播放 | 男女啪啪免费网站 | 五月在线 | 最新日韩电影 | 六月色婷婷 | 在线免费高清一区二区三区 | 亚洲人成人在线 | 狠狠插狠狠干 | 91刺激视频 | 在线观看国产日韩 | 黄色毛片在线 | 日韩乱色精品一区二区 | 日日夜夜狠狠操 | 亚洲色综合 | 五月天综合网站 | 免费日韩av片 | 亚洲第一久久久 | 久久久精品国产一区二区三区 | 射射色| www色综合| 中文在线www| 亚洲一区不卡视频 | 亚洲乱码久久久 | 激情五月***国产精品 | 久久精品一区二区三区国产主播 | 久热这里有精品 | 亚洲一区美女视频在线观看免费 | 久久成人精品电影 | 在线播放 一区 | 中文字幕综合在线 | 精品国产一区二区三区久久久蜜臀 | 久久久综合九色合综国产精品 | 一二三久久久 | 狠狠干天天干 | 日韩高清av | 久久精品一二三区白丝高潮 | 永久免费在线 | 91麻豆视频网站 | 亚洲日日日 | 婷婷激情久久 | 精品高清美女精品国产区 | 中文字幕一区二区三区四区久久 | 天天色天天艹 | 欧美日韩视频在线 | 国产高清在线免费视频 | 日韩欧美一区二区三区免费观看 | 国产中文字幕精品 | 久久黄色免费视频 | 亚洲美女视频在线 | 成人国产精品久久久 | 精品国产自 | 日日干夜夜干 | 日韩欧美一二三 | 98涩涩国产露脸精品国产网 | 日韩电影在线观看一区 | 日本不卡视频 | 成人免费视频视频在线观看 免费 | 国产精品剧情在线亚洲 | 五月天婷婷视频 | 18做爰免费视频网站 | 在线国产日本 | 97在线观看视频国产 | 黄色免费高清视频 | 日韩成人欧美 | 成人av免费网站 | 欧洲av不卡 | 免费看黄在线网站 | 精品国产精品久久一区免费式 | 国产亚洲在线 | 精品美女视频 | 最近中文字幕免费大全 | 亚洲精品乱码白浆高清久久久久久 | 天天综合网久久综合网 | 五月天精品视频 | 国产亚洲情侣一区二区无 | 成人黄色在线观看视频 | 日本久热 | 久久精品日产第一区二区三区乱码 | 丁香婷婷久久久综合精品国产 | 国产在线精品一区二区 | 91人人人 | 在线观看中文字幕dvd播放 | 国产精品嫩草影院99网站 | 日韩r级电影在线观看 | 天天操天操 | 在线观看国产一区二区 | 免费看高清毛片 | 一区二区视频在线免费观看 | 又大又硬又黄又爽视频在线观看 | 免费h视频 | 天天精品视频 | 日日干网址 | 在线不卡中文字幕播放 | 久久露脸国产精品 | av 一区 二区 久久 | 果冻av在线 | 国产精品久久久久久久免费大片 | 在线观看免费高清视频大全追剧 | 奇人奇案qvod | 日本精品在线视频 | 一级黄色片在线免费看 | 91在线视频免费观看 | 色99导航 | 亚洲精品九九 | 国产色综合天天综合网 | 久久成人国产精品一区二区 | 91亚洲精品久久久蜜桃网站 | 一级成人在线 | 激情影音 | 99精品偷拍视频一区二区三区 | 99久久久国产精品美女 | 九九热1 | 亚洲国产一二三 | 丁香婷婷激情网 | 日韩欧美高清视频在线观看 | 欧美日韩一区久久 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 亚洲第一区在线播放 | 久青草视频 | 91av视频在线免费观看 | 日韩欧美高清一区二区三区 | 欧美一级欧美一级 | 韩国精品福利一区二区三区 | 美女精品久久 | 亚洲电影第一页av | 精品免费在线视频 | 97人人模人人爽人人少妇 | 欧美日韩一区二区三区在线观看视频 | 91在线视频免费播放 | 超碰国产人人 | 国产香蕉97碰碰久久人人 | 美女视频又黄又免费 | 在线观看中文字幕一区二区 | 欧美亚洲久久 | 国产在线国偷精品产拍 | 国产精品九九热 | 九九免费观看视频 | 91综合视频在线观看 | 中文字幕在线观看第二页 | 伊人婷婷色 | 91高清免费| 久久久人| 91私密视频 | 高清av中文字幕 | 日韩三级免费 | 久久精品中文字幕一区二区三区 | 久久久国产精品一区二区三区 | 欧美日韩一区二区三区在线观看视频 | 国产很黄很色的视频 | 国产精品国产三级在线专区 | 黄色国产高清 | 亚洲第一区在线播放 | 狠狠干婷婷 | 在线观看午夜av | 在线观看视频国产一区 | 欧美有色 | 日韩黄色在线 | 国产精品九九久久久久久久 | 成人一区影院 | 在线免费试看 | 日批视频| 成人免费在线播放 | 日本电影黄色 | 江苏妇搡bbbb搡bbbb | 久久精品国产亚洲精品 | 精品久久久久久综合日本 | 久久久免费毛片 | 亚洲精品国产第一综合99久久 | 日韩欧美网站 | 国产高清视频免费观看 | 欧美精品一区二区在线播放 | 91色视频 | 久久久久国产视频 | 欧美午夜寂寞影院 | 亚洲乱码在线 | 免费网站观看www在线观看 | 69热国产视频 | 麻豆果冻剧传媒在线播放 | 亚洲综合精品视频 | 午夜影院先 | 91精品秘密在线观看 | 麻豆综合网 | 日韩久久久 | 亚洲免费av网站 | 中文字幕色婷婷在线视频 | 草久在线视频 | 精品国产伦一区二区三区观看说明 | 欧美一级视频一区 | av高清一区二区三区 | 久久免费视频一区 | www色网站| 中日韩免费视频 | 亚洲激情电影在线 | 一区二区视频在线播放 | 91成人天堂久久成人 | 日本三级在线观看中文字 | 成人在线你懂得 | 色播激情五月 | 天天射综合 | 激情av五月婷婷 | 欧美ⅹxxxxxx | 亚洲成人软件 | 夜色.com| 日日爽视频 | 免费看黄的视频 | 亚洲欧美日韩精品一区二区 | 日韩一区二区三区免费视频 | 久久福利综合 | 国产精品wwwwww| 91在线永久| 国产xxxx做受性欧美88 | 97人人模人人爽人人喊网 | 国产在线日韩 | 日韩精品视频一二三 | 91免费看片黄 | 超级碰碰视频 | 日韩欧美在线中文字幕 | 爱色婷婷 | 在线午夜电影神马影院 | 中文字幕 在线 一 二 | 9在线观看免费高清完整版 玖玖爱免费视频 | 久久成年人 | a视频在线观看免费 | 三级av网站 | 成人一级在线观看 | 五月天.com | 激情久久综合网 | 亚洲国产精品久久久久婷婷884 | 日韩高清在线不卡 | 久久伊人国产精品 | 日韩av图片 | 黄色成人av| 久久在线| 99视频国产在线 | 五月开心激情网 | 久久久久久久久福利 | 欧美亚洲精品一区 | 深爱激情开心 | 欧美先锋影音 | 日韩精品久久久久久 | 欧美一区二区三区四区夜夜大片 | 天天操天天爱天天干 | 亚洲午夜精 | 久久高清免费视频 | 亚洲成人av在线 | 最近中文字幕mv | 久久国产精品99久久久久 | 日韩在线观看视频网站 | 国产美女精品久久久 | 日韩中文字幕a | 蜜臀久久99精品久久久无需会员 | 欧美人人爱 | 友田真希x88av| 免费av网站在线看 | 伊人日日干 | 天天色天天上天天操 | 六月激情网 | 国产人成在线视频 | 国产乱视频 | 狠狠色狠狠色合久久伊人 | 久久人操 | 欧美日韩高清免费 | 人人插人人费 | 999久久国精品免费观看网站 | 国产福利资源 | www99精品| 亚洲专区一二三 | 91av大全| 超碰日韩在线 | 婷婷五月在线视频 | 久久久久久欧美二区电影网 | 国产精品久久久久久久久久久久午夜 | 午夜黄色 | 日韩手机在线 | 婷婷久久综合九色综合 | 欧美在线观看视频 | 天天夜夜亚洲 | 午夜av在线播放 | 伊人久久av| 日韩黄色免费在线观看 | 深爱婷婷 | 玖玖精品视频 | 国产综合精品久久 | 国产在线观看地址 | 欧美激情视频一区 | 久久大视频 | 久久久免费视频播放 | 爱色婷婷| 天天av在线播放 | 69精品在线| 精品一区二区三区久久 | 丁香九月激情综合 | 亚洲精品自拍 | 国产在线播放一区二区三区 | 久久精品视频在线观看免费 | 国产韩国精品一区二区三区 | 国产97在线观看 | 中文日韩在线 | 99久久精品久久久久久清纯 | 成人91av| 一区二区精品在线观看 | 久青草视频 | 91最新视频在线观看 | 久久久亚洲影院 | 日韩av电影国产 | 久久一区二区三区日韩 | 日韩欧美国产成人 | 韩国一区二区三区视频 | 特黄色大片 | 久久久久久国产精品999 | 国产高清在线免费视频 | 国产精品 国内视频 | 又黄又爽的视频在线观看网站 | 欧美黑人巨大xxxxx | 91麻豆看国产在线紧急地址 | 久久久久久国产精品亚洲78 | 尤物97国产精品久久精品国产 | 看黄色.com | 麻豆视频在线观看免费 | 亚洲在线视频观看 | 日本中文乱码卡一卡二新区 | 日韩 在线观看 | 欧美成人区 | 美女黄视频免费 | 国产精品自产拍在线观看蜜 | 91在线网址| 欧美大片mv免费 | 天天操操操操操 | 麻豆免费在线视频 | 2019免费中文字幕 | 99久久这里有精品 | 国产精品久久9 | av免费在线观 | 91精品国产高清自在线观看 | 8x成人免费视频 | 成人精品国产免费网站 | 国产精品久久久久久久久大全 | 制服丝袜欧美 | 国产亚洲人成网站在线观看 | 国产又粗又长又硬免费视频 | 欧美日韩激情视频8区 | 亚洲高清在线观看视频 | 五月天高清欧美mv | 亚洲美女久久 | 亚洲1级片 | 超碰在线观看99 | 国产视频在 | 美女视频黄免费 | 五月婷婷影院 | 一本一道久久a久久精品蜜桃 | 国产高清在线免费视频 | 日日干夜夜干 | 高清av在线免费观看 | 99 精品 在线 | 亚洲在线高清 | 天天做天天爱夜夜爽 | 日韩精品视频免费看 | 最近更新中文字幕 | 欧美精品久久久久久久免费 | 黄色av网站在线免费观看 | 亚洲激精日韩激精欧美精品 | 国产精品久久久久999 | 91av免费在线观看 | 99久久婷婷 | 9999国产精品 | 98涩涩国产露脸精品国产网 | 国产精品永久在线观看 | 一区 二区 精品 | aaa免费毛片 | 97国产 | 在线观看视频三级 | 久久久精品在线观看 | 99国产精品免费网站 | 日日爽天天操 | 久久婷婷五月综合色丁香 | 国产区精品在线 | 激情 亚洲| 日日日操操 | 国内免费久久久久久久久久久 | 99精品在线播放 | 97免费公开视频 | 91在线小视频 | 91av九色 | 日韩在线免费视频观看 | 国产99久久精品一区二区300 | 91亚洲精品久久久蜜桃借种 | 日本黄色免费观看 | 91精品国产自产老师啪 | 精品自拍网 | 九九久久精品 | 人人插人人插 | 就要色综合 | 欧美三级在线播放 | 91片在线观看 | 色欧美综合| 久久99亚洲网美利坚合众国 | 久久久国产日韩 | 成人91在线观看 | 最新国产中文字幕 | 亚洲精品综合久久 | 亚洲电影成人 | 国产精品门事件 | 麻豆视频免费看 | 91手机视频在线 | 婷婷久久国产 | 在线观看免费视频你懂的 | 久久免费视频网 | 国产欧美精品一区二区三区 | 欧美一区二区在线免费看 | 五月激情姐姐 | 国产日韩在线观看一区 | 日韩精品视频免费在线观看 | 日韩首页 | 欧美精品久久久久性色 | 天天射天天射天天射 | 国产精品黄色影片导航在线观看 | 国产一级特黄毛片在线毛片 | 中文字幕免费在线 | 亚洲情影院| 人人爽人人爽人人片av | 三级性生活视频 | 又黄又爽的视频在线观看网站 | 91大神电影 | 日韩免费电影一区二区三区 | 99国产一区二区三精品乱码 | 少妇bbw揉bbb欧美 | 国产精品成人一区二区三区 | 丁香五月亚洲综合在线 | 波多野结衣在线视频免费观看 | 久久久久一区二区三区 | 97碰碰碰| 亚洲黄色影院 | 亚洲久草在线 | 日韩精品不卡在线观看 | 色婷婷欧美 | 97在线超碰 | 极品久久久久久久 | 91大神电影| 国产一区视频在线 | 亚洲欧洲在线视频 | 精品久久久久国产免费第一页 | aaa日本高清在线播放免费观看 | 国产亚洲婷婷免费 | 91久久久久久久 | 在线免费观看黄色av | 丁香五婷 | 超薄丝袜一二三区 | 在线色视频小说 | 亚洲精品麻豆 | 婷婷色五 | 午夜精品久久久久久久99水蜜桃 | 亚洲精品网址在线观看 | 国产剧情av在线播放 | 中文字幕欧美日韩va免费视频 | 探花视频网站 | 国产一区二区免费看 | 三级视频片 | 国产一区免费视频 | 婷婷五月色综合 | 一级成人免费视频 | 免费观看一级成人毛片 | 国产精品9999 | 亚洲欧美视频网站 | 一级片免费观看视频 | 韩国一区视频 | 91色国产 | 日韩免费在线视频观看 | 国产视频资源在线观看 | av手机版 | 狠狠操狠狠干天天操 | 国产免码va在线观看免费 | 人人爱天天操 | 国产精品免费观看国产网曝瓜 | 人人爽夜夜爽 | 日日夜夜狠狠 | 久久久男人的天堂 | 久久www免费人成看片高清 | 日韩中文字幕a | 在线观看国产中文字幕 | 在线观看免费色 | 成人一区在线观看 | 国产九九精品视频 | 久久久久中文 | 97超碰在线视| 婷婷视频导航 | 97国产| 黄p在线播放 | 国产亚洲精品久 | 精品国产黄色片 | 久久99久国产精品黄毛片入口 | 亚洲热久久| 91精品一区在线观看 | 福利一区二区三区四区 | 五月婷婷播播 | 一区二区三区在线视频观看58 | 狠狠干干 | 亚州精品一二三区 | 日韩美精品视频 | 美女视频一区二区 | 综合色播 | 国产精品一区二区三区四 | 欧美日韩国产伦理 | 丁香激情婷婷 | 欧美日韩国产综合一区二区 | 国产精品视频大全 | 亚洲aaa级 | 1000部18岁以下禁看视频 | 国产日韩精品欧美 | 天天天天色射综合 |