bugfix
This commit is contained in:
parent
54c953d41f
commit
79d1f8ab35
@ -144,3 +144,42 @@ export function reqEnterpriseAuditInfoSearch(data){
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//咨询表单 /product/search_user_inquiry.dspy
|
||||||
|
export function reqSearchUserInquiry(data){
|
||||||
|
return request({
|
||||||
|
url: '/product/search_user_inquiry.dspy',
|
||||||
|
method: 'post',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//审核状态查询 /user/enterprise_audit_info_search.dspy
|
||||||
|
export function reqApproveUserSearch(data){
|
||||||
|
return request({
|
||||||
|
url: '/user/enterprise_audit_info_search.dspy',
|
||||||
|
method: 'post',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//政企审核 更新 /user/enterprise_audit_info_update.dspy
|
||||||
|
|
||||||
|
export function reqEnterpriseUpdate(data){
|
||||||
|
return request({
|
||||||
|
url: '/user/enterprise_audit_info_update.dspy',
|
||||||
|
method: 'post',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//首页类别查询 /product/homepage_product_category.dspy
|
||||||
|
export function reqHomepageProductCategory(data){
|
||||||
|
return request({
|
||||||
|
url: '/product/homepage_product_category.dspy',
|
||||||
|
method: 'post',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -345,6 +345,20 @@ export const asyncRoutes = [
|
|||||||
|
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/consultingMangement",
|
||||||
|
name: 'ConsultingMangement',
|
||||||
|
component: Layout,
|
||||||
|
meta: { title: "咨询表单", fullPath: "/consultingMangement", noCache: true,icon: "el-icon-s-platform" },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "index",
|
||||||
|
component: () => import('@/views/operation/consultingMangement/index.vue'),
|
||||||
|
name: 'ConsultingMangement',
|
||||||
|
meta: { title: "咨询表单", fullPath: "/consultingMangement/index", noCache: true,icon: "el-icon-s-platform" },
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/product",
|
path: "/product",
|
||||||
name: 'product',
|
name: 'product',
|
||||||
@ -855,13 +869,34 @@ export const asyncRoutes = [
|
|||||||
meta: { title: "产品最新页", fullPath: "/product/productHome/productIndex", noCache: true },
|
meta: { title: "产品最新页", fullPath: "/product/productHome/productIndex", noCache: true },
|
||||||
},],
|
},],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/qualificationReview",
|
||||||
|
component:Layout,
|
||||||
|
name: "qualificationReview",
|
||||||
|
redirect: "/qualificationReview/index",
|
||||||
|
meta: { fullPath: "/qualificationReview", title: "资质审核", noCache: true, icon: 'el-icon-s-home' },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "noApproveInfo",
|
||||||
|
component: () => import("@/views/customer/qualificationReview/noApproveInfo/index.vue"),
|
||||||
|
name: "noApproveInfo",
|
||||||
|
meta: { title: "待审清单", fullPath: "/qualificationReview/index" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "rejectInfo",
|
||||||
|
component: () => import("@/views/customer/qualificationReview/apprvedInfo/index.vue"),
|
||||||
|
name: "rejectInfo",
|
||||||
|
meta: { title: "已审清单", fullPath: "/qualificationReview/approvedInfo" },
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/approveMangement",
|
path: "/approveMangement",
|
||||||
component:Layout,
|
component:Layout,
|
||||||
name: "approveMangement",
|
name: "approveMangement",
|
||||||
redirect: "/approveMangement/index",
|
redirect: "/approveMangement/index",
|
||||||
meta: { fullPath: "/approveMangement", title: "审核管理", noCache: true, icon: 'el-icon-s-home' },
|
meta: { fullPath: "/approveMangement", title: "供需审核", noCache: true, icon: 'el-icon-s-home' },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: "pendingPro",
|
path: "pendingPro",
|
||||||
|
|||||||
BIN
f/web-kboss/src/views/customer/ncApprove/img/app.png
Normal file
BIN
f/web-kboss/src/views/customer/ncApprove/img/app.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
1
f/web-kboss/src/views/customer/ncApprove/img/app.svg
Normal file
1
f/web-kboss/src/views/customer/ncApprove/img/app.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1755568430743" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1525" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="14"><path d="M782.848 728.576m-185.856 0a185.856 185.856 0 1 0 371.712 0 185.856 185.856 0 1 0-371.712 0Z" fill="#FFE200" p-id="1526"></path><path d="M194.56 166.4H128c-16.896 0-30.72-13.824-30.72-30.72s13.824-30.72 30.72-30.72h66.56c16.896 0 30.72 13.824 30.72 30.72s-13.824 30.72-30.72 30.72z" fill="#FFE200" p-id="1527"></path><path d="M525.824 337.92l-45.568 12.288c3.584 8.192 7.68 17.92 11.264 27.136H354.816v69.12h43.52v-27.136h224.768v27.136h46.08V377.344h-124.928c-4.096-10.752-11.776-27.136-18.432-39.424z m8.704 90.624h-45.568v30.72h-112.64v183.296h42.496v-16.896h70.144V686.08h45.568v-59.904h69.12v15.36h44.544V459.776h-113.664v-31.232z m0 95.744v-27.136h69.12v27.136h-69.12z m-115.712 0v-27.136h70.144v27.136H418.816z m115.712 63.488v-27.136h69.12v27.136h-69.12z m-115.712 0v-27.136h70.144v27.136H418.816zM301.056 856.576c-5.632 0-11.264-1.536-16.896-5.12-10.752-7.168-21.504-14.336-31.232-22.528-16.384-12.8-31.744-27.136-46.08-42.496-11.776-12.288-10.752-31.744 1.536-43.52s31.744-10.752 43.52 1.536c12.288 12.8 25.088 25.088 39.424 35.84 8.704 6.656 17.408 13.312 26.624 18.944 14.336 9.216 18.432 28.16 9.216 42.496-6.144 9.728-15.872 14.848-26.112 14.848zM507.904 917.504c-30.72 0-61.44-3.584-91.648-10.24-15.36-3.584-30.72-7.68-45.056-13.312-15.872-5.632-24.576-23.04-18.944-39.424 5.632-15.872 23.04-24.576 39.424-18.944 12.8 4.608 25.6 8.192 38.4 11.264 25.6 5.632 51.712 8.704 77.824 8.704 16.896 0 30.72 13.824 30.72 30.72s-13.824 31.232-30.72 31.232zM596.992 907.264c-13.824 0-26.624-9.728-29.696-23.552-4.096-16.384 6.144-33.28 22.528-36.864 20.48-4.608 39.936-11.776 59.392-19.968 45.568-19.968 87.04-50.176 120.32-87.552 57.344-64 88.576-146.944 88.576-232.96 0-51.2-10.752-100.864-32.256-146.944-7.168-15.36-0.512-33.792 14.848-40.96 15.36-7.168 33.792-0.512 40.96 14.848 25.088 54.272 37.888 112.64 37.888 173.056 0 101.376-36.864 198.656-104.448 273.92-38.912 43.52-88.064 79.36-141.312 102.912-22.528 9.728-46.08 17.92-69.632 23.552-2.56 0-4.608 0.512-7.168 0.512z" fill="#4E63DD" p-id="1528"></path><path d="M164.352 700.928c-11.264 0-22.528-6.656-27.648-17.408-26.624-55.808-39.936-115.2-39.936-177.152 0-67.072 16.384-133.632 47.616-192 43.008-81.408 113.152-146.944 197.632-184.32C394.24 107.008 450.56 95.232 508.416 95.232c79.872 0 156.672 23.04 223.232 66.048 32.256 20.992 61.44 46.08 87.04 75.264 11.264 12.8 9.728 32.256-3.072 43.52s-32.256 9.728-43.52-3.072c-21.504-24.576-46.592-46.592-74.24-64-56.832-36.864-122.368-55.808-189.952-55.808-49.152 0-96.768 10.24-141.312 29.696-71.68 31.744-131.584 87.552-168.448 156.672-26.624 50.176-40.448 106.496-40.448 163.328 0 52.736 11.264 103.424 33.792 150.528 7.168 15.36 1.024 33.792-14.336 40.96-4.096 1.536-8.192 2.56-12.8 2.56z" fill="#4E63DD" p-id="1529"></path></svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
1
f/web-kboss/src/views/customer/ncApprove/img/apped.svg
Normal file
1
f/web-kboss/src/views/customer/ncApprove/img/apped.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 8.7 KiB |
1
f/web-kboss/src/views/customer/ncApprove/img/apping.svg
Normal file
1
f/web-kboss/src/views/customer/ncApprove/img/apping.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 7.4 KiB |
1
f/web-kboss/src/views/customer/ncApprove/img/noapp.svg
Normal file
1
f/web-kboss/src/views/customer/ncApprove/img/noapp.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 7.7 KiB |
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="nc-approve-container">
|
<div v-loading="loading" element-loading-text="信息加载中..." class="nc-approve-container">
|
||||||
<el-card class="approve-card">
|
<el-card v-if="showType === 'add'" class="approve-card">
|
||||||
<div slot="header" class="card-header">
|
<div slot="header" class="card-header">
|
||||||
<span class="header-title">
|
<span class="header-title">
|
||||||
<i class="el-icon-document"></i>
|
<i class="el-icon-document"></i>
|
||||||
@ -47,15 +47,7 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="12">
|
|
||||||
<el-form-item label="审核状态" prop="audit_status">
|
|
||||||
<el-tag
|
|
||||||
:type="getStatusType(approveForm.audit_status)"
|
|
||||||
size="medium">
|
|
||||||
{{ getStatusText(approveForm.audit_status) }}
|
|
||||||
</el-tag>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col> -->
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@ -111,54 +103,42 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 营业执照上传 -->
|
<!-- 营业执照上传 -->
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
<i class="el-icon-picture"></i>
|
<i class="el-icon-picture"></i>
|
||||||
营业执照
|
营业执照
|
||||||
</el-divider>
|
</el-divider>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="营业执照正本" prop="license_original_img">
|
<el-form-item label="营业执照正本" prop="license_original_img">
|
||||||
<el-upload
|
<el-upload class="license-uploader" action="#" :http-request="handleLicenseUpload"
|
||||||
class="license-uploader"
|
:show-file-list="false" :before-upload="beforeLicenseUpload" accept="image/*">
|
||||||
action="#"
|
<img v-if="approveForm.license_original_img" :src="approveForm.license_original_img"
|
||||||
:http-request="handleLicenseUpload"
|
class="license-image">
|
||||||
:show-file-list="false"
|
<i v-else class="el-icon-plus license-uploader-icon"></i>
|
||||||
:before-upload="beforeLicenseUpload"
|
</el-upload>
|
||||||
accept="image/*">
|
<div class="upload-tip">
|
||||||
<img v-if="approveForm.license_original_img"
|
<i class="el-icon-info"></i>
|
||||||
:src="approveForm.license_original_img"
|
支持 JPG、PNG、GIF 格式,文件大小不超过 5MB
|
||||||
class="license-image">
|
</div>
|
||||||
<i v-else class="el-icon-plus license-uploader-icon"></i>
|
</el-form-item>
|
||||||
</el-upload>
|
</el-col>
|
||||||
<div class="upload-tip">
|
<!-- <el-col :span="12">
|
||||||
<i class="el-icon-info"></i>
|
<el-form-item label="营业执照副本" prop="license_copy_img">
|
||||||
支持 JPG、PNG、GIF 格式,文件大小不超过 5MB
|
<el-upload class="license-uploader" action="#" :http-request="handleLicenseCopyUpload"
|
||||||
</div>
|
:show-file-list="false" :before-upload="beforeLicenseUpload" accept="image/*">
|
||||||
</el-form-item>
|
<img v-if="approveForm.license_copy_img" :src="approveForm.license_copy_img"
|
||||||
</el-col>
|
class="license-image">
|
||||||
<el-col :span="12">
|
<i v-else class="el-icon-plus license-uploader-icon"></i>
|
||||||
<el-form-item label="营业执照副本" prop="license_copy_img">
|
</el-upload>
|
||||||
<el-upload
|
<div class="upload-tip">
|
||||||
class="license-uploader"
|
<i class="el-icon-info"></i>
|
||||||
action="#"
|
支持 JPG、PNG、GIF 格式,文件大小不超过 5MB
|
||||||
:http-request="handleLicenseCopyUpload"
|
</div>
|
||||||
:show-file-list="false"
|
</el-form-item>
|
||||||
:before-upload="beforeLicenseUpload"
|
</el-col> -->
|
||||||
accept="image/*">
|
</el-row>
|
||||||
<img v-if="approveForm.license_copy_img"
|
|
||||||
:src="approveForm.license_copy_img"
|
|
||||||
class="license-image">
|
|
||||||
<i v-else class="el-icon-plus license-uploader-icon"></i>
|
|
||||||
</el-upload>
|
|
||||||
<div class="upload-tip">
|
|
||||||
<i class="el-icon-info"></i>
|
|
||||||
支持 JPG、PNG、GIF 格式,文件大小不超过 5MB
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<el-form-item class="form-actions">
|
<el-form-item class="form-actions">
|
||||||
@ -178,9 +158,40 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<el-card v-if="showType === 'pending'" class="approve-card myStyle">
|
||||||
|
<div class="myStyle-content colStyle">
|
||||||
|
|
||||||
|
<span class="appTitle"> <img style="width: 50px;height: 50px;margin-right: 10px;" src="./img/apping.svg"
|
||||||
|
alt=""> 信息审核中</span>
|
||||||
|
<span class="tip">提交时间:{{ currentInfo.create_at }}</span>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card v-if="showType === 'rejected'" class="approve-card myStyle">
|
||||||
|
<div class="myStyle-content colStyle">
|
||||||
|
|
||||||
|
<span class="appTitle noapp"> <img style="width: 50px;height: 50px;margin-right: 10px;"
|
||||||
|
src="./img/noapp.svg" alt=""> 信息不通过</span>
|
||||||
|
<span class="noTip">驳回原因:{{ currentInfo.reject_reason }} <span class="reapp"
|
||||||
|
@click="reApprove">重新提交</span></span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
<el-card v-if="showType === 'approved'" class="approve-card myStyle">
|
||||||
|
<div class="myStyle-content colStyle appredStyle">
|
||||||
|
|
||||||
|
<div class="appredStyle-content">
|
||||||
|
<span class="smallTitle"> 大陆资源审核通过</span>
|
||||||
|
<img src="./img/app.png" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="appredStyle-content">
|
||||||
|
<span class="tip" style="color: #67c23a;">审核状态:已通过</span>
|
||||||
|
<span class="tip">审核时间:{{ currentInfo.update_time }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
<!-- 预览对话框 -->
|
<!-- 预览对话框 -->
|
||||||
<el-dialog title="审批信息预览" :visible.sync="previewVisible" top="3vh" width="60%" :before-close="handlePreviewClose">
|
<el-dialog title="审批信息预览" :visible.sync="previewVisible" top="3vh" width="60%"
|
||||||
|
:before-close="handlePreviewClose">
|
||||||
<div class="preview-content">
|
<div class="preview-content">
|
||||||
<el-descriptions :column="2" border>
|
<el-descriptions :column="2" border>
|
||||||
<el-descriptions-item label="账号类型">
|
<el-descriptions-item label="账号类型">
|
||||||
@ -192,11 +203,6 @@
|
|||||||
<el-descriptions-item label="执照号码">
|
<el-descriptions-item label="执照号码">
|
||||||
{{ approveForm.license_number }}
|
{{ approveForm.license_number }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- <el-descriptions-item label="审核状态1">
|
|
||||||
<el-tag :type="getStatusType(approveForm.audit_status)">
|
|
||||||
{{ getStatusText(approveForm.audit_status) }}
|
|
||||||
</el-tag>
|
|
||||||
</el-descriptions-item> -->
|
|
||||||
<el-descriptions-item label="办公地址">
|
<el-descriptions-item label="办公地址">
|
||||||
{{ approveForm.office_address }}
|
{{ approveForm.office_address }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@ -214,16 +220,16 @@
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
<div class="preview-images">
|
<div class="preview-images">
|
||||||
<div class="preview-image" v-if="approveForm.license_original_img">
|
<div class="preview-image" v-if="approveForm.license_original_img">
|
||||||
<h4>营业执照正本</h4>
|
<h4>营业执照正本</h4>
|
||||||
<img :src="approveForm.license_original_img" alt="营业执照正本" class="preview-license-img">
|
<img :src="approveForm.license_original_img" alt="营业执照正本" class="preview-license-img">
|
||||||
</div>
|
</div>
|
||||||
<div class="preview-image" v-if="approveForm.license_copy_img">
|
<!-- <div class="preview-image" v-if="approveForm.license_copy_img">
|
||||||
<h4>营业执照副本</h4>
|
<h4>营业执照副本</h4>
|
||||||
<img :src="approveForm.license_copy_img" alt="营业执照副本" class="preview-license-img">
|
<img :src="approveForm.license_copy_img" alt="营业执照副本" class="preview-license-img">
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="previewVisible = false">关闭</el-button>
|
<el-button @click="previewVisible = false">关闭</el-button>
|
||||||
@ -233,27 +239,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {reqApproveUser } from '@/api/ncmatch/index'
|
import { reqApproveUser, reqApproveUserSearch } from '@/api/ncmatch/index'
|
||||||
export default {
|
export default {
|
||||||
name: "ncApprove",
|
name: "ncApprove",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
approveForm: {
|
loading: true,
|
||||||
account_type: "", // 账号类型
|
showType: '',//add 新增 pending 审核中 rejected 审核不通过 approved 审核通过
|
||||||
company_name: '', // 公司名称
|
currentInfo: {},
|
||||||
license_number: '', // 执照号码
|
approveForm: {
|
||||||
license_original_img: '', // 营业执照预览
|
account_type: "", // 账号类型
|
||||||
license_copy_img: '', // 营业执照副本预览
|
company_name: '', // 公司名称
|
||||||
license_original_file: null, // 营业执照正本文件对象
|
license_number: '', // 执照号码
|
||||||
license_copy_file: null, // 营业执照副本文件对象
|
license_original_img: '', // 营业执照预览
|
||||||
office_address: '', // 办公地址
|
license_copy_img: '', // 营业执照副本预览
|
||||||
registered_address: '', // 注册地址
|
license_original_file: null, // 营业执照正本文件对象
|
||||||
contact_name: '', // 联系人姓名
|
license_copy_file: null, // 营业执照副本文件对象
|
||||||
telephone: '', // 固定电话
|
office_address: '', // 办公地址
|
||||||
mobile_phone: '', // 移动电话
|
registered_address: '', // 注册地址
|
||||||
email: '', // 邮箱地址
|
contact_name: '', // 联系人姓名
|
||||||
audit_status: 'pending', // 审核状态
|
telephone: '', // 固定电话
|
||||||
},
|
mobile_phone: '', // 移动电话
|
||||||
|
email: '', // 邮箱地址
|
||||||
|
audit_status: 'pending', // 审核状态
|
||||||
|
},
|
||||||
formRules: {
|
formRules: {
|
||||||
account_type: [
|
account_type: [
|
||||||
{ required: true, message: '请选择账号类型', trigger: 'change' }
|
{ required: true, message: '请选择账号类型', trigger: 'change' }
|
||||||
@ -276,50 +285,67 @@ export default {
|
|||||||
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
|
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
|
||||||
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
|
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
license_original_img: [
|
license_original_img: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
validator: (rule, value, callback) => {
|
validator: (rule, value, callback) => {
|
||||||
if (!this.approveForm.license_original_file) {
|
if (!this.approveForm.license_original_file) {
|
||||||
callback(new Error('请上传营业执照正本'));
|
callback(new Error('请上传营业执照正本'));
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trigger: 'change'
|
trigger: 'change'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
license_copy_img: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
validator: (rule, value, callback) => {
|
|
||||||
if (!this.approveForm.license_copy_file) {
|
|
||||||
callback(new Error('请上传营业执照副本'));
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
trigger: 'change'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
submitLoading: false,
|
submitLoading: false,
|
||||||
previewVisible: false
|
previewVisible: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
canSubmit() {
|
canSubmit() {
|
||||||
return this.approveForm.account_type &&
|
return this.approveForm.account_type &&
|
||||||
this.approveForm.company_name &&
|
this.approveForm.company_name &&
|
||||||
this.approveForm.license_number &&
|
this.approveForm.license_number &&
|
||||||
this.approveForm.contact_name &&
|
this.approveForm.contact_name &&
|
||||||
this.approveForm.mobile_phone &&
|
this.approveForm.mobile_phone &&
|
||||||
this.approveForm.email &&
|
this.approveForm.email &&
|
||||||
this.approveForm.license_original_file &&
|
this.approveForm.license_original_file;
|
||||||
this.approveForm.license_copy_file;
|
}
|
||||||
}
|
},
|
||||||
|
created() {
|
||||||
|
this.getApproveInfo()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
reApprove(){
|
||||||
|
this.showType = 'add'
|
||||||
|
this.approveForm = this.currentInfo
|
||||||
|
|
||||||
|
},
|
||||||
|
getApproveInfo() {
|
||||||
|
reqApproveUserSearch({ url_link: window.location.href }).then(res => {
|
||||||
|
this.loading = false
|
||||||
|
if(res.data.data.length===0){
|
||||||
|
this.showType='add'
|
||||||
|
}else if(res.data.data[0].audit_status==='pending'){
|
||||||
|
this.currentInfo=res.data.data[0]
|
||||||
|
this.showType='pending'
|
||||||
|
}else if(res.data.data[0].audit_status==='rejected'){
|
||||||
|
this.currentInfo=res.data.data[0]
|
||||||
|
this.showType='rejected'
|
||||||
|
}else if(res.data.data[0].audit_status==='approved'){
|
||||||
|
this.currentInfo=res.data.data[0]
|
||||||
|
this.showType='approved'
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
this.loading = false
|
||||||
|
console.error('获取审批信息失败:', error)
|
||||||
|
this.$message.error('获取审批信息失败,请刷新页面重试')
|
||||||
|
// 如果获取失败,默认显示新增表单
|
||||||
|
this.showType = 'add'
|
||||||
|
})
|
||||||
|
},
|
||||||
// 获取账号类型文本
|
// 获取账号类型文本
|
||||||
getAccountTypeText(type) {
|
getAccountTypeText(type) {
|
||||||
const typeMap = {
|
const typeMap = {
|
||||||
@ -352,111 +378,106 @@ export default {
|
|||||||
return statusMap[status] || '未知';
|
return statusMap[status] || '未知';
|
||||||
},
|
},
|
||||||
|
|
||||||
// 上传前验证
|
// 上传前验证
|
||||||
beforeLicenseUpload(file) {
|
beforeLicenseUpload(file) {
|
||||||
const isImage = file.type.startsWith('image/');
|
const isImage = file.type.startsWith('image/');
|
||||||
const isLt5M = file.size / 1024 / 1024 < 5;
|
const isLt5M = file.size / 1024 / 1024 < 5;
|
||||||
const allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'];
|
const allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'];
|
||||||
|
|
||||||
if (!isImage || !allowedTypes.includes(file.type)) {
|
if (!isImage || !allowedTypes.includes(file.type)) {
|
||||||
this.$message.error('只能上传 JPG、PNG、GIF 格式的图片文件!');
|
this.$message.error('只能上传 JPG、PNG、GIF 格式的图片文件!');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isLt5M) {
|
if (!isLt5M) {
|
||||||
this.$message.error('图片大小不能超过 5MB!');
|
this.$message.error('图片大小不能超过 5MB!');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
// 处理营业执照正本上传
|
// 处理营业执照正本上传
|
||||||
handleLicenseUpload(options) {
|
handleLicenseUpload(options) {
|
||||||
const file = options.file;
|
const file = options.file;
|
||||||
// 保存文件对象用于后续提交
|
// 保存文件对象用于后续提交
|
||||||
this.approveForm.license_original_file = file;
|
this.approveForm.license_original_file = file;
|
||||||
|
|
||||||
// 显示预览图片
|
// 显示预览图片
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = (e) => {
|
||||||
this.approveForm.license_original_img = e.target.result;
|
this.approveForm.license_original_img = e.target.result;
|
||||||
this.$message.success('营业执照正本上传成功');
|
this.$message.success('营业执照正本上传成功');
|
||||||
};
|
};
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
},
|
},
|
||||||
|
|
||||||
// 处理营业执照副本上传
|
// 处理营业执照副本上传
|
||||||
handleLicenseCopyUpload(options) {
|
handleLicenseCopyUpload(options) {
|
||||||
const file = options.file;
|
const file = options.file;
|
||||||
// 保存文件对象用于后续提交
|
// 保存文件对象用于后续提交
|
||||||
this.approveForm.license_copy_file = file;
|
this.approveForm.license_copy_file = file;
|
||||||
|
|
||||||
// 显示预览图片
|
// 显示预览图片
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = (e) => {
|
||||||
this.approveForm.license_copy_img = e.target.result;
|
this.approveForm.license_copy_img = e.target.result;
|
||||||
this.$message.success('营业执照副本上传成功');
|
this.$message.success('营业执照副本上传成功');
|
||||||
};
|
};
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
},
|
},
|
||||||
|
|
||||||
// 提交审批
|
// 提交审批
|
||||||
handleSubmit() {
|
handleSubmit() {
|
||||||
this.$refs.approveForm.validate((valid) => {
|
this.$refs.approveForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.submitLoading = true;
|
this.submitLoading = true;
|
||||||
let formData = new FormData();
|
let formData = new FormData();
|
||||||
|
|
||||||
// 添加基本字段
|
// 添加基本字段
|
||||||
const basicFields = [
|
const basicFields = [
|
||||||
'account_type', 'company_name', 'license_number',
|
'account_type', 'company_name', 'license_number',
|
||||||
'office_address', 'registered_address', 'contact_name',
|
'office_address', 'registered_address', 'contact_name',
|
||||||
'telephone', 'mobile_phone', 'email', 'audit_status'
|
'telephone', 'mobile_phone', 'email', 'audit_status'
|
||||||
];
|
];
|
||||||
|
|
||||||
basicFields.forEach(field => {
|
basicFields.forEach(field => {
|
||||||
if (this.approveForm[field]) {
|
if (this.approveForm[field]) {
|
||||||
formData.append(field, this.approveForm[field]);
|
formData.append(field, this.approveForm[field]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 添加文件对象
|
// 添加文件对象
|
||||||
if (this.approveForm.license_original_file) {
|
if (this.approveForm.license_original_file) {
|
||||||
formData.append('license_original_img', this.approveForm.license_original_file);
|
formData.append('license_original_img', this.approveForm.license_original_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.approveForm.license_copy_file) {
|
reqApproveUser(formData).then(res => {
|
||||||
formData.append('license_copy_img', this.approveForm.license_copy_file);
|
this.submitLoading = false;
|
||||||
}
|
if (res.status) {
|
||||||
|
this.$message.success('审批信息提交成功!');
|
||||||
|
this.approveForm.audit_status = 'pending';
|
||||||
|
this.getApproveInfo()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.message || '提交失败,请重试');
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
this.submitLoading = false;
|
||||||
|
this.$message.error('网络错误,请重试');
|
||||||
|
console.error('提交失败:', error);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$message.error('请完善必填信息');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
reqApproveUser(formData).then(res => {
|
// 重置表单
|
||||||
this.submitLoading = false;
|
handleReset() {
|
||||||
if (res.status) {
|
this.$refs.approveForm.resetFields();
|
||||||
this.$message.success('审批信息提交成功!');
|
this.approveForm.license_original_img = '';
|
||||||
this.approveForm.audit_status = 'processing';
|
this.approveForm.license_original_file = null;
|
||||||
} else {
|
this.approveForm.audit_status = 'pending';
|
||||||
this.$message.error(res.message || '提交失败,请重试');
|
this.$message.info('表单已重置');
|
||||||
}
|
},
|
||||||
}).catch(error => {
|
|
||||||
this.submitLoading = false;
|
|
||||||
this.$message.error('网络错误,请重试');
|
|
||||||
console.error('提交失败:', error);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.$message.error('请完善必填信息');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 重置表单
|
|
||||||
handleReset() {
|
|
||||||
this.$refs.approveForm.resetFields();
|
|
||||||
this.approveForm.license_original_img = '';
|
|
||||||
this.approveForm.license_copy_img = '';
|
|
||||||
this.approveForm.license_original_file = null;
|
|
||||||
this.approveForm.license_copy_file = null;
|
|
||||||
this.approveForm.audit_status = 'pending';
|
|
||||||
this.$message.info('表单已重置');
|
|
||||||
},
|
|
||||||
|
|
||||||
// 预览
|
// 预览
|
||||||
handlePreview() {
|
handlePreview() {
|
||||||
@ -467,29 +488,50 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 关闭预览
|
// 关闭预览
|
||||||
handlePreviewClose(done) {
|
handlePreviewClose(done) {
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取文件信息(用于调试)
|
// 获取文件信息(用于调试)
|
||||||
getFileInfo(file) {
|
getFileInfo(file) {
|
||||||
if (!file) return null;
|
if (!file) return null;
|
||||||
return {
|
return {
|
||||||
name: file.name,
|
name: file.name,
|
||||||
size: file.size,
|
size: file.size,
|
||||||
type: file.type,
|
type: file.type,
|
||||||
lastModified: file.lastModified
|
lastModified: file.lastModified
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.appredStyle{
|
||||||
|
border: 1px solid #f2f2fb;
|
||||||
|
width: 500px;
|
||||||
|
height: 220px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row!important;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-around!important;
|
||||||
|
.appredStyle-content{
|
||||||
|
// border: 5px solid red;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start!important;
|
||||||
|
justify-content:center;
|
||||||
|
}
|
||||||
|
}
|
||||||
.nc-approve-container {
|
.nc-approve-container {
|
||||||
min-height: 100vh;
|
box-sizing: border-box;
|
||||||
|
height: calc(100vh - 60px);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: '';
|
content: '';
|
||||||
@ -504,7 +546,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.approve-card {
|
.approve-card {
|
||||||
|
width: 100%;
|
||||||
// max-width: 1200px;
|
// max-width: 1200px;
|
||||||
margin: 0 45px;
|
margin: 0 45px;
|
||||||
background: rgba(255, 255, 255, 0.95);
|
background: rgba(255, 255, 255, 0.95);
|
||||||
@ -624,46 +666,46 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-uploader {
|
.license-uploader {
|
||||||
border: 2px dashed #d1d9e0;
|
border: 2px dashed #d1d9e0;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width:150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: #667eea;
|
border-color: #667eea;
|
||||||
background: linear-gradient(135deg, #f0f4ff 0%, #e8f0ff 100%);
|
background: linear-gradient(135deg, #f0f4ff 0%, #e8f0ff 100%);
|
||||||
// transform: translateY(-2px);
|
// transform: translateY(-2px);
|
||||||
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.2);
|
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-uploader-icon {
|
.license-uploader-icon {
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
color: #667eea;
|
color: #667eea;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 160px;
|
height: 160px;
|
||||||
line-height: 160px;
|
line-height: 160px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-image {
|
.license-image {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 160px;
|
height: 160px;
|
||||||
display: block;
|
display: block;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-tip {
|
.upload-tip {
|
||||||
margin-top: 12px;
|
margin-top: 12px;
|
||||||
@ -726,34 +768,34 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-content {
|
.preview-content {
|
||||||
.preview-images {
|
.preview-images {
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
.preview-image {
|
.preview-image {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-width: 300px;
|
min-width: 300px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
color: #2c3e50;
|
color: #2c3e50;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-license-img {
|
.preview-license-img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
max-height: 250px;
|
max-height: 250px;
|
||||||
border: 2px solid #e1e8ed;
|
border: 2px solid #e1e8ed;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-descriptions {
|
.el-descriptions {
|
||||||
.el-descriptions__body {
|
.el-descriptions__body {
|
||||||
@ -820,33 +862,33 @@ export default {
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-uploader {
|
.license-uploader {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
|
|
||||||
.license-uploader-icon {
|
.license-uploader-icon {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
line-height: 120px;
|
line-height: 120px;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-image {
|
.license-image {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-content {
|
.preview-content {
|
||||||
.preview-images {
|
.preview-images {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 15px;
|
gap: 15px;
|
||||||
|
|
||||||
.preview-image {
|
.preview-image {
|
||||||
min-width: auto;
|
min-width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-actions {
|
.form-actions {
|
||||||
margin: 30px -20px -20px -20px;
|
margin: 30px -20px -20px -20px;
|
||||||
@ -942,4 +984,63 @@ export default {
|
|||||||
background: linear-gradient(135deg, #5a6fd8, #6a4190);
|
background: linear-gradient(135deg, #5a6fd8, #6a4190);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.myStyle {
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100vh - 100px);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #667eea;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.colStyle {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.appTitle {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #667eea;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.noTip {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #f56c6c;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.noapp {
|
||||||
|
color: #f56c6c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reapp {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #667eea;
|
||||||
|
margin-top: 10px;
|
||||||
|
cursor: pointer !important;
|
||||||
|
}
|
||||||
|
.smallTitle{
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #83858a;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -32,9 +32,9 @@
|
|||||||
<i class="el-icon-plus"></i> 添加{{ searchData.radioType === '1' || searchData.radioType === '3' ?
|
<i class="el-icon-plus"></i> 添加{{ searchData.radioType === '1' || searchData.radioType === '3' ?
|
||||||
'需求' : '商品' }}
|
'需求' : '商品' }}
|
||||||
</el-button> -->
|
</el-button> -->
|
||||||
<!-- <el-button style="margin-left: 10px;" size="mini" @click="exportAllData">
|
<el-button style="margin-left: 10px;" size="mini" @click="getTableData('1')">
|
||||||
<i class="el-icon-upload2"></i> 全部导出
|
<i class="el-icon-upload2"></i> 全部导出
|
||||||
</el-button> -->
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table size="mini" border height="calc(100vh - 210px)" v-loading="loading" :data="tableData"
|
<el-table size="mini" border height="calc(100vh - 210px)" v-loading="loading" :data="tableData"
|
||||||
style="width: 100%;border:1px solid #ccc;" element-loading-text="加载中..."
|
style="width: 100%;border:1px solid #ccc;" element-loading-text="加载中..."
|
||||||
@ -336,8 +336,8 @@ export default {
|
|||||||
},
|
},
|
||||||
exportData(row) {
|
exportData(row) {
|
||||||
let ploay = {
|
let ploay = {
|
||||||
// ids: [row.id]
|
ids: [row.id]
|
||||||
ids:["fYHuG9eXwLi7949Rg9mRg", "vTv8KuqfDhT1efC8prs9y"]
|
// ids:["fYHuG9eXwLi7949Rg9mRg", "vTv8KuqfDhT1efC8prs9y"]
|
||||||
}
|
}
|
||||||
reqExportProduct(ploay).then(res => {
|
reqExportProduct(ploay).then(res => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
@ -388,7 +388,7 @@ export default {
|
|||||||
this.closeEditDialog();
|
this.closeEditDialog();
|
||||||
this.getTableData(); // 刷新列表
|
this.getTableData(); // 刷新列表
|
||||||
},
|
},
|
||||||
getTableData() {
|
getTableData(to_excel) {
|
||||||
// 处理日期范围
|
// 处理日期范围
|
||||||
if (this.searchDate && this.searchDate.length === 2) {
|
if (this.searchDate && this.searchDate.length === 2) {
|
||||||
this.searchData.start_date = this.searchDate[0];
|
this.searchData.start_date = this.searchDate[0];
|
||||||
@ -401,7 +401,26 @@ export default {
|
|||||||
console.log("searchData", this.searchData);
|
console.log("searchData", this.searchData);
|
||||||
|
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
reqSearchByMangement(this.searchData).then(res => {
|
if(to_excel==='1'){
|
||||||
|
this.searchData.to_excel=to_excel
|
||||||
|
reqSearchByMangement({url_link:window.location.href,to_excel:to_excel,publish_type:this.searchData.publish_type}).then(res => {
|
||||||
|
console.log(res);
|
||||||
|
if (res.status) {
|
||||||
|
// 创建一个Workbook对象
|
||||||
|
const wb = XLSX.utils.book_new();
|
||||||
|
// 创建第一个sheet
|
||||||
|
const ws1 = XLSX.utils.json_to_sheet(res.data);
|
||||||
|
XLSX.utils.book_append_sheet(wb, ws1, 'sheet1');
|
||||||
|
// 导出Excel文件
|
||||||
|
XLSX.writeFile(wb, '产品列表.xlsx');
|
||||||
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
console.error('获取数据失败:', error);
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false;
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
reqSearchByMangement(this.searchData).then(res => {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
if (res.status) {
|
if (res.status) {
|
||||||
this.tableData = res.data.product_list;
|
this.tableData = res.data.product_list;
|
||||||
@ -412,6 +431,8 @@ export default {
|
|||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
//分页器
|
//分页器
|
||||||
handleSizeChange(val) {
|
handleSizeChange(val) {
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<qualificationBox :approveInfo="approveInfo"></qualificationBox>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import qualificationBox from '../qualificationBox/index.vue';
|
||||||
|
export default {
|
||||||
|
name: 'apprvedInfo',
|
||||||
|
components: {
|
||||||
|
qualificationBox
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
approveInfo:{
|
||||||
|
audit_status:"approved,rejected",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
13
f/web-kboss/src/views/customer/qualificationReview/index.vue
Normal file
13
f/web-kboss/src/views/customer/qualificationReview/index.vue
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<router-view></router-view>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'qualificationReview',
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<qualificationBox :approveInfo="approveInfo"></qualificationBox>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import qualificationBox from '../qualificationBox/index.vue';
|
||||||
|
export default {
|
||||||
|
name: 'noApproveInfo',
|
||||||
|
components: {
|
||||||
|
qualificationBox
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
approveInfo:{
|
||||||
|
audit_status:"pending",
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -0,0 +1,379 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
prop="date"
|
||||||
|
label="图片"
|
||||||
|
width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-image v-if="scope.row.license_original_img" :src="scope.row.license_original_img "
|
||||||
|
style="width: 80px; height: 60px;border: 1px solid #ccc;border-radius: 6px;"
|
||||||
|
:preview-src-list="[scope.row.license_original_img]"
|
||||||
|
fit="cover" :initial-index="0" preview-teleported :z-index="3000">
|
||||||
|
</el-image>
|
||||||
|
<span v-else>/</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="contact_name"
|
||||||
|
label="联系人"
|
||||||
|
min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="mobile_phone"
|
||||||
|
label="联系电话"
|
||||||
|
min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="email"
|
||||||
|
label="邮箱"
|
||||||
|
min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="telephone"
|
||||||
|
label="公共电话"
|
||||||
|
min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="audit_status"
|
||||||
|
label="审核状态"
|
||||||
|
min-width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag :type="getStatusType(scope.row.audit_status)">
|
||||||
|
{{ getStatusText(scope.row.audit_status) }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="address"
|
||||||
|
label="操作"
|
||||||
|
fixed="right"
|
||||||
|
width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="text" @click="handleAudit(scope.row)" size="small">审核</el-button>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 预览对话框 -->
|
||||||
|
<el-dialog title="审批信息预览" :visible.sync="previewVisible" top="3vh" width="60%"
|
||||||
|
:before-close="handlePreviewClose">
|
||||||
|
<div class="preview-content">
|
||||||
|
<el-descriptions :column="2" border>
|
||||||
|
<el-descriptions-item label="账号类型">
|
||||||
|
{{ getAccountTypeText(approveForm.account_type) }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="公司名称">
|
||||||
|
{{ approveForm.company_name }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="执照号码">
|
||||||
|
{{ approveForm.license_number }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="审核状态1">
|
||||||
|
<el-tag :type="getStatusType(approveForm.audit_status)">
|
||||||
|
{{ getStatusText(approveForm.audit_status) }}
|
||||||
|
</el-tag>
|
||||||
|
</el-descriptions-item> -->
|
||||||
|
<el-descriptions-item label="办公地址">
|
||||||
|
{{ approveForm.office_address }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="注册地址">
|
||||||
|
{{ approveForm.registered_address }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="联系人">
|
||||||
|
{{ approveForm.contact_name }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="联系电话">
|
||||||
|
{{ approveForm.mobile_phone }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="邮箱地址">
|
||||||
|
{{ approveForm.email }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
|
||||||
|
<div class="preview-images">
|
||||||
|
<div class="preview-image" >
|
||||||
|
<h4>营业执照正本</h4>
|
||||||
|
<el-image :src="approveForm.license_original_img "
|
||||||
|
class="preview-license-img"
|
||||||
|
|
||||||
|
:preview-src-list="[approveForm.license_original_img]"
|
||||||
|
fit="cover" :initial-index="0" preview-teleported :z-index="3000">
|
||||||
|
</el-image>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" @click="previewVisible = false">关 闭</el-button>
|
||||||
|
<el-button size="mini" type="danger" @click="handleReject">审核不通过</el-button>
|
||||||
|
<el-button size="mini" type="success" @click="handleApprove">审核通过</el-button>
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 驳回理由输入弹窗 -->
|
||||||
|
<el-dialog title="审核退回" :visible.sync="rejectDialogVisible" width="40%" @close="handleRejectDialogClose">
|
||||||
|
<el-form :model="rejectForm" :rules="rejectRules" ref="rejectForm">
|
||||||
|
<el-form-item label="驳回原因" prop="reject_reason" :label-width="formLabelWidth">
|
||||||
|
<el-input
|
||||||
|
v-model="rejectForm.reject_reason"
|
||||||
|
type="textarea"
|
||||||
|
:rows="4"
|
||||||
|
placeholder="请输入驳回原因"
|
||||||
|
maxlength="500"
|
||||||
|
show-word-limit>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="rejectDialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmReject" :loading="rejectLoading">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { reqEnterpriseUpdate,reqApproveUserSearch } from '@/api/ncmatch';
|
||||||
|
export default {
|
||||||
|
name: 'qualificationBox',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
current_page:1,
|
||||||
|
page_size:10,
|
||||||
|
total:0,
|
||||||
|
approveForm:{},
|
||||||
|
previewVisible: false,
|
||||||
|
rejectDialogVisible: false,
|
||||||
|
rejectLoading: false,
|
||||||
|
formLabelWidth: '120px',
|
||||||
|
rejectForm: {
|
||||||
|
reject_reason: ''
|
||||||
|
},
|
||||||
|
rejectRules: {
|
||||||
|
reject_reason: [
|
||||||
|
{ required: true, message: '请输入驳回原因', trigger: 'blur' },
|
||||||
|
{ min: 5, max: 500, message: '驳回原因长度在 5 到 500 个字符', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
approveInfo:{
|
||||||
|
type:Object,
|
||||||
|
default:()=>{}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData(){
|
||||||
|
let ploay = {
|
||||||
|
current_page:this.current_page,
|
||||||
|
page_size:this.page_size,
|
||||||
|
audit_status:this.approveInfo.audit_status,
|
||||||
|
url_link:window.location.href,
|
||||||
|
}
|
||||||
|
reqApproveUserSearch(ploay).then(res=>{
|
||||||
|
if(res.status){
|
||||||
|
this.tableData = res.data
|
||||||
|
this.total = res.data.total_count
|
||||||
|
this.tableData = res.data.data
|
||||||
|
}else{
|
||||||
|
this.$message.error(res.msg || '加载失败,请重试');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
handleAudit(row) {
|
||||||
|
console.log(row)
|
||||||
|
this.previewVisible = true
|
||||||
|
this.approveForm = row
|
||||||
|
},
|
||||||
|
// 审核通过
|
||||||
|
handleApprove() {
|
||||||
|
this.$confirm('确认审核通过该资格申请吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.approveQualification();
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.info('已取消操作');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 审核不通过
|
||||||
|
handleReject() {
|
||||||
|
this.rejectDialogVisible = true;
|
||||||
|
// 回显已有的驳回理由,如果没有则显示空字符串
|
||||||
|
this.rejectForm.reject_reason = this.approveForm.reject_reason || '';
|
||||||
|
// 重置表单验证
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.rejectForm) {
|
||||||
|
this.$refs.rejectForm.clearValidate();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 确认驳回
|
||||||
|
confirmReject() {
|
||||||
|
this.$refs.rejectForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.rejectQualification();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 执行审核通过
|
||||||
|
approveQualification() {
|
||||||
|
// 这里调用审核通过的API
|
||||||
|
const params = {
|
||||||
|
id: this.approveForm.id,
|
||||||
|
audit_status: 'approved'
|
||||||
|
};
|
||||||
|
console.log("审核通过",params)
|
||||||
|
reqEnterpriseUpdate(params).then(res=>{
|
||||||
|
if(res.status){
|
||||||
|
this.$message.success('审核通过成功');
|
||||||
|
this.initData()
|
||||||
|
this.previewVisible = false;
|
||||||
|
this.refreshTable();
|
||||||
|
this.initData();
|
||||||
|
}else{
|
||||||
|
this.$message.error(res.msg || '审核失败,请重试');
|
||||||
|
}
|
||||||
|
}).catch(err=>{
|
||||||
|
this.$message.error('审核失败,请重试');
|
||||||
|
})
|
||||||
|
// 模拟API调用,实际使用时替换为真实的API
|
||||||
|
|
||||||
|
|
||||||
|
// 实际API调用示例:
|
||||||
|
// this.$api.qualification.approve(params).then(res => {
|
||||||
|
// if (res.status) {
|
||||||
|
// this.$message.success('审核通过成功');
|
||||||
|
// this.previewVisible = false;
|
||||||
|
// this.refreshTable();
|
||||||
|
// } else {
|
||||||
|
// this.$message.error(res.msg || '审核失败,请重试');
|
||||||
|
// }
|
||||||
|
// }).catch(err => {
|
||||||
|
// this.$message.error('审核失败,请重试');
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
// 执行审核驳回
|
||||||
|
rejectQualification() {
|
||||||
|
this.rejectLoading = true;
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
id: this.approveForm.id,
|
||||||
|
audit_status: 'rejected',
|
||||||
|
reject_reason: this.rejectForm.reject_reason
|
||||||
|
};
|
||||||
|
console.log("审核驳回",params)
|
||||||
|
reqEnterpriseUpdate(params).then(res=>{
|
||||||
|
if(res.status){
|
||||||
|
this.rejectLoading = false;
|
||||||
|
this.$message.success('审核驳回成功');
|
||||||
|
this.rejectDialogVisible = false;
|
||||||
|
this.previewVisible = false;
|
||||||
|
this.initData();
|
||||||
|
}else{
|
||||||
|
this.$message.error(res.msg || '审核失败,请重试');
|
||||||
|
}
|
||||||
|
}).catch(err=>{
|
||||||
|
this.$message.error('审核失败,请重试');
|
||||||
|
})
|
||||||
|
|
||||||
|
// 实际API调用示例:
|
||||||
|
// this.$api.qualification.reject(params).then(res => {
|
||||||
|
// this.rejectLoading = false;
|
||||||
|
// if (res.status) {
|
||||||
|
// this.$message.success('审核驳回成功');
|
||||||
|
// this.rejectDialogVisible = false;
|
||||||
|
// this.previewVisible = false;
|
||||||
|
// this.refreshTable();
|
||||||
|
// } else {
|
||||||
|
// this.$message.error(res.msg || '审核失败,请重试');
|
||||||
|
// }
|
||||||
|
// }).catch(err => {
|
||||||
|
// this.rejectLoading = false;
|
||||||
|
// this.$message.error('审核失败,请重试');
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
// 刷新表格数据
|
||||||
|
refreshTable() {
|
||||||
|
// 这里添加刷新表格的逻辑
|
||||||
|
console.log('刷新表格数据');
|
||||||
|
},
|
||||||
|
// 驳回弹窗关闭处理
|
||||||
|
handleRejectDialogClose() {
|
||||||
|
this.rejectDialogVisible = false;
|
||||||
|
this.rejectForm.reject_reason = '';
|
||||||
|
// 重置表单验证
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.rejectForm) {
|
||||||
|
this.$refs.rejectForm.clearValidate();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 关闭预览弹窗
|
||||||
|
handlePreviewClose() {
|
||||||
|
this.previewVisible = false;
|
||||||
|
},
|
||||||
|
// 获取账号类型文本
|
||||||
|
getAccountTypeText(type) {
|
||||||
|
const typeMap = {
|
||||||
|
'enterprise': '企业账号',
|
||||||
|
'personal': '个人账号',
|
||||||
|
'government': '政府机构'
|
||||||
|
};
|
||||||
|
return typeMap[type] || '未知';
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取状态类型
|
||||||
|
getStatusType(status) {
|
||||||
|
const statusMap = {
|
||||||
|
'pending': 'warning',
|
||||||
|
'approved': 'success',
|
||||||
|
'rejected': 'danger',
|
||||||
|
'processing': 'info'
|
||||||
|
};
|
||||||
|
return statusMap[status] || 'info';
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取状态文本
|
||||||
|
getStatusText(status) {
|
||||||
|
const statusMap = {
|
||||||
|
'pending': '待审核',
|
||||||
|
'approved': '已通过',
|
||||||
|
'rejected': '已拒绝',
|
||||||
|
'processing': '审核中'
|
||||||
|
};
|
||||||
|
return statusMap[status] || '未知';
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped lang="less">
|
||||||
|
.preview-license-img{
|
||||||
|
width: 300px;
|
||||||
|
height: 200px;
|
||||||
|
border-radius: 16px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
&:hover{
|
||||||
|
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
|
||||||
|
transform: translateY(-3px);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,7 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="top-nav">
|
<div class="top-nav">
|
||||||
<div id="topContainer" class="container">
|
<div id="topContainer" class="container" :class="{ 'ncmatch-layout': homePath === '/ncmatchHome/index' }">
|
||||||
<div class="logo">
|
<!-- 当homePath不等于/ncmatchHome/index时显示logo和导航 -->
|
||||||
|
<div class="logo" v-if="homePath !== '/ncmatchHome/index'">
|
||||||
<img v-if="JSON.stringify(logoInfoNew)!=='{}'" @click="$router.push(homePath)"
|
<img v-if="JSON.stringify(logoInfoNew)!=='{}'" @click="$router.push(homePath)"
|
||||||
style="cursor:pointer;margin-right: 71px" class="logoImg"
|
style="cursor:pointer;margin-right: 71px" class="logoImg"
|
||||||
:src=" logoInfoNew.home.logoImg || '' "
|
:src=" logoInfoNew.home.logoImg || '' "
|
||||||
@ -29,6 +30,78 @@
|
|||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 当homePath等于/ncmatchHome/index时的布局 -->
|
||||||
|
<div class="logo" v-else>
|
||||||
|
<!-- 登录状态:用户头像在最左侧 -->
|
||||||
|
<el-dropdown v-if="loginState" @visible-change="handleShow"
|
||||||
|
class="avatar-container left-menu-item hover-effect nick-name-style"
|
||||||
|
style="margin-right: 0"
|
||||||
|
trigger="click">
|
||||||
|
<div class="avatar-wrapper">
|
||||||
|
<i
|
||||||
|
style="font-size: 18px; color: #262626;font-weight: 400;cursor: pointer;display: flex;justify-content: flex-start;align-items: center">
|
||||||
|
<div class="imgUser">{{ nick_name.charAt(0) }}</div>
|
||||||
|
{{ nick_name }}
|
||||||
|
<i id="resverIcon" class="el-icon-arrow-up el-icon--right resverIcon"></i>
|
||||||
|
</i>
|
||||||
|
</div>
|
||||||
|
<el-dropdown-menu slot="dropdown" style="width: 230px;font-size: 16px;" divided>
|
||||||
|
<div
|
||||||
|
style="display: flex;flex-direction: column;padding:15px 15px;background-color: #f0f2f5">
|
||||||
|
<span style="font-weight: bold;font-size: 20px;margin-bottom: 5px;color: #333333">{{ nick_name }}</span>
|
||||||
|
<span
|
||||||
|
style="font-size: 12px;color:#666;display: flex;justify-content:flex-start;align-items: center"> ID: <span
|
||||||
|
ref="contentToCopy">
|
||||||
|
{{
|
||||||
|
userId
|
||||||
|
}}
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<svg
|
||||||
|
@click="copyBtn"
|
||||||
|
class="copy-btn"
|
||||||
|
viewBox="0 0 1024 1024"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="12"
|
||||||
|
height="12"
|
||||||
|
style="fill: #1019ab;"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M394.666667 106.666667h448a74.666667 74.666667 0 0 1 74.666666 74.666666v448a74.666667 74.666667 0 0 1-74.666666 74.666667H394.666667a74.666667 74.666667 0 0 1-74.666667-74.666667V181.333333a74.666667 74.666667 0 0 1 74.666667-74.666666z m0 64a10.666667 10.666667 0 0 0-10.666667 10.666666v448a10.666667 10.666667 0 0 0 10.666667 10.666667h448a10.666667 10.666667 0 0 0 10.666666-10.666667V181.333333a10.666667 10.666667 0 0 0-10.666666-10.666666H394.666667z m245.333333 597.333333a32 32 0 0 1 64 0v74.666667a74.666667 74.666667 0 0 1-74.666667 74.666666H181.333333a74.666667 74.666667 0 0 1-74.666666-74.666666V394.666667a74.666667 74.666667 0 0 1 74.666666-74.666667h74.666667a32 32 0 0 1 0 64h-74.666667a10.666667 10.666667 0 0 0-10.666666 10.666667v448a10.666667 10.666667 0 0 0 10.666666 10.666666h448a10.666667 10.666667 0 0 0 10.666667-10.666666v-74.666667z"
|
||||||
|
p-id="1521"></path>
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<el-divider style="margin: 0!important;"></el-divider>
|
||||||
|
<div
|
||||||
|
v-if="role.includes('客户')"
|
||||||
|
style="padding: 0 18px; width: 100%;height: 60px;display: flex;justify-content: space-between;align-items: center">
|
||||||
|
|
||||||
|
<span style="color:#666;display: block;font-size: 14px;"
|
||||||
|
class="moneyNow"><span style="display: block;margin-bottom: 5px">余额</span>{{
|
||||||
|
mybalance ? mybalance : initMybalance()
|
||||||
|
}} ¥</span>
|
||||||
|
<el-button v-if="!isShowKbossCharge" type="primary" @click="$router.push('/kbossCharge')" plain
|
||||||
|
style="padding: 8px; ">
|
||||||
|
充值
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<el-dropdown-item v-if="role.includes('客户')"
|
||||||
|
@click.native="$router.push('/customer/customerInformation')">
|
||||||
|
<span style="display: block">个人中心</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item @click.native="logout">
|
||||||
|
<span style="display: block">退出登录</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
|
||||||
|
<!-- 公司名称在中间 -->
|
||||||
|
<div class="company-name" @click="$router.push(homePath)" style="cursor:pointer;font-size: 24px;font-weight: bold;color: #222F60;margin: 0 auto;">
|
||||||
|
{{ (logoInfoNew.home && logoInfoNew.home.orgName) || '' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="user-area">
|
<div class="user-area">
|
||||||
<a @click="goB" v-if="loginState" class="login-btn">控制台</a>
|
<a @click="goB" v-if="loginState" class="login-btn">控制台</a>
|
||||||
@ -46,7 +119,7 @@
|
|||||||
<!-- <span style="text-decoration: underline; text-decoration-color: #1b5bff" v-if="!showRegisterButton">{{-->
|
<!-- <span style="text-decoration: underline; text-decoration-color: #1b5bff" v-if="!showRegisterButton">{{-->
|
||||||
<!-- username-->
|
<!-- username-->
|
||||||
<!-- }}</span>-->
|
<!-- }}</span>-->
|
||||||
<el-dropdown v-if="loginState " @visible-change="handleShow"
|
<el-dropdown v-if="loginState && homePath !== '/ncmatchHome/index'" @visible-change="handleShow"
|
||||||
class="avatar-container right-menu-item hover-effect nick-name-style"
|
class="avatar-container right-menu-item hover-effect nick-name-style"
|
||||||
style="margin-right: 0"
|
style="margin-right: 0"
|
||||||
trigger="click">
|
trigger="click">
|
||||||
@ -111,13 +184,13 @@
|
|||||||
<!-- v-if="role.includes('客户')"-->
|
<!-- v-if="role.includes('客户')"-->
|
||||||
<!-- <el-dropdown-item v-if="role.includes('客户')"-->
|
<!-- <el-dropdown-item v-if="role.includes('客户')"-->
|
||||||
<!-- @click.native="channelFirstBtn">-->
|
<!-- @click.native="channelFirstBtn">-->
|
||||||
<!-- <span style="display: block">渠道管理</span>-->
|
<!-- <span style="display: block">渠道管理</span>-->
|
||||||
<!-- </el-dropdown-item>-->
|
<!-- </el-dropdown-item>-->
|
||||||
<!-- <el-dropdown-item v-if="role.includes('客户')">-->
|
<!-- <el-dropdown-item v-if="role.includes('客户')">-->
|
||||||
<!-- <span style="display: block" @click="showCode">促销邀请码</span>-->
|
<!-- <span style="display: block" @click="showCode">促销邀请码</span>-->
|
||||||
<!-- </el-dropdown-item>-->
|
<!-- </el-dropdown-item>-->
|
||||||
<!-- <el-dropdown-item @click.native="edituserPassword()">-->
|
<!-- <el-dropdown-item @click.native="edituserPassword()">-->
|
||||||
<!-- <span style="display: block">修改密码</span>-->
|
<!-- <span style="display: block">修改密码</span>-->
|
||||||
<!-- </el-dropdown-item>-->
|
<!-- </el-dropdown-item>-->
|
||||||
|
|
||||||
<!-- <el-dropdown-item @click.native="personalMessage" v-if="org_type == 2 || org_type == 3">
|
<!-- <el-dropdown-item @click.native="personalMessage" v-if="org_type == 2 || org_type == 3">
|
||||||
@ -202,7 +275,6 @@ import {mapGetters, mapState} from "vuex";
|
|||||||
import {getLogoAPI, getUserInfoAPI} from "@/api/login";
|
import {getLogoAPI, getUserInfoAPI} from "@/api/login";
|
||||||
import {reqApplyChannel} from "@/api/customer/channel";
|
import {reqApplyChannel} from "@/api/customer/channel";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
import { windows } from 'codemirror/src/util/browser';
|
|
||||||
import { getHomePath } from '@/views/setting/tools'
|
import { getHomePath } from '@/views/setting/tools'
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
name: "TopBox",
|
name: "TopBox",
|
||||||
@ -226,6 +298,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
this.homePath = getHomePath()
|
||||||
if (sessionStorage.getItem('userId')) {
|
if (sessionStorage.getItem('userId')) {
|
||||||
this.$store.commit('setLoginState', true); // 同步到 Vuex
|
this.$store.commit('setLoginState', true); // 同步到 Vuex
|
||||||
}
|
}
|
||||||
@ -986,4 +1059,41 @@ export default Vue.extend({
|
|||||||
background: #081020;
|
background: #081020;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.company-name {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #222F60;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #1E6FFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 当homePath等于/ncmatchHome/index时的特殊样式 */
|
||||||
|
.top-nav .container {
|
||||||
|
&.ncmatch-layout {
|
||||||
|
.logo {
|
||||||
|
flex: 1;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-area {
|
||||||
|
justify-content: flex-end;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 左侧用户头像样式 */
|
||||||
|
.left-menu-item {
|
||||||
|
.avatar-wrapper {
|
||||||
|
i {
|
||||||
|
justify-content: flex-start !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { reqPublishProductSearchFirstPage, reqEnterpriseAuditInfoSearch } from '@/api/ncmatch'
|
import { reqPublishProductSearchFirstPage, reqEnterpriseAuditInfoSearch, reqHomepageProductCategory, reqGetSupplyAndDemandSquareList } from '@/api/ncmatch'
|
||||||
import { mapGetters, mapState } from "vuex";
|
import { mapGetters, mapState } from "vuex";
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
name: "mainPage",
|
name: "mainPage",
|
||||||
@ -11,10 +11,13 @@ export default Vue.extend({
|
|||||||
menuAside: () => import('./menuAside/index.vue')
|
menuAside: () => import('./menuAside/index.vue')
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.init_product_list()
|
this.getHomepageProductCategory()
|
||||||
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
boxLoading:false,
|
||||||
|
selectedCategory: "",
|
||||||
showTip: false,
|
showTip: false,
|
||||||
total: 0,
|
total: 0,
|
||||||
publish_type: null,
|
publish_type: null,
|
||||||
@ -144,21 +147,36 @@ export default Vue.extend({
|
|||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
goInfo(){
|
getHomepageProductCategory() {
|
||||||
|
reqHomepageProductCategory({
|
||||||
|
url_link: window.location.href,
|
||||||
|
publish_type: "1"
|
||||||
|
}).then(res => {
|
||||||
|
if (res.status) {
|
||||||
|
this.categories = res.data
|
||||||
|
this.product = res.data
|
||||||
|
this.currentHotMenu = res.data[0].id
|
||||||
|
this.selectedCategory = res.data[0].id
|
||||||
|
this.initData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goInfo() {
|
||||||
this.showTip = false
|
this.showTip = false
|
||||||
this.$router.push('/customer/approve')
|
this.$router.push('/customer/approve')
|
||||||
|
|
||||||
},
|
},
|
||||||
handleCurrentChange(val) {
|
handleCurrentChange(val) {
|
||||||
this.current_page = val
|
this.current_page = val
|
||||||
this.init_product_list()
|
this.initData()
|
||||||
|
// this.init_product_list()
|
||||||
},
|
},
|
||||||
sendInfo(type) {
|
sendInfo(type) {
|
||||||
if (this.loginState) {
|
if (this.loginState) {
|
||||||
reqEnterpriseAuditInfoSearch({
|
reqEnterpriseAuditInfoSearch({
|
||||||
url_link: window.location.href,
|
url_link: window.location.href,
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.data.length !== 0||!sessionStorage.getItem('juese').includes('客户')) {
|
if (res.data.length !== 0 || !sessionStorage.getItem('juese').includes('客户')) {
|
||||||
this.publish_type = type
|
this.publish_type = type
|
||||||
this.sendProductVisible = true
|
this.sendProductVisible = true
|
||||||
} else {
|
} else {
|
||||||
@ -171,6 +189,31 @@ export default Vue.extend({
|
|||||||
this.$router.push('/login')
|
this.$router.push('/login')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
initData() {
|
||||||
|
this.boxLoading = true
|
||||||
|
let ploay = {
|
||||||
|
product_category: this.selectedCategory,
|
||||||
|
to_page: "first_page",
|
||||||
|
url_link: window.location.href,
|
||||||
|
page_size: this.page_size,
|
||||||
|
current_page: this.current_page,
|
||||||
|
publish_type: "1"
|
||||||
|
}
|
||||||
|
reqGetSupplyAndDemandSquareList(ploay).then(res => {
|
||||||
|
this.boxLoading = false
|
||||||
|
if (res.status) {
|
||||||
|
if (res.data.length === 0) {
|
||||||
|
this.hotProductList = []
|
||||||
|
this.total = 0
|
||||||
|
} else {
|
||||||
|
this.hotProductList = res.data[0].product_list
|
||||||
|
this.total = res.data[0].total_count
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
init_product_list() {
|
init_product_list() {
|
||||||
reqPublishProductSearchFirstPage({ publish_type: "1", url_link: window.location.href, to_page: 'first_page', page_size: this.page_size, current_page: this.current_page, product_type: this.currentHotMenu }).then(res => {
|
reqPublishProductSearchFirstPage({ publish_type: "1", url_link: window.location.href, to_page: 'first_page', page_size: this.page_size, current_page: this.current_page, product_type: this.currentHotMenu }).then(res => {
|
||||||
if (res.status) {
|
if (res.status) {
|
||||||
@ -191,7 +234,9 @@ export default Vue.extend({
|
|||||||
clickNetMenu(menu) {
|
clickNetMenu(menu) {
|
||||||
this.current_page = 1
|
this.current_page = 1
|
||||||
this.currentHotMenu = menu.id;
|
this.currentHotMenu = menu.id;
|
||||||
this.hotProductList = menu.product_list || [];
|
this.selectedCategory = menu.id
|
||||||
|
this.initData()
|
||||||
|
// this.hotProductList = menu.product_list || [];
|
||||||
},
|
},
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
console.log('搜索:1', this.searchKeyword)
|
console.log('搜索:1', this.searchKeyword)
|
||||||
@ -253,12 +298,12 @@ export default Vue.extend({
|
|||||||
<li v-for="menu in product" :class="currentHotMenu === menu.id ? 'activeMenu' : ''" @click="clickNetMenu(menu)"
|
<li v-for="menu in product" :class="currentHotMenu === menu.id ? 'activeMenu' : ''" @click="clickNetMenu(menu)"
|
||||||
:key="menu.name">
|
:key="menu.name">
|
||||||
<!-- <img :src="currentHotMenu === menu.id ? menu.activeIcon : menu.icon" alt="" /> -->
|
<!-- <img :src="currentHotMenu === menu.id ? menu.activeIcon : menu.icon" alt="" /> -->
|
||||||
<span class="tab-text">{{ menu.name }}</span>
|
<span class="tab-text">{{ menu.product_category }}</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<productCard :productList="hotProductList"></productCard>
|
<productCard v-loading="boxLoading" :productList="hotProductList"></productCard>
|
||||||
<el-pagination style="background-color: white;" @current-change="handleCurrentChange" :page-size="page_size"
|
<el-pagination style="background-color: white;" @current-change="handleCurrentChange" :page-size="page_size"
|
||||||
layout="total, prev, pager, next" :total="total">
|
layout="total, prev, pager, next" :total="total">
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
@ -271,7 +316,8 @@ export default Vue.extend({
|
|||||||
<span>您还没有完善企业信息,完善企业信息审核通过后您可以发布需求与商品。</span>
|
<span>您还没有完善企业信息,完善企业信息审核通过后您可以发布需求与商品。</span>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
|
|
||||||
<span> <span style="margin-right: 10px;"> 跳转到</span> <el-button size="small" type="primary" @click="goInfo">信息完善</el-button></span>
|
<span> <span style="margin-right: 10px;"> 跳转到</span> <el-button size="small" type="primary"
|
||||||
|
@click="goInfo">信息完善</el-button></span>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<span class="mylabel"> <span v-if="productDetailInfo.publish_type === '1' ">商品价格:</span> <span
|
<span class="mylabel"> <span v-if="productDetailInfo.publish_type === '1' ">商品价格:</span> <span
|
||||||
v-else>预期价格:</span></span>
|
v-else>预期价格:</span></span>
|
||||||
<span class="value">¥{{ productDetailInfo.discount_price }}</span> -->
|
<span class="value">¥{{ productDetailInfo.discount_price }}</span> -->
|
||||||
</li>
|
<!-- </li> -->
|
||||||
<li class="info-item" style="margin:5px 0;">
|
<li class="info-item" style="margin:5px 0;">
|
||||||
<span class="mylabel">所属类别:</span>
|
<span class="mylabel">所属类别:</span>
|
||||||
<span class="value">{{ productDetailInfo.product_category }}</span>
|
<span class="value">{{ productDetailInfo.product_category }}</span>
|
||||||
|
|||||||
@ -0,0 +1,60 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-button size="small" style="margin-bottom: 5px;" type="primary" @click="getTableData('1')">
|
||||||
|
<i class="el-icon-upload2"> </i>
|
||||||
|
全部导出</el-button>
|
||||||
|
<el-table border :data="tableData" style="width: 100%">
|
||||||
|
|
||||||
|
<el-table-column prop="name" label="姓名" min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="phone" label="手机号" min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="email" label="邮箱" min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="content" label="内容" min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="create_time" label="创建时间" min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="update_time" label="更新时间" min-width="180">
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { reqSearchUserInquiry } from '@/api/ncmatch'
|
||||||
|
import XLSX from 'xlsx'
|
||||||
|
export default {
|
||||||
|
name: 'ConsultingMangement',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getTableData('0')
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getTableData(to_excel) {
|
||||||
|
reqSearchUserInquiry({ url_link: window.location.href, to_excel: to_excel }).then(res => {
|
||||||
|
console.log(res)
|
||||||
|
if (res.status) {
|
||||||
|
if (to_excel === '0') {
|
||||||
|
this.tableData = res.data
|
||||||
|
} else if (to_excel === '1') {
|
||||||
|
// 创建一个Workbook对象
|
||||||
|
const wb = XLSX.utils.book_new();
|
||||||
|
// 创建第一个sheet
|
||||||
|
const ws1 = XLSX.utils.json_to_sheet(res.data);
|
||||||
|
XLSX.utils.book_append_sheet(wb, ws1, 'sheet1');
|
||||||
|
// 导出Excel文件
|
||||||
|
XLSX.writeFile(wb, '咨询列表.xlsx');
|
||||||
|
this.$message.success('导出成功')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped></style>
|
||||||
Loading…
x
Reference in New Issue
Block a user