Commit d5b6ddeb authored by chenqikuai's avatar chenqikuai

备案人

parent beefa8da
...@@ -5,17 +5,18 @@ import error from "@/assets/img/error.png"; ...@@ -5,17 +5,18 @@ import error from "@/assets/img/error.png";
/**审核状态(待提交:WAITING_SUBMIT 待审核:WAITING_CHECK 备案成功:RECORD_SUCCESS 不通过:NOT_PASSED ) */ /**审核状态(待提交:WAITING_SUBMIT 待审核:WAITING_CHECK 备案成功:RECORD_SUCCESS 不通过:NOT_PASSED ) */
export enum eStatusOfCopyright { export enum eStatusOfCopyright {
WAITING_SUBMIT, WAITING_SUBMIT = "WAITING_SUBMIT",
WAITING_CHECK, WAITING_CHECK = "WAITING_CHECK",
RECORD_SUCCESS, RECORD_SUCCESS = "RECORD_SUCCESS",
NOT_PASSED, NOT_PASSED = "NOT_PASSED",
ALL, ALL = "ALL",
} }
export enum eStatusOfFilerCertification { export enum eStatusOfFilerCertification {
WAITING, WAITING_CHECK = "WAITING_CHECK",
NOT_PASSED, NOT_PASSED = "NOT_PASSED",
SUCCESS, PASSED = "PASSED",
ALL = "ALL",
} }
export const WAITING_SUBMIT = { export const WAITING_SUBMIT = {
...@@ -44,13 +45,13 @@ export const NOT_PASSED = { ...@@ -44,13 +45,13 @@ export const NOT_PASSED = {
}; };
export const WAITING_FOR_Cert = { export const WAITING_FOR_Cert = {
value: eStatusOfFilerCertification.WAITING, value: eStatusOfFilerCertification.WAITING_CHECK,
label: "待审核", label: "待审核",
style: yellow, style: yellow,
icon: pending, icon: pending,
}; };
export const SUCCESS_FOR_Cert = { export const SUCCESS_FOR_Cert = {
value: eStatusOfFilerCertification.SUCCESS, value: eStatusOfFilerCertification.PASSED,
label: "实名成功", label: "实名成功",
style: green, style: green,
icon: check, icon: check,
......
...@@ -10,6 +10,14 @@ export function getAuth(id: number) { ...@@ -10,6 +10,14 @@ export function getAuth(id: number) {
}); });
} }
export function editAuth(params: Omit<iAuth, "create_time" | "update_time">) {
return $ajax({
type: "put",
url: "/api/authentication",
params,
});
}
export function postAuth( export function postAuth(
params: Omit< params: Omit<
iAuth, iAuth,
...@@ -40,19 +48,19 @@ export function deleteAuth(id: number) { ...@@ -40,19 +48,19 @@ export function deleteAuth(id: number) {
export function getAuths( export function getAuths(
authentication_name: string, authentication_name: string,
authentication_status: string, authentication_status: string[],
page: number, page: number,
page_size: number page_size: number
) { ) {
const params = { authentication_status, page, page_size } as any;
if (authentication_name.trim() !== "") {
params.authentication_name = authentication_name;
}
return $ajax({ return $ajax({
type: "get", type: "get",
url: "/api/authentications", url: "/api/authentications",
params: { params: params,
authentication_name,
authentication_status,
page,
page_size,
},
}); });
} }
......
...@@ -54,11 +54,18 @@ async function $ajax( ...@@ -54,11 +54,18 @@ async function $ajax(
const params = (param as GetParam).params || []; const params = (param as GetParam).params || [];
let num = length(params); let num = length(params);
Object.keys(params).forEach(function (key) { Object.keys(params).forEach(function (key) {
if (num === 1) { if (Array.isArray(params[key])) {
restfulUrl += `${key}=${params[key]}`; (params[key] || []).forEach((i: string) => {
} else { restfulUrl += `${key}=${i}&`;
restfulUrl += `${key}=${params[key]}&`; });
num--; num--;
} else {
if (num === 1) {
restfulUrl += `${key}=${params[key]}`;
} else {
restfulUrl += `${key}=${params[key]}&`;
num--;
}
} }
}); });
(result || {}).url = restfulUrl; (result || {}).url = restfulUrl;
......
...@@ -28,7 +28,7 @@ export interface iAuth { ...@@ -28,7 +28,7 @@ export interface iAuth {
authentication_business_license: iPostFile; authentication_business_license: iPostFile;
authentication_certificate_of_authorization_image: iPostFile; authentication_certificate_of_authorization_image: iPostFile;
authentication_held_front_id_card: iPostFile; authentication_held_front_id_card: iPostFile;
authentication_held_back_id_card: {}; authentication_held_back_id_card: iPostFile;
authentication_certificate_of_authorization_date: string; authentication_certificate_of_authorization_date: string;
contact_person: string; contact_person: string;
contact_email: string; contact_email: string;
......
...@@ -221,6 +221,7 @@ ...@@ -221,6 +221,7 @@
type="primary" type="primary"
size="large" size="large"
class="w-full" class="w-full"
:loading="loading"
@click="handleConfirm" @click="handleConfirm"
>确定提交</syButton >确定提交</syButton
> >
...@@ -237,7 +238,7 @@ import CustomizeFormItem from "@/components/Form/CustomizeFormItem.vue"; ...@@ -237,7 +238,7 @@ import CustomizeFormItem from "@/components/Form/CustomizeFormItem.vue";
import CollectIdCardImg from "@/components/Form/Collect/CollectIdCardImg.vue"; import CollectIdCardImg from "@/components/Form/Collect/CollectIdCardImg.vue";
import { globalState } from "@/store/state"; import { globalState } from "@/store/state";
import CollectImage from "./components/CollectImage.vue"; import CollectImage from "./components/CollectImage.vue";
import { postAuth } from "@/service/copyrightService"; import { editAuth, postAuth } from "@/service/copyrightService";
import CommonDialog from "@/components/CommonDialog/index.vue"; import CommonDialog from "@/components/CommonDialog/index.vue";
import syDialogInput from "@/components/CommonInput/index.vue"; import syDialogInput from "@/components/CommonInput/index.vue";
import syRadio from "@/components/Radio/index.vue"; import syRadio from "@/components/Radio/index.vue";
...@@ -249,18 +250,21 @@ function handle() { ...@@ -249,18 +250,21 @@ function handle() {
const props = defineProps<{ const props = defineProps<{
visible: boolean; visible: boolean;
}>(); }>();
const emit = defineEmits(["update:visible"]); const emit = defineEmits(["update:visible", "addSuccess"]);
const certFormRef = ref<InstanceType<typeof ElForm>>(); const certFormRef = ref<InstanceType<typeof ElForm>>();
const contactFormRef = ref<InstanceType<typeof ElForm>>(); const contactFormRef = ref<InstanceType<typeof ElForm>>();
const g = computed(() => globalState); const g = computed(() => globalState);
const loading = ref(false);
const mode = ref("add");
const id = ref(NaN);
const modelOfCert = ref({ const modelOfCert = ref({
name: "", name: "",
property: 1, property: 1,
idCard: "", idCard: "",
city: "", city: [] as string[],
idCardImg: null as any, idCardImg: null as any,
auth: true, auth: true,
authorizationValidityPeriod: "", authorizationValidityPeriod: "",
...@@ -322,11 +326,17 @@ const rulesOfContact = { ...@@ -322,11 +326,17 @@ const rulesOfContact = {
addr: [{ required: true, message: "请输入联系地址" }], addr: [{ required: true, message: "请输入联系地址" }],
}; };
defineExpose({
modelOfCert,
modelOfContact,
mode,
id,
});
const handleConfirm = () => { const handleConfirm = () => {
loading.value = true;
certFormRef.value?.validate((isValidOfCert) => { certFormRef.value?.validate((isValidOfCert) => {
contactFormRef.value?.validate(async (isValidOfContact, invalidFields) => { contactFormRef.value?.validate(async (isValidOfContact, invalidFields) => {
console.log(isValidOfCert, isValidOfContact, invalidFields);
if (isValidOfCert && isValidOfContact) { if (isValidOfCert && isValidOfContact) {
const { file: f1, ...front } = const { file: f1, ...front } =
(modelOfCert.value.idCardImg && modelOfCert.value.idCardImg.front) || (modelOfCert.value.idCardImg && modelOfCert.value.idCardImg.front) ||
...@@ -351,6 +361,7 @@ const handleConfirm = () => { ...@@ -351,6 +361,7 @@ const handleConfirm = () => {
powerOfAttorneyImage, powerOfAttorneyImage,
authentication_certificate_of_authorization_date: authentication_certificate_of_authorization_date:
modelOfCert.value.authorizationValidityPeriod, modelOfCert.value.authorizationValidityPeriod,
contact_person: modelOfContact.value.name, contact_person: modelOfContact.value.name,
contact_email: modelOfContact.value.email, contact_email: modelOfContact.value.email,
contact_mobile: modelOfContact.value.cellphoneNumber, contact_mobile: modelOfContact.value.cellphoneNumber,
...@@ -369,12 +380,23 @@ const handleConfirm = () => { ...@@ -369,12 +380,23 @@ const handleConfirm = () => {
params.authentication_held_front_id_card = front; params.authentication_held_front_id_card = front;
params.authentication_held_back_id_card = back; params.authentication_held_back_id_card = back;
} }
const ret = await postAuth(params); let ret: any;
if (mode.value === "add") {
ret = await postAuth(params);
} else {
ret = await editAuth({ ...params, id: id.value });
}
if (ret && ret.code === 200) { if (ret && ret.code === 200) {
emit("update:visible", false); emit("update:visible", false);
ElMessage.success("新建成功"); if (mode.value === "add") {
ElMessage.success("新建成功");
} else {
ElMessage.success("编辑成功");
}
emit("addSuccess");
} else { } else {
} }
loading.value = false;
} }
}); });
}); });
...@@ -386,6 +408,7 @@ watch( ...@@ -386,6 +408,7 @@ watch(
if (props.visible === false) { if (props.visible === false) {
certFormRef.value?.resetFields(); certFormRef.value?.resetFields();
contactFormRef.value?.resetFields(); contactFormRef.value?.resetFields();
mode.value = "add";
} }
} }
); );
......
<template> <template>
<div class="min-h-screen flow-root" style="background: #f9f9f9"> <div class="min-h-screen flow-root" style="background: #f9f9f9">
<syHeaderNavBar @back="() => $router.back()" @close="() => $router.back()" <syHeaderNavBar @back="() => $router.back()" @close="() => $router.back()"
>杭州库链科技有限公司 >{{ data?.authentication_name }}
</syHeaderNavBar> </syHeaderNavBar>
<ModuleContainer class="mx-auto" style="width: 858px; margin-top: 17px"> <ModuleContainer class="mx-auto" style="width: 858px; margin-top: 17px">
<div class="overflow-hidden"> <div class="overflow-hidden">
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
/> />
备案人 备案人
</div> </div>
<div class="filingPersonBox">杭州苦练科技公司</div> <div class="filingPersonBox">{{ data?.authentication_name }}</div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="overflow-hidden"> <div class="overflow-hidden">
...@@ -33,55 +33,122 @@ ...@@ -33,55 +33,122 @@
> >
<div class="w-1/2 content"> <div class="w-1/2 content">
姓名/名称: 姓名/名称:
<span style="color: var(--sy-black)">东郡</span> <span style="color: var(--sy-black)">{{
data?.authentication_name
}}</span>
</div> </div>
<div class="w-1/2 content"> <div class="w-1/2 content">
主体性质: 主体性质:
<span style="color: var(--sy-black)">自然人</span> <span style="color: var(--sy-black)">{{
data?.authentication_subject_nature === 1 ? "自然人" : "企业组织"
}}</span>
</div> </div>
<div <div
class="w-1/2 content" class="w-1/2 content"
v-if="typeofFilingPerson === 'naturePerson'" v-if="typeofFilingPerson === 'naturePerson'"
> >
身份证号码: 身份证号码:
<span style="color: var(--sy-black)">20938409238409234</span> <span style="color: var(--sy-black)">{{
data?.authentication_subject_nature_code
}}</span>
</div> </div>
<div <div
class="w-1/2 content" class="w-1/2 content"
v-if="typeofFilingPerson === 'businessOrganization'" v-if="typeofFilingPerson === 'businessOrganization'"
> >
统一社会信用代码/营业执照号码: 统一社会信用代码/营业执照号码:
<span style="color: var(--sy-black)">20938409238409234</span> <span style="color: var(--sy-black)">{{
data?.authentication_subject_nature_code
}}</span>
</div> </div>
<div class="w-1/2 content"> <div class="w-1/2 content">
所在城市: 所在城市:
<span style="color: var(--sy-black)">浙江省-杭州市-西湖区</span> <span style="color: var(--sy-black)"
>{{ data?.authentication_province }} -
{{ data?.authentication_city }} -
{{ data?.authentication_district }}</span
>
</div> </div>
<div <div
class="w-1/2 content" class="w-1/2 content flex items-center"
v-if="typeofFilingPerson === 'naturePerson'" v-if="typeofFilingPerson === 'naturePerson'"
> >
身份证正反面: 身份证正反面:
<span style="color: var(--sy-black)"> </span> <div style="color: var(--sy-black)" class="flex">
<img
:src="data?.authentication_held_front_id_card?.url"
alt=""
class="cursor-pointer"
style="height: 20px"
@click="showIdImg1 = true"
/>
<img
class="ml-2 cursor-pointer"
:src="data?.authentication_held_back_id_card?.url"
alt=""
style="height: 20px"
@click="showIdImg2 = true"
/>
<ImageDisplay
v-model:visible="showIdImg1"
:url="data?.authentication_held_front_id_card?.url || ''"
>
</ImageDisplay>
<ImageDisplay
v-model:visible="showIdImg2"
:url="data?.authentication_held_back_id_card?.url || ''"
>
</ImageDisplay>
</div>
</div> </div>
<div <div
class="w-1/2 content" class="w-1/2 content flex items-center"
v-if="typeofFilingPerson === 'businessOrganization'" v-if="typeofFilingPerson === 'businessOrganization'"
> >
营业执照或副本: 营业执照或副本:
<span style="color: var(--sy-black)"> </span> <span style="color: var(--sy-black)">
<img
style="height: 23px"
@click="showLicense = true"
:src="data?.authentication_business_license.url"
class="cursor-pointer"
alt=""
/>
</span>
<ImageDisplay
v-model:visible="showLicense"
:url="data?.authentication_business_license.url || ''"
/>
</div> </div>
<div class="w-1/2 content"> <div class="w-1/2 content">
备案属性: 备案属性:
<span style="color: var(--sy-black)">授权备案</span> <span style="color: var(--sy-black)">授权备案</span>
</div> </div>
<div class="w-1/2 content"> <div class="w-1/2 content flex items-center">
授权书图像: 授权书图像:
<span style="color: var(--sy-black)"></span> <span style="color: var(--sy-black)">
<img
style="height: 23px"
:src="
data?.authentication_certificate_of_authorization_image?.url
"
class="cursor-pointer"
@click="showAuthImg = true"
/>
</span>
<ImageDisplay
v-model:visible="showAuthImg"
:url="
data?.authentication_certificate_of_authorization_image?.url ||
''
"
/>
</div> </div>
<div class="w-1/2 content"> <div class="w-1/2 content">
授权有效期: 授权有效期:
<span style="color: var(--sy-black)">2020-10-19</span> <span style="color: var(--sy-black)">{{
data?.authentication_certificate_of_authorization_date
}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -105,38 +172,49 @@ ...@@ -105,38 +172,49 @@
<div class="w-1/2"> <div class="w-1/2">
<div class="content"> <div class="content">
联系人: 联系人:
<span style="color: var(--sy-black)">杭州库链科技有限公司</span> <span style="color: var(--sy-black)">{{
data?.contact_person
}}</span>
</div> </div>
<div class="content"> <div class="content">
手机: 手机:
<span style="color: var(--sy-black)">15019230123</span> <span style="color: var(--sy-black)">{{
data?.contact_mobile
}}</span>
</div> </div>
<div class="content"> <div class="content">
邮箱: 邮编:
<span style="color: var(--sy-black)">2223</span> <span style="color: var(--sy-black)">{{
data?.contact_post_code
}}</span>
</div> </div>
<div class="content"> <div class="content">
<div class="w-2/3"> <div class="w-2/3">
联系地址: 联系地址:
<span style="color: var(--sy-black)" <span style="color: var(--sy-black)">{{
>杭州市 data?.contact_address
西区胡西区胡西区胡西区胡西区胡西区胡西区胡西区胡西区胡西区胡西区胡西区胡</span }}</span>
>
</div> </div>
</div> </div>
</div> </div>
<div class="w-1/2"> <div class="w-1/2">
<div class="content"> <div class="content">
电子邮箱: 电子邮箱:
<span style="color: var(--sy-black)">cj@disanbo.com</span> <span style="color: var(--sy-black)">{{
data?.contact_email
}}</span>
</div> </div>
<div class="content"> <div class="content">
电话: 电话:
<span style="color: var(--sy-black)">400-1120-100</span> <span style="color: var(--sy-black)">{{
data?.contact_telephone
}}</span>
</div> </div>
<div class="content"> <div class="content">
传真: 传真:
<span style="color: var(--sy-black)">1209102</span> <span style="color: var(--sy-black)">{{
data?.contact_fax
}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -149,15 +227,35 @@ ...@@ -149,15 +227,35 @@
import { syHeaderNavBar, syButton } from "cqk-sy-ui"; import { syHeaderNavBar, syButton } from "cqk-sy-ui";
import ModuleContainer from "@/components/ModuleContainer/index.vue"; import ModuleContainer from "@/components/ModuleContainer/index.vue";
import ImageDisplay from "@/components/ImageDisplay/index.vue"; import ImageDisplay from "@/components/ImageDisplay/index.vue";
import { ref } from "vue"; import { onMounted, ref } from "vue";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import printJS from "print-js"; import printJS from "print-js";
import { useRoute } from "vue-router";
import { getAuth } from "@/service/copyrightService";
import { iAuth } from "@/types/copyright";
const route = useRoute();
const data = ref<iAuth>();
onMounted(async () => {
const res = await getAuth(Number(route.query.id));
if (res?.code === 200) {
data.value = res.data;
if (res.data.authentication_subject_nature === 2) {
typeofFilingPerson.value = "businessOrganization";
}
}
});
const props = defineProps<{}>(); const props = defineProps<{}>();
// typeofFilingPerson?: "naturePerson" | "businessOrganization"; // typeofFilingPerson?: "naturePerson" | "businessOrganization";
const typeofFilingPerson = ref("naturePerson"); const typeofFilingPerson = ref("naturePerson");
const showCert = ref(false); const showIdImg1 = ref(false);
const showIdImg2 = ref(false);
const showAuthImg = ref(false);
const showLicense = ref(false);
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
import { ElMessage } from "element-plus";
import { eStatusOfFilerCertification } from "@/components/ApproveStatus/status"; import { eStatusOfFilerCertification } from "@/components/ApproveStatus/status";
import { router } from "@/router";
import { deleteAuth } from "@/service/copyrightService";
export default class Service { export default class Service {
static instance: Service; static instance: Service;
...@@ -11,11 +14,12 @@ export default class Service { ...@@ -11,11 +14,12 @@ export default class Service {
} }
getOperateListOfFilterStatus() { getOperateListOfFilterStatus() {
// 待审核:WAITING_CHECK 通过:PASSED 不通过:NOT_PASSED
return [ return [
{ name: "待审核", value: "pending" }, { name: "待审核", value: eStatusOfFilerCertification.WAITING_CHECK },
{ name: "实名失败", value: "failed" }, { name: "通过", value: eStatusOfFilerCertification.PASSED },
{ name: "实名成功", value: "success" }, { name: "不通过", value: eStatusOfFilerCertification.NOT_PASSED },
{ name: "所有状态", value: "all" }, { name: "所有状态", value: eStatusOfFilerCertification.ALL },
]; ];
} }
...@@ -34,14 +38,36 @@ export default class Service { ...@@ -34,14 +38,36 @@ export default class Service {
}; };
if (status === eStatusOfFilerCertification.NOT_PASSED) { if (status === eStatusOfFilerCertification.NOT_PASSED) {
return [seeDetail, edit, del]; return [seeDetail, edit, del];
} else if (status === eStatusOfFilerCertification.SUCCESS) { } else if (status === eStatusOfFilerCertification.PASSED) {
return [seeDetail]; return [seeDetail];
} else if (status === eStatusOfFilerCertification.WAITING) { } else if (status === eStatusOfFilerCertification.WAITING_CHECK) {
return [seeDetail]; return [seeDetail];
} }
} }
handleClickOperateItemOfAction(operateValue: string, slotProps: any) { handleClickOperateItemOfAction(
console.log(operateValue, slotProps); operateValue: string,
slotProps: any,
emit: any
) {
if (operateValue === "seeDetail") {
router.push({
name: "filingPersonDetail",
query: {
id: slotProps.id,
},
});
} else if (operateValue === "edit") {
emit("edit", {
id: slotProps.id,
});
} else if (operateValue === "del") {
deleteAuth(slotProps.id).then((ret) => {
if (ret) {
ElMessage.success("删除成功");
emit("refresh");
}
});
}
} }
} }
...@@ -10,11 +10,10 @@ ...@@ -10,11 +10,10 @@
> >
<template #currentStatusCell="slotProps"> <template #currentStatusCell="slotProps">
<div class="flex items-center"> <div class="flex items-center">
<ApproveStatus :type="2" mode="filingPerson"></ApproveStatus> <ApproveStatus
<!-- <HoverShowReason :type="slotProps.authentication_status"
v-if="slotProps.status === eStatusOfFilerCertification.NOT_PASSED" mode="filingPerson"
:rowData="slotProps" ></ApproveStatus>
></HoverShowReason> -->
</div> </div>
</template> </template>
<template #currentStatusHeader> <template #currentStatusHeader>
...@@ -33,6 +32,33 @@ ...@@ -33,6 +32,33 @@
</syMoreOperate> </syMoreOperate>
</div> </div>
</template> </template>
<template #additional="slotProps">
<div class="flex items-center">
{{
slotProps.authentication_subject_nature === 2
? "营业执照"
: "居民身份证"
}}
<img
src="@/assets/img/link.png"
style="width: 14px"
class="ml-2.5 cursor-pointer"
/>
</div>
</template>
<template #auth="slotProps"
><div class="flex items-center">
{{
slotProps.authentication_subject_nature === 2
? "授权备案"
: "本人备案"
}}
<img
src="@/assets/img/link.png"
style="width: 14px"
class="ml-2.5 cursor-pointer"
/></div
></template>
<template #operate="slotProps"> <template #operate="slotProps">
<syMoreOperate <syMoreOperate
:teleport="true" :teleport="true"
...@@ -61,7 +87,6 @@ import { ...@@ -61,7 +87,6 @@ import {
eStatusOfFilerCertification, eStatusOfFilerCertification,
} from "@/components/ApproveStatus/status"; } from "@/components/ApproveStatus/status";
import ApproveStatus from "@/components/ApproveStatus/index.vue"; import ApproveStatus from "@/components/ApproveStatus/index.vue";
// import HoverShowReason from "./HoverShowReason.vue";
import { useTableScrollListener } from "@/components/Table/hooks"; import { useTableScrollListener } from "@/components/Table/hooks";
import Icon from "@/components/Icon/index.vue"; import Icon from "@/components/Icon/index.vue";
...@@ -81,11 +106,22 @@ const emit = defineEmits<{ ...@@ -81,11 +106,22 @@ const emit = defineEmits<{
raw: any; raw: any;
} }
): void; ): void;
(e: "clickStatusFilter", payload: eStatusOfCopyright): void; (e: "clickStatusFilter", payload: eStatusOfFilerCertification): void;
(
e: "edit",
paylaod: {
id: number;
}
): any;
(e: "refresh"): any;
}>(); }>();
const tableRef = ref<InstanceType<typeof Table>>(); const tableRef = ref<InstanceType<typeof Table>>();
defineExpose({
tableRef,
});
useTableScrollListener(tableRef, () => { useTableScrollListener(tableRef, () => {
emit("scrollToEnd"); emit("scrollToEnd");
}); });
...@@ -93,12 +129,20 @@ useTableScrollListener(tableRef, () => { ...@@ -93,12 +129,20 @@ useTableScrollListener(tableRef, () => {
const operateListOfFilterStatus = const operateListOfFilterStatus =
Service.getInstance().getOperateListOfFilterStatus(); Service.getInstance().getOperateListOfFilterStatus();
const getOperateList = (slotProps: any) => { const getOperateList = (slotProps: any) => {
return Service.getInstance().getOperateListOfAction(slotProps.status); return Service.getInstance().getOperateListOfAction(
slotProps.authentication_status
);
}; };
const handleClickItem = (operateValue: string, slotProps: any) => { const handleClickItem = (operateValue: string, slotProps: any) => {
Service.getInstance().handleClickOperateItemOfAction(operateValue, slotProps); Service.getInstance().handleClickOperateItemOfAction(
operateValue,
slotProps,
emit
);
}; };
const handleClickCurrentStatusTableHeader = (v: eStatusOfCopyright) => { const handleClickCurrentStatusTableHeader = (
v: eStatusOfFilerCertification
) => {
emit("clickStatusFilter", v); emit("clickStatusFilter", v);
}; };
</script> </script>
......
...@@ -2,32 +2,33 @@ import { iTableColumn } from "@/components/Table/types"; ...@@ -2,32 +2,33 @@ import { iTableColumn } from "@/components/Table/types";
export const tableColumns = [ export const tableColumns = [
{ {
label: "备案人", label: "备案人",
prop: "name", prop: "authentication_name",
minWidth: 300, // minWidth: 300,
}, },
{ {
label: "证件号码", label: "证件号码",
prop: "address", prop: "authentication_subject_nature_code",
minWidth: 280, // minWidth: 280,
}, },
{ {
label: "证件附件", label: "证件附件",
minWidth: 200, slotName: "additional",
// minWidth: 200,
}, },
{ {
label: "授权", label: "授权",
prop: "date", slotName: "auth",
minWidth: 280, // minWidth: 280,
}, },
{ {
label: "当前状态", label: "当前状态",
slotName: "currentStatusCell", slotName: "currentStatusCell",
headerSlotName: "currentStatusHeader", headerSlotName: "currentStatusHeader",
minWidth: 200, // minWidth: 200,
}, },
{ {
label: "操作", label: "操作",
slotName: "operate", slotName: "operate",
minWidth: 100, // minWidth: 100,
}, },
] as iTableColumn[]; ] as iTableColumn[];
...@@ -30,10 +30,15 @@ ...@@ -30,10 +30,15 @@
</div> </div>
<AddFilingPerson <AddFilingPerson
v-model:visible="addFilingPersonDailogVisible" v-model:visible="addFilingPersonDailogVisible"
@add-success="handleRefetch"
ref="AddFilingPersonRef"
></AddFilingPerson> ></AddFilingPerson>
<div class="flex-grow overflow-hidden mt-4"> <div class="flex-grow overflow-hidden mt-4">
<FilingPersonTable <FilingPersonTable
ref="FilingPersonTableRef"
@click-status-filter="handleClickStatusFilter" @click-status-filter="handleClickStatusFilter"
@edit="handleClickEdit"
@refresh="handleRefetch"
:data="tableData" :data="tableData"
:loading="loading" :loading="loading"
></FilingPersonTable> ></FilingPersonTable>
...@@ -48,16 +53,20 @@ import Search from "@/components/Search/index.vue"; ...@@ -48,16 +53,20 @@ import Search from "@/components/Search/index.vue";
import Avatar from "@/components/Avatar/index.vue"; import Avatar from "@/components/Avatar/index.vue";
import Title from "@/components/Title.vue"; import Title from "@/components/Title.vue";
import { syButton } from "cqk-sy-ui"; import { syButton } from "cqk-sy-ui";
import { eStatusOfCopyright } from "@/components/ApproveStatus/status"; import { eStatusOfFilerCertification } from "@/components/ApproveStatus/status";
import { useTableData } from "@/components/Table/hooks"; import { useTableData } from "@/components/Table/hooks";
import { debounce } from "lodash"; import { debounce } from "lodash";
import FilingPersonTable from "./components/FilingPersonTable/index.vue"; import FilingPersonTable from "./components/FilingPersonTable/index.vue";
import AddFilingPerson from "@/views/AddFilingPerson/index.vue"; import AddFilingPerson from "@/views/AddFilingPerson/index.vue";
import { getAuths } from "@/service/copyrightService";
import { iAuth } from "@/types/copyright";
const searchValue = ref(""); const searchValue = ref("");
const addFilingPersonDailogVisible = ref(false); const addFilingPersonDailogVisible = ref(false);
const currentStatus = ref(eStatusOfCopyright.ALL); // 进行中的表格的状态 const currentStatus = ref(eStatusOfFilerCertification.ALL); // 进行中的表格的状态
const FilingPersonTableRef = ref<InstanceType<typeof FilingPersonTable>>();
const AddFilingPersonRef = ref<InstanceType<typeof AddFilingPerson>>();
const fetchTableData = ({ const fetchTableData = ({
page, page,
...@@ -66,34 +75,27 @@ const fetchTableData = ({ ...@@ -66,34 +75,27 @@ const fetchTableData = ({
}: { }: {
page: number; page: number;
page_size: number; page_size: number;
currentStatus: eStatusOfCopyright; currentStatus: eStatusOfFilerCertification;
}) => { }) => {
/* 请求所需要的参数 */ const list =
page; currentStatus === eStatusOfFilerCertification.ALL
page_size; ? [
// 当前状态 eStatusOfFilerCertification.NOT_PASSED,
currentStatus; eStatusOfFilerCertification.PASSED,
return new Promise<any>((r) => { eStatusOfFilerCertification.WAITING_CHECK,
setTimeout(() => { ]
r({ : [currentStatus];
total: 100, return getAuths(searchValue.value, list, page, page_size).then((ret) => {
data: "1" return {
.repeat(page_size) data: (ret?.data.results as iAuth[]) || [],
.split("") total: ret?.data.total || 0,
.map((i, index) => ({ };
name: index + (page - 1) * page_size + currentStatus,
status:
currentStatus === eStatusOfCopyright.ALL
? eStatusOfCopyright.RECORD_SUCCESS
: currentStatus,
address: searchValue.value,
})),
});
}, 1000);
}); });
}; };
const generateFetchTableData = (getCurrentStatus: () => eStatusOfCopyright) => { const generateFetchTableData = (
getCurrentStatus: () => eStatusOfFilerCertification
) => {
return ({ page, page_size }: { page: number; page_size: number }) => { return ({ page, page_size }: { page: number; page_size: number }) => {
return fetchTableData({ return fetchTableData({
page, page,
...@@ -112,15 +114,61 @@ const { ...@@ -112,15 +114,61 @@ const {
fetchData: generateFetchTableData(() => currentStatus.value), fetchData: generateFetchTableData(() => currentStatus.value),
}); });
const refetchDebounce = debounce(() => { function handleRefetch() {
FilingPersonTableRef.value?.tableRef?.scrollTo(0, 0);
refetch(); refetch();
}
const refetchDebounce = debounce(() => {
handleRefetch();
}, 500); }, 500);
const handleClickStatusFilter = (status: eStatusOfCopyright) => { const handleClickStatusFilter = (status: eStatusOfFilerCertification) => {
currentStatus.value = status; currentStatus.value = status;
refetch(); refetch();
}; };
const handleClickEdit = ({ id }: { id: number }) => {
addFilingPersonDailogVisible.value = true;
const raw = tableData.value.find((i) => i.id === id);
AddFilingPersonRef.value!.mode = "edit";
AddFilingPersonRef.value!.modelOfCert.name = raw!.authentication_name;
AddFilingPersonRef.value!.modelOfCert.property =
raw!.authentication_subject_nature;
AddFilingPersonRef.value!.modelOfCert.idCard =
raw!.authentication_subject_nature_code;
AddFilingPersonRef.value!.modelOfCert.unifiedSocialCreditCode =
raw!.authentication_subject_nature_code;
AddFilingPersonRef.value!.modelOfCert.powerOfAttorneyImage =
raw!.authentication_certificate_of_authorization_image;
AddFilingPersonRef.value!.modelOfCert.authorizationValidityPeriod =
raw!.authentication_certificate_of_authorization_date;
AddFilingPersonRef.value!.modelOfContact.name = raw!.contact_person;
AddFilingPersonRef.value!.modelOfContact.email = raw!.contact_email;
AddFilingPersonRef.value!.modelOfContact.cellphoneNumber =
raw!.contact_mobile;
AddFilingPersonRef.value!.modelOfContact.phoneNumber = raw!.contact_telephone;
AddFilingPersonRef.value!.modelOfContact.postCode = raw!.contact_post_code;
AddFilingPersonRef.value!.modelOfContact.fax = raw!.contact_fax;
AddFilingPersonRef.value!.modelOfContact.addr = raw!.contact_address;
AddFilingPersonRef.value!.modelOfCert.city = [
raw!.authentication_province,
raw!.authentication_city,
raw!.authentication_district,
];
AddFilingPersonRef.value!.modelOfCert.businessLicenseOrCopy =
raw!.authentication_business_license;
AddFilingPersonRef.value!.modelOfCert.idCardImg = {
front: raw!.authentication_held_front_id_card,
back: raw!.authentication_held_back_id_card,
};
AddFilingPersonRef.value!.id = id;
};
watch(searchValue, () => { watch(searchValue, () => {
refetchDebounce(); refetchDebounce();
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment