Ver Fonte

新增人工采集数据

邵洋 há 1 ano atrás
pai
commit
369caf1453

+ 48 - 0
src/api/basicData/xcrBranchInfo.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询分支机构信息列表
+export function listInfo(query) {
+  return request({
+    url: '/basicData/xcrBranchInfo/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询分支机构信息详细
+export function getInfo(id) {
+  return request({
+    url: '/basicData/xcrBranchInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增分支机构信息
+export function addInfo(data) {
+  return request({
+    url: '/basicData/xcrBranchInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改分支机构信息
+export function updateInfo(data) {
+  return request({
+    url: '/basicData/xcrBranchInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除分支机构信息
+export function delInfo(id) {
+  return request({
+    url: '/basicData/xcrBranchInfo/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delInfoBatch(ids) {
+  return request.post('/basicData/xcrBranchInfo/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrChangeInfo.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询变更信息列表
+export function listInfo(query) {
+  return request({
+    url: '/basicData/xcrChangeInfo/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询变更信息详细
+export function getInfo(id) {
+  return request({
+    url: '/basicData/xcrChangeInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增变更信息
+export function addInfo(data) {
+  return request({
+    url: '/basicData/xcrChangeInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改变更信息
+export function updateInfo(data) {
+  return request({
+    url: '/basicData/xcrChangeInfo',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除变更信息
+export function delInfo(id) {
+  return request({
+    url: '/basicData/xcrChangeInfo/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delInfoBatch(ids) {
+  return request.post('/basicData/xcrChangeInfo/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrOverseasInvestment.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询对外投资列表
+export function listInvestment(query) {
+  return request({
+    url: '/basicData/xcrOverseasInvestment/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询对外投资详细
+export function getInvestment(id) {
+  return request({
+    url: '/basicData/xcrOverseasInvestment/' + id,
+    method: 'get'
+  })
+}
+
+// 新增对外投资
+export function addInvestment(data) {
+  return request({
+    url: '/basicData/xcrOverseasInvestment',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改对外投资
+export function updateInvestment(data) {
+  return request({
+    url: '/basicData/xcrOverseasInvestment',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除对外投资
+export function delInvestment(id) {
+  return request({
+    url: '/basicData/xcrOverseasInvestment/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delInvestmentBatch(ids) {
+  return request.post('/basicData/xcrOverseasInvestment/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrPayTaxes.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询纳税信息列表
+export function listTaxes(query) {
+  return request({
+    url: '/basicData/xcrPayTaxes/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询纳税信息详细
+export function getTaxes(id) {
+  return request({
+    url: '/basicData/xcrPayTaxes/' + id,
+    method: 'get'
+  })
+}
+
+// 新增纳税信息
+export function addTaxes(data) {
+  return request({
+    url: '/basicData/xcrPayTaxes',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改纳税信息
+export function updateTaxes(data) {
+  return request({
+    url: '/basicData/xcrPayTaxes',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除纳税信息
+export function delTaxes(id) {
+  return request({
+    url: '/basicData/xcrPayTaxes/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delTaxesBatch(ids) {
+  return request.post('/basicData/xcrPayTaxes/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrShareholdingRatio.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询持股比例列表
+export function listRatio(query) {
+  return request({
+    url: '/basicData/xcrShareholdingRatio/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询持股比例详细
+export function getRatio(id) {
+  return request({
+    url: '/basicData/xcrShareholdingRatio/' + id,
+    method: 'get'
+  })
+}
+
+// 新增持股比例
+export function addRatio(data) {
+  return request({
+    url: '/basicData/xcrShareholdingRatio',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改持股比例
+export function updateRatio(data) {
+  return request({
+    url: '/basicData/xcrShareholdingRatio',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除持股比例
+export function delRatio(id) {
+  return request({
+    url: '/basicData/xcrShareholdingRatio/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delRatioBatch(ids) {
+  return request.post('/basicData/xcrShareholdingRatio/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrSocialSecurity.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询社会保险费欠费情况列表
+export function listSecurity(query) {
+  return request({
+    url: '/basicData/xcrSocialSecurity/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询社会保险费欠费情况详细
+export function getSecurity(id) {
+  return request({
+    url: '/basicData/xcrSocialSecurity/' + id,
+    method: 'get'
+  })
+}
+
+// 新增社会保险费欠费情况
+export function addSecurity(data) {
+  return request({
+    url: '/basicData/xcrSocialSecurity',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改社会保险费欠费情况
+export function updateSecurity(data) {
+  return request({
+    url: '/basicData/xcrSocialSecurity',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除社会保险费欠费情况
+export function delSecurity(id) {
+  return request({
+    url: '/basicData/xcrSocialSecurity/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delSecurityBatch(ids) {
+  return request.post('/basicData/xcrSocialSecurity/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrSocialSecurityPayment.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询企业社会保险费缴纳信息列表
+export function listPayment(query) {
+  return request({
+    url: '/basicData/xcrSocialSecurityPayment/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询企业社会保险费缴纳信息详细
+export function getPayment(id) {
+  return request({
+    url: '/basicData/xcrSocialSecurityPayment/' + id,
+    method: 'get'
+  })
+}
+
+// 新增企业社会保险费缴纳信息
+export function addPayment(data) {
+  return request({
+    url: '/basicData/xcrSocialSecurityPayment',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改企业社会保险费缴纳信息
+export function updatePayment(data) {
+  return request({
+    url: '/basicData/xcrSocialSecurityPayment',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除企业社会保险费缴纳信息
+export function delPayment(id) {
+  return request({
+    url: '/basicData/xcrSocialSecurityPayment/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delPaymentBatch(ids) {
+  return request.post('/basicData/xcrSocialSecurityPayment/delete',ids)
+}

+ 48 - 0
src/api/basicData/xcrSummaryLoanDetails.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 查询贷明细汇总列表
+export function listDetails(query) {
+  return request({
+    url: '/basicData/xcrSummaryLoanDetails/findByPage',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询贷明细汇总详细
+export function getDetails(id) {
+  return request({
+    url: '/basicData/xcrSummaryLoanDetails/' + id,
+    method: 'get'
+  })
+}
+
+// 新增贷明细汇总
+export function addDetails(data) {
+  return request({
+    url: '/basicData/xcrSummaryLoanDetails',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改贷明细汇总
+export function updateDetails(data) {
+  return request({
+    url: '/basicData/xcrSummaryLoanDetails',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除贷明细汇总
+export function delDetails(id) {
+  return request({
+    url: '/basicData/xcrSummaryLoanDetails/deleteAll',
+    method: 'delete'
+  })
+}
+// 批量删除行政许可
+export function delDetailsBatch(ids) {
+  return request.post('/basicData/xcrSummaryLoanDetails/delete',ids)
+}

+ 289 - 0
src/views/basicData/xcrBranchInfo/index.vue

@@ -0,0 +1,289 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrBranchInfoList.length"
+            v-hasPermi="['basicData:xcrBranchInfo:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrBranchInfo:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrBranchInfo:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:info:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrBranchInfoList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="企业" align="center" prop="enterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="分支机构名称" align="center" prop="branchName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="负责人" align="center" prop="responsiblePerson" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="地区" align="center" prop="region" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="成立日期" align="center" prop="establishmentDate" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.establishmentDate, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="登记状态" align="center" prop="registrationStatus" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Info">
+  import {
+    listInfo,
+    getInfo,
+    delInfo,
+    delInfoBatch
+  } from "@/api/basicData/xcrBranchInfo";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrBranchInfoList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrBranchInfo/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        enterpriseName: null,
+                        unifiedSocialCreditCode: null,
+                        branchName: null,
+                        responsiblePerson: null,
+                        region: null,
+                        establishmentDate: null,
+                        registrationStatus: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询分支机构信息列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listInfo(toServerObj).then(response => {
+            xcrBranchInfoList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        enterpriseName: null,
+                        unifiedSocialCreditCode: null,
+                        branchName: null,
+                        responsiblePerson: null,
+                        region: null,
+                        establishmentDate: null,
+                registrationStatus: "0"
+    };
+    proxy.resetForm("xcrBranchInfoRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delInfo();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delInfoBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrBranchInfo/export', {
+      ...queryParams.value
+    }, `分支机构信息_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrBranchInfo/getUploadTemplate',{}, `分支机构信息模板.xlsx`)
+  }
+  getList();
+</script>

+ 287 - 0
src/views/basicData/xcrChangeInfo/index.vue

@@ -0,0 +1,287 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrChangeInfoList.length"
+            v-hasPermi="['basicData:xcrChangeInfo:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrChangeInfo:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrChangeInfo:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:info:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrChangeInfoList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="企业名称" align="center" prop="enterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="序号" align="center" prop="serialNumber" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="变更日期" align="center" prop="changeDate" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.changeDate, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="变更项目" align="center" prop="changeItem" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="变更前内容" align="center" prop="contentBefore" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="变更后内容" align="center" prop="contentAfter" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Info">
+  import {
+    listInfo,
+    getInfo,
+    delInfo,
+    delInfoBatch
+  } from "@/api/basicData/xcrChangeInfo";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrChangeInfoList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrChangeInfo/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        enterpriseName: null,
+                        serialNumber: null,
+                        changeDate: null,
+                        changeItem: null,
+                        contentBefore: null,
+                        contentAfter: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询变更信息列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listInfo(toServerObj).then(response => {
+            xcrChangeInfoList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        enterpriseName: null,
+                        serialNumber: null,
+                        changeDate: null,
+                        changeItem: null,
+                        contentBefore: null,
+                        contentAfter: null
+    };
+    proxy.resetForm("xcrChangeInfoRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delInfo();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delInfoBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrChangeInfo/export', {
+      ...queryParams.value
+    }, `变更信息_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrChangeInfo/getUploadTemplate',{}, `变更信息模板.xlsx`)
+  }
+  getList();
+</script>

+ 2 - 5
src/views/basicData/xcrFoodSamplingInspection/index.vue

@@ -95,11 +95,8 @@
                   <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip='true' width="150"/>
                   <el-table-column label="商标" align="center" prop="trademark" :show-overflow-tooltip='true' width="150"/>
                   <el-table-column label="执行标准" align="center" prop="standardExecuted" :show-overflow-tooltip='true' width="150"/>
-                  <el-table-column label="规格型号" align="center" prop="modelSpecification" :show-overflow-tooltip='true' width="150"/>
-              <el-table-column label="生产加工购进日期" align="center" prop="productionPurchaseDate" width="180">
-                <template #default="scope">
-                  <span>{{ parseTime(scope.row.productionPurchaseDate, '{y}-{m}-{d}') }}</span>
-                </template>
+                  <el-table-column label="型号规格" align="center" prop="modelSpecification" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="生产加工购进日期" align="center" prop="productionPurchaseDate" width="180">
               </el-table-column>
                   <el-table-column label="检测依据" align="center" prop="testingBasis" :show-overflow-tooltip='true' width="150"/>
     </el-table>

+ 318 - 0
src/views/basicData/xcrOverseasInvestment/index.vue

@@ -0,0 +1,318 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrOverseasInvestmentList.length"
+            v-hasPermi="['basicData:xcrOverseasInvestment:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrOverseasInvestment:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrOverseasInvestment:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:investment:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrOverseasInvestmentList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="企业名称" align="center" prop="enterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="序号" align="center" prop="serialNumber" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="被投资企业名称" align="center" prop="investedEnterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="状态" align="center" prop="status" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="法定代表人的姓名" align="center" prop="legalRepresentative" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="注册资本" align="center" prop="registeredCapital" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="成立日期" align="center" prop="establishmentDate" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.establishmentDate, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="持股比例" align="center" prop="shareholdingRatio" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="认缴出资额/持股数" align="center" prop="subscribedCapital" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="认缴出资日期" align="center" prop="subscribedDate" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.subscribedDate, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="间接持股比例" align="center" prop="indirectShareholdingRatio" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="所属地区" align="center" prop="region" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="所属行业" align="center" prop="industry" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="投资数量" align="center" prop="investmentCount" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="关联产品/机构" align="center" prop="associatedProductsInstitutions" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Investment">
+  import {
+    listInvestment,
+    getInvestment,
+    delInvestment,
+    delInvestmentBatch
+  } from "@/api/basicData/xcrOverseasInvestment";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrOverseasInvestmentList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrOverseasInvestment/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        enterpriseName: null,
+                        serialNumber: null,
+                        investedEnterpriseName: null,
+                        status: null,
+                        legalRepresentative: null,
+                        registeredCapital: null,
+                        establishmentDate: null,
+                        shareholdingRatio: null,
+                        subscribedCapital: null,
+                        subscribedDate: null,
+                        indirectShareholdingRatio: null,
+                        region: null,
+                        industry: null,
+                        investmentCount: null,
+                        associatedProductsInstitutions: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询对外投资列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listInvestment(toServerObj).then(response => {
+            xcrOverseasInvestmentList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        enterpriseName: null,
+                        serialNumber: null,
+                        investedEnterpriseName: null,
+                status: "0",
+                        legalRepresentative: null,
+                        registeredCapital: null,
+                        establishmentDate: null,
+                        shareholdingRatio: null,
+                        subscribedCapital: null,
+                        subscribedDate: null,
+                        indirectShareholdingRatio: null,
+                        region: null,
+                        industry: null,
+                        investmentCount: null,
+                        associatedProductsInstitutions: null
+    };
+    proxy.resetForm("xcrOverseasInvestmentRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delInvestment();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delInvestmentBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrOverseasInvestment/export', {
+      ...queryParams.value
+    }, `对外投资_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrOverseasInvestment/getUploadTemplate',{}, `对外投资模板.xlsx`)
+  }
+  getList();
+</script>

+ 293 - 0
src/views/basicData/xcrPayTaxes/index.vue

@@ -0,0 +1,293 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrPayTaxesList.length"
+            v-hasPermi="['basicData:xcrPayTaxes:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrPayTaxes:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrPayTaxes:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:taxes:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrPayTaxesList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="社会信用代码" align="center" prop="socialCreditCode" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="纳税人名称" align="center" prop="taxpayerName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="第一季" align="center" prop="q1" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="第二季" align="center" prop="q2" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="第三季" align="center" prop="q3" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="第四季" align="center" prop="q4" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="年度" align="center" prop="annualTotal" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="当前是否欠缴税费" align="center" prop="isCurrentArrears" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="欠缴税费金额" align="center" prop="arrearsAmount" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="是否非正常户" align="center" prop="isAbnormalAccount" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Taxes">
+  import {
+    listTaxes,
+    getTaxes,
+    delTaxes,
+    delTaxesBatch
+  } from "@/api/basicData/xcrPayTaxes";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrPayTaxesList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrPayTaxes/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        socialCreditCode: null,
+                        taxpayerName: null,
+                        q1: null,
+                        q2: null,
+                        q3: null,
+                        q4: null,
+                        annualTotal: null,
+                        isCurrentArrears: null,
+                        arrearsAmount: null,
+                        isAbnormalAccount: null
+    },
+    rules: {
+                    socialCreditCode: [
+                {
+                  required: true, message: "社会信用代码不能为空", trigger: "blur" }
+              ],
+                    taxpayerName: [
+                {
+                  required: true, message: "纳税人名称不能为空", trigger: "blur" }
+              ],
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询纳税信息列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listTaxes(toServerObj).then(response => {
+            xcrPayTaxesList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        socialCreditCode: null,
+                        taxpayerName: null,
+                        q1: null,
+                        q2: null,
+                        q3: null,
+                        q4: null,
+                        annualTotal: null,
+                        isCurrentArrears: null,
+                        arrearsAmount: null,
+                        isAbnormalAccount: null
+    };
+    proxy.resetForm("xcrPayTaxesRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delTaxes();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delTaxesBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrPayTaxes/export', {
+      ...queryParams.value
+    }, `纳税信息_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrPayTaxes/getUploadTemplate',{}, `纳税信息模板.xlsx`)
+  }
+  getList();
+</script>

+ 288 - 0
src/views/basicData/xcrShareholdingRatio/index.vue

@@ -0,0 +1,288 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrShareholdingRatioList.length"
+            v-hasPermi="['basicData:xcrShareholdingRatio:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrShareholdingRatio:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrShareholdingRatio:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:ratio:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrShareholdingRatioList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="企业名称" align="center" prop="enterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="股东名称" align="center" prop="shareholderName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="股份比例" align="center" width="150">
+                    <template #default="scope">
+                      <span>{{ (scope.row.shareRatio * 100).toFixed(2) + '%' }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="认缴出资额" align="center" prop="subscribedCapital" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="认缴出资日期" align="center" prop="subscribedDate" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.subscribedDate, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Ratio">
+  import {
+    listRatio,
+    getRatio,
+    delRatio,
+    delRatioBatch
+  } from "@/api/basicData/xcrShareholdingRatio";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrShareholdingRatioList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrShareholdingRatio/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        enterpriseName: null,
+                        shareholderName: null,
+                        shareRatio: null,
+                        subscribedCapital: null,
+                        subscribedDate: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询持股比例列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listRatio(toServerObj).then(response => {
+            xcrShareholdingRatioList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        enterpriseName: null,
+                        shareholderName: null,
+                        shareRatio: null,
+                        subscribedCapital: null,
+                        subscribedDate: null
+    };
+    proxy.resetForm("xcrShareholdingRatioRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delRatio();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delRatioBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrShareholdingRatio/export', {
+      ...queryParams.value
+    }, `持股比例_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrShareholdingRatio/getUploadTemplate',{}, `持股比例模板.xlsx`)
+  }
+  getList();
+</script>

+ 313 - 0
src/views/basicData/xcrSocialSecurity/index.vue

@@ -0,0 +1,313 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrSocialSecurityList.length"
+            v-hasPermi="['basicData:xcrSocialSecurity:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrSocialSecurity:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrSocialSecurity:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:security:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrSocialSecurityList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="社保经办机构" align="center" prop="socialSecurityOffice" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="缴费人识别号" align="center" prop="taxpayerIdentificationNumber" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="缴费人名称" align="center" prop="taxpayerName" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="税款所属期起" align="center" prop="taxPeriodStart" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.taxPeriodStart, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="税款所属期止" align="center" prop="taxPeriodEnd" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.taxPeriodEnd, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="参保费种" align="center" prop="insuredItem" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="征收品目" align="center" prop="collectionItem" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="应征发生日期" align="center" prop="assessmentDate" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.assessmentDate, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="应征费款" align="center" prop="assessedAmount" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="已缴费款" align="center" prop="paidAmount" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="欠费费款" align="center" prop="outstandingAmount" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="预算科目" align="center" prop="budgetSubject" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Security">
+  import {
+    listSecurity,
+    getSecurity,
+    delSecurity,
+    delSecurityBatch
+  } from "@/api/basicData/xcrSocialSecurity";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrSocialSecurityList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrSocialSecurity/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        socialSecurityOffice: null,
+                        taxpayerIdentificationNumber: null,
+                        taxpayerName: null,
+                        taxPeriodStart: null,
+                        taxPeriodEnd: null,
+                        insuredItem: null,
+                        collectionItem: null,
+                        assessmentDate: null,
+                        assessedAmount: null,
+                        paidAmount: null,
+                        outstandingAmount: null,
+                        budgetSubject: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询社会保险费欠费情况列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listSecurity(toServerObj).then(response => {
+            xcrSocialSecurityList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        socialSecurityOffice: null,
+                        taxpayerIdentificationNumber: null,
+                        taxpayerName: null,
+                        taxPeriodStart: null,
+                        taxPeriodEnd: null,
+                        insuredItem: null,
+                        collectionItem: null,
+                        assessmentDate: null,
+                        assessedAmount: null,
+                        paidAmount: null,
+                        outstandingAmount: null,
+                        budgetSubject: null
+    };
+    proxy.resetForm("xcrSocialSecurityRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delSecurity();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delSecurityBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrSocialSecurity/export', {
+      ...queryParams.value
+    }, `社会保险费欠费情况_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrSocialSecurity/getUploadTemplate',{}, `社会保险费欠费情况模板.xlsx`)
+  }
+  getList();
+</script>

+ 287 - 0
src/views/basicData/xcrSocialSecurityPayment/index.vue

@@ -0,0 +1,287 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrSocialSecurityPaymentList.length"
+            v-hasPermi="['basicData:xcrSocialSecurityPayment:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrSocialSecurityPayment:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrSocialSecurityPayment:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:payment:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrSocialSecurityPaymentList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="企业名称" align="center" prop="enterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="企业职工基本养老保险近一年月均参保人数分档" align="center" prop="avgMonthlyParticipants" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="企业职工基本养老保险近一年月均单位缴费金额分档" align="center" prop="avgMonthlyContribution" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="企业职工基本养老保险最近一次正常缴费月份" align="center" prop="lastNormalPaymentMonth" width="180">
+                <template #default="scope">
+                  <span>{{ parseTime(scope.row.lastNormalPaymentMonth, '{y}-{m}-{d}') }}</span>
+                </template>
+              </el-table-column>
+                  <el-table-column label="当前是否欠缴" align="center" prop="isCurrentArrears" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Payment">
+  import {
+    listPayment,
+    getPayment,
+    delPayment,
+    delPaymentBatch
+  } from "@/api/basicData/xcrSocialSecurityPayment";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrSocialSecurityPaymentList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrSocialSecurityPayment/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        enterpriseName: null,
+                        avgMonthlyParticipants: null,
+                        avgMonthlyContribution: null,
+                        lastNormalPaymentMonth: null,
+                        isCurrentArrears: null,
+                        remarks: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询企业社会保险费缴纳信息列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listPayment(toServerObj).then(response => {
+            xcrSocialSecurityPaymentList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        enterpriseName: null,
+                        avgMonthlyParticipants: null,
+                        avgMonthlyContribution: null,
+                        lastNormalPaymentMonth: null,
+                        isCurrentArrears: null,
+                        remarks: null
+    };
+    proxy.resetForm("xcrSocialSecurityPaymentRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delPayment();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delPaymentBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrSocialSecurityPayment/export', {
+      ...queryParams.value
+    }, `企业社会保险费缴纳信息_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrSocialSecurityPayment/getUploadTemplate',{}, `企业社会保险费缴纳信息模板.xlsx`)
+  }
+  getList();
+</script>

+ 311 - 0
src/views/basicData/xcrSummaryLoanDetails/index.vue

@@ -0,0 +1,311 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+                  <el-form-item label="统一社会信用代码" prop="uniCode" label-width="200">
+                    <el-input
+                        v-model="queryParams.uniCode"
+                        placeholder="请输入统一社会信用代码"
+                        clearable
+                        @keyup.enter="handleQuery"
+                    />
+                  </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            :disabled="!xcrSummaryLoanDetailsList.length"
+            v-hasPermi="['basicData:xcrSummaryLoanDetails:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="info"
+            plain
+            icon="Upload"
+            @click="handleImport"
+            v-hasPermi="['basicData:xcrSummaryLoanDetails:import']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            @click="batchDelete"
+            v-hasPermi="['basicData:xcrSummaryLoanDetails:delete']"
+            :disabled="ids.length === 0"
+        >批量删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-popconfirm
+            title="你确定清除所有数据?"
+            confirm-button-text="是的"
+            cancel-button-text="不是"
+            :icon="InfoFilled"
+            icon-color="#626AEF"
+            @confirm="handleDelete"
+        >
+          <template #reference>
+            <el-button
+                type="danger"
+                plain
+                icon="Delete"
+                v-hasPermi="['basicData:details:delete']"
+            >清除全表
+            </el-button>
+          </template>
+        </el-popconfirm>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="success" plain icon="Download" @click="downloadTemplate">
+          下载导入模板
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="xcrSummaryLoanDetailsList" height="650" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
+        <el-table-column label="统一社会信用代码" align="center" prop="uniCode" width="200"/>
+                  <el-table-column label="所在地" align="center" prop="location" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="企业名称" align="center" prop="enterpriseName" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="所属行业" align="center" prop="industry" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="联系人" align="center" prop="contactPerson" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="联系人电话" align="center" prop="contactPhone" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="发放贷款" align="center" prop="loanAmount" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="贷款利率" align="center" prop="interestRate" :show-overflow-tooltip='true' width="150"/>
+              <el-table-column label="发放时间" align="center" prop="disbursementDate" :show-overflow-tooltip='true' width="180">
+              </el-table-column>
+              <el-table-column label="到期时间" align="center" prop="maturityDate" :show-overflow-tooltip='true' width="180">
+              </el-table-column>
+                  <el-table-column label="已还本金" align="center" prop="repaidPrincipal" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="五级分类情况" align="center" prop="fiveLevelClassification" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="授信银行" align="center" prop="grantingBank" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="银行联系人" align="center" prop="bankContactPerson" :show-overflow-tooltip='true' width="150"/>
+                  <el-table-column label="银行联系人电话" align="center" prop="bankContactPhone" :show-overflow-tooltip='true' width="150"/>
+    </el-table>
+
+    <div style="position: fixed;bottom: 20px;right: 10px;">
+      <pagination
+          v-show="total>0"
+          :total="total"
+          v-model:page="queryParams.pageNum"
+          v-model:limit="queryParams.pageSize"
+          @pagination="getList"
+      />
+    </div>
+
+    <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
+      <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
+                 :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
+                 :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
+        <el-icon class="el-icon--upload">
+          <upload-filled/>
+        </el-icon>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <template #tip>
+          <div class="el-upload__tip text-center">
+            <span>仅允许导入xls、xlsx格式文件。</span>
+          </div>
+        </template>
+      </el-upload>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">确 定</el-button>
+          <el-button @click="upload.open = false">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Details">
+  import {
+    listDetails,
+    getDetails,
+    delDetails,
+    delDetailsBatch
+  } from "@/api/basicData/xcrSummaryLoanDetails";
+  import {reactive, ref, toRaw} from "vue";
+  import {getToken} from "@/utils/auth";
+  import {ElMessage} from "element-plus";
+  import {likeQueryMethod} from "@/utils/likeQueryMethod";
+
+  const {proxy} = getCurrentInstance();
+
+  const xcrSummaryLoanDetailsList = ref([]);
+  const open = ref(false);
+  const loading = ref(true);
+  const showSearch = ref(true);
+  const ids = ref([]);
+  const single = ref(true);
+  const multiple = ref(true);
+  const total = ref(0);
+  const title = ref("");
+
+  const upload = reactive({
+    // 是否显示弹出层(用户导入)
+    open: false,
+    // 弹出层标题(用户导入)
+    title: '',
+    // 是否禁用上传
+    isUploading: false,
+    // 设置上传的请求头部
+    headers: {Authorization: getToken()},
+    // 上传的地址
+    url: import.meta.env.VITE_APP_BASE_API + '/basicData/xcrSummaryLoanDetails/importData'
+  })
+  const handleFileSuccess = (e) => {
+    if (e.code == 200) {
+      ElMessage({
+        type: "success",
+        message: e.msg
+      })
+      getList()
+      proxy.$refs['uploadRef']?.clearFiles()
+    } else {
+      ElMessage({
+        type: "error",
+        message: e.msg
+      })
+      proxy.$refs['uploadRef']?.clearFiles()
+    }
+  }
+
+  function submitFileForm() {
+    proxy.$refs['uploadRef']?.submit();
+    upload.open = false;
+  }
+
+  function handleImport() {
+    upload.open = true
+  }
+
+  const data = reactive({
+    form: {},
+    queryParams: {
+      pageNum: 1,
+      pageSize: 20,
+                        uniCode: '',
+                        location: null,
+                        enterpriseName: null,
+                        unifiedSocialCreditCode: null,
+                        industry: null,
+                        contactPerson: null,
+                        contactPhone: null,
+                        loanAmount: null,
+                        interestRate: null,
+                        disbursementDate: null,
+                        maturityDate: null,
+                        repaidPrincipal: null,
+                        fiveLevelClassification: null,
+                        grantingBank: null,
+                        bankContactPerson: null,
+                        bankContactPhone: null
+    },
+    rules: {
+    }
+  });
+
+  const {queryParams, form, rules} = toRefs(data);
+
+  /** 查询贷明细汇总列表 */
+  function getList() {
+    loading.value = true;
+                                                                                              let toServerObj = likeQueryMethod('uni_code', queryParams.value.uniCode, queryParams.value.pageNum, queryParams.value.pageSize);
+    listDetails(toServerObj).then(response => {
+            xcrSummaryLoanDetailsList.value = response.records;
+      total.value = response.total;
+      loading.value = false;
+    });
+  }
+
+
+  // 表单重置
+  function reset() {
+    form.value = {
+                        id: null,
+                        uniCode: '',
+                        location: null,
+                        enterpriseName: null,
+                        unifiedSocialCreditCode: null,
+                        industry: null,
+                        contactPerson: null,
+                        contactPhone: null,
+                        loanAmount: null,
+                        interestRate: null,
+                        disbursementDate: null,
+                        maturityDate: null,
+                        repaidPrincipal: null,
+                        fiveLevelClassification: null,
+                        grantingBank: null,
+                        bankContactPerson: null,
+                        bankContactPhone: null
+    };
+    proxy.resetForm("xcrSummaryLoanDetailsRef");
+  }
+
+  /** 搜索按钮操作 */
+  function handleQuery() {
+    queryParams.value.pageNum = 1;
+    getList();
+  }
+
+  /** 重置按钮操作 */
+  function resetQuery() {
+    proxy.resetForm("queryRef");
+    handleQuery();
+  }
+
+  // 多选框选中数据
+  function handleSelectionChange(selection) {
+    ids.value = selection.map(item => item.id);
+    single.value = selection.length != 1;
+    multiple.value = !selection.length;
+  }
+
+
+  /** 删除按钮操作 */
+  async function handleDelete(row) {
+    const res = await delDetails();
+    if(res.code == 200){
+      ElMessage({
+        type:'success',
+        message:'删除成功'
+      })
+      getList();
+    }
+  }
+  /** 批量删除*/
+  const batchDelete = (row)=>{
+    const idsToS = row.xhCodeId || ids.value;
+    (proxy.$modal).confirm('是否确认删除这' + idsToS.length+'条的数据项?').then(function() {
+      return delDetailsBatch(toRaw(idsToS));
+    }).then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {});
+  }
+
+  /** 导出按钮操作 */
+  function handleExport() {
+    proxy.download('basicData/xcrSummaryLoanDetails/export', {
+      ...queryParams.value
+    }, `贷明细汇总_${new Date().getTime()}.xlsx`)
+  }
+  const downloadTemplate = ()=>{
+    proxy.download('basicData/xcrSummaryLoanDetails/getUploadTemplate',{}, `贷明细汇总模板.xlsx`)
+  }
+  getList();
+</script>