package.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/system/company/company.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/banner/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/companymanger/components/createQrcode.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/companymanger/components/exportRecord.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/companymanger/components/judge.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/companymanger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/policy/components/addNews.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/infomanger/policy/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
package.json
@@ -30,6 +30,7 @@ "tsparticles": "^2.9.3", "vue": "3.2.45", "vue-cropper": "1.0.3", "vue-qr": "^4.0.9", "vue-router": "4.1.4", "vue-tsc": "^1.4.4" }, src/api/system/company/company.ts
@@ -35,13 +35,13 @@ }) } // 删除企业信息 export function delCompany(companyId) { return request({ url: '/system/company/' + companyId, method: 'delete' }) } // // 删除企业信息 // export function delCompany(companyId) { // return request({ // url: '/system/company/' + companyId, // method: 'delete' // }) // } // 导出企业模板下载 @@ -117,4 +117,43 @@ method: 'post', data: data }) } // 校验导入信息 /system/company/checkImport export function checkImport(data) { return request({ url: `/system/company/checkImport`, method: 'post', data: data }) } // 保存导入信息 /system/company/saveImport export function saveImport(data) { return request({ url: `/system/company/saveImport`, method: 'post', data: data }) } // 删除企业信息 listCompany export function delCompany(data) { return request({ url: `/system/company/${data.delId}`, method: 'DELETE', }) } // 审核 /tool/check/checkOrder export function checkOrder(data) { return request({ url: `/tool/check/checkOrder`, method: 'post', data: data }) } // 执法单列表 /enforce/order/list export function listOrder(data) { return request({ url: `/enforce/order/list`, method: 'post', data: data }) } src/views/infomanger/banner/index.vue
New file @@ -0,0 +1,9 @@ <template> <div class="app-container"> <el-row> <el-col :span="24"> <el-button></el-button> </el-col> </el-row> </div> </template> src/views/infomanger/companymanger/components/createQrcode.vue
New file @@ -0,0 +1,52 @@ <template> <el-dialog title="二维码" v-model="dialogVisible" width="300px" @close="closeDialog"> <div class="text-center"> <vueQr ref="query" :text="info.companyCode"></vueQr> <div>{{ info.companyName }}</div> <div style="margin-top: 10px;"> <el-link @click="downImage" type="primary">下载企业码</el-link> </div> </div> </el-dialog> </template> <script lang="ts" setup> import vueQr from 'vue-qr/src/packages/vue-qr.vue' let dialogVisible = ref(false) const info = ref({}) const query = ref() function openDialog(row) { // console.log(row) info.value = row dialogVisible.value = true } function closeDialog() { dialogVisible.value = false } function downImage() { // console.log(query.value.imgUrl) let aLink = document.createElement('a') let blob = base64ToBlob(query.value.imgUrl) let evt = document.createEvent("HTMLEvents") evt.initEvent("click", true, true) // initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为 aLink.download = "二维码.png" aLink.href = URL.createObjectURL(blob); // aLink.dispatchEvent(evt); aLink.click() } function base64ToBlob(code) { let parts = code.split(';base64,') let contentType = parts[0].split(':')[1] let raw = window.atob(parts[1]) let rawLength = raw.length let uInt8Array = new Uint8Array(rawLength) for (let i = 0; i < rawLength; ++i) { uInt8Array[i] = raw.charCodeAt(i) } return new Blob([uInt8Array], {type: contentType}) } defineExpose({ openDialog, closeDialog }) </script> src/views/infomanger/companymanger/components/exportRecord.vue
@@ -4,32 +4,82 @@ <el-table :data="recordValue" border> <el-table-column label="企业名(企业全称)" prop="companyName"> <template #default="scope"> <el-input v-model="scope.row.companyName"></el-input> <div class="flex-box-per"> <el-input v-model="scope.row.companyName" @blur="checkImport(scope.row, scope.$index)"></el-input> <el-tooltip v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 0)" :content="scope.row.errorList.find(item => item.index == 0).msg"> <div class="ml5"> <el-icon size="large" color="red" class="ml5"><CircleCloseFilled /></el-icon> </div> </el-tooltip> </div> </template> </el-table-column> <el-table-column label="统一社会信用代码" prop="companyCode"> <template #default="scope"> <el-input v-model="scope.row.companyCode"></el-input> <div class="flex-box-per"> <el-input v-model="scope.row.companyCode" @blur="checkImport(scope.row, scope.$index)"></el-input> <el-tooltip v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 1)" :content="scope.row.errorList.find(item => item.index == 1).msg"> <div class="ml5"> <el-icon size="large" color="red" class="ml5"><CircleCloseFilled /></el-icon> </div> </el-tooltip> </div> </template> </el-table-column> <el-table-column label="企业联系人" prop="companyUser"> <template #default="scope"> <el-input v-model="scope.row.companyUser"></el-input> <div class="flex-box-per"> <el-input v-model="scope.row.companyUser" @blur="checkImport(scope.row, scope.$index)"></el-input> <el-tooltip v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 2)" :content="scope.row.errorList.find(item => item.index == 2).msg"> <div class="ml5" v-if="scope.row.errorList.length &&scope.row.errorList.find(item => item.index == 2)"> <el-icon size="large" color="red" class="ml5"><CircleCloseFilled /></el-icon> </div> </el-tooltip> </div> </template> </el-table-column> <el-table-column label="联系人电话" prop="companyPhone"> <template #default="scope"> <el-input v-model="scope.row.companyPhone"></el-input> <div class="flex-box-per"> <el-input type="numer" :maxlength="11" v-model="scope.row.companyPhone" @blur="checkImport(scope.row, scope.$index, 'companyPhone')"></el-input> <el-tooltip v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 3)" :content="scope.row.errorList.find(item => item.index == 3).msg"> <div class="ml5"> <el-icon size="large" color="red" class="ml5"><CircleCloseFilled /></el-icon> </div> </el-tooltip> </div> </template> </el-table-column> <el-table-column label="企业地址" prop="companyAddress"> <template #default="scope"> <el-input v-model="scope.row.companyAddress"></el-input> <div class="flex-box-per"> <el-input v-model="scope.row.companyAddress" @blur="checkImport(scope.row, scope.$index)"></el-input> <el-tooltip v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 4)" :content="scope.row.errorList.find(item => item.index == 4).msg"> <div class="ml5" v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 4)"> <el-icon size="large" color="red" class="ml5"><CircleCloseFilled /></el-icon> </div> </el-tooltip> </div> </template> </el-table-column> <el-table-column label="备注" prop="mark"> <template #default="scope"> <el-input v-model="scope.row.mark"></el-input> <div class="flex-box-per"> <el-input v-model="scope.row.mark" @blur="checkImport(scope.row, scope.$index)"></el-input> <el-tooltip v-if="scope.row.errorList.length && scope.row.errorList.find(item => item.index == 5)" :content="scope.row.errorList.find(item => item.index == 5).msg"> <div class="ml5"> <el-icon size="large" color="red" class="ml5"><CircleCloseFilled /></el-icon> </div> </el-tooltip> </div> </template> </el-table-column> </el-table> @@ -43,7 +93,10 @@ </template> <script setup lang="ts"> import { checkImport as checkImportHttp, saveImport } from '@/api/system/company/company' import { ElMessage} from 'element-plus' const dialogVisible = ref(false) const emits = defineEmits() const props = defineProps({ recordRow: { type: Array, default: () => [] }, }) @@ -58,13 +111,45 @@ function closeDialog() { dialogVisible.value = false } function checkImport(row, index, item) { // row.companyPhone if(item && item == 'companyPhone') { if(row.companyPhone) { const reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/ if(!reg.test(row.companyPhone)){ ElMessage.error('请输入正确的手机号') } } } checkImportHttp({voList: [row]}).then(val => { // recordValue.value.splice(index, 1, val.data.voList[0]) recordValue.value[index] = val.data.voList[0] // ElMessage.success('修改成功') }) } function addCompany() { saveImport({voList: recordValue.value}).then(val =>{ ElMessage.success('修改成功') closeDialog() emits('uploadList') }) } defineExpose({ openDialog, closeDialog }) </script> <style> <style > .dialog-footer{ text-align: center; } .flex-box-per{ display: flex; justify-content: flex-start; align-items: center; } .ml5{ /* margin-left: 5px; */ line-height: 15px; } </style> src/views/infomanger/companymanger/components/judge.vue
New file @@ -0,0 +1,62 @@ <template> <el-dialog title="审核" v-model="dialogVisible" width="900px" append-to-body @close="cloaseDialog" > <el-form> <!-- <el-form-item label="审核类型"> <el-select style="width: 200px;" v-model="form.checkType"> <el-option label="企业审批" value="1"></el-option> <el-option label="企业审批" value="2"></el-option> </el-select> </el-form-item> --> <el-form-item label="审核状态"> <el-radio-group v-model="form.checkStatus" class="ml-4"> <el-radio value="1" size="large">通过</el-radio> <el-radio value="-1" size="large">拒绝</el-radio> </el-radio-group> </el-form-item> <el-form-item label="审核说明"> <el-input type="textarea" v-model="form.checkReason" ></el-input> </el-form-item> </el-form> <template #footer> <div style="text-align: center;"> <el-button @click="cloaseDialog" >关闭</el-button> <el-button @click="checkOrder" type="primary">确认</el-button> </div> </template> </el-dialog> </template> <script setup lang="ts"> import { checkOrder as httpCheck } from '@/api/system/company/company' import { ElMessage } from 'element-plus' const dialogVisible = ref(false) const info = ref({}) const form = ref({}) const cloaseDialog = () => { dialogVisible.value = false } const openDialog = (row) => { info.value = row form.value['id'] = row.companyId form.value['checkType'] = 1 dialogVisible.value = true } function checkOrder() { if(!form.value.checkStatus) { ElMessage.error('请填写审核状态') return } if(form.value.checkStatus == -1 && !form.value.checkReason) { ElMessage.error('请填写审核说明') return } httpCheck(form.value).then(res => { form.value = res.data }) } defineExpose({ openDialog, cloaseDialog }) </script> src/views/infomanger/companymanger/index.vue
@@ -58,6 +58,7 @@ <el-table-column prop="companyName" label="企业名称" minWidth="300"></el-table-column> <el-table-column prop="companyName" label="企业类型" width="200"></el-table-column> <el-table-column prop="companyUser" label="联系人" width="180"></el-table-column> <el-table-column prop="companyCode" label="统一社会信用代码" width="180"></el-table-column> <el-table-column prop="companyPhone" label="手机号码" width="120"></el-table-column> <el-table-column prop="createTime" label="创建时间" width="200"></el-table-column> <el-table-column prop="" label="来源" width="100"> @@ -76,16 +77,15 @@ <el-switch v-if="scope.row.companyId" v-model="scope.row.companyStatus" @change="changeCompanyNews(scope.row, $event)" :active-value="1" :inactive-value="0"></el-switch> </template> </el-table-column> <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="240"> <template #default="scope"> <el-link type="primary">审核</el-link> <el-divider direction="vertical" /> <el-link type="primary">二维码</el-link> <el-link type="primary" v-if="scope.row.checkStatus < 2" v-hasPermi="['sys:company:check']" @click="checkJudge(scope.row)">审核</el-link> <el-divider direction="vertical" v-hasPermi="['sys:company:check']" v-if="scope.row.checkStatus < 2"/> <el-link type="primary" v-if="scope.row.checkStatus == 2" @click="createQrcodeHandler(scope.row)">二维码</el-link> <el-divider direction="vertical" /> <el-link type="primary" @click="handleAdd(scope.row)">编辑</el-link> <el-divider direction="vertical" /> <el-link type="primary">删除</el-link> <el-link type="primary" @click="handleDelete(scope.row)">删除</el-link> </template> </el-table-column> </el-table> @@ -128,14 +128,18 @@ </template> </el-dialog> <exportExcelCom ref="exporttem" @resList="resList"></exportExcelCom> <exportRecord ref="exportRecordCom" :recordRow="recordRow"></exportRecord> <exportRecord ref="exportRecordCom" :recordRow="recordRow" @uploadList="getList"></exportRecord> <judgeCom ref="judgeComRef"></judgeCom> <createQrcode ref="createQrcodeRef"></createQrcode> </div> </template> <script setup name="Dept"> import FileUpload from '@/components/FileUpload/index' import FileUpload from '@/components/ImageUpload/index' import exportRecord from './components/exportRecord' import { listCompany,addCompany, updateCompany } from "@/api/system/company/company"; import createQrcode from './components/createQrcode' import judgeCom from './components/judge' import { listCompany,addCompany, updateCompany, delCompany } from "@/api/system/company/company"; import exportExcelCom from './components/export' import { computed } from "vue"; import { judgeStatus, companyStatus, scopeList } from '@/utils/mapList/index.ts' @@ -153,6 +157,8 @@ const refreshTable = ref(true); const exporttem = ref() const exportRecordCom = ref() const judgeComRef = ref() const createQrcodeRef = ref() const options = reactive({ // -1拒绝,0待审批,1审批中,2通过 checkOptions: [ @@ -298,9 +304,9 @@ /** 删除按钮操作 */ function handleDelete(row) { proxy.$modal .confirm('是否确认删除名称为"' + row.deptName + '"的数据项?') .confirm('是否确认删除该数据?') .then(function () { return delDept(row.deptId); return delCompany({delId: row.companyId}); }) .then(() => { getList(); @@ -330,5 +336,11 @@ recordRow.value = row exportRecordCom.value.openDialog() } function checkJudge(row) { judgeComRef.value.openDialog(row) } function createQrcodeHandler(row) { createQrcodeRef.value.openDialog(row) } getList(); </script> src/views/infomanger/policy/components/addNews.vue
@@ -8,7 +8,7 @@ <el-option v-for="(item,index) in policyList" :label="item.label" :value="item.value"></el-option> </el-select> </el-form-item> <el-form-item label="政策名称" prop="docName"> <el-form-item label="政策名称" prop="docTitle"> <el-input v-model="form.docTitle" placeholder="请输入政策名称"></el-input> </el-form-item> <el-form-item label="政策内容" prop="docContent"> src/views/infomanger/policy/index.vue
@@ -27,8 +27,8 @@ <el-table :data="tableData" v-loading="loading" border> <el-table-column label="政策名称" prop="docTitle"></el-table-column> <el-table-column label="政策类型" prop="docType"></el-table-column> <el-table-column label="创建时间" ></el-table-column> <el-table-column label="创建人" width="200"></el-table-column> <el-table-column label="创建时间" prop="createTime"></el-table-column> <el-table-column label="创建人" width="200" prop="createBy"></el-table-column> <el-table-column label="状态" width="200" prop="docStatus"> <template #default="scope"> <el-switch v-if="scope.row.docId" v-model="scope.row.docStatus" :active-value="0" :inactive-value="1" @change="changeStatus(scope.row)"></el-switch>