v1.0.48: preliminary_data重构按三层原则 - 核心+重要字段正式化(business_role/country/address/work_location/id_number/platform/account_id/profile_url新增列,身份证/社媒/主页从extra_info提为正式列)+删除extra_info(品类/需求类别等非必要不再存放)+表单/转换/列表全部适配(product品类默认未分类)

This commit is contained in:
nanguaboss
2026-08-10 00:53:09 +08:00
parent 6cf2aabc91
commit 319fbbe34c
7 changed files with 150 additions and 118 deletions
+32 -26
View File
@@ -209,8 +209,10 @@ $(function () {
' <div class="form-item"><label>联系邮箱</label><input type="text" name="contact_email" placeholder="如:a@b.com"></div>' +
' <div class="form-item" id="ha-f-industry"><label>行业</label><input type="text" name="industry" placeholder="转软碎片必填,如:工业机器人"></div>' +
' <div class="form-item" id="ha-f-regnum"><label>注册号</label><input type="text" name="registration_number" placeholder="转软碎片必填"></div>' +
' <div class="form-item" id="ha-f-category"><label>产品品类</label><input type="text" name="target_product_category" placeholder="转软碎片必填,如:工业机器人"></div>' +
' <div class="form-item" id="ha-f-needcat"><label>需求类别</label><input type="text" name="need_category" placeholder="转软碎片必填,如:设备采购"></div>' +
' <div class="form-item" id="ha-f-bizrole"><label>业务类型</label><input type="text" name="business_role" placeholder="如:manufacturer/integrator"></div>' +
' <div class="form-item" id="ha-f-country"><label>国家/地区</label><input type="text" name="country" placeholder="如:中国"></div>' +
' <div class="form-item" id="ha-f-address"><label>地址</label><input type="text" name="address" placeholder="注册地址"></div>' +
' <div class="form-item" id="ha-f-workloc"><label>工作所在地</label><input type="text" name="work_location" placeholder="如:广东深圳"></div>' +
' <div class="form-item" id="ha-f-idnumber"><label>身份证号码</label><input type="text" name="id_number" placeholder="15 或 18 位"></div>' +
' <div class="form-item"><label>来源渠道</label><select name="source_channel" id="ha-source"><option value="">-</option></select></div>' +
' <div class="form-item" id="ha-f-platform"><label>社媒平台</label><select name="platform" id="ha-platform"><option value="">-</option>' +
@@ -247,12 +249,15 @@ $(function () {
// 姓名/联系人:人员与混合显示「姓名」,其它类型显示「联系人」
$('#ha-f-person_name').toggle(true);
$('#ha-f-person_name label').text((t === 'person' || t === 'mixed') ? '姓名' : '联系人');
// 企业专属:行业 / 注册号
$('#ha-f-industry').toggle(t === 'company');
$('#ha-f-regnum').toggle(t === 'company');
// 产品:品类;需求:需求类别
$('#ha-f-category').toggle(t === 'product');
$('#ha-f-needcat').toggle(t === 'need');
// 企业专属:行业 / 注册号 / 业务类型 / 国家 / 地址
var isCompany = (t === 'company');
$('#ha-f-industry').toggle(isCompany);
$('#ha-f-regnum').toggle(isCompany);
$('#ha-f-bizrole').toggle(isCompany);
$('#ha-f-country').toggle(isCompany);
$('#ha-f-address').toggle(isCompany);
// 人员专属:工作所在地
$('#ha-f-workloc').toggle(t === 'person');
// 身份证 / 社媒平台 / 账号 / 主页:企业与人员显示
var showIdSocial = (t === 'company' || t === 'person');
$('#ha-f-idnumber').toggle(showIdSocial);
@@ -316,8 +321,6 @@ $(function () {
/* ================= 硬碎片:补全录入(转换) ================= */
window.convertHard = function (id) {
httpGet('fragment/hard_detail.php', { id: id }).then(function (d) {
var ex = d.extra_info || {};
if (typeof ex === 'string') { try { ex = JSON.parse(ex); } catch (e) { ex = {}; } }
var typeSel = '<select id="cv-type">' +
'<option value="company"' + (d.source_type === 'company' ? ' selected' : '') + '>企业</option>' +
'<option value="person"' + (d.source_type === 'person' ? ' selected' : '') + '>人员</option>' +
@@ -334,15 +337,17 @@ $(function () {
' <div class="form-item"><label>联系邮箱</label><input type="text" name="contact_email" value="' + escHtml(d.contact_email || '') + '"></div>' +
' <div class="form-item" id="cv-f-industry"><label>行业</label><input type="text" name="industry" value="' + escHtml(d.industry || '') + '" placeholder="转软碎片必填"></div>' +
' <div class="form-item" id="cv-f-regnum"><label>注册号</label><input type="text" name="registration_number" value="' + escHtml(d.registration_number || '') + '" placeholder="转软碎片必填"></div>' +
' <div class="form-item" id="cv-f-category"><label>产品品类</label><input type="text" name="target_product_category" value="' + escHtml(ex.category || '') + '" placeholder="转软碎片必填"></div>' +
' <div class="form-item" id="cv-f-needcat"><label>需求类别</label><input type="text" name="need_category" value="' + escHtml(ex.need_category || '') + '" placeholder="转软碎片必填"></div>' +
' <div class="form-item" id="cv-f-idnumber"><label>身份证号码</label><input type="text" name="id_number" value="' + escHtml(ex.id_number || '') + '" placeholder="15 或 18 位"></div>' +
' <div class="form-item" id="cv-f-bizrole"><label>业务类型</label><input type="text" name="business_role" value="' + escHtml(d.business_role || '') + '"></div>' +
' <div class="form-item" id="cv-f-country"><label>国家/地区</label><input type="text" name="country" value="' + escHtml(d.country || '') + '"></div>' +
' <div class="form-item" id="cv-f-address"><label>地址</label><input type="text" name="address" value="' + escHtml(d.address || '') + '"></div>' +
' <div class="form-item" id="cv-f-workloc"><label>工作所在地</label><input type="text" name="work_location" value="' + escHtml(d.work_location || '') + '"></div>' +
' <div class="form-item" id="cv-f-idnumber"><label>身份证号码</label><input type="text" name="id_number" value="' + escHtml(d.id_number || '') + '" placeholder="15 或 18 位"></div>' +
' <div class="form-item" id="cv-f-platform"><label>社媒平台</label><select name="platform" id="cv-platform"><option value="">-</option>' +
' <option value="wechat">微信</option><option value="weibo">微博</option><option value="douyin">抖音</option>' +
' <option value="bilibili">B站</option><option value="linkedin">领英</option><option value="xiaohongshu">小红书</option>' +
' <option value="other">其他</option></select></div>' +
' <div class="form-item" id="cv-f-account"><label>账号ID</label><input type="text" name="account_id" value="' + escHtml(ex.account_id || '') + '" placeholder="社媒账号ID"></div>' +
' <div class="form-item" id="cv-f-profile"><label>主页链接</label><input type="text" name="profile_url" value="' + escHtml(ex.profile_url || '') + '" placeholder="https://..."></div>' +
' <div class="form-item" id="cv-f-account"><label>账号ID</label><input type="text" name="account_id" value="' + escHtml(d.account_id || '') + '" placeholder="社媒账号ID"></div>' +
' <div class="form-item" id="cv-f-profile"><label>主页链接</label><input type="text" name="profile_url" value="' + escHtml(d.profile_url || '') + '" placeholder="https://..."></div>' +
'</div>' +
'<div style="font-size:12px;color:#8a94a6;margin-top:4px;">补全仅保存到硬数据,点击「转软碎片」后才转换为主表数据。</div>' +
'<div class="dialog-footer"><button type="button" class="btn" id="cv-cancel">取消</button>' +
@@ -355,17 +360,20 @@ $(function () {
content: content,
btn: false
});
$('#cv-platform').val(ex.platform || '');
$('#cv-platform').val(d.platform || '');
function syncFields() {
var t = $('#cv-type').val();
$('#cv-f-company_name').toggle(t !== 'person');
$('#cv-f-person_name').toggle(true);
$('#cv-f-person_name label').text((t === 'person' || t === 'mixed') ? '姓名' : '联系人');
$('#cv-f-industry').toggle(t === 'company');
$('#cv-f-regnum').toggle(t === 'company');
$('#cv-f-category').toggle(t === 'product');
$('#cv-f-needcat').toggle(t === 'need');
var isCompany = (t === 'company');
$('#cv-f-industry').toggle(isCompany);
$('#cv-f-regnum').toggle(isCompany);
$('#cv-f-bizrole').toggle(isCompany);
$('#cv-f-country').toggle(isCompany);
$('#cv-f-address').toggle(isCompany);
$('#cv-f-workloc').toggle(t === 'person');
var showIdSocial = (t === 'company' || t === 'person');
$('#cv-f-idnumber').toggle(showIdSocial);
$('#cv-f-platform').toggle(showIdSocial);
@@ -421,8 +429,6 @@ $(function () {
Dialog.error('该碎片缺少可转换信息,请使用「继续补全」');
return;
}
var ex = d.extra_info || {};
if (typeof ex === 'string') { try { ex = JSON.parse(ex); } catch (e) { ex = {}; } }
// 各类型转软碎片基本要求预检
if (target === 'company' && (!d.industry || !d.registration_number)) {
Dialog.error('企业类型转软碎片:请先「继续补全」填写行业和注册号');
@@ -432,12 +438,12 @@ $(function () {
Dialog.error('人员类型转软碎片:请先「继续补全」填写姓名');
return;
}
if (target === 'product' && !ex.category) {
Dialog.error('产品类型转软碎片:请先「继续补全」填写产品品类');
if (target === 'product' && !d.company_name) {
Dialog.error('产品类型转软碎片:请先「继续补全」填写公司名称');
return;
}
if (target === 'need' && !ex.need_category) {
Dialog.error('需求类型转软碎片:请先「继续补全」填写需求类别');
if (target === 'need' && !d.company_name) {
Dialog.error('需求类型转软碎片:请先「继续补全」填写公司名称');
return;
}
Dialog.confirm('确定将该硬数据直接转换为软数据碎片吗?', function () {