新增页面优化,首页接口对接
|
|
@ -1,5 +1,6 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
//获取统计数量接口
|
||||
export function getStatisticsApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_manage/certificateInfo/statistics',
|
||||
|
|
@ -21,3 +22,78 @@ export function getTaskStatisticsApi(data) {
|
|||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//核验任务占比
|
||||
export function verificationTaskProportionApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_system/certificateInfo/verificationTaskProportion',
|
||||
method: 'post',
|
||||
headers: {
|
||||
//"merchant-id":"378915229716713472",
|
||||
},
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
//护照类型占比
|
||||
export function typesProportionApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_system/certificateInfo/typesProportion',
|
||||
method: 'post',
|
||||
headers: {
|
||||
//"merchant-id":"378915229716713472",
|
||||
},
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
//存取证排行
|
||||
export function takeRankingListApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_system/certificateInfo/takeRankingList',
|
||||
method: 'post',
|
||||
headers: {
|
||||
//"merchant-id":"378915229716713472",
|
||||
},
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
//证件临期统计
|
||||
export function certificateExpirationingStatisticsApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_system/certificateInfo/certificateExpirationingStatistics',
|
||||
method: 'post',
|
||||
headers: {
|
||||
//"merchant-id":"378915229716713472",
|
||||
},
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
//证件过期统计
|
||||
export function certificateExpirationedStatisticsApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_system/certificateInfo/certificateExpirationedStatistics',
|
||||
method: 'post',
|
||||
headers: {
|
||||
//"merchant-id":"378915229716713472",
|
||||
},
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
//出国原因统计
|
||||
export function abroadReasonsStatisticsApi(data) {
|
||||
return request({
|
||||
url: '/certificate/certificate_system/certificateInfo/abroadReasonsStatistics',
|
||||
method: 'post',
|
||||
headers: {
|
||||
//"merchant-id":"378915229716713472",
|
||||
},
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 144 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 433 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
|
@ -1,22 +1,137 @@
|
|||
<template>
|
||||
<div class="app-container home">
|
||||
<el-row :gutter="20">
|
||||
<el-col :sm="24" :lg="12" style="padding-left: 20px">
|
||||
<h2>证途通</h2>
|
||||
<div class="app-container home" style="height: 100vh;padding: 0;">
|
||||
<div style="width: 100%;display: flex;align-items: center;padding: 5px 20px;background: #006F68;">
|
||||
<img src="../assets/appIndex/logo108px.png" style="width: 72px;height: 72px;margin-right: 20px;" alt="">
|
||||
<h2 style="color: #FFF;">证途通</h2>
|
||||
</div>
|
||||
<el-divider />
|
||||
<el-tabs type="border-card" tab-position="left" style="height: 85vh;">
|
||||
<el-tab-pane label="首页">
|
||||
<p>
|
||||
<b>应用介绍:</b> <span>主要用于管理个人护照证件信息,主要用于验证证件护照的真伪,通过跳转微信12307移民局小程序验证信息,进行统一管理</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>当前版本:</b> <span>v1.1测试版本</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>应用名称:</b> <span>证途通:</span>
|
||||
<b>上架状态:</b> <span>未上架</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>项目简介:</b> <span>证途通:主要用于管理个人护照证件信息,主要用于验证证件护照的真伪,通过跳转微信12307移民局小程序验证信息,进行统一管理</span>
|
||||
<b>开发状态:</b> <span>测试功能</span>
|
||||
</p>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider />
|
||||
<el-row :gutter="20">
|
||||
<p>
|
||||
<b>项目周期:</b> <span>2025-11-01~2026-02-10</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>本网站备案信息:</b> <span>内网测试阶段,暂时不对外开发</span>
|
||||
</p>
|
||||
<p>
|
||||
<i class="el-icon-s-promotion"></i> <b>下载地址:</b><el-link
|
||||
href="https://app.liuyingyong.cn/build/download/1c91f3a0-dfd0-11f0-beb2-1de4779888ef"
|
||||
target="_blank"
|
||||
>https://app.liuyingyong.cn/build/download/1c91f3a0-dfd0-11f0-beb2-1de4779888ef</el-link
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<b>版权所有:</b> <span>安徽博诺思信息科技有限公司</span>
|
||||
</p>
|
||||
<p>
|
||||
<i class="el-icon-s-promotion"></i> <b>公司官网:</b><el-link
|
||||
href="http://www.ahbonus.cn"
|
||||
target="_blank"
|
||||
>http://www.ahbonus.cn</el-link
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<b>官网备案信息:</b> <span>皖ICP备15003955号-3</span>
|
||||
</p>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="产品展示">
|
||||
<div style="width: 100%;display: flex;align-items: center;overflow: auto;">
|
||||
<div style="width: 16%;height: auto;display: flex;flex-direction: column;justify-content: center;margin-right: 1%;">
|
||||
<img src="../assets/appIndex/app1.png" style="width: 100%;height: 650px;margin-bottom: 20px;" alt="">
|
||||
<div style="font-size: 18px;">
|
||||
<b>功能描述:</b>
|
||||
<span>首页展示待办信息,消息提醒,快捷入口等方便用户快捷找到需要的功能!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 16%;height: auto;display: flex;flex-direction: column;justify-content: center;margin-right: 1%;">
|
||||
<img src="../assets/appIndex/app2.png" style="width: 100%;height: 650px;margin-bottom: 20px;" alt="">
|
||||
<div style="font-size: 18px;">
|
||||
<b>功能描述:</b>
|
||||
<span>工作台展示功能模块,功能区分更方便使用!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 16%;height: auto;display: flex;flex-direction: column;justify-content: center;margin-right: 1%;">
|
||||
<img src="../assets/appIndex/app3.png" style="width: 100%;height: 650px;margin-bottom: 20px;" alt="">
|
||||
<div style="font-size: 18px;">
|
||||
<b>功能描述:</b>
|
||||
<span>证件护照做区分展示,更明显!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 16%;height: auto;display: flex;flex-direction: column;justify-content: center;margin-right: 1%;">
|
||||
<img src="../assets/appIndex/app4.png" style="width: 100%;height: 650px;margin-bottom: 20px;" alt="">
|
||||
<div style="font-size: 18px;">
|
||||
<b>功能描述:</b>
|
||||
<span>核验跳转移民局小程序,核验更准确!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 16%;height: auto;display: flex;flex-direction: column;justify-content: center;margin-right: 1%;">
|
||||
<img src="../assets/appIndex/app5.png" style="width: 100%;height: 650px;margin-bottom: 20px;" alt="">
|
||||
<div style="font-size: 18px;">
|
||||
<b>功能描述:</b>
|
||||
<span>定期核验,多人批量操作,管理更方便!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 16%;height: auto;display: flex;flex-direction: column;justify-content: center;margin-right: 1%;">
|
||||
<img src="../assets/appIndex/app6.png" style="width: 100%;height: 650px;margin-bottom: 20px;" alt="">
|
||||
<div style="font-size: 18px;">
|
||||
<b>功能描述:</b>
|
||||
<span>问题反馈,及时处理!</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="项目管理">
|
||||
<p>
|
||||
<b>项目背景:</b>
|
||||
<span>
|
||||
为中大型企业,单位内特殊人员出国,出境等护照统一管理,备案管理人员后统一上传护照信息,根据护照信息进行核验,与移民局12367小程序对接,个人跳转移民局12307小程序手机身份证验证后获取护照信息,与备案护照信息比对真伪!
|
||||
</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>核验流程:</b>
|
||||
<img src="../assets/appIndex/app7.png" style="width: 50%;height: 400px;margin-bottom: 20px;" alt="">
|
||||
</p>
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="技术开发">
|
||||
<p>
|
||||
<b>后台管理系统:</b> <span>主要基于Vue2、Elemenet-UI,框架构建的后台管理系统,用于管理人员使用电脑管理证件信息。 </span>
|
||||
</p>
|
||||
<p>
|
||||
<b>APP:</b> <span>主要基于Uni-APP、Vue2、Uview组件,构建的建议APP,用于被管理人员使用手机查看个人证件信息,及跳转小程序核验证件信息。 </span>
|
||||
</p>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="联系我们">
|
||||
<p>
|
||||
<b>安徽博诺思信息科技有限公司</b>
|
||||
</p>
|
||||
<p>
|
||||
<b>电话:</b> <span>0551-62573713</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>网址:</b> <span>ahbonus.cn</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>邮箱:</b> <span>anhuibonus@163.com</span>
|
||||
</p>
|
||||
<p>
|
||||
<b>地址:</b> <span>安徽省合肥市蜀山区天狮路588号MAX科技园702</span>
|
||||
</p>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<!-- <el-row :gutter="20">
|
||||
<el-col :xs="24" :sm="24" :md="12" :lg="8">
|
||||
<el-card class="update-log">
|
||||
<div slot="header" class="clearfix">
|
||||
|
|
@ -39,37 +154,8 @@
|
|||
</p>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<!-- <el-col :xs="24" :sm="24" :md="12" :lg="8">
|
||||
<el-card class="update-log">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>更新日志</span>
|
||||
</div>
|
||||
<el-collapse accordion>
|
||||
<el-collapse-item title="v24.7.0">
|
||||
<ol>
|
||||
<li>支持多权限字符匹配角色数据权限</li>
|
||||
<li>新增密码最大错误次数/锁定时间</li>
|
||||
<li>登录日志新增解锁账户功能</li>
|
||||
</ol>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item title="v27.7.1">
|
||||
<ol>
|
||||
<li>菜单新增终端管理配置</li>
|
||||
<li>记录登录退出日志信息</li>
|
||||
<li>数据范围过滤属性调整</li>
|
||||
<li>权限部分代码调整</li>
|
||||
<li>其他细节优化</li>
|
||||
</ol>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</el-card>
|
||||
</el-col> -->
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
</el-col>
|
||||
</el-row> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -91,7 +177,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.home {
|
||||
.home {
|
||||
blockquote {
|
||||
padding: 10px 20px;
|
||||
margin: 0 0 20px;
|
||||
|
|
@ -126,14 +212,14 @@ export default {
|
|||
margin-top: 0px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
h2 {
|
||||
font-size: 26px;
|
||||
font-weight: 100;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 10px;
|
||||
padding: 5px 20px;
|
||||
|
||||
b {
|
||||
font-weight: 700;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,441 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
|
||||
<el-form-item label="关键字" prop="keyWord">
|
||||
<el-input
|
||||
v-model="queryParams.keyWord"
|
||||
placeholder="请输入标题"
|
||||
clearable maxlength="20"
|
||||
style="width: 300px"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>新增</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="tableListData" height="800">
|
||||
<!-- <el-table-column type="selection" width="55" align="center"/> -->
|
||||
<el-table-column label="序号" align="center" width="80" type="index">
|
||||
<template slot-scope="scope">
|
||||
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="内容" align="center" prop="content" :show-overflow-tooltip="true"/>
|
||||
<!-- <el-table-column label="是否启用" align="center" prop="state" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.state==1">是</span>
|
||||
<span v-if="scope.row.state==2">否</span>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="附件" align="center" prop="" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.fileUrl!=''" @click="checkFile(scope.row)" style="cursor: pointer;color: #46a6ff;">查看</span>
|
||||
<span v-else>无附件</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>编辑</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
style="color: red;"
|
||||
@click="handleDelete(scope.row)"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<!-- 添加或修改参数配置对话框 -->
|
||||
<el-dialog :title="title+''" :visible.sync="open" width="800px" append-to-body>
|
||||
<el-form ref="baseForm" :model="baseForm" :rules="baseFormRules" label-width="120px" style="width: 100%;height: 500px;overflow-y: auto;padding-right: 10px;">
|
||||
<el-row>
|
||||
<el-col :span="24" >
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="baseForm.title" placeholder="请输入标题" maxlength="30"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" >
|
||||
<el-form-item label="使用类型" prop="useType">
|
||||
<el-radio-group v-model="baseForm.useType">
|
||||
<el-radio label="1">文本内容</el-radio>
|
||||
<el-radio label="2">附件内容</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="文本内容" prop="content">
|
||||
<el-input v-model="baseForm.content" :autosize="{ minRows: 4, maxRows: 8}" type="textarea" placeholder="请输入文本内容" maxlength="200"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件上传">
|
||||
<el-upload
|
||||
ref="upload"
|
||||
:limit="1"
|
||||
accept=".pdf"
|
||||
:headers="upload.headers"
|
||||
:action="upload.url"
|
||||
:disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress"
|
||||
:file-list="fileList"
|
||||
:on-success="handleFileSuccess"
|
||||
:on-remove="handleRemove"
|
||||
:on-preview="handlePreviewDownloadFile"
|
||||
:auto-upload="true"
|
||||
drag
|
||||
>
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm()">提 交</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="附件列表" :visible.sync="openFile" width="500px" append-to-body>
|
||||
<div style="width: 100%;height: 240px;padding: 10px;color: #46a6ff;display: flex;flex-wrap: wrap;">
|
||||
<div v-for="(item,index) in fileList" :key="index" style="margin: 10px;">
|
||||
<div style="margin-bottom: 10px;"><img :src="item.url" @click="handlePictureCardPreview(item)" style="width: 60px;height: 60px;margin-right: 8px;"/></div>
|
||||
<div style="cursor: pointer;" @click="handlePreviewDownloadFile(item)">{{ item.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="openFile=false">关 闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="dialogVisible" width="700px">
|
||||
<img style="width: 100%;height: 100%;" :src="dialogImageUrl" alt="">
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getCertificateApplyListPageApi,addCertificateApplyApi, editCertificateApplyApi,
|
||||
delCertificateApplyApi,revokeCertificateApplyApi } from "@/api/certificateManage/index";
|
||||
import base64 from 'base-64';
|
||||
import { getToken } from '@/utils/auth'
|
||||
import { downloadFileByUrl } from '@/utils/download'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
export default {
|
||||
name: "certificateInfo",
|
||||
components: { Treeselect },
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
//表格数据
|
||||
tableListData: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keyWord:null,//姓名
|
||||
},
|
||||
// 表单参数
|
||||
baseForm: {
|
||||
title:"",
|
||||
useType:"1",
|
||||
content:""
|
||||
},
|
||||
// 表单校验
|
||||
baseFormRules: {
|
||||
title: [
|
||||
{ required: true, message: "标题不能为空", trigger: "change" }
|
||||
],
|
||||
useType: [
|
||||
{ required: true, message: "使用类型不能为空", trigger: "change" }
|
||||
],
|
||||
content: [
|
||||
{ required: true, message: "文本内容不能为空", trigger: "change" }
|
||||
]
|
||||
},
|
||||
//导入参数
|
||||
upload: {
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + '/file/upload?type=file',
|
||||
},
|
||||
fileList:[],
|
||||
fileUrls:[],
|
||||
fileNames:[],
|
||||
openFile:false,//查看附件
|
||||
dialogVisible:false,//图片弹窗
|
||||
dialogImageUrl:"",//图片弹窗
|
||||
};
|
||||
},
|
||||
mounted(){
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 查询列表 */
|
||||
getList() {
|
||||
// this.loading = true;
|
||||
// let param = {
|
||||
// "pageNum":this.queryParams.pageNum,
|
||||
// "pageSize":this.queryParams.pageSize,
|
||||
// "keyWord":this.queryParams.keyWord,
|
||||
// }
|
||||
// getCertificateApplyListPageApi(param).then(response => {
|
||||
// this.tableListData = response.rows;
|
||||
// this.total = Number(response.total);
|
||||
this.loading = false;
|
||||
// });
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.fileList=[]
|
||||
this.fileUrls=[]
|
||||
this.fileNames = []
|
||||
this.baseForm = {
|
||||
title:"",
|
||||
useType:"1",
|
||||
content:""
|
||||
};
|
||||
this.resetForm("baseForm");
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "新增";
|
||||
console.log("this.baseForm",this.baseForm);
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.baseForm = Object.assign({}, row)
|
||||
if(row.fileUrl&&row.fileUrl!=''){
|
||||
let arr = row.fileUrl.split(",");
|
||||
let arr2 = row.fileName.split(",");
|
||||
arr.forEach((item,index)=>{
|
||||
this.fileList.push({url:item,name:arr2[index]})
|
||||
this.fileUrls.push(item)
|
||||
this.fileNames.push(arr2[index])
|
||||
})
|
||||
}else{
|
||||
this.fileList=[]
|
||||
this.fileUrls=[]
|
||||
this.fileNames = []
|
||||
}
|
||||
this.title = "修改";
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function(type) {
|
||||
//applyState -1 仅保存不提交 0保存提交
|
||||
this.baseForm.applyState = type;
|
||||
//fileUrls 附件 数组
|
||||
this.baseForm.fileUrls = this.fileUrls
|
||||
this.baseForm.fileNames = this.fileNames
|
||||
console.log("this.baseForm",this.baseForm);
|
||||
this.$refs["baseForm"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.baseForm.checkId != undefined) {
|
||||
editCertificateApplyApi(this.baseForm).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addCertificateApplyApi(this.baseForm).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 撤销
|
||||
handleRevoke(row) {
|
||||
this.$modal.confirm('是否确认撤销申请?').then(() => {
|
||||
revokeCertificateApplyApi({checkId:row.checkId}).then(response => {
|
||||
console.log("revokeCertificateApplyApi",response);
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("撤销成功");
|
||||
return;
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
this.$modal.confirm('是否确认删除数据项?').then(() => {
|
||||
delCertificateApplyApi({checkId:row.checkId}).then(response => {
|
||||
console.log("delCertificateApplyApi",response);
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
return;
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
// 文件上传中处理
|
||||
handleFileUploadProgress(event, file, fileList) {
|
||||
this.upload.isUploading = true
|
||||
},
|
||||
// 文件上传成功处理
|
||||
handleFileSuccess(response, file, fileList) {
|
||||
this.upload.isUploading = false;
|
||||
if(response.code==200){
|
||||
this.fileUrls.push(response.data.url)
|
||||
this.fileNames.push(response.data.name)
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
}else{
|
||||
this.$modal.msgError(response.msg);
|
||||
}
|
||||
},
|
||||
handleRemove(file, fileList) {
|
||||
let sum = 0
|
||||
this.fileNames.forEach((item, index) => {
|
||||
if (item == file.name) {
|
||||
sum = index
|
||||
}
|
||||
})
|
||||
this.fileUrls.splice(sum, 1)
|
||||
this.fileNames.splice(sum, 1)
|
||||
},
|
||||
async handlePreviewDownloadFile(file) {
|
||||
if (file.url != null && file.url !== '') {
|
||||
let downloadUrl = file.url;
|
||||
try {
|
||||
const response = await fetch(downloadUrl); // 获取文件内容
|
||||
if (!response.ok) {
|
||||
throw new Error('文件下载失败');
|
||||
}
|
||||
const blob = await response.blob(); // 将文件内容转换为 Blob 对象
|
||||
const link = document.createElement('a');
|
||||
link.href = URL.createObjectURL(blob); // 创建一个 URL 对象
|
||||
link.download = file.name; // 指定下载的文件名
|
||||
document.body.appendChild(link); // 将链接添加到 DOM 中
|
||||
link.click(); // 触发下载
|
||||
document.body.removeChild(link); // 下载后移除 <a> 元素
|
||||
} catch (error) {
|
||||
message.warning("文件下载失败!");
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
if (file.raw != null && file.raw !== '') {
|
||||
const blob = file.raw; // 将文件内容转换为 Blob 对象
|
||||
const link = document.createElement('a');
|
||||
link.href = URL.createObjectURL(blob); // 创建一个 URL 对象
|
||||
link.download = file.name; // 指定下载的文件名
|
||||
document.body.appendChild(link); // 将链接添加到 DOM 中
|
||||
link.click(); // 触发下载
|
||||
document.body.removeChild(link); // 下载后移除 <a> 元素
|
||||
}
|
||||
},
|
||||
checkFile(row){
|
||||
this.fileList=[]
|
||||
this.fileUrls=[]
|
||||
this.fileNames = []
|
||||
if(row.fileUrl&&row.fileUrl!=''){
|
||||
let arr = row.fileUrl.split(",");
|
||||
let arr2 = row.fileName.split(",");
|
||||
arr.forEach((item,index)=>{
|
||||
this.fileList.push({url:item,name:arr2[index]})
|
||||
this.fileUrls.push(item)
|
||||
this.fileNames.push(arr2[index])
|
||||
})
|
||||
}
|
||||
this.openFile = true
|
||||
},
|
||||
//图片点击查看
|
||||
handlePictureCardPreview(file) {
|
||||
this.dialogImageUrl = file.url
|
||||
this.dialogVisible = true
|
||||
},
|
||||
formatDate(date) {
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
return `${year}-${month}-${day}`;
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-upload {
|
||||
width: 100%;
|
||||
}
|
||||
::v-deep .el-upload-dragger{
|
||||
width: 100%;
|
||||
}
|
||||
.form-title{
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
// width: 100%;
|
||||
// height: 40px;
|
||||
background: #e7f0fa;
|
||||
border-left: 3px solid #46a6ff;
|
||||
margin: 10px 0;
|
||||
padding: 5px;
|
||||
}
|
||||
.form-item{
|
||||
width: 100%;
|
||||
font-size: 14px !important;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -39,8 +39,8 @@ module.exports = {
|
|||
// target: `http://127.0.0.1:48380`,//测试
|
||||
// target: `http://192.168.2.108:48380`,//测试
|
||||
// target: `http://192.168.137.1:48380`,//测试
|
||||
// target: `http://192.168.1.120:48380`,//测试
|
||||
target: `http://192.168.0.14:48380`,//
|
||||
target: `http://192.168.1.101:48380`,//测试
|
||||
// target: `http://192.168.0.14:48380`,//
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
['^' + process.env.VUE_APP_BASE_API]: '',
|
||||
|
|
|
|||