MatterImputationStaticsSituation.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <template>
  2. <div class="statics-situation">
  3. <diy-el-form ref="formRef" v-bind="{'span-attrs':{span:4}}" v-model:model-form="forms" :forms="formConfig">
  4. <template #searchBtn>
  5. <el-button type="primary" :icon="Search" @click="getTableData()">查询</el-button>
  6. </template>
  7. <template #plusBtn>
  8. <el-button type="primary" :icon="Document" @click="showDialog('detail','report')">总计</el-button>
  9. </template>
  10. </diy-el-form>
  11. <div class="tables-part">
  12. <div class="table-single-part">
  13. <div class="single-header">
  14. <span>监管类事项</span>
  15. </div>
  16. <div class="single-content">
  17. <my-table border
  18. :has-operation="false"
  19. :table-data="tableData.JG"
  20. :headers="matterImputationStaticsSituationHeaderJG">
  21. <template #ACCOUNTTYPE="{data}">
  22. <span class="show-part" @click="getWatchDetail(data.ACCOUNTTYPE,data.XDR)">{{data.ACCOUNTTYPE}}</span>
  23. </template>
  24. </my-table>
  25. </div>
  26. </div>
  27. <div class="table-single-part">
  28. <div class="single-header">
  29. <span>许可类事项</span>
  30. </div>
  31. <div class="single-content">
  32. <my-table border
  33. :has-operation="false"
  34. :table-data="tableData.XK"
  35. :headers="matterImputationStaticsSituationHeaderJG">
  36. </my-table>
  37. </div>
  38. </div>
  39. <div class="table-single-part">
  40. <div class="single-header">
  41. <span>明细事项</span>
  42. </div>
  43. <div class="single-content">
  44. <my-table border
  45. :has-operation="false"
  46. :table-data="tableData.MX"
  47. :headers="matterImputationStaticsSituationHeaderJG">
  48. <template #ACCOUNTTYPE="{data}">
  49. <span class="show-part" @click="showDialog('detail','matter',data)">{{data.ACCOUNTTYPE}}</span>
  50. </template>
  51. </my-table>
  52. </div>
  53. </div>
  54. <div class="table-single-part">
  55. <div class="single-header">
  56. <span>履约类事项</span>
  57. </div>
  58. <div class="single-content">
  59. <my-table border
  60. :has-operation="false"
  61. :table-data="tableData.LY"
  62. :headers="matterImputationStaticsSituationHeaderJG">
  63. </my-table>
  64. </div>
  65. </div>
  66. </div>
  67. <template v-if="isEditDialogShow && currentDialogType == 'matter'">
  68. <matter-detail-setting-dialog @getTableData="getTableData" :dialog-operation-type="dialogOperationType" :current-dialog-obj="currentDialogOpObj" v-model:dialog-visible="isEditDialogShow" />
  69. </template>
  70. <template v-if="isEditDialogShow && currentDialogType == 'report'">
  71. <matter-imputation-statics-situation-report-setting-dialog @getTableData="getTableData" :dialog-operation-type="dialogOperationType" :current-dialog-obj="currentDialogOpObj" v-model:dialog-visible="isEditDialogShow" />
  72. </template>
  73. </div>
  74. </template>
  75. <script>
  76. import DiyElForm from "@/components/common/DiyElForm.vue";
  77. import MyTable from "@/components/common/MyTable.vue";
  78. import {onBeforeMount, ref} from "vue";
  79. import {Close, Delete, Document, Search, Plus, SuccessFilled} from "@element-plus/icons-vue";
  80. import {matterImputationStaticsSituation} from "@/data/all-form";
  81. import {matterImputationStaticsSituationHeaderJG} from "@/data/all-table-header";
  82. import {
  83. proSelectXyxxSjtjopone,
  84. proSelectXyxxSjtjopthree, proSelectXyxxSjtjoptwo
  85. } from "@/service/credit-data/data-imputation-push/data-imputation-push";
  86. import {getFullYear} from "@/units/use-method/veritification-tools";
  87. import MatterDetailSettingDialog
  88. from "@/views/main/c-views/credit-data/data-imputation-push/MatterDetailSettingDialog.vue";
  89. import MatterImputationStaticsSituationReportSettingDialog
  90. from "@/views/main/c-views/credit-data/data-imputation-push/MatterImputationStaticsSituationReportSettingDialog.vue";
  91. import {useDetailOrEdit} from "@/units/use-method/usePagination";
  92. import {InsertSyslog} from "@/units/use-method/user-log";
  93. export default {
  94. name: "MatterImputationStaticsSituation",
  95. components: {MatterImputationStaticsSituationReportSettingDialog, MatterDetailSettingDialog, MyTable, DiyElForm},
  96. computed: {
  97. Delete() {
  98. return Delete
  99. },
  100. Search() {
  101. return Search
  102. },
  103. Document() {
  104. return Document
  105. },
  106. SuccessFilled() {
  107. return SuccessFilled
  108. },
  109. Close() {
  110. return Close
  111. }
  112. },
  113. setup(){
  114. const forms = ref({});
  115. const formRef = ref(null);
  116. const isEditDialogShow = ref(false);
  117. const currentDialogType = ref('')
  118. const formConfig = ref({...matterImputationStaticsSituation});
  119. const {changeOperation,currentOpObj:currentDialogOpObj,operationType:dialogOperationType} = useDetailOrEdit();
  120. const tableData = ref({
  121. JG:[],
  122. XK:[],
  123. MX:[],
  124. LY:[],
  125. })
  126. function getTableData(){
  127. getWatch();
  128. getPermission();
  129. getWatchDetail("市城管执法局","法人");
  130. }
  131. function getWatch(){ //获取监管类内容
  132. tableData.value.JG =[];
  133. proSelectXyxxSjtjopthree({
  134. startC:forms.value.START_DATE,
  135. //startC:"2019-01-01",
  136. endC:forms.value.END_DATE,
  137. pageSize:10000,
  138. pageIndex:1
  139. }).then(res =>{
  140. InsertSyslog(localStorage.getItem("xyxx_usercode"),localStorage.getItem("xyxx_unitcode"), "信息查询", "数据归集推送查询成功", "数据归集推送", "")
  141. tableData.value.JG = res.msg[0].Rows
  142. })
  143. }
  144. function getPermission(){ //获取许可类、履约类内容
  145. tableData.value.XK = []
  146. tableData.value.LY = []
  147. proSelectXyxxSjtjopone({
  148. startC:forms.value.START_DATE,
  149. //startC:"2019-01-01",
  150. endC:forms.value.END_DATE,
  151. pageSize:10000,
  152. pageIndex:1
  153. }).then(res =>{
  154. let date = res.msg[0];
  155. if (date.Rows != null && date.Rows != "null") {
  156. let Frarr = [];
  157. let Frarr1 = [];
  158. let Zrrarr = [];
  159. let Zrrarr1 = [];
  160. let secondFa = [];
  161. let secondZrr = [];
  162. let thirdFa = [];
  163. let forthFa = [];
  164. let thirdZrr = [];
  165. let forthZrr = [];
  166. for (let i = 0; i < date.Rows.length; i++) {
  167. var secondData = { 单位: "", 类别: "", XDR: "", 总数: "0" }
  168. var secondData1 = { 类别: "", XDR: "", 总数: "0" }
  169. if (date.Rows[i].类别 != "公积金缴存信息" && date.Rows[i].类别 != "公积金贷款逾期信息") {
  170. if (date.Rows[i].XDR == "法人") {
  171. secondData.类别 = date.Rows[i].类别;
  172. secondData.XDR = date.Rows[i].XDR;
  173. secondData.单位 = date.Rows[i].UNIT;
  174. secondData.总数 = date.Rows[i].总数 * 1;
  175. secondFa += secondData.总数 *1;
  176. Frarr.push(secondData);
  177. } else if (date.Rows[i].XDR == "自然人") {
  178. secondData.类别 = date.Rows[i].类别;
  179. secondData.XDR = date.Rows[i].XDR;
  180. secondData.单位 = date.Rows[i].UNIT;
  181. secondData.总数 = date.Rows[i].总数 * 1;
  182. secondZrr += secondData.总数 *1;
  183. Zrrarr.push(secondData);
  184. }
  185. } else {
  186. if (date.Rows[i].XDR == "法人") {
  187. secondData1.类别 = date.Rows[i].类别;
  188. secondData1.XDR = date.Rows[i].XDR;
  189. secondData1.总数 = date.Rows[i].总数 * 1;
  190. if (date.Rows[i].类别 != "公积金缴存信息") {
  191. thirdFa += secondData1.总数* 1;
  192. } else {
  193. forthFa += secondData1.总数* 1;
  194. }
  195. Frarr1.push(secondData1);
  196. } else if (date.Rows[i].XDR == "自然人") {
  197. secondData1.类别 = date.Rows[i].类别;
  198. secondData1.XDR = date.Rows[i].XDR;
  199. secondData1.总数 = date.Rows[i].总数 * 1;
  200. if (date.Rows[i].类别 != "公积金缴存信息") {
  201. thirdZrr += secondData1.总数* 1;
  202. } else {
  203. forthZrr += secondData1.总数 * 1;
  204. }
  205. Zrrarr1.push(secondData1);
  206. }
  207. }
  208. }
  209. let sortTwoCate = function (a, b) {
  210. var srcDataNew = ["xx", "rx","zx","fx"];
  211. if (srcDataNew.indexOf(a.单位) === srcDataNew.indexOf(b.单位)) {
  212. return 0;
  213. } else {
  214. if (srcDataNew.indexOf(a.单位) > srcDataNew.indexOf(b.单位)) {
  215. return 1;
  216. } else {
  217. return -1;
  218. }
  219. }
  220. }
  221. Frarr.sort(sortTwoCate);
  222. for (let i = 0 ; i < Frarr.length ; i++) {
  223. let obj = {
  224. ACCOUNTTYPE:Frarr[i].类别,
  225. XDR:Frarr[i].XDR,
  226. ACCOUNTNUMBER:Frarr[i].总数.toLocaleString()
  227. }
  228. tableData.value.XK.push(obj)
  229. }
  230. for (var i = 0 ; i < Zrrarr.length ; i++) {
  231. let obj = {
  232. ACCOUNTTYPE:Zrrarr[i].类别,
  233. XDR:Zrrarr[i].XDR,
  234. ACCOUNTNUMBER:Zrrarr[i].总数.toLocaleString()
  235. }
  236. tableData.value.XK.push(obj)
  237. }
  238. for (let i = 0 ; i < Frarr1.length ; i++) {
  239. let obj = {
  240. ACCOUNTTYPE:Frarr1[i].类别,
  241. XDR:Frarr1[i].XDR,
  242. ACCOUNTNUMBER:Frarr1[i].总数.toLocaleString()
  243. }
  244. tableData.value.LY.push(obj)
  245. }
  246. for (var i = 0 ; i < Zrrarr1.length ; i++) {
  247. let obj = {
  248. ACCOUNTTYPE:Zrrarr1[i].类别,
  249. XDR:Zrrarr1[i].XDR,
  250. ACCOUNTNUMBER:Zrrarr1[i].总数.toLocaleString()
  251. }
  252. tableData.value.LY.push(obj)
  253. }
  254. }else{
  255. tableData.value.XK = []
  256. tableData.value.LY = []
  257. }
  258. })
  259. }
  260. function getWatchDetail(xxsx,xdr){ //获取监管类下明细事项类查询
  261. tableData.value.MX = []
  262. proSelectXyxxSjtjoptwo({
  263. startC:forms.value.START_DATE,
  264. //startC:"2019-01-01",
  265. endC:forms.value.END_DATE,
  266. UNIT: xxsx,
  267. XDR_TYPE: xdr
  268. }).then(res =>{
  269. let date = res.msg[0];
  270. if (date.Rows != null && date.Rows != "null"){
  271. for(let i=0;i<date.Rows.length;i++){
  272. let obj = {
  273. ACCOUNTTYPE:date.Rows[i].XXSX,
  274. XDR:date.Rows[i].XDR,
  275. ACCOUNTNUMBER:date.Rows[i].ACCOUNTNUMBER.toLocaleString()
  276. }
  277. tableData.value.MX.push(obj);
  278. }
  279. }else{
  280. tableData.value.MX = []
  281. }
  282. })
  283. }
  284. function showDialog(type,dialogType,data){
  285. isEditDialogShow.value = true;
  286. currentDialogType.value = dialogType;
  287. if(dialogType == "matter"){
  288. let obj = {
  289. START_DATE:forms.value.START_DATE,
  290. //START_DATE:"2019-01-01",
  291. END_DATE:forms.value.END_DATE,
  292. XXSX:data.ACCOUNTTYPE,
  293. }
  294. changeOperation(type,obj)
  295. }else{
  296. changeOperation(type,data)
  297. }
  298. }
  299. onBeforeMount(() =>{
  300. forms.value.START_DATE = getFullYear("year") + "-01-01";
  301. forms.value.END_DATE = getFullYear("day");
  302. debugger
  303. getTableData()
  304. })
  305. return {
  306. forms,
  307. formRef,
  308. formConfig,
  309. getTableData,
  310. matterImputationStaticsSituationHeaderJG,
  311. tableData,
  312. getWatchDetail,
  313. showDialog,
  314. isEditDialogShow,
  315. currentDialogType,
  316. dialogOperationType,
  317. currentDialogOpObj
  318. }
  319. }
  320. }
  321. </script>
  322. <style scoped lang="scss">
  323. .statics-situation{
  324. padding: 20px;
  325. }
  326. .tables-part{
  327. display: flex;
  328. flex-wrap: wrap;
  329. align-content: space-around;
  330. justify-content: space-evenly;
  331. }
  332. .table-single-part{
  333. width: 48%;
  334. height: 48%;
  335. }
  336. .single-header{
  337. span{
  338. font-size: 16px;
  339. font-weight:bold;
  340. }
  341. padding-top: 10px;
  342. padding-bottom: 10px;
  343. border-bottom: 1px #e7eaec solid;
  344. }
  345. .single-content{
  346. padding-top: 10px;
  347. height: 250px;
  348. overflow: auto;
  349. }
  350. .show-part{
  351. color: #23527c;
  352. }
  353. </style>