|
|
|
|
@ -1088,29 +1088,31 @@ export default function formBuilder(
|
|
|
|
|
value["custom_field_id"] === info.id
|
|
|
|
|
) {
|
|
|
|
|
isJointly = !!log.is_jointly_sign;
|
|
|
|
|
if (log.status) {
|
|
|
|
|
if (log.status > 0 && log.user) {
|
|
|
|
|
jointlySignContent.push(
|
|
|
|
|
h("div", [
|
|
|
|
|
h("span", value.value),
|
|
|
|
|
h("br"),
|
|
|
|
|
info.is_sign
|
|
|
|
|
? log.user.sign_file && log.user.sign_file.url
|
|
|
|
|
? log.user?.sign_file?.url
|
|
|
|
|
? h("el-image", {
|
|
|
|
|
style: {
|
|
|
|
|
"max-height": "80px",
|
|
|
|
|
"max-width": "120px",
|
|
|
|
|
display: "block",
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
fit: "contain",
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
alt: log.user?.name || "",
|
|
|
|
|
"preview-src-list": [log.user.sign_file.url],
|
|
|
|
|
lazy: false,
|
|
|
|
|
},
|
|
|
|
|
attrs: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
: h("span", log.user?.name)
|
|
|
|
|
: h("span", log.user?.name || "")
|
|
|
|
|
: "",
|
|
|
|
|
info.is_sign ? h("br") : "",
|
|
|
|
|
h(
|
|
|
|
|
@ -1176,43 +1178,108 @@ export default function formBuilder(
|
|
|
|
|
}
|
|
|
|
|
})(),
|
|
|
|
|
(() => {
|
|
|
|
|
if (info.is_sign) {
|
|
|
|
|
let log = this.logs.find(
|
|
|
|
|
(log) =>
|
|
|
|
|
log.status>0 && log.node?.fields?.findIndex(
|
|
|
|
|
(field) =>
|
|
|
|
|
field?.field_id === info.id &&
|
|
|
|
|
field.type === "write"
|
|
|
|
|
) !== -1 && target[info.name]
|
|
|
|
|
);
|
|
|
|
|
if (log && log.status && log.user) {
|
|
|
|
|
return h("div", [
|
|
|
|
|
log.user.sign_file && log.user.sign_file.url
|
|
|
|
|
? h("el-image", {
|
|
|
|
|
style: {
|
|
|
|
|
"max-height": "80px",
|
|
|
|
|
"max-width": "120px",
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
fit: "contain",
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
},
|
|
|
|
|
attrs: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
: h("span", log.user?.name),
|
|
|
|
|
// 检查 is_sign 是否为真值(支持 1, true, "1" 等)
|
|
|
|
|
if (info.is_sign && (info.is_sign === 1 || info.is_sign === true || info.is_sign === "1")) {
|
|
|
|
|
let log = null;
|
|
|
|
|
|
|
|
|
|
// 方法1: 从 jointlySignLog 中查找(检查所有字段)
|
|
|
|
|
if (this.jointlySignLog && this.jointlySignLog.length > 0) {
|
|
|
|
|
log = this.jointlySignLog.find((log) => {
|
|
|
|
|
if (log.status > 0 && log.user && log.user.sign_file && log.user.sign_file.url) {
|
|
|
|
|
try {
|
|
|
|
|
const data = JSON.parse(log.data);
|
|
|
|
|
// 检查 data 中是否有匹配当前字段的条目
|
|
|
|
|
return Object.values(data).some(
|
|
|
|
|
(value) =>
|
|
|
|
|
value &&
|
|
|
|
|
typeof value === 'object' &&
|
|
|
|
|
value.custom_field_id === info.id
|
|
|
|
|
);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 方法2: 如果没找到,从 this.logs 中查找(放宽条件,不要求 target[info.name] 有值)
|
|
|
|
|
if (!log && this.logs && this.logs.length > 0) {
|
|
|
|
|
log = this.logs.find(
|
|
|
|
|
(log) =>
|
|
|
|
|
log.status > 0 &&
|
|
|
|
|
log.user &&
|
|
|
|
|
log.user.sign_file &&
|
|
|
|
|
log.user.sign_file.url &&
|
|
|
|
|
log.node?.fields?.findIndex(
|
|
|
|
|
(field) =>
|
|
|
|
|
field?.field_id === info.id &&
|
|
|
|
|
field.type === "write"
|
|
|
|
|
) !== -1
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 方法3: 如果还是没找到,尝试从 this.logs 中查找所有 status>0 且有签名的 log
|
|
|
|
|
if (!log && this.logs && this.logs.length > 0) {
|
|
|
|
|
log = this.logs.find(
|
|
|
|
|
(log) =>
|
|
|
|
|
log.status > 0 &&
|
|
|
|
|
log.user &&
|
|
|
|
|
log.user.sign_file &&
|
|
|
|
|
log.user.sign_file.url
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (log && log.status > 0 && log.user && log.user.sign_file && log.user.sign_file.url) {
|
|
|
|
|
return h("div", {
|
|
|
|
|
style: {
|
|
|
|
|
"margin-top": "8px",
|
|
|
|
|
}
|
|
|
|
|
}, [
|
|
|
|
|
h("el-image", {
|
|
|
|
|
style: {
|
|
|
|
|
"max-height": "80px",
|
|
|
|
|
"max-width": "120px",
|
|
|
|
|
display: "block",
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
fit: "contain",
|
|
|
|
|
alt: log.user?.name || "",
|
|
|
|
|
"preview-src-list": [log.user.sign_file.url],
|
|
|
|
|
lazy: false,
|
|
|
|
|
},
|
|
|
|
|
attrs: {
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
h(
|
|
|
|
|
"div",
|
|
|
|
|
this.$moment(log.updated_at).format(
|
|
|
|
|
"YYYY年MM月DD日"
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
style: {
|
|
|
|
|
"margin-top": "4px",
|
|
|
|
|
"font-size": "12px",
|
|
|
|
|
color: "#909399",
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
log.user?.name || ""
|
|
|
|
|
),
|
|
|
|
|
h(
|
|
|
|
|
"div",
|
|
|
|
|
{
|
|
|
|
|
style: {
|
|
|
|
|
"font-size": "12px",
|
|
|
|
|
color: "#909399",
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
log.updated_at
|
|
|
|
|
? this.$moment(log.updated_at).format("YYYY年MM月DD日")
|
|
|
|
|
: ""
|
|
|
|
|
),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
})(),
|
|
|
|
|
]
|
|
|
|
|
);
|
|
|
|
|
@ -2006,29 +2073,31 @@ export default function formBuilder(
|
|
|
|
|
value["custom_field_id"] === info.id
|
|
|
|
|
) {
|
|
|
|
|
isJointly = !!log.is_jointly_sign;
|
|
|
|
|
if (log.status) {
|
|
|
|
|
if (log.status > 0 && log.user) {
|
|
|
|
|
jointlySignContent.push(
|
|
|
|
|
h("div", [
|
|
|
|
|
h("span", value.value),
|
|
|
|
|
h("br"),
|
|
|
|
|
info.is_sign
|
|
|
|
|
? log.user.sign_file && log.user.sign_file.url
|
|
|
|
|
? log.user?.sign_file?.url
|
|
|
|
|
? h("el-image", {
|
|
|
|
|
style: {
|
|
|
|
|
"max-height": "40px",
|
|
|
|
|
"max-width": "60px",
|
|
|
|
|
display: "block",
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
fit: "contain",
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
alt: log.user?.name || "",
|
|
|
|
|
"preview-src-list": [log.user.sign_file.url],
|
|
|
|
|
lazy: false,
|
|
|
|
|
},
|
|
|
|
|
attrs: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
: h("span", log.user?.name)
|
|
|
|
|
: h("span", log.user?.name || "")
|
|
|
|
|
: "",
|
|
|
|
|
info.is_sign ? h("br") : "",
|
|
|
|
|
h(
|
|
|
|
|
@ -2085,43 +2154,108 @@ export default function formBuilder(
|
|
|
|
|
}
|
|
|
|
|
})(),
|
|
|
|
|
(() => {
|
|
|
|
|
if (info.is_sign) {
|
|
|
|
|
let log = this.logs.find(
|
|
|
|
|
(log) =>
|
|
|
|
|
log.status>0 && log.node?.fields?.findIndex(
|
|
|
|
|
(field) =>
|
|
|
|
|
field?.field_id === info.id &&
|
|
|
|
|
field.type === "write"
|
|
|
|
|
) !== -1 && target[info.name]
|
|
|
|
|
);
|
|
|
|
|
if (log && log.status && log.user) {
|
|
|
|
|
return h("div", [
|
|
|
|
|
log.user.sign_file && log.user.sign_file.url
|
|
|
|
|
? h("el-image", {
|
|
|
|
|
style: {
|
|
|
|
|
"max-height": "40px",
|
|
|
|
|
"max-width": "60px",
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
fit: "contain",
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
},
|
|
|
|
|
attrs: {
|
|
|
|
|
src: log.user?.sign_file?.url,
|
|
|
|
|
alt: log.user?.name,
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
: h("span", log.user?.name),
|
|
|
|
|
// 检查 is_sign 是否为真值(支持 1, true, "1" 等)
|
|
|
|
|
if (info.is_sign && (info.is_sign === 1 || info.is_sign === true || info.is_sign === "1")) {
|
|
|
|
|
let log = null;
|
|
|
|
|
|
|
|
|
|
// 方法1: 从 jointlySignLog 中查找(检查所有字段)
|
|
|
|
|
if (this.jointlySignLog && this.jointlySignLog.length > 0) {
|
|
|
|
|
log = this.jointlySignLog.find((log) => {
|
|
|
|
|
if (log.status > 0 && log.user && log.user.sign_file && log.user.sign_file.url) {
|
|
|
|
|
try {
|
|
|
|
|
const data = JSON.parse(log.data);
|
|
|
|
|
// 检查 data 中是否有匹配当前字段的条目
|
|
|
|
|
return Object.values(data).some(
|
|
|
|
|
(value) =>
|
|
|
|
|
value &&
|
|
|
|
|
typeof value === 'object' &&
|
|
|
|
|
value.custom_field_id === info.id
|
|
|
|
|
);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 方法2: 如果没找到,从 this.logs 中查找(放宽条件,不要求 target[info.name] 有值)
|
|
|
|
|
if (!log && this.logs && this.logs.length > 0) {
|
|
|
|
|
log = this.logs.find(
|
|
|
|
|
(log) =>
|
|
|
|
|
log.status > 0 &&
|
|
|
|
|
log.user &&
|
|
|
|
|
log.user.sign_file &&
|
|
|
|
|
log.user.sign_file.url &&
|
|
|
|
|
log.node?.fields?.findIndex(
|
|
|
|
|
(field) =>
|
|
|
|
|
field?.field_id === info.id &&
|
|
|
|
|
field.type === "write"
|
|
|
|
|
) !== -1
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 方法3: 如果还是没找到,尝试从 this.logs 中查找所有 status>0 且有签名的 log
|
|
|
|
|
if (!log && this.logs && this.logs.length > 0) {
|
|
|
|
|
log = this.logs.find(
|
|
|
|
|
(log) =>
|
|
|
|
|
log.status > 0 &&
|
|
|
|
|
log.user &&
|
|
|
|
|
log.user.sign_file &&
|
|
|
|
|
log.user.sign_file.url
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (log && log.status > 0 && log.user && log.user.sign_file && log.user.sign_file.url) {
|
|
|
|
|
return h("div", {
|
|
|
|
|
style: {
|
|
|
|
|
"margin-top": "8px",
|
|
|
|
|
}
|
|
|
|
|
}, [
|
|
|
|
|
h("el-image", {
|
|
|
|
|
style: {
|
|
|
|
|
"max-height": "40px",
|
|
|
|
|
"max-width": "60px",
|
|
|
|
|
display: "block",
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
fit: "contain",
|
|
|
|
|
alt: log.user?.name || "",
|
|
|
|
|
"preview-src-list": [log.user.sign_file.url],
|
|
|
|
|
lazy: false,
|
|
|
|
|
},
|
|
|
|
|
attrs: {
|
|
|
|
|
src: log.user.sign_file.url,
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
h(
|
|
|
|
|
"div",
|
|
|
|
|
this.$moment(log.updated_at).format(
|
|
|
|
|
"YYYY年MM月DD日"
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
style: {
|
|
|
|
|
"margin-top": "4px",
|
|
|
|
|
"font-size": "12px",
|
|
|
|
|
color: "#909399",
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
log.user?.name || ""
|
|
|
|
|
),
|
|
|
|
|
h(
|
|
|
|
|
"div",
|
|
|
|
|
{
|
|
|
|
|
style: {
|
|
|
|
|
"font-size": "12px",
|
|
|
|
|
color: "#909399",
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
log.updated_at
|
|
|
|
|
? this.$moment(log.updated_at).format("YYYY年MM月DD日")
|
|
|
|
|
: ""
|
|
|
|
|
),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
})(),
|
|
|
|
|
]
|
|
|
|
|
);
|
|
|
|
|
|