|
|
@@ -1,307 +1,9 @@
|
|
|
-<template>
|
|
|
- <div class="p-4">
|
|
|
- <div class="mb-6 p-4 bg-white rounded-lg shadow-sm flex flex-wrap items-center gap-4">
|
|
|
- <el-form :inline="true" :model="searchForm" class="flex-grow flex flex-wrap">
|
|
|
- <el-form-item>
|
|
|
- <span slot="label" class="font-size-4.5">企业名称:</span>
|
|
|
- <el-input
|
|
|
- v-model="searchForm.enterpriseName"
|
|
|
- style="width: 240px"
|
|
|
- size="default"
|
|
|
- placeholder="请输入企业名称"
|
|
|
- @clear="handleSearch"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <span slot="label" class="font-size-4.5">信用代码:</span>
|
|
|
- <el-input
|
|
|
- v-model="searchForm.unifiedSocialCreditCode"
|
|
|
- style="width: 240px"
|
|
|
- size="default"
|
|
|
- placeholder="输入统一社会信用代码"
|
|
|
- clearable
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <span slot="label" class="font-size-4.5">是否规上企业:</span>
|
|
|
- <el-select v-model="searchForm.isAboveDesignatedSize"
|
|
|
- style="width: 240px"
|
|
|
- size="default" placeholder="请选择">
|
|
|
- <el-option
|
|
|
- v-for="item in arrearsOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <span slot="label" class="font-size-4.5">是否高新技术企业:</span>
|
|
|
- <el-select v-model="searchForm.isHighTech"
|
|
|
- style="width: 240px"
|
|
|
- size="default" placeholder="请选择">
|
|
|
- <el-option
|
|
|
- v-for="item in arrearsOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" :icon="Search" @click="handleSearch" size="search">查询
|
|
|
- </el-button>
|
|
|
- <el-button :icon="Refresh" @click="handleResetSearch" size="search">重置</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <div class="flex gap-1" style="justify-content:flex-end">
|
|
|
- <el-button type="primary" :icon="Plus" @click="handleAdd" size="search">新增</el-button>
|
|
|
- <el-button
|
|
|
- type="danger"
|
|
|
- :icon="Delete"
|
|
|
- @click="handleBatchDelete"
|
|
|
- :disabled="selectedIds.length === 0"
|
|
|
- size="search"
|
|
|
- >批量删除
|
|
|
- </el-button
|
|
|
- >
|
|
|
- <el-button type="success" :icon="Download" @click="exportExcel" size="search">导出</el-button>
|
|
|
- <el-upload
|
|
|
- class="inline-block ml-2"
|
|
|
- action="/api/eenterpriseBasicInfo/importData"
|
|
|
- :show-file-list="false"
|
|
|
- :on-success="handleUploadSuccess"
|
|
|
- :on-error="handleUploadError"
|
|
|
- :before-upload="handleBeforeUpload"
|
|
|
- :http-request="(options) => importExcel(options.file)"
|
|
|
- >
|
|
|
- <el-button type="info" :icon="Upload" size="search">导入</el-button>
|
|
|
- </el-upload>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- Table -->
|
|
|
- <div class="bg-white rounded-lg shadow-sm p-4 overflow-x-auto">
|
|
|
- <el-table
|
|
|
- :data="tableData"
|
|
|
- style="width: 100%"
|
|
|
- border
|
|
|
- @selection-change="handleSelectionChange"
|
|
|
- :cell-style="{ fontSize: '14px' }"
|
|
|
- :header-cell-style="{ fontSize: '14px' }"
|
|
|
- :row-style="{ fontSize: '14px' }"
|
|
|
- >
|
|
|
- <el-table-column type="selection" width="55" fixed="left"/>
|
|
|
- <el-table-column prop="enterpriseName" label="企业名称" align="center"/>
|
|
|
- <el-table-column prop="unifiedSocialCreditCode" label="统一社会信用代码" align="center"/>
|
|
|
- <el-table-column prop="enterpriseLeader" label="企业负责人" align="center"/>
|
|
|
- <el-table-column prop="contactInformation" label="联系方式" align="center"/>
|
|
|
-
|
|
|
- <el-table-column prop="isAboveDesignatedSize" label="是否规上企业" align="center"/>
|
|
|
- <el-table-column prop="isHighTech" label="是否高新技术企业" align="center"/>
|
|
|
- <el-table-column prop="outputValue" label="产值(万元)" align="center"/>
|
|
|
- <el-table-column prop="outputValueYoy" label="产值同比(百分比)" align="center"/>
|
|
|
- <el-table-column prop="registrationDate" label="注册日期" align="center"/>
|
|
|
- <el-table-column prop="revenue" label="营收(万元)" align="center"/>
|
|
|
- <el-table-column prop="revenueYoy" label="营收同比(百分比)" align="center"/>
|
|
|
- <el-table-column prop="taxRevenue" label="税收(万元)" align="center"/>
|
|
|
- <el-table-column prop="taxRevenueYoy" label="税收同比(百分比)" align="center"/>
|
|
|
- <el-table-column label="操作" fixed="right" align="center">
|
|
|
- <template #default="{ row }">
|
|
|
- <el-button :icon="Edit" size="small" @click="handleEdit(row)">编辑</el-button>
|
|
|
- <el-button type="danger" :icon="Delete" size="small" @click="handleDelete(row.id)"
|
|
|
- >删除
|
|
|
- </el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
-
|
|
|
- <!-- Pagination -->
|
|
|
- <div class="mt-4 flex justify-end">
|
|
|
- <el-pagination
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- :current-page="pageNum"
|
|
|
- :page-sizes="[10, 20, 50, 100]"
|
|
|
- :page-size="pageSize"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- :total="total"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- Add/Edit Dialog -->
|
|
|
- <el-dialog
|
|
|
- v-model="dialogVisible"
|
|
|
- :title="dialogTitle"
|
|
|
- width="800px"
|
|
|
- :close-on-click-modal="false"
|
|
|
- :close-on-press-escape="false"
|
|
|
- >
|
|
|
- <el-form
|
|
|
- :model="formData"
|
|
|
- ref="formRef"
|
|
|
- label-width="120px"
|
|
|
- class="grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
|
- >
|
|
|
- <el-form-item
|
|
|
- label="企业名称"
|
|
|
- prop="enterpriseName"
|
|
|
- :rules="[{ required: true, message: '请输入企业名称', trigger: 'blur' }]"
|
|
|
- >
|
|
|
- <el-input v-model="formData.enterpriseName" placeholder="请输入企业名称"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="信用代码"
|
|
|
- prop="unifiedSocialCreditCode"
|
|
|
- :rules="[{ required: true, message: '请输入统一社会信用代码', trigger: 'blur' }]"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="formData.unifiedSocialCreditCode"
|
|
|
- placeholder="请输入统一社会信用代码"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="企业负责人"
|
|
|
- prop="enterpriseLeader"
|
|
|
- :rules="[{ required: true, message: '请输入企业负责人', trigger: 'blur' }]"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="formData.enterpriseLeader"
|
|
|
- placeholder="请输入企业负责人"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="联系方式"
|
|
|
- prop="contactInformation"
|
|
|
- :rules="[{ required: true, message: '请输入联系方式', trigger: 'blur' }]"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="formData.contactInformation"
|
|
|
- placeholder="请输入联系方式"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="是否规上企业"
|
|
|
- prop="isAboveDesignatedSize"
|
|
|
- :rules="[{ required: true, message: '请选择', trigger: 'change' }]"
|
|
|
- >
|
|
|
- <el-select v-model="formData.isAboveDesignatedSize" placeholder="请选择" style="width: 100%">
|
|
|
- <el-option
|
|
|
- v-for="item in arrearsOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="是否高新技术企业"
|
|
|
- prop="isHighTech"
|
|
|
- :rules="[{ required: true, message: '请选择', trigger: 'change' }]"
|
|
|
- >
|
|
|
- <el-select v-model="formData.isHighTech" placeholder="请选择" style="width: 100%">
|
|
|
- <el-option
|
|
|
- v-for="item in arrearsOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="产值(万元)"
|
|
|
- prop="outputValue"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入产值(万元)', trigger: 'blur' },
|
|
|
- { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
- ]"
|
|
|
- >
|
|
|
- <el-input v-model.number="formData.outputValue" placeholder="请输入产值(万元)"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="产值同比(百分比)"
|
|
|
- prop="outputValueYoy"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入产值同比(百分比)', trigger: 'blur' },
|
|
|
- { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
- ]"
|
|
|
- >
|
|
|
- <el-input v-model.number="formData.outputValueYoy" placeholder="请输入产值同比(百分比)"/>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="营收(万元)"
|
|
|
- prop="revenue"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入营收(万元)', trigger: 'blur' },
|
|
|
- { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
- ]"
|
|
|
- >
|
|
|
- <el-input v-model.number="formData.revenue" placeholder="请输入营收(万元)"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="营收同比(百分比)"
|
|
|
- prop="revenueYoy"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入营收同比(百分比)', trigger: 'blur' },
|
|
|
- { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
- ]"
|
|
|
- >
|
|
|
- <el-input v-model.number="formData.revenueYoy" placeholder="请输入营收同比(百分比)"/>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="税收(万元)"
|
|
|
- prop="taxRevenue"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入税收(万元)', trigger: 'blur' },
|
|
|
- { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
- ]"
|
|
|
- >
|
|
|
- <el-input v-model.number="formData.taxRevenue" placeholder="请输入税收(万元)"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="税收同比(百分比)"
|
|
|
- prop="taxRevenueYoy"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入税收同比(百分比)', trigger: 'blur' },
|
|
|
- { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
- ]"
|
|
|
- >
|
|
|
- <el-input v-model.number="formData.taxRevenueYoy" placeholder="请输入税收同比(百分比)"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="注册日期"
|
|
|
- prop="registrationDate"
|
|
|
- :rules="[{ required: true, message: '请选择注册日期', trigger: 'change' }]"
|
|
|
- >
|
|
|
- <el-date-picker v-model="formData.registrationDate" type="date" format="YYYY/MM/DD" value-format="YYYY-MM-DD"/>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <template #footer>
|
|
|
- <span class="dialog-footer">
|
|
|
- <el-button @click="dialogVisible = false">取消</el-button>
|
|
|
- <el-button type="primary" @click="handleConfirm">确定</el-button>
|
|
|
- </span>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
<script setup lang="ts">
|
|
|
-import {onMounted, reactive, ref} from 'vue'
|
|
|
-import {clientDownloadExcel, clientGet, clientPost} from '@/utils/request.ts'
|
|
|
-import type {FormInstance, UploadProps} from 'element-plus'
|
|
|
-import {ElForm, ElLoading, ElMessage, ElMessageBox} from 'element-plus'
|
|
|
-import {Delete, Download, Edit, Plus, Refresh, Search, Upload} from '@element-plus/icons-vue'
|
|
|
+import { onMounted, reactive, ref } from 'vue'
|
|
|
+import { clientDownloadExcel, clientGet, clientPost } from '@/utils/request.ts'
|
|
|
+import type { FormInstance, UploadProps } from 'element-plus'
|
|
|
+import { ElForm, ElLoading, ElMessage, ElMessageBox } from 'element-plus'
|
|
|
+import { Delete, Download, Edit, Plus, Refresh, Search, Upload } from '@element-plus/icons-vue'
|
|
|
|
|
|
// 假设 BaseResponse 和 PageType 在全局或 request.ts 中已定义
|
|
|
interface BaseResponse {
|
|
|
@@ -333,6 +35,7 @@ interface Property {
|
|
|
revenueYoy: string // 营收同比(百分比)
|
|
|
taxRevenue: string // 税收(万元)
|
|
|
taxRevenueYoy: string // 税收同比(百分比)
|
|
|
+ enterpriseIntroduce: string // 企业介绍
|
|
|
updateTime?: string // 更新时间
|
|
|
createTime?: string // 创建时间
|
|
|
}
|
|
|
@@ -359,6 +62,7 @@ interface AddProperty {
|
|
|
revenueYoy: string // 营收同比(百分比)
|
|
|
taxRevenue: string // 税收(万元)
|
|
|
taxRevenueYoy: string // 税收同比(百分比)
|
|
|
+ enterpriseIntroduce: string // 企业介绍
|
|
|
}
|
|
|
|
|
|
interface UpdateProperty {
|
|
|
@@ -376,6 +80,7 @@ interface UpdateProperty {
|
|
|
revenueYoy: string // 营收同比(百分比)
|
|
|
taxRevenue: string // 税收(万元)
|
|
|
taxRevenueYoy: string // 税收同比(百分比)
|
|
|
+ enterpriseIntroduce: string // 企业介绍
|
|
|
}
|
|
|
|
|
|
// 响应式状态变量
|
|
|
@@ -397,11 +102,12 @@ const isEdit = ref(false)
|
|
|
const formData = reactive<Property>({})
|
|
|
const formRef = ref<FormInstance>()
|
|
|
const selectedIds = ref<string[]>([])
|
|
|
+const base_url = import.meta.env.VITE_APP_BASE_API
|
|
|
|
|
|
// 规上企业是否
|
|
|
const arrearsOptions = [
|
|
|
- {label: '是', value: '是'},
|
|
|
- {label: '否', value: '否'},
|
|
|
+ { label: '是', value: '是' },
|
|
|
+ { label: '否', value: '否' },
|
|
|
]
|
|
|
// 年度选项(动态生成最近5年)
|
|
|
const currentYear = new Date().getFullYear()
|
|
|
@@ -437,21 +143,27 @@ const getList = async () => {
|
|
|
const params = {
|
|
|
pageNum: pageNum.value,
|
|
|
pageSize: pageSize.value,
|
|
|
- ...(searchForm.isAboveDesignatedSize ? {isAboveDesignatedSize: searchForm.isAboveDesignatedSize} : {}),
|
|
|
- ...(searchForm.unifiedSocialCreditCode ? {unifiedSocialCreditCode: searchForm.unifiedSocialCreditCode} : {}),
|
|
|
- ...(searchForm.enterpriseName ? {enterpriseName: searchForm.enterpriseName} : {}),
|
|
|
- ...(searchForm.isHighTech ? {isHighTech: searchForm.isHighTech} : {}),
|
|
|
+ ...(searchForm.isAboveDesignatedSize
|
|
|
+ ? { isAboveDesignatedSize: searchForm.isAboveDesignatedSize }
|
|
|
+ : {}),
|
|
|
+ ...(searchForm.unifiedSocialCreditCode
|
|
|
+ ? { unifiedSocialCreditCode: searchForm.unifiedSocialCreditCode }
|
|
|
+ : {}),
|
|
|
+ ...(searchForm.enterpriseName ? { enterpriseName: searchForm.enterpriseName } : {}),
|
|
|
+ ...(searchForm.isHighTech ? { isHighTech: searchForm.isHighTech } : {}),
|
|
|
}
|
|
|
|
|
|
- const res = await clientGet<{
|
|
|
- pageNum: number
|
|
|
- pageSize: number
|
|
|
- isAboveDesignatedSize?: string
|
|
|
- unifiedSocialCreditCode?: string
|
|
|
- enterpriseName?: string
|
|
|
- isHighTech?: string
|
|
|
- },
|
|
|
- PropertyListResponse>('/eenterpriseBasicInfo/findByPage', {
|
|
|
+ const res = await clientGet<
|
|
|
+ {
|
|
|
+ pageNum: number
|
|
|
+ pageSize: number
|
|
|
+ isAboveDesignatedSize?: string
|
|
|
+ unifiedSocialCreditCode?: string
|
|
|
+ enterpriseName?: string
|
|
|
+ isHighTech?: string
|
|
|
+ },
|
|
|
+ PropertyListResponse
|
|
|
+ >('/eenterpriseBasicInfo/findByPage', {
|
|
|
params,
|
|
|
})
|
|
|
|
|
|
@@ -499,10 +211,14 @@ const exportExcel = async () => {
|
|
|
try {
|
|
|
// 构建参数对象,只包含有值的搜索条件
|
|
|
const params = {
|
|
|
- ...(searchForm.isAboveDesignatedSize ? {isAboveDesignatedSize: searchForm.isAboveDesignatedSize} : {}),
|
|
|
- ...(searchForm.unifiedSocialCreditCode ? {unifiedSocialCreditCode: searchForm.unifiedSocialCreditCode} : {}),
|
|
|
- ...(searchForm.enterpriseName ? {enterpriseName: searchForm.enterpriseName} : {}),
|
|
|
- ...(searchForm.isHighTech ? {isHighTech: searchForm.isHighTech} : {}),
|
|
|
+ ...(searchForm.isAboveDesignatedSize
|
|
|
+ ? { isAboveDesignatedSize: searchForm.isAboveDesignatedSize }
|
|
|
+ : {}),
|
|
|
+ ...(searchForm.unifiedSocialCreditCode
|
|
|
+ ? { unifiedSocialCreditCode: searchForm.unifiedSocialCreditCode }
|
|
|
+ : {}),
|
|
|
+ ...(searchForm.enterpriseName ? { enterpriseName: searchForm.enterpriseName } : {}),
|
|
|
+ ...(searchForm.isHighTech ? { isHighTech: searchForm.isHighTech } : {}),
|
|
|
}
|
|
|
|
|
|
await clientDownloadExcel('/eenterpriseBasicInfo/exportData', {
|
|
|
@@ -620,7 +336,7 @@ const handleConfirm = async () => {
|
|
|
await formRef.value.validate(async (valid) => {
|
|
|
if (valid) {
|
|
|
let success = false
|
|
|
- const dataToSend = {...formData}
|
|
|
+ const dataToSend = { ...formData }
|
|
|
|
|
|
if (isEdit.value) {
|
|
|
success = await update(dataToSend)
|
|
|
@@ -678,12 +394,352 @@ const handleBeforeUpload: UploadProps['beforeUpload'] = (rawFile) => {
|
|
|
|
|
|
const init = () => {
|
|
|
getList()
|
|
|
-};
|
|
|
+}
|
|
|
|
|
|
onMounted(() => {
|
|
|
init()
|
|
|
})
|
|
|
</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="p-4">
|
|
|
+ <h1 class="text-2xl font-bold mb-6">企业基本信息管理</h1>
|
|
|
+ <div class="mb-6 p-4 bg-white rounded-lg shadow-sm flex flex-wrap items-center gap-4">
|
|
|
+ <el-form :inline="true" :model="searchForm" class="flex-grow flex flex-wrap w-full">
|
|
|
+ <el-form-item>
|
|
|
+ <template #label>
|
|
|
+ <span class="font-size-4.5">企业名称:</span>
|
|
|
+ </template>
|
|
|
+ <el-input
|
|
|
+ v-model="searchForm.enterpriseName"
|
|
|
+ style="width: 240px"
|
|
|
+ size="default"
|
|
|
+ placeholder="请输入企业名称"
|
|
|
+ @clear="handleSearch"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <template #label>
|
|
|
+ <span class="font-size-4.5">信用代码:</span>
|
|
|
+ </template>
|
|
|
+ <el-input
|
|
|
+ v-model="searchForm.unifiedSocialCreditCode"
|
|
|
+ style="width: 240px"
|
|
|
+ size="default"
|
|
|
+ placeholder="输入统一社会信用代码"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <template #label>
|
|
|
+ <span class="font-size-4.5">是否规上企业:</span>
|
|
|
+ </template>
|
|
|
+ <el-select
|
|
|
+ v-model="searchForm.isAboveDesignatedSize"
|
|
|
+ style="width: 240px"
|
|
|
+ size="default"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in arrearsOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <template #label>
|
|
|
+ <span class="font-size-4.5">是否高新技术企业:</span>
|
|
|
+ </template>
|
|
|
+ <el-select
|
|
|
+ v-model="searchForm.isHighTech"
|
|
|
+ style="width: 240px"
|
|
|
+ size="default"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in arrearsOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div class="w-full">
|
|
|
+ <el-button type="primary" :icon="Search" @click="handleSearch" size="default"
|
|
|
+ >查询
|
|
|
+ </el-button>
|
|
|
+ <el-button :icon="Refresh" @click="handleResetSearch" size="default">重置</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="flex gap-1" style="justify-content: flex-end">
|
|
|
+ <el-button type="primary" :icon="Plus" @click="handleAdd" size="default">新增</el-button>
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ :icon="Delete"
|
|
|
+ @click="handleBatchDelete"
|
|
|
+ :disabled="selectedIds.length === 0"
|
|
|
+ size="default"
|
|
|
+ >批量删除
|
|
|
+ </el-button>
|
|
|
+ <el-button type="success" :icon="Download" @click="exportExcel" size="default"
|
|
|
+ >导出</el-button
|
|
|
+ >
|
|
|
+ <el-upload
|
|
|
+ class="inline-block ml-2"
|
|
|
+ :action="base_url + '/eenterpriseBasicInfo/importData'"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="handleUploadSuccess"
|
|
|
+ :on-error="handleUploadError"
|
|
|
+ :before-upload="handleBeforeUpload"
|
|
|
+ :http-request="(options) => importExcel(options.file)"
|
|
|
+ >
|
|
|
+ <el-button type="info" :icon="Upload" size="default">导入</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- Table -->
|
|
|
+ <div class="bg-white rounded-lg shadow-sm p-4 overflow-x-auto">
|
|
|
+ <el-table
|
|
|
+ :data="tableData"
|
|
|
+ style="width: 100%"
|
|
|
+ border
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ :cell-style="{ fontSize: '14px' }"
|
|
|
+ :header-cell-style="{ fontSize: '14px' }"
|
|
|
+ :row-style="{ fontSize: '14px' }"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" width="55" fixed="left" />
|
|
|
+ <el-table-column prop="enterpriseName" label="企业名称" align="center" />
|
|
|
+ <el-table-column prop="unifiedSocialCreditCode" label="统一社会信用代码" align="center" />
|
|
|
+ <el-table-column prop="enterpriseLeader" label="企业负责人" align="center" />
|
|
|
+ <el-table-column prop="contactInformation" label="联系方式" align="center" />
|
|
|
+
|
|
|
+ <el-table-column prop="isAboveDesignatedSize" label="是否规上企业" align="center" />
|
|
|
+ <el-table-column prop="isHighTech" label="是否高新技术企业" align="center" />
|
|
|
+ <el-table-column prop="outputValue" label="产值(万元)" align="center" />
|
|
|
+ <el-table-column prop="outputValueYoy" label="产值同比(百分比)" align="center" />
|
|
|
+ <el-table-column prop="registrationDate" label="注册日期" align="center" />
|
|
|
+ <el-table-column prop="revenue" label="营收(万元)" align="center" />
|
|
|
+ <el-table-column prop="revenueYoy" label="营收同比(百分比)" align="center" />
|
|
|
+ <el-table-column prop="taxRevenue" label="税收(万元)" align="center" />
|
|
|
+ <el-table-column prop="taxRevenueYoy" label="税收同比(百分比)" align="center" />
|
|
|
+ <el-table-column label="操作" fixed="right" align="center">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button :icon="Edit" size="small" @click="handleEdit(row)">编辑</el-button>
|
|
|
+ <el-button type="danger" :icon="Delete" size="small" @click="handleDelete(row.id)"
|
|
|
+ >删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <!-- Pagination -->
|
|
|
+ <div class="mt-4 flex justify-end">
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page="pageNum"
|
|
|
+ :page-sizes="[10, 20, 50, 100]"
|
|
|
+ :page-size="pageSize"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="total"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- Add/Edit Dialog -->
|
|
|
+ <el-dialog
|
|
|
+ v-model="dialogVisible"
|
|
|
+ :title="dialogTitle"
|
|
|
+ width="800px"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :close-on-press-escape="false"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ :model="formData"
|
|
|
+ ref="formRef"
|
|
|
+ label-width="120px"
|
|
|
+ class="grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
|
+ >
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="企业名称"
|
|
|
+ prop="enterpriseName"
|
|
|
+ :rules="[{ required: true, message: '请输入企业名称', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input v-model="formData.enterpriseName" placeholder="请输入企业名称" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="信用代码"
|
|
|
+ prop="unifiedSocialCreditCode"
|
|
|
+ :rules="[{ required: true, message: '请输入统一社会信用代码', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="formData.unifiedSocialCreditCode"
|
|
|
+ placeholder="请输入统一社会信用代码"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="企业负责人"
|
|
|
+ prop="enterpriseLeader"
|
|
|
+ :rules="[{ required: true, message: '请输入企业负责人', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input v-model="formData.enterpriseLeader" placeholder="请输入企业负责人" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="联系方式"
|
|
|
+ prop="contactInformation"
|
|
|
+ :rules="[{ required: true, message: '请输入联系方式', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input v-model="formData.contactInformation" placeholder="请输入联系方式" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="是否规上企业"
|
|
|
+ prop="isAboveDesignatedSize"
|
|
|
+ :rules="[{ required: true, message: '请选择', trigger: 'change' }]"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="formData.isAboveDesignatedSize"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in arrearsOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="是否高新技术企业"
|
|
|
+ prop="isHighTech"
|
|
|
+ :rules="[{ required: true, message: '请选择', trigger: 'change' }]"
|
|
|
+ >
|
|
|
+ <el-select v-model="formData.isHighTech" placeholder="请选择" style="width: 100%">
|
|
|
+ <el-option
|
|
|
+ v-for="item in arrearsOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="产值(万元)"
|
|
|
+ prop="outputValue"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请输入产值(万元)', trigger: 'blur' },
|
|
|
+ { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input v-model.number="formData.outputValue" placeholder="请输入产值(万元)" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="产值同比(百分比)"
|
|
|
+ prop="outputValueYoy"
|
|
|
+ :rules="[{ required: true, message: '请输入产值同比(百分比)', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model.number="formData.outputValueYoy"
|
|
|
+ placeholder="请输入产值同比(百分比)"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="营收(万元)"
|
|
|
+ prop="revenue"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请输入营收(万元)', trigger: 'blur' },
|
|
|
+ { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input v-model.number="formData.revenue" placeholder="请输入营收(万元)" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="营收同比(百分比)"
|
|
|
+ prop="revenueYoy"
|
|
|
+ :rules="[{ required: true, message: '请输入营收同比(百分比)', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input v-model="formData.revenueYoy" placeholder="请输入营收同比(百分比)" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="税收(万元)"
|
|
|
+ prop="taxRevenue"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请输入税收(万元)', trigger: 'blur' },
|
|
|
+ { type: 'number', message: '请输入数字', trigger: 'blur' },
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input v-model.number="formData.taxRevenue" placeholder="请输入税收(万元)" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="税收同比(百分比)"
|
|
|
+ prop="taxRevenueYoy"
|
|
|
+ :rules="[{ required: true, message: '请输入税收同比(百分比)', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model.number="formData.taxRevenueYoy"
|
|
|
+ placeholder="请输入税收同比(百分比)"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="注册日期"
|
|
|
+ prop="registrationDate"
|
|
|
+ :rules="[{ required: true, message: '请选择注册日期', trigger: 'change' }]"
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.registrationDate"
|
|
|
+ type="date"
|
|
|
+ format="YYYY/MM/DD"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label-width="150"
|
|
|
+ label="企业介绍"
|
|
|
+ prop="enterpriseIntroduce"
|
|
|
+ :rules="[{ required: true, message: '请选择企业介绍', trigger: 'change' }]"
|
|
|
+ class="md:col-span-2"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="formData.enterpriseIntroduce"
|
|
|
+ placeholder="请输入企业介绍"
|
|
|
+ type="textarea"
|
|
|
+ :rows="4"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="handleConfirm">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
<style scoped>
|
|
|
/* Add any specific styles here if needed, otherwise UnoCSS handles most */
|
|
|
</style>
|