zhiyuan007 1 year ago
parent
commit
c4716b1257

+ 32 - 0
src/data/all-form.js

@@ -3217,6 +3217,38 @@ export const combinedRewardAndPunishmentsMeasureManageMatterRuleConnect = {
     }
 }
 
+export const matterImputationStaticsSituation = {
+    formItemsArr:[
+        {
+            type:'date-picker',
+            modelValue:'START_DATE',
+            label:'开始时间',
+            colClass:'el-col-6 mr12',
+            options:[
+
+            ]
+        },
+        {
+            type:'date-picker',
+            modelValue:'END_DATE',
+            label:'结束时间',
+            colClass:'el-col-6 mr12',
+            options:[
+
+            ]
+        },
+        {
+            type:'slot',
+            slotName:'searchBtn'
+        },
+        {
+            type:'slot',
+            slotName:'plusBtn'
+        },
+    ]
+}
+
+
 export const creditRepairHome = {
     formItemsArr:[
         {

+ 15 - 0
src/data/all-table-header.js

@@ -851,6 +851,21 @@ export const combinedRewardAndPunishmentsMeasureManageMatterRuleConnectSettingDi
     },
 ]
 
+export const matterImputationStaticsSituationHeaderJG = [
+    {
+        prop:"ACCOUNTTYPE",
+        label:"信息事项"
+    },
+    {
+        prop:"XDR",
+        label:"相对人"
+    },
+    {
+        prop:"ACCOUNTNUMBER",
+        label:"归集数量"
+    },
+]
+
 export const creditRepairEditHeader = [
     {
         prop:"ZTMC",

+ 1 - 1
src/pinia/useStore.js

@@ -75,7 +75,7 @@ export const useRootStore = defineStore('root',{
                 {
                     "children":[
                         {
-                            "path":"/16",
+                            "path":"data-imputation-push",
                             "name":"数据归集推送"
                         },
                         {

+ 6 - 0
src/router/index.js

@@ -17,6 +17,7 @@ import RewardsAndPunishmentsMeasureManage
   from "@/views/main/c-views/combined-rewards-and-punishments/rewards-and-punishments-measure-manage/RewardsAndPunishmentsMeasureManage.vue";
 import combinedRewardAndPunishmentsMeasureManage
   from "@/views/main/c-views/combined-rewards-and-punishments/combined-rewards-and-punishments-case-information/CombinedRewardAndPunishmentsMeasureManage.vue";
+import DataImputationPush from "@/views/main/c-views/credit-data/data-imputation-push/DataImputationPush.vue";
 import CreditRepair from "@/views/main/c-views/credit-data/credit-repair/CreditRepair.vue";
 import DataLog from "@/views/main/c-views/credit-data/data-log/DataLog.vue";
 import UserManage from "@/views/main/c-views/system-manage/user-manage/UserManage.vue";
@@ -88,6 +89,11 @@ const router = createRouter({
           name: 'combined-reward-and-punishments-measure-manage',
           component:combinedRewardAndPunishmentsMeasureManage
         },
+        {
+          path: '/main/data-imputation-push',
+          name: 'data-imputation-push',
+          component:DataImputationPush
+        },
         {
           path: '/main/credit-repair',
           name: 'credit-repair',

+ 33 - 0
src/service/credit-data/data-imputation-push/data-imputation-push.js

@@ -0,0 +1,33 @@
+import {requestInstance} from "@/service";
+
+
+//事项归集统计情况 监管类查询
+export function proSelectXyxxSjtjopthree(params){
+    return requestInstance({
+        url:'/XyxxApi/proSelectXyxxSjtjopthree',
+        data:{
+            ...params
+        }
+    })
+}
+
+//数据归集推送 事项归集统计情况 许可类、履约类查询
+export function proSelectXyxxSjtjopone(params){
+    return requestInstance({
+        url:'/XyxxApi/proSelectXyxxSjtjopone',
+        data:{
+            ...params
+        }
+    })
+}
+
+//数据归集推送 事项归集统计情况 监管类下明细事项类查询
+export function proSelectXyxxSjtjoptwo(params){
+    return requestInstance({
+        url:'/XyxxApi/proSelectXyxxSjtjoptwo',
+        data:{
+            ...params
+        }
+    })
+}
+

+ 19 - 0
src/units/use-method/veritification-tools.js

@@ -29,4 +29,23 @@ export  function isEmptyCheck(str) {
         return true;
     }
     return false;
+}
+
+
+export  function getFullYear(type){
+    let year = new Date().getFullYear();
+    let month = new Date().getMonth() + 1;
+    if(month < 10){
+        month = "0"+month;
+    }
+    let day = new Date().getDate();
+    if(type =="year"){
+        return year
+    }
+    if(type =="month"){
+        return year + "-" +month
+    }
+    if(type =="day"){
+        return year + "-" +month+ "-" +day
+    }
 }

+ 31 - 10
src/views/main/c-views/credit-data/data-imputation-push/DataImputationPush.vue

@@ -1,20 +1,28 @@
 <template>
-  <div class="imputation-home">
-    <template>
-      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
-        <el-tab-pane label="User" name="first">User</el-tab-pane>
-        <el-tab-pane label="Config" name="second">Config</el-tab-pane>
-        <el-tab-pane label="Role" name="third">Role</el-tab-pane>
-        <el-tab-pane label="Task" name="fourth">Task</el-tab-pane>
-      </el-tabs>
-    </template>
-  </div>
+  <el-tabs type="border-card" class="demo-tabs" v-model="activeName"  @tab-click="handleClick" >
+    <el-tab-pane label="事项归集统计情况" name="first">
+      <matter-imputation-statics-situation/>
+    </el-tab-pane>
+    <el-tab-pane label="部门数据归集情况" name="second">
+      <department-data-imputation-situation/>
+    </el-tab-pane>
+    <el-tab-pane label="数据推送情况(月)" name="third">
+      <data-push-situation-monthly/>
+    </el-tab-pane>
+  </el-tabs>
 </template>
 
 <script>
 import { ref } from 'vue'
+import MatterImputationStaticsSituation
+  from "@/views/main/c-views/credit-data/data-imputation-push/MatterImputationStaticsSituation.vue";
+import DepartmentDataImputationSituation
+  from "@/views/main/c-views/credit-data/data-imputation-push/DepartmentDataImputationSituation.vue";
+import DataPushSituationMonthly
+  from "@/views/main/c-views/credit-data/data-imputation-push/DataPushSituationMonthly.vue";
 export default {
   name: "DataImputationPush",
+  components: {DataPushSituationMonthly, DepartmentDataImputationSituation, MatterImputationStaticsSituation},
   setup(){
     const activeName = ref('first')
     function handleClick(tab,event){
@@ -32,4 +40,17 @@ export default {
 .imputation-home{
   padding: 30px 20px 20px 20px;
 }
+.demo-tabs > .el-tabs__content {
+  padding: 32px;
+  color: #6b778c;
+  font-size: 32px;
+  font-weight: 600;
+}
+.demo-tabs .custom-tabs-label .el-icon {
+  vertical-align: middle;
+}
+.demo-tabs .custom-tabs-label span {
+  vertical-align: middle;
+  margin-left: 4px;
+}
 </style>

+ 343 - 4
src/views/main/c-views/credit-data/data-imputation-push/MatterImputationStaticsSituation.vue

@@ -1,13 +1,352 @@
 <template>
-
+  <div class="statics-situation">
+    <diy-el-form ref="formRef"  v-bind="{'span-attrs':{span:4}}"   v-model:model-form="forms" :forms="formConfig">
+      <template #searchBtn>
+        <el-button  type="primary" :icon="Search" @click="getTableData()">查询</el-button>
+      </template>
+      <template #plusBtn>
+        <el-button  type="primary" :icon="Document" @click="showDialog('detail','report')">总计</el-button>
+      </template>
+    </diy-el-form>
+    <div class="tables-part">
+      <div class="table-single-part">
+        <div class="single-header">
+          <span>监管类事项</span>
+        </div>
+        <div class="single-content">
+          <my-table border
+                    :has-operation="false"
+                    :table-data="tableData.JG"
+                    :headers="matterImputationStaticsSituationHeaderJG">
+            <template #ACCOUNTTYPE="{data}">
+              <span class="show-part" @click="getWatchDetail(data.ACCOUNTTYPE,data.XDR)">{{data.ACCOUNTTYPE}}</span>
+            </template>
+          </my-table>
+        </div>
+      </div>
+      <div class="table-single-part">
+        <div class="single-header">
+          <span>许可类事项</span>
+        </div>
+        <div class="single-content">
+          <my-table border
+                    :has-operation="false"
+                    :table-data="tableData.XK"
+                    :headers="matterImputationStaticsSituationHeaderJG">
+          </my-table>
+        </div>
+      </div>
+      <div class="table-single-part">
+        <div class="single-header">
+          <span>明细事项</span>
+        </div>
+        <div class="single-content">
+          <my-table border
+                    :has-operation="false"
+                    :table-data="tableData.MX"
+                    :headers="matterImputationStaticsSituationHeaderJG">
+            <template #ACCOUNTTYPE="{data}">
+              <span class="show-part" @click="showDialog('detail','matter',data)">{{data.ACCOUNTTYPE}}</span>
+            </template>
+          </my-table>
+        </div>
+      </div>
+      <div class="table-single-part">
+        <div class="single-header">
+          <span>履约类事项</span>
+        </div>
+        <div class="single-content">
+          <my-table border
+                    :has-operation="false"
+                    :table-data="tableData.LY"
+                    :headers="matterImputationStaticsSituationHeaderJG">
+          </my-table>
+        </div>
+      </div>
+    </div>
+    <template v-if="isEditDialogShow && currentDialogType == 'matter'">
+      <matter-detail-setting-dialog  @getTableData="getTableData" :dialog-operation-type="dialogOperationType" :current-dialog-obj="currentDialogOpObj" v-model:dialog-visible="isEditDialogShow" />
+    </template>
+    <template v-if="isEditDialogShow && currentDialogType == 'report'">
+      <matter-imputation-statics-situation-report-setting-dialog  @getTableData="getTableData" :dialog-operation-type="dialogOperationType" :current-dialog-obj="currentDialogOpObj" v-model:dialog-visible="isEditDialogShow" />
+    </template>
+  </div>
 </template>
 
 <script>
+import DiyElForm from "@/components/common/DiyElForm.vue";
+import MyTable from "@/components/common/MyTable.vue";
+import {onBeforeMount, ref} from "vue";
+import {Close, Delete, Document, Search, Plus, SuccessFilled} from "@element-plus/icons-vue";
+import {matterImputationStaticsSituation} from "@/data/all-form";
+import {matterImputationStaticsSituationHeaderJG} from "@/data/all-table-header";
+import {
+  proSelectXyxxSjtjopone,
+  proSelectXyxxSjtjopthree, proSelectXyxxSjtjoptwo
+} from "@/service/credit-data/data-imputation-push/data-imputation-push";
+import {getFullYear} from "@/units/use-method/veritification-tools";
+import MatterDetailSettingDialog
+  from "@/views/main/c-views/credit-data/data-imputation-push/MatterDetailSettingDialog.vue";
+import MatterImputationStaticsSituationReportSettingDialog
+  from "@/views/main/c-views/credit-data/data-imputation-push/MatterImputationStaticsSituationReportSettingDialog.vue";
+import {useDetailOrEdit} from "@/units/use-method/usePagination";
 export default {
-  name: "MatterImputationStaticsSituation"
+  name: "MatterImputationStaticsSituation",
+  components: {MatterImputationStaticsSituationReportSettingDialog, MatterDetailSettingDialog, MyTable, DiyElForm},
+  computed: {
+    Delete() {
+      return Delete
+    },
+    Search() {
+      return Search
+    },
+    Document() {
+      return Document
+    },
+    SuccessFilled() {
+      return SuccessFilled
+    },
+    Close() {
+      return Close
+    }
+  },
+  setup(){
+    const forms = ref({});
+    const formRef = ref(null);
+    const isEditDialogShow = ref(false);
+    const currentDialogType = ref('')
+    const formConfig = ref({...matterImputationStaticsSituation});
+    const {changeOperation,currentOpObj:currentDialogOpObj,operationType:dialogOperationType} = useDetailOrEdit();
+    const tableData = ref({
+      JG:[],
+      XK:[],
+      MX:[],
+      LY:[],
+    })
+    function getTableData(){
+      getWatch();
+      getPermission();
+      getWatchDetail("市城管执法局","法人");
+    }
+    function getWatch(){ //获取监管类内容
+      tableData.value.JG =[];
+      proSelectXyxxSjtjopthree({
+        // startC:forms.value.START_DATE,
+        startC:"2019-01-01",
+        endC:forms.value.END_DATE,
+        pageSize:10000,
+        pageIndex:1
+      }).then(res =>{
+        tableData.value.JG = res.msg[0].Rows
+      })
+    }
+    function getPermission(){ //获取许可类、履约类内容
+      tableData.value.XK = []
+      tableData.value.LY = []
+      proSelectXyxxSjtjopone({
+        // startC:forms.value.START_DATE,
+        startC:"2019-01-01",
+        endC:forms.value.END_DATE,
+        pageSize:10000,
+        pageIndex:1
+      }).then(res =>{
+
+        let date = res.msg[0];
+        if (date.Rows != null && date.Rows != "null") {
+          let Frarr = [];
+          let Frarr1 = [];
+          let Zrrarr = [];
+          let Zrrarr1 = [];
+          let secondFa = [];
+          let secondZrr = [];
+          let thirdFa = [];
+          let forthFa = [];
+          let thirdZrr = [];
+          let forthZrr = [];
+          for (let i = 0; i < date.Rows.length; i++) {
+
+            var secondData = { 单位: "", 类别: "", XDR: "", 总数: "0" }
+            var secondData1 = { 类别: "", XDR: "", 总数: "0" }
+            if (date.Rows[i].类别 != "公积金缴存信息" && date.Rows[i].类别 != "公积金贷款逾期信息") {
+              if (date.Rows[i].XDR == "法人") {
+                secondData.类别 = date.Rows[i].类别;
+                secondData.XDR = date.Rows[i].XDR;
+                secondData.单位 = date.Rows[i].UNIT;
+                secondData.总数 = date.Rows[i].总数 * 1;
+                secondFa += secondData.总数 *1;
+                Frarr.push(secondData);
+
+              } else if (date.Rows[i].XDR == "自然人") {
+                secondData.类别 = date.Rows[i].类别;
+                secondData.XDR = date.Rows[i].XDR;
+                secondData.单位 = date.Rows[i].UNIT;
+                secondData.总数 = date.Rows[i].总数 * 1;
+                secondZrr += secondData.总数 *1;
+                Zrrarr.push(secondData);
+              }
+
+            } else {
+              if (date.Rows[i].XDR == "法人") {
+                secondData1.类别 = date.Rows[i].类别;
+                secondData1.XDR = date.Rows[i].XDR;
+                secondData1.总数 = date.Rows[i].总数 * 1;
+                if (date.Rows[i].类别 != "公积金缴存信息") {
+                  thirdFa += secondData1.总数* 1;
+                } else {
+                  forthFa += secondData1.总数* 1;
+                }
+                Frarr1.push(secondData1);
+
+              } else if (date.Rows[i].XDR == "自然人") {
+                secondData1.类别 = date.Rows[i].类别;
+                secondData1.XDR = date.Rows[i].XDR;
+                secondData1.总数 = date.Rows[i].总数 * 1;
+                if (date.Rows[i].类别 != "公积金缴存信息") {
+                  thirdZrr += secondData1.总数* 1;
+                } else {
+                  forthZrr += secondData1.总数 * 1;
+                }
+                Zrrarr1.push(secondData1);
+              }
+            }
+
+
+          }
+          let sortTwoCate = function (a, b) {
+            var srcDataNew = ["xx", "rx","zx","fx"];
+            if (srcDataNew.indexOf(a.单位) === srcDataNew.indexOf(b.单位)) {
+              return 0;
+            } else {
+              if (srcDataNew.indexOf(a.单位) > srcDataNew.indexOf(b.单位)) {
+                return 1;
+              } else {
+                return -1;
+              }
+            }
+
+          }
+          Frarr.sort(sortTwoCate);
+          for (let i = 0 ; i < Frarr.length ; i++) {
+            let obj = {
+              ACCOUNTTYPE:Frarr[i].类别,
+              XDR:Frarr[i].XDR,
+              ACCOUNTNUMBER:Frarr[i].总数.toLocaleString()
+            }
+            tableData.value.XK.push(obj)
+          }
+          for (var i = 0 ; i < Zrrarr.length ; i++) {
+            let obj = {
+              ACCOUNTTYPE:Zrrarr[i].类别,
+              XDR:Zrrarr[i].XDR,
+              ACCOUNTNUMBER:Zrrarr[i].总数.toLocaleString()
+            }
+            tableData.value.XK.push(obj)
+          }
+          for (let i = 0 ; i < Frarr1.length ; i++) {
+            let obj = {
+              ACCOUNTTYPE:Frarr1[i].类别,
+              XDR:Frarr1[i].XDR,
+              ACCOUNTNUMBER:Frarr1[i].总数.toLocaleString()
+            }
+            tableData.value.LY.push(obj)
+          }
+          for (var i = 0 ; i < Zrrarr1.length ; i++) {
+            let obj = {
+              ACCOUNTTYPE:Zrrarr1[i].类别,
+              XDR:Zrrarr1[i].XDR,
+              ACCOUNTNUMBER:Zrrarr1[i].总数.toLocaleString()
+            }
+            tableData.value.LY.push(obj)
+          }
+
+        }else{
+          tableData.value.XK = []
+          tableData.value.LY = []
+        }
+      })
+    }
+    function getWatchDetail(xxsx,xdr){ //获取监管类下明细事项类查询
+      tableData.value.MX = []
+      proSelectXyxxSjtjoptwo({
+        // startC:forms.value.START_DATE,
+        startC:"2019-01-01",
+        endC:forms.value.END_DATE,
+        UNIT: xxsx,
+        XDR_TYPE: xdr
+      }).then(res =>{
+        let date = res.msg[0];
+        if (date.Rows != null && date.Rows != "null"){
+          for(let i=0;i<date.Rows.length;i++){
+            let obj = {
+              ACCOUNTTYPE:date.Rows[i].XXSX,
+              XDR:date.Rows[i].XDR,
+              ACCOUNTNUMBER:date.Rows[i].ACCOUNTNUMBER.toLocaleString()
+            }
+            tableData.value.MX.push(obj);
+          }
+        }else{
+          tableData.value.MX = []
+        }
+      })
+    }
+    function showDialog(type,index,data){
+      isEditDialogShow.value = true;
+      currentDialogType.value = dialogType;
+      debugger
+      changeOperation(type,data)
+    }
+    onBeforeMount(() =>{
+      forms.value.START_DATE = getFullYear("year") + "-01-01";
+      forms.value.END_DATE = getFullYear("day");
+      debugger
+      getTableData()
+    })
+    return {
+      forms,
+      formRef,
+      formConfig,
+      getTableData,
+      matterImputationStaticsSituationHeaderJG,
+      tableData,
+      getWatchDetail,
+      showDialog,
+      isEditDialogShow,
+      currentDialogType,
+      dialogOperationType,
+      currentDialogOpObj
+    }
+  }
 }
 </script>
 
-<style scoped>
-
+<style scoped lang="scss">
+.statics-situation{
+  padding: 20px;
+}
+.tables-part{
+  display: flex;
+  flex-wrap: wrap;
+  align-content: space-around;
+  justify-content: space-evenly;
+}
+.table-single-part{
+  width: 48%;
+  height: 48%;
+}
+.single-header{
+  span{
+    font-size: 16px;
+    font-weight:bold;
+  }
+  padding-bottom: 10px;
+  border-bottom: 1px #e7eaec solid;
+}
+.single-content{
+  padding-top: 10px;
+  height: 250px;
+  overflow: auto;
+}
+.show-part{
+  color: #23527c;
+}
 </style>