+
+
+
diff --git a/admin/src/views/consumer/prescription/order_list.vue b/admin/src/views/consumer/prescription/order_list.vue
index a408d6ea..4abc7a76 100644
--- a/admin/src/views/consumer/prescription/order_list.vue
+++ b/admin/src/views/consumer/prescription/order_list.vue
@@ -266,6 +266,14 @@
查询重置
+
@@ -2505,6 +2513,7 @@ import {
prescriptionOrderDetail,
prescriptionOrderEdit,
prescriptionOrderLists,
+ prescriptionOrderExport,
prescriptionOrderPaidPayOrders,
prescriptionOrderWithdraw,
prescriptionOrderLogisticsTrace,
@@ -2853,21 +2862,35 @@ function handleFocusBoardSearch(key: 'pendingRx' | 'pendingPay' | 'pendingShip'
resetPage()
}
-async function fetchLists(params: Record) {
+function normalizePrescriptionOrderListQuery(params: Record): Record {
const p: Record = { ...params }
if (p.prescription_id === '' || p.prescription_id === undefined) {
delete p.prescription_id
} else {
p.prescription_id = Number(p.prescription_id)
}
- if (p.fulfillment_status === '' || p.fulfillment_status === undefined) {
+ if (p.fulfillment_status === '' || p.fulfillment_status === undefined || p.fulfillment_status === null) {
delete p.fulfillment_status
+ } else {
+ p.fulfillment_status = Number(p.fulfillment_status)
}
- if (p.prescription_audit_status === '' || p.prescription_audit_status === undefined) {
+ if (
+ p.prescription_audit_status === '' ||
+ p.prescription_audit_status === undefined ||
+ p.prescription_audit_status === null
+ ) {
delete p.prescription_audit_status
+ } else {
+ p.prescription_audit_status = Number(p.prescription_audit_status)
}
- if (p.payment_slip_audit_status === '' || p.payment_slip_audit_status === undefined) {
+ if (
+ p.payment_slip_audit_status === '' ||
+ p.payment_slip_audit_status === undefined ||
+ p.payment_slip_audit_status === null
+ ) {
delete p.payment_slip_audit_status
+ } else {
+ p.payment_slip_audit_status = Number(p.payment_slip_audit_status)
}
if (!p.supply_mode || p.supply_mode === '') {
delete p.supply_mode
@@ -2896,7 +2919,6 @@ async function fetchLists(params: Record) {
delete p.start_time
delete p.end_time
} else {
- // 当前页面按“日”筛选:请求接口时展开为整天区间,避免结束日只落在 00:00:00。
const st = String(p.start_time || '').trim()
const et = String(p.end_time || '').trim()
if (/^\d{4}-\d{2}-\d{2}$/.test(st) && /^\d{4}-\d{2}-\d{2}$/.test(et)) {
@@ -2904,9 +2926,16 @@ async function fetchLists(params: Record) {
p.end_time = `${et} 23:59:59`
}
}
+ return p
+}
+
+async function fetchLists(params: Record) {
+ const p = normalizePrescriptionOrderListQuery({ ...params })
return prescriptionOrderLists(p)
}
+const prescriptionOrderExportParams = computed(() => normalizePrescriptionOrderListQuery({ ...queryParams }))
+
const { pager, getLists, resetPage, resetParams } = usePaging({
fetchFun: fetchLists,
params: queryParams
@@ -4435,6 +4464,61 @@ async function testGancaoPreviewFromDetail() {
if (d && d.success) {
gancaoPreviewData.value = d
gancaoPreviewDrawerVisible.value = true
+
+ // 将价格信息「总计」(药材成本 + 制作费 + 物流费) 写入 internal_cost(需财务字段权限,与后台 canViewInternalCost 一致)
+ if (canViewFinanceFields() && d.fee) {
+ const internalTotal = calculateTotalFee(d.fee)
+ try {
+ const resDetail: any = await prescriptionOrderDetail({ id: detailData.value.id })
+ const od = resDetail?.data ?? resDetail
+ if (od?.id) {
+ const pkgRaw = od.service_package
+ const servicePackageStr = Array.isArray(pkgRaw)
+ ? pkgRaw.join(',')
+ : String(pkgRaw || '')
+ await prescriptionOrderEdit({
+ id: od.id,
+ recipient_name: od.recipient_name || '',
+ recipient_phone: od.recipient_phone || '',
+ shipping_province: od.shipping_province || '',
+ shipping_city: od.shipping_city || '',
+ shipping_district: od.shipping_district || '',
+ shipping_address: od.shipping_address || '',
+ is_follow_up: od.is_follow_up ? 1 : 0,
+ medication_days:
+ od.medication_days != null && String(od.medication_days).trim() !== ''
+ ? od.medication_days
+ : '',
+ dose_unit: od.dose_unit || '剂',
+ dose_count: od.dose_count > 0 ? od.dose_count : 1,
+ prev_staff: od.prev_staff || '',
+ service_channel: od.service_channel || '',
+ service_package: servicePackageStr,
+ express_company: od.express_company || 'auto',
+ tracking_number: od.tracking_number || '',
+ fee_type: Number(od.fee_type) || 3,
+ amount: Number(od.amount) || 0,
+ remark_extra: od.remark_extra || '',
+ remark_assistant: od.remark_assistant || '',
+ internal_cost: internalTotal,
+ pay_order_ids: Array.isArray(od.pay_order_ids) ? od.pay_order_ids : []
+ })
+ feedback.msgSuccess('内部成本已按预报价总计更新')
+ getLists()
+ if (detailVisible.value && Number(detailData.value?.id) === Number(od.id)) {
+ try {
+ const r: any = await prescriptionOrderDetail({ id: od.id })
+ const nd = r?.data ?? r ?? null
+ if (nd) detailData.value = nd
+ } catch {
+ detailData.value = { ...detailData.value, internal_cost: internalTotal }
+ }
+ }
+ }
+ } catch {
+ /* 拦截器已提示;仍保留抽屉中的预报价结果 */
+ }
+ }
//feedback.msgSuccess('预下单测试成功')
} else {
// feedback.msgError(d?.error || '预下单失败')
diff --git a/admin/src/views/tcm/diagnosis/appointment.vue b/admin/src/views/tcm/diagnosis/appointment.vue
index 9d354c1e..2f245d51 100644
--- a/admin/src/views/tcm/diagnosis/appointment.vue
+++ b/admin/src/views/tcm/diagnosis/appointment.vue
@@ -53,7 +53,7 @@
>
@@ -470,7 +470,11 @@ const loadChannelOptions = async () => {
if (ds !== 0) return ds
return Number(b?.id ?? 0) - Number(a?.id ?? 0)
})
- channelOptions.value = rows
+ // 统一为字符串,避免字典 value 为数字时 el-select 与表单校验不一致导致看似选了但实际未绑定
+ channelOptions.value = rows.map((row: any) => ({
+ ...row,
+ value: row?.value != null && row.value !== '' ? String(row.value) : ''
+ }))
} catch (e) {
console.error('加载渠道来源失败:', e)
channelOptions.value = []
@@ -693,7 +697,7 @@ const handleConfirm = async () => {
appointment_time: form.appointmentTime,
appointment_type: form.appointmentType,
remark: form.remark,
- channel_source: form.channel_source,
+ channel_source: String(form.channel_source ?? ''),
channel_source_detail: form.channel_source_detail.trim()
}
diff --git a/server/app/adminapi/controller/doctor/AppointmentController.php b/server/app/adminapi/controller/doctor/AppointmentController.php
index a7b4abbe..8d0790a7 100644
--- a/server/app/adminapi/controller/doctor/AppointmentController.php
+++ b/server/app/adminapi/controller/doctor/AppointmentController.php
@@ -64,6 +64,24 @@ class AppointmentController extends BaseAdminController
return $this->dataLists(new AppointmentLists());
}
+ /**
+ * 后台编辑挂号记录(消费者处方-挂号列表等,perms: doctor.appointment/edit)
+ */
+ public function edit()
+ {
+ $params = (new AppointmentValidate())->post()->goCheck('adminEdit');
+ $post = $this->request->post();
+ if (array_key_exists('assistant_id', $post)) {
+ $params['assistant_id'] = $post['assistant_id'];
+ }
+ $result = AppointmentLogic::adminEdit($params, $this->adminId, $this->adminInfo);
+ if ($result === false) {
+ return $this->fail(AppointmentLogic::getError());
+ }
+
+ return $this->success('保存成功');
+ }
+
/**
* @notes 预约详情
* @return \think\response\Json
diff --git a/server/app/adminapi/controller/tcm/PrescriptionOrderController.php b/server/app/adminapi/controller/tcm/PrescriptionOrderController.php
index c833475b..9c8c7b6d 100644
--- a/server/app/adminapi/controller/tcm/PrescriptionOrderController.php
+++ b/server/app/adminapi/controller/tcm/PrescriptionOrderController.php
@@ -20,6 +20,14 @@ class PrescriptionOrderController extends BaseAdminController
return $this->dataLists(new PrescriptionOrderLists());
}
+ /**
+ * 处方业务订单导出(与 lists 相同筛选条件,Excel;参数 export=1 预估 export=2 下载)
+ */
+ public function export()
+ {
+ return $this->dataLists(new PrescriptionOrderLists());
+ }
+
/**
* 指定诊单下可关联的支付单(待支付/已支付,创建/编辑业务订单时多选关联)
*/
diff --git a/server/app/adminapi/lists/BaseAdminDataLists.php b/server/app/adminapi/lists/BaseAdminDataLists.php
index bf5b1b05..1363380c 100644
--- a/server/app/adminapi/lists/BaseAdminDataLists.php
+++ b/server/app/adminapi/lists/BaseAdminDataLists.php
@@ -28,12 +28,9 @@ abstract class BaseAdminDataLists extends BaseDataLists
protected array $adminInfo;
protected int $adminId;
- public function __construct()
+ protected function initAdminIdentity(): void
{
- parent::__construct();
$this->adminInfo = $this->request->adminInfo;
$this->adminId = $this->request->adminId;
}
-
-
}
\ No newline at end of file
diff --git a/server/app/adminapi/lists/doctor/AppointmentLists.php b/server/app/adminapi/lists/doctor/AppointmentLists.php
index e2e561bd..924318ae 100644
--- a/server/app/adminapi/lists/doctor/AppointmentLists.php
+++ b/server/app/adminapi/lists/doctor/AppointmentLists.php
@@ -7,6 +7,7 @@ use app\common\model\DiagnosisViewRecord;
use app\common\model\doctor\Appointment;
use app\common\model\tcm\Prescription;
use app\common\model\auth\AdminRole;
+use app\common\model\dict\DictData;
use app\common\lists\ListsExtendInterface;
use app\common\lists\ListsSearchInterface;
use app\common\lists\Traits\HasDataScopeFilter;
@@ -122,7 +123,7 @@ class AppointmentLists extends BaseAdminDataLists implements ListsSearchInterfac
->leftJoin('tcm_diagnosis u', 'a.patient_id = u.id')
->leftJoin('admin ad', 'a.doctor_id = ad.id')
->leftJoin('admin asst', 'u.assistant_id = asst.id')
- ->field('a.*, u.patient_name as patient_name, u.phone as patient_phone, u.gender as gender, u.age as age, u.weight as weight, u.height as height, u.assistant_id as assistant_id, ad.name as doctor_name, asst.name as assistant_name, u.id as diagnosis_id');
+ ->field('a.*, u.patient_name as patient_name, u.phone as patient_phone, u.gender as gender, u.age as age, u.weight as weight, u.height as height, u.assistant_id as assistant_id, ad.name as doctor_name, asst.name as assistant_name, u.id as diagnosis_id, a.assistant_id as appointment_assistant_id');
if ($this->searchWhere !== []) {
$query->where($this->searchWhere);
}
@@ -212,6 +213,9 @@ class AppointmentLists extends BaseAdminDataLists implements ListsSearchInterfac
}
}
}
+
+ $channelNameByValue = DictData::where('type_value', 'channels')->column('name', 'value');
+
foreach ($lists as &$item) {
$statusMap = [
1 => '已预约',
@@ -228,6 +232,24 @@ class AppointmentLists extends BaseAdminDataLists implements ListsSearchInterfac
];
$item['appointment_type_desc'] = $typeMap[$item['appointment_type']] ?? '未知';
+ $periodRaw = (string) ($item['period'] ?? ($item['type'] ?? ''));
+ $periodMap = [
+ 'morning' => '上午',
+ 'afternoon' => '下午',
+ 'all' => '全天',
+ ];
+ $item['period_desc'] = $periodMap[$periodRaw] ?? ($periodRaw !== '' ? $periodRaw : '—');
+
+ $srcKey = trim((string) ($item['channel_source'] ?? ''));
+ if ($srcKey === '' && isset($item['channels']) && $item['channels'] !== '' && $item['channels'] !== null) {
+ $srcKey = trim((string) $item['channels']);
+ }
+ if ($srcKey !== '') {
+ $item['channel_source_desc'] = (string) ($channelNameByValue[$srcKey] ?? $channelNameByValue[(string) (int) $srcKey] ?? $srcKey);
+ } else {
+ $item['channel_source_desc'] = '—';
+ }
+
$item['diagnosis_confirmed'] = isset($confirmedMap[$item['diagnosis_id'] ?? 0]) ? 1 : 0;
$item['has_prescription'] = isset($prescribedDiagnosisIds[$item['diagnosis_id'] ?? 0]) ? 1 : 0;
diff --git a/server/app/adminapi/lists/tcm/PrescriptionOrderLists.php b/server/app/adminapi/lists/tcm/PrescriptionOrderLists.php
index f340764f..280ae4d3 100644
--- a/server/app/adminapi/lists/tcm/PrescriptionOrderLists.php
+++ b/server/app/adminapi/lists/tcm/PrescriptionOrderLists.php
@@ -8,6 +8,8 @@ use app\adminapi\lists\BaseAdminDataLists;
use app\adminapi\logic\dept\DeptLogic;
use app\adminapi\logic\stats\YejiStatsLogic;
use app\adminapi\logic\tcm\PrescriptionOrderLogic;
+use app\common\enum\ExportEnum;
+use app\common\lists\ListsExcelInterface;
use app\common\lists\ListsExtendInterface;
use app\common\lists\ListsSearchInterface;
use app\common\lists\Traits\HasDataScopeFilter;
@@ -23,7 +25,7 @@ use think\facade\Config;
use think\facade\Db;
use think\db\Query;
-class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExtendInterface
+class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExtendInterface, ListsExcelInterface
{
use HasDataScopeFilter;
@@ -558,6 +560,10 @@ class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchIn
PrescriptionOrderLogic::appendLinkedAppointmentsToListRows($lists, $this->params);
}
+ if ((int) $this->export === ExportEnum::EXPORT) {
+ PrescriptionOrderLogic::appendPrescriptionOrderListExportRows($lists, $this->adminInfo);
+ }
+
return $lists;
}
@@ -601,6 +607,39 @@ class PrescriptionOrderLists extends BaseAdminDataLists implements ListsSearchIn
return $base;
}
+ public function setFileName(): string
+ {
+ return '处方业务订单';
+ }
+
+ public function setExcelFields(): array
+ {
+ return [
+ 'export_fulfillment_status_text' => '履约状态',
+ 'export_order_time' => '创建时间',
+ 'doctor_name' => '医生姓名',
+ 'export_patient_name' => '患者姓名',
+ 'export_patient_gender' => '性别',
+ 'export_patient_age' => '年龄',
+ 'export_patient_phone' => '手机号',
+ 'assistant_name' => '医助名字',
+ 'export_center_label' => '一中心还是二中心',
+ 'export_assistant_dept' => '医助部门',
+ 'export_channel' => '渠道',
+ 'export_medication_form' => '药品形态',
+ 'export_medication_days' => '天数',
+ 'export_amount' => '总金额',
+ 'export_paid_amount' => '已付金额',
+ 'export_agency_collect' => '代收金额',
+ 'export_tracking_number' => '快递单号',
+ 'export_supply_mode' => '甘草还是自营',
+ 'export_gancao_prescription_cost' => '处方成本',
+ 'export_first_visit_assistant' => '初诊医助',
+ 'export_rx_audit_time' => '审核时间',
+ 'export_rx_auditor' => '审核人',
+ ];
+ }
+
/**
* 业绩看板侧栏专用:约诊/接诊条数,与 YejiStatsLogic::applyConsultFiltersAlignedWithAppointmentLists 同口径
* (doctor_appointment.status=3,appointment_date 落入区间,有效医助 COALESCE(挂号.assistant_id,诊单.assistant_id))。
diff --git a/server/app/adminapi/logic/doctor/AppointmentLogic.php b/server/app/adminapi/logic/doctor/AppointmentLogic.php
index f7219d95..9de7e49b 100644
--- a/server/app/adminapi/logic/doctor/AppointmentLogic.php
+++ b/server/app/adminapi/logic/doctor/AppointmentLogic.php
@@ -9,6 +9,8 @@ use app\common\service\doctor\RosterSegmentService;
use app\common\model\tcm\Diagnosis;
use app\common\model\tcm\DiagnosisGuahaoLog;
use app\common\model\auth\Admin;
+use app\common\model\auth\AdminRole;
+use app\common\service\DataScope\DataScopeService;
use app\api\logic\ChatNotifyLogic;
use app\adminapi\logic\tcm\PrescriptionLogic;
use app\adminapi\logic\tcm\DiagnosisLogic;
@@ -42,6 +44,61 @@ class AppointmentLogic extends BaseLogic
return in_array($name, self::CHANNEL_NAMES_REQUIRING_SOURCE_DETAIL, true);
}
+ /**
+ * @param array $cols Db::name('doctor_appointment')->getTableFields()
+ */
+ private static function assertAppointmentChannelWritable(array $cols, string $chSrc): ?string
+ {
+ $hasChannelSource = in_array('channel_source', $cols, true);
+ $hasChannels = in_array('channels', $cols, true);
+ if (!$hasChannelSource && !$hasChannels) {
+ return '挂号表缺少渠道字段(channel_source 或 channels),无法保存渠道来源';
+ }
+ if (!$hasChannelSource && $hasChannels && $chSrc !== '' && !is_numeric($chSrc)) {
+ return '当前挂号表仅有数值型渠道字段 channels,无法写入该渠道;请在数据库增加 channel_source 列';
+ }
+
+ return null;
+ }
+
+ /**
+ * @param array $row
+ * @param array $cols
+ */
+ private static function mergeAppointmentChannelIntoRow(array &$row, array $cols, string $chSrc, string $chDetail): void
+ {
+ $hasChannelSource = in_array('channel_source', $cols, true);
+ $hasChannelDetail = in_array('channel_source_detail', $cols, true);
+ $hasChannels = in_array('channels', $cols, true);
+ if ($hasChannelSource) {
+ $row['channel_source'] = $chSrc;
+ }
+ if ($hasChannelDetail) {
+ $row['channel_source_detail'] = $chDetail;
+ }
+ if ($hasChannels && is_numeric($chSrc)) {
+ $row['channels'] = (int) $chSrc;
+ }
+ }
+
+ /**
+ * @param array $row
+ * @param array $cols
+ *
+ * @return array
+ */
+ private static function filterAppointmentRowByExistingColumns(array $row, array $cols): array
+ {
+ $out = [];
+ foreach ($row as $k => $v) {
+ if (in_array((string) $k, $cols, true)) {
+ $out[$k] = $v;
+ }
+ }
+
+ return $out;
+ }
+
/**
* @notes 获取可用时间段
* @param array $params
@@ -262,25 +319,49 @@ class AppointmentLogic extends BaseLogic
}
}
- $data = [
- 'patient_id' => $params['patient_id'],
- 'assistant_id'=>$params['assistant_id'],
- 'doctor_id' => $params['doctor_id'],
- 'roster_id' => 0, // 不再关联排班表
+ $cols = Db::name('doctor_appointment')->getTableFields();
+ $cols = is_array($cols) ? $cols : [];
+ $channelErr = self::assertAppointmentChannelWritable($cols, $chSrc);
+ if ($channelErr !== null) {
+ self::setError($channelErr);
+ Db::rollback();
+
+ return false;
+ }
+
+ $insert = [
+ 'patient_id' => (int) $params['patient_id'],
+ 'doctor_id' => (int) $params['doctor_id'],
'appointment_date' => $params['appointment_date'],
- 'period' => $params['period'] ?? 'all',
'appointment_time' => $appointmentTime,
'appointment_type' => $params['appointment_type'] ?? 'video',
'remark' => $params['remark'] ?? '',
- // 表字段为 channel_source(与字典 type_value=channels 的 value 一致);勿再写入不存在的 channels 列
- 'channel_source' => $chSrc,
- 'channel_source_detail' => $chDetail,
'status' => 1,
'create_time' => time(),
'update_time' => time(),
];
+ if (in_array('roster_id', $cols, true)) {
+ $insert['roster_id'] = 0;
+ }
+ if (in_array('assistant_id', $cols, true)) {
+ $insert['assistant_id'] = (int) ($params['assistant_id'] ?? 0);
+ }
+ $periodVal = $params['period'] ?? 'all';
+ if (in_array('period', $cols, true)) {
+ $insert['period'] = $periodVal;
+ } elseif (in_array('type', $cols, true)) {
+ $insert['type'] = $periodVal;
+ }
+ self::mergeAppointmentChannelIntoRow($insert, $cols, $chSrc, $chDetail);
- $appointment = Appointment::create($data);
+ $insert = self::filterAppointmentRowByExistingColumns($insert, $cols);
+ $newId = (int) Db::name('doctor_appointment')->insertGetId($insert);
+ if ($newId <= 0) {
+ self::setError('预约创建失败');
+ Db::rollback();
+
+ return false;
+ }
Db::commit();
@@ -288,21 +369,21 @@ class AppointmentLogic extends BaseLogic
$hm = substr((string) $appointmentTime, 0, 5);
$summary = sprintf(
'挂号 #%d:医生「%s」,%s %s',
- (int) $appointment->id,
+ $newId,
$doctorName !== '' ? $doctorName : ('ID:' . (int) $params['doctor_id']),
(string) $params['appointment_date'],
$hm
);
self::appendDiagnosisGuahaoLog(
(int) $params['patient_id'],
- (int) $appointment->id,
+ $newId,
$operatorAdminId,
$operatorAdminInfo,
'create',
$summary
);
- return ['id' => $appointment->id];
+ return ['id' => $newId];
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
@@ -787,6 +868,244 @@ class AppointmentLogic extends BaseLogic
}
}
+ /**
+ * 与 AppointmentLists 一致的可见性(不含 progress_board / diag_scope_relax)
+ */
+ private static function appointmentRowManageableByAdmin(
+ Appointment $appointment,
+ ?Diagnosis $diag,
+ int $adminId,
+ array $adminInfo
+ ): bool {
+ $roleIds = array_map('intval', AdminRole::where('admin_id', $adminId)->column('role_id'));
+
+ if (in_array(1, $roleIds, true) && (int) $appointment->doctor_id !== $adminId) {
+ return false;
+ }
+ if (in_array(2, $roleIds, true)) {
+ $asst = $diag ? (int) $diag->assistant_id : 0;
+ if ($asst !== $adminId) {
+ return false;
+ }
+ }
+
+ if (!DataScopeService::isEnabled()) {
+ return true;
+ }
+ $ids = DataScopeService::getVisibleAdminIds($adminId, $adminInfo);
+ if ($ids === []) {
+ return false;
+ }
+ if ($ids === null) {
+ return true;
+ }
+ $docId = (int) $appointment->doctor_id;
+ $asstId = $diag ? (int) $diag->assistant_id : 0;
+
+ return in_array($docId, $ids, true)
+ || ($asstId > 0 && in_array($asstId, $ids, true));
+ }
+
+ /**
+ * 后台编辑挂号(预约日期/时段/类型/状态/备注/医助)
+ *
+ * @param array $params
+ */
+ public static function adminEdit(array $params, int $adminId, array $adminInfo): bool
+ {
+ try {
+ $id = (int) ($params['id'] ?? 0);
+ if ($id <= 0) {
+ self::setError('参数错误');
+
+ return false;
+ }
+
+ $appointment = Appointment::findOrEmpty($id);
+ if ($appointment->isEmpty()) {
+ self::setError('预约记录不存在');
+
+ return false;
+ }
+
+ $diag = Diagnosis::where('id', (int) $appointment->patient_id)->whereNull('delete_time')->find();
+
+ if (!self::appointmentRowManageableByAdmin($appointment, $diag ?: null, $adminId, $adminInfo)) {
+ self::setError('无权限编辑');
+
+ return false;
+ }
+
+ $period = trim((string) ($params['period'] ?? ''));
+ if (!in_array($period, ['morning', 'afternoon', 'all'], true)) {
+ self::setError('时段无效');
+
+ return false;
+ }
+
+ $appointmentDate = trim((string) ($params['appointment_date'] ?? ''));
+ if ($appointmentDate === '') {
+ self::setError('预约日期不能为空');
+
+ return false;
+ }
+
+ $rawTime = trim((string) ($params['appointment_time'] ?? ''));
+ if ($rawTime === '') {
+ self::setError('预约时间不能为空');
+
+ return false;
+ }
+ $appointmentTime = strlen($rawTime) === 5 ? $rawTime . ':00' : $rawTime;
+
+ $status = (int) ($params['status'] ?? 0);
+ if ($status < 1 || $status > 4) {
+ self::setError('状态无效');
+
+ return false;
+ }
+
+ $appointmentType = trim((string) ($params['appointment_type'] ?? ''));
+ if (!in_array($appointmentType, ['video', 'text', 'phone'], true)) {
+ self::setError('预约类型无效');
+
+ return false;
+ }
+
+ $remark = isset($params['remark']) ? trim((string) $params['remark']) : '';
+ if (mb_strlen($remark) > 500) {
+ self::setError('备注过长');
+
+ return false;
+ }
+
+ $chSrc = trim((string) ($params['channel_source'] ?? ''));
+ if ($chSrc === '') {
+ self::setError('请选择渠道来源');
+
+ return false;
+ }
+ $chDetail = trim((string) ($params['channel_source_detail'] ?? ''));
+ $channelDictName = trim((string) (DictData::where('type_value', 'channels')
+ ->where('value', $chSrc)
+ ->value('name') ?? ''));
+ if ($channelDictName !== '' && self::channelDictNameRequiresSourceDetail($channelDictName)) {
+ if ($chDetail === '') {
+ self::setError('请填写自媒体渠道补充信息');
+
+ return false;
+ }
+ }
+ if (mb_strlen($chDetail) > 128) {
+ self::setError('渠道补充说明过长');
+
+ return false;
+ }
+
+ $postAssistant = array_key_exists('assistant_id', $params);
+ $assistantId = null;
+ if ($postAssistant) {
+ $assistantRaw = $params['assistant_id'];
+ if ($assistantRaw !== null && $assistantRaw !== '') {
+ $aid = (int) $assistantRaw;
+ $assistantId = $aid > 0 ? $aid : null;
+ }
+ }
+
+ $patientId = (int) $appointment->patient_id;
+ $doctorId = (int) $appointment->doctor_id;
+
+ if (in_array($status, [1, 4], true)) {
+ $patientDup = Appointment::where('patient_id', $patientId)
+ ->where('appointment_date', $appointmentDate)
+ ->whereIn('status', [1, 4])
+ ->where('id', '<>', $id)
+ ->find();
+ if ($patientDup) {
+ self::setError('该诊单在所选日期已有其他有效挂号(已预约/已过号)');
+
+ return false;
+ }
+ }
+
+ if ($status === 1) {
+ $slotDup = Appointment::where('doctor_id', $doctorId)
+ ->where('appointment_date', $appointmentDate)
+ ->where('appointment_time', $appointmentTime)
+ ->where('status', 1)
+ ->where('id', '<>', $id)
+ ->find();
+ if ($slotDup) {
+ self::setError('该医生在所选时段已被占用');
+
+ return false;
+ }
+ }
+
+ $beforeDate = (string) ($appointment->appointment_date ?? '');
+ $beforeTimeRaw = (string) ($appointment->appointment_time ?? '');
+ $beforeHm = strlen($beforeTimeRaw) >= 5 ? substr($beforeTimeRaw, 0, 5) : $beforeTimeRaw;
+ $snap = $appointment->toArray();
+ $beforePeriod = (string) ($snap['period'] ?? $snap['type'] ?? '');
+ $beforeStatus = (int) $appointment->status;
+
+ $tblFields = Db::name('doctor_appointment')->getTableFields();
+ $cols = is_array($tblFields) ? $tblFields : [];
+ $channelErr = self::assertAppointmentChannelWritable($cols, $chSrc);
+ if ($channelErr !== null) {
+ self::setError($channelErr);
+
+ return false;
+ }
+
+ Db::startTrans();
+
+ $saveData = [
+ 'appointment_date' => $appointmentDate,
+ 'appointment_time' => $appointmentTime,
+ 'appointment_type' => $appointmentType,
+ 'status' => $status,
+ 'remark' => $remark,
+ 'update_time' => time(),
+ ];
+ if (in_array('assistant_id', $cols, true) && $postAssistant) {
+ $saveData['assistant_id'] = $assistantId;
+ }
+ if (in_array('period', $cols, true)) {
+ $saveData['period'] = $period;
+ } elseif (in_array('type', $cols, true)) {
+ $saveData['type'] = $period;
+ }
+ self::mergeAppointmentChannelIntoRow($saveData, $cols, $chSrc, $chDetail);
+
+ Db::name('doctor_appointment')->where('id', $id)->update($saveData);
+
+ Db::commit();
+
+ $hm = substr($appointmentTime, 0, 5);
+ $summary = sprintf(
+ '后台修改挂号 #%d:日期 %s %s→%s %s,时段 %s→%s,状态 %d→%d',
+ $id,
+ $beforeDate,
+ $beforeHm,
+ $appointmentDate,
+ $hm,
+ $beforePeriod !== '' ? $beforePeriod : '—',
+ $period,
+ $beforeStatus,
+ $status
+ );
+ self::appendDiagnosisGuahaoLog($patientId, $id, $adminId, $adminInfo, 'admin_edit', $summary);
+
+ return true;
+ } catch (\Throwable $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+
+ return false;
+ }
+ }
+
/**
* 诊单列表维度:记录谁在后台发起挂号 / 取消挂号(写入失败不影响主流程)
*/
diff --git a/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php b/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php
index bc43ed9d..3a52c1a5 100644
--- a/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php
+++ b/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php
@@ -2424,7 +2424,7 @@ class PrescriptionOrderLogic
return $out;
}
- private static function fulfillmentStatusLabel(int $fs): string
+ public static function fulfillmentStatusLabel(int $fs): string
{
$m = [
1 => '待双审通过',
@@ -2444,6 +2444,209 @@ class PrescriptionOrderLogic
return $m[$fs] ?? ('状态' . (string) $fs);
}
+ /**
+ * 导出用:诊单医助在 admin_dept 中的部门路径(多部门「;」、路径内「 / 」)
+ */
+ public static function formatAssistantDeptPathForExport(int $assistantAdminId): string
+ {
+ if ($assistantAdminId <= 0) {
+ return '';
+ }
+ $deptIds = Db::name('admin_dept')->where('admin_id', $assistantAdminId)->column('dept_id');
+ $pathSegments = [];
+ foreach ($deptIds as $did) {
+ $p = self::buildDeptPath((int) $did);
+ if ($p !== '') {
+ $pathSegments[] = $p;
+ }
+ }
+ $pathSegments = array_values(array_unique($pathSegments));
+
+ return $pathSegments === [] ? '' : implode(';', $pathSegments);
+ }
+
+ /**
+ * 导出用:药品形态(丸剂 / 饮片+代煎|自煎等)
+ *
+ * @param array $rx
+ */
+ public static function formatMedicationFormForExport(array $rx): string
+ {
+ $type = trim((string) ($rx['prescription_type'] ?? ''));
+ if ($type === '') {
+ return '';
+ }
+ if ($type === '饮片') {
+ $nd = (int) ($rx['need_decoction'] ?? 0);
+
+ return $type . ($nd === 1 ? '(代煎)' : '(自煎)');
+ }
+
+ return $type;
+ }
+
+ /**
+ * 业务订单列表导出:写入与 PrescriptionOrderLists::setExcelFields 对应的字段(export=2 时由列表类调用)
+ *
+ * @param array> $lists
+ */
+ public static function appendPrescriptionOrderListExportRows(array &$lists, array $adminInfo): void
+ {
+ if ($lists === []) {
+ return;
+ }
+ $diagIds = [];
+ $rxIds = [];
+ $poIds = [];
+ foreach ($lists as $row) {
+ $poIds[] = (int) ($row['id'] ?? 0);
+ $d = (int) ($row['diagnosis_id'] ?? 0);
+ if ($d > 0) {
+ $diagIds[$d] = true;
+ }
+ $r = (int) ($row['prescription_id'] ?? 0);
+ if ($r > 0) {
+ $rxIds[$r] = true;
+ }
+ }
+ $poIds = array_values(array_filter(array_unique($poIds), static fn (int $id): bool => $id > 0));
+ $diagIdList = array_keys($diagIds);
+ $rxIdList = array_keys($rxIds);
+
+ $diagById = [];
+ if ($diagIdList !== []) {
+ $diagRows = Diagnosis::whereIn('id', $diagIdList)->whereNull('delete_time')
+ ->field(['id', 'patient_name', 'gender', 'age', 'phone', 'assistant_id'])
+ ->select()
+ ->toArray();
+ foreach ($diagRows as $dr) {
+ $diagById[(int) $dr['id']] = $dr;
+ }
+ }
+
+ $rxById = [];
+ if ($rxIdList !== []) {
+ $rxRows = Prescription::whereIn('id', $rxIdList)->whereNull('delete_time')
+ ->field(['id', 'prescription_type', 'need_decoction', 'dose_unit'])
+ ->select()
+ ->toArray();
+ foreach ($rxRows as $xr) {
+ $rxById[(int) $xr['id']] = $xr;
+ }
+ }
+
+ $logRows = PrescriptionOrderLog::whereIn('prescription_order_id', $poIds)
+ ->whereIn('action', ['audit_rx_approve', 'audit_rx_reject', 'revoke_rx_audit'])
+ ->field(['prescription_order_id', 'id', 'action', 'admin_name', 'create_time'])
+ ->order('id', 'asc')
+ ->select()
+ ->toArray();
+ $auditEffectiveByPo = [];
+ foreach ($logRows as $lg) {
+ $pid = (int) ($lg['prescription_order_id'] ?? 0);
+ if ($pid <= 0) {
+ continue;
+ }
+ $act = (string) ($lg['action'] ?? '');
+ if ($act === 'revoke_rx_audit') {
+ $auditEffectiveByPo[$pid] = null;
+ continue;
+ }
+ if ($act === 'audit_rx_approve' || $act === 'audit_rx_reject') {
+ $auditEffectiveByPo[$pid] = $lg;
+ }
+ }
+
+ $assistantDeptCache = [];
+
+ foreach ($lists as &$item) {
+ $poId = (int) ($item['id'] ?? 0);
+ $fs = (int) ($item['fulfillment_status'] ?? 0);
+ $item['export_fulfillment_status_text'] = self::fulfillmentStatusLabel($fs);
+ $ct = (int) ($item['create_time'] ?? 0);
+ $item['export_order_time'] = $ct > 0 ? date('Y-m-d H:i:s', $ct) : '';
+
+ $diagId = (int) ($item['diagnosis_id'] ?? 0);
+ $dg = $diagById[$diagId] ?? null;
+ $item['export_patient_name'] = \is_array($dg) ? (string) ($dg['patient_name'] ?? '') : '';
+ if (\is_array($dg)) {
+ $g = (int) ($dg['gender'] ?? 0);
+ $item['export_patient_gender'] = $g === 1 ? '男' : '女';
+ $item['export_patient_age'] = (string) ($dg['age'] ?? '');
+ $item['export_patient_phone'] = (string) ($dg['phone'] ?? '');
+ $astId = (int) ($dg['assistant_id'] ?? 0);
+ if ($astId > 0) {
+ if (!isset($assistantDeptCache[$astId])) {
+ $assistantDeptCache[$astId] = self::formatAssistantDeptPathForExport($astId);
+ }
+ $item['export_assistant_dept'] = $assistantDeptCache[$astId];
+ } else {
+ $item['export_assistant_dept'] = '';
+ }
+ } else {
+ $item['export_patient_gender'] = '';
+ $item['export_patient_age'] = '';
+ $item['export_patient_phone'] = '';
+ $item['export_assistant_dept'] = '';
+ }
+
+ $rxId = (int) ($item['prescription_id'] ?? 0);
+ $rx = $rxById[$rxId] ?? [];
+ $item['export_medication_form'] = self::formatMedicationFormForExport(\is_array($rx) ? $rx : []);
+
+ $item['export_channel'] = (string) ($item['service_channel'] ?? '');
+ $md = $item['medication_days'] ?? null;
+ $item['export_medication_days'] = $md !== null && $md !== '' ? (string) $md : '';
+
+ $amt = round((float) ($item['amount'] ?? 0), 2);
+ $paid = round((float) ($item['linked_pay_paid_total'] ?? 0), 2);
+ $item['export_amount'] = number_format($amt, 2, '.', '');
+ $item['export_paid_amount'] = number_format($paid, 2, '.', '');
+ $item['export_agency_collect'] = number_format(round($amt - $paid, 2), 2, '.', '');
+
+ $item['export_tracking_number'] = (string) ($item['tracking_number'] ?? '');
+ $isGc = trim((string) ($item['gancao_reciperl_order_no'] ?? '')) !== '';
+ $item['export_supply_mode'] = $isGc ? '甘草' : '自营';
+ // 「处方成本」列:与列表/详情一致,取订单 internal_cost(含「测试价格」预报价写入;甘草/自营均导出)
+ if (self::canViewInternalCost($adminInfo)) {
+ $rawCost = $item['internal_cost'] ?? null;
+ $item['export_gancao_prescription_cost'] = $rawCost !== null && $rawCost !== ''
+ ? number_format(round((float) $rawCost, 2), 2, '.', '')
+ : '';
+ } else {
+ $item['export_gancao_prescription_cost'] = '';
+ }
+
+ $isFu = (int) ($item['is_follow_up'] ?? 0) === 1;
+ $item['export_first_visit_assistant'] = $isFu ? (string) ($item['prev_staff'] ?? '') : '';
+
+ $hit = (int) ($item['po_assign_snapshot_hit'] ?? 0);
+ $rel = (int) ($item['po_assign_is_release'] ?? 0);
+ $er = (int) ($item['po_assign_to_er_center'] ?? 0);
+ if ($hit !== 1) {
+ $item['export_center_label'] = '—';
+ } elseif ($rel === 1) {
+ $item['export_center_label'] = '已释放';
+ } elseif ($er === 1) {
+ $item['export_center_label'] = '二中心';
+ } else {
+ $item['export_center_label'] = '一中心';
+ }
+
+ $paSt = (int) ($item['prescription_audit_status'] ?? 0);
+ $aud = $auditEffectiveByPo[$poId] ?? null;
+ if (($paSt === 1 || $paSt === 2) && \is_array($aud)) {
+ $at = (int) ($aud['create_time'] ?? 0);
+ $item['export_rx_audit_time'] = $at > 0 ? date('Y-m-d H:i:s', $at) : '';
+ $item['export_rx_auditor'] = (string) ($aud['admin_name'] ?? '');
+ } else {
+ $item['export_rx_audit_time'] = '';
+ $item['export_rx_auditor'] = '';
+ }
+ }
+ unset($item);
+ }
+
/**
* 完成订单时把关联诊单的 assistant_id 清空,让患者回到「待分配」状态
* 仅当该患者没有其它进行中的处方订单且无指派日志时才清空,避免误覆盖
diff --git a/server/app/adminapi/validate/doctor/AppointmentValidate.php b/server/app/adminapi/validate/doctor/AppointmentValidate.php
index f6db790a..db8c74f2 100644
--- a/server/app/adminapi/validate/doctor/AppointmentValidate.php
+++ b/server/app/adminapi/validate/doctor/AppointmentValidate.php
@@ -21,9 +21,11 @@ class AppointmentValidate extends BaseValidate
'doctor_id' => 'require|integer',
'diagnosis_id' => 'require|integer',
'appointment_date' => 'require|date',
- 'period' => 'in:morning,afternoon,all',
'appointment_time' => 'require',
- 'appointment_type' => 'in:video,text,phone',
+ 'period' => 'in:morning,afternoon,all',
+ 'appointment_type' => 'require|in:video,text,phone',
+ 'status' => 'require|integer|between:1,4',
+ 'remark' => 'max:500',
'channel_source' => 'require',
'channel_source_detail' => 'max:128',
'note_id' => 'require|integer',
@@ -41,9 +43,12 @@ class AppointmentValidate extends BaseValidate
'doctor_id' => '医生ID',
'diagnosis_id' => '诊单ID',
'appointment_date' => '预约日期',
- 'period' => '时段',
'appointment_time' => '预约时间',
+ 'period' => '时段',
'appointment_type' => '预约类型',
+ 'status' => '状态',
+ 'remark' => '备注',
+ 'assistant_id' => '医助',
'channel_source' => '渠道来源',
'channel_source_detail' => '渠道补充说明',
];
@@ -125,4 +130,22 @@ class AppointmentValidate extends BaseValidate
{
return $this->only(['note_id', 'image_type', 'image_path']);
}
+
+ /**
+ * 后台挂号编辑(消费者处方-挂号列表等)
+ */
+ public function sceneAdminEdit()
+ {
+ return $this->only([
+ 'id',
+ 'appointment_date',
+ 'appointment_time',
+ 'period',
+ 'appointment_type',
+ 'status',
+ 'remark',
+ 'channel_source',
+ 'channel_source_detail',
+ ]);
+ }
}
diff --git a/server/app/command/TcmBackfillPrescriptionOrderInternalCost.php b/server/app/command/TcmBackfillPrescriptionOrderInternalCost.php
new file mode 100644
index 00000000..f1dfe81c
--- /dev/null
+++ b/server/app/command/TcmBackfillPrescriptionOrderInternalCost.php
@@ -0,0 +1,279 @@
+setName('tcm:backfill-internal-cost')
+ ->setDescription('批量用甘草预报价回填处方业务订单 internal_cost')
+ ->addOption('dry-run', null, Option::VALUE_NONE, '只演练不写库')
+ ->addOption('limit', 'l', Option::VALUE_OPTIONAL, '最多处理条数', 100)
+ ->addOption('order-id', null, Option::VALUE_OPTIONAL, '仅处理指定 prescription_order.id', null)
+ ->addOption('force', 'f', Option::VALUE_NONE, '覆盖已有 internal_cost(默认只填 NULL)')
+ ->addOption('null-or-zero', null, Option::VALUE_NONE, '与默认一致且同时处理 internal_cost=0 的行(仍可用 --force 覆盖任意值)')
+ ->addOption('min-id', null, Option::VALUE_OPTIONAL, '仅 id>=该值', null)
+ ->addOption('max-id', null, Option::VALUE_OPTIONAL, '仅 id<=该值', null)
+ ->addOption(
+ 'fulfillment-status',
+ null,
+ Option::VALUE_OPTIONAL,
+ '仅处理指定履约状态,逗号分隔数字,如 5,6,3=已发货/已签收/已完成;不传则不限',
+ null
+ )
+ ->addOption('sleep-ms', null, Option::VALUE_OPTIONAL, '每条成功调用后休眠毫秒,减轻开放平台压力', 250)
+ ->addOption('detail', 'd', Option::VALUE_NONE, '打印每条明细');
+ }
+
+ /**
+ * @return array{admin_id:int, root:int, name:string, role_id:int[]}
+ */
+ private static function cliAdminInfo(): array
+ {
+ return [
+ 'admin_id' => 0,
+ 'root' => 1,
+ 'name' => 'CLI-internal-cost',
+ 'role_id' => [],
+ ];
+ }
+
+ /**
+ * @param array $fee
+ */
+ private static function totalFeeFromPreview(array $fee): float
+ {
+ $m = (float) ($fee['m_cost'] ?? 0);
+ $p = (float) ($fee['proces_cost'] ?? 0);
+ $l = (float) ($fee['lis_cost'] ?? 0);
+
+ return round($m + $p + $l, 2);
+ }
+
+ /**
+ * 解析 CLI 传入的履约状态列表(1–12,与 PrescriptionOrderLogic::fulfillmentStatusLabel 一致)
+ *
+ * @return int[] 去重后的状态码;$raw 非空但解析不到合法值时返回 null 表示调用方应报错
+ */
+ private static function parseFulfillmentStatusOption(?string $raw): ?array
+ {
+ if ($raw === null) {
+ return [];
+ }
+ $raw = trim($raw);
+ if ($raw === '') {
+ return [];
+ }
+ $seen = [];
+ foreach (explode(',', $raw) as $part) {
+ $n = (int) trim($part);
+ if ($n >= 1 && $n <= 12) {
+ $seen[$n] = true;
+ }
+ }
+ $ids = array_keys($seen);
+ sort($ids);
+
+ return $ids !== [] ? $ids : null;
+ }
+
+ protected function execute(Input $input, Output $output): int
+ {
+ $dryRun = (bool) $input->getOption('dry-run');
+ $verbose = (bool) $input->getOption('detail');
+ $force = (bool) $input->getOption('force');
+ $nullOrZero = (bool) $input->getOption('null-or-zero');
+ $limit = max(1, (int) $input->getOption('limit'));
+ $sleepMs = max(0, (int) $input->getOption('sleep-ms'));
+ $onlyOrderId = $input->getOption('order-id');
+ $onlyOrderId = $onlyOrderId !== null && $onlyOrderId !== '' ? (int) $onlyOrderId : null;
+ $minId = $input->getOption('min-id');
+ $minId = $minId !== null && $minId !== '' ? (int) $minId : null;
+ $maxId = $input->getOption('max-id');
+ $maxId = $maxId !== null && $maxId !== '' ? (int) $maxId : null;
+ $fsRaw = $input->getOption('fulfillment-status');
+ $fsRaw = $fsRaw !== null ? (string) $fsRaw : null;
+ $fulfillmentStatuses = self::parseFulfillmentStatusOption($fsRaw);
+ if ($fulfillmentStatuses === null) {
+ $output->error('--fulfillment-status 格式无效,请传入 1–12 的数字,英文逗号分隔,例如:5,6,3');
+
+ return 1;
+ }
+
+ $adminInfo = self::cliAdminInfo();
+ $adminId = 0;
+
+ $output->writeln('========================================');
+ $output->writeln('批量回填 internal_cost(甘草 CTM_PREVIEW)');
+ $output->writeln('========================================');
+
+ if (!GancaoScmRecipelService::isConfigured()) {
+ $output->error('甘草 SCM 未配置:' . GancaoScmRecipelService::whyNotConfigured());
+
+ return 1;
+ }
+
+ $q = PrescriptionOrder::whereNull('delete_time')->where('prescription_id', '>', 0)->order('id', 'asc');
+
+ if ($fulfillmentStatuses !== []) {
+ $q->whereIn('fulfillment_status', $fulfillmentStatuses);
+ }
+
+ if ($onlyOrderId !== null && $onlyOrderId > 0) {
+ $q->where('id', $onlyOrderId);
+ } else {
+ if (!$force) {
+ if ($nullOrZero) {
+ $q->whereRaw('(internal_cost IS NULL OR internal_cost = 0)');
+ } else {
+ $q->whereNull('internal_cost');
+ }
+ }
+ if ($minId !== null && $minId > 0) {
+ $q->where('id', '>=', $minId);
+ }
+ if ($maxId !== null && $maxId > 0) {
+ $q->where('id', '<=', $maxId);
+ }
+ $q->limit($limit);
+ }
+
+ $rows = $q->field(['id', 'order_no', 'dose_count', 'medication_days', 'internal_cost', 'fulfillment_status'])->select()->toArray();
+ if ($rows === []) {
+ $output->warning('没有符合条件的订单。');
+
+ return 0;
+ }
+
+ $fsLabel = '';
+ if ($fulfillmentStatuses !== []) {
+ $parts = [];
+ foreach ($fulfillmentStatuses as $code) {
+ $parts[] = (string) $code . '=' . PrescriptionOrderLogic::fulfillmentStatusLabel((int) $code);
+ }
+ $fsLabel = ' fulfillment-status=[' . implode(',', $parts) . ']';
+ }
+
+ $output->writeln(sprintf(
+ '待处理 %d 条(dry-run=%s force=%s sleep-ms=%d%s)',
+ count($rows),
+ $dryRun ? 'yes' : 'no',
+ $force ? 'yes' : 'no',
+ $sleepMs,
+ $fsLabel
+ ));
+
+ $ok = 0;
+ $fail = 0;
+ $skipped = 0;
+ $reasons = [];
+
+ foreach ($rows as $row) {
+ $id = (int) ($row['id'] ?? 0);
+ if ($id <= 0) {
+ continue;
+ }
+
+ if (!$force && !$nullOrZero && $row['internal_cost'] !== null && $row['internal_cost'] !== '') {
+ $skipped++;
+ continue;
+ }
+
+ $params = [];
+ $dc = (int) ($row['dose_count'] ?? 0);
+ if ($dc > 0) {
+ $params['dose_count'] = $dc;
+ }
+ $md = $row['medication_days'] ?? null;
+ if ($md !== null && $md !== '' && (int) $md > 0) {
+ $params['medication_days'] = (int) $md;
+ }
+
+ $ret = PrescriptionOrderLogic::previewGancaoRecipel($id, $adminId, $adminInfo, $params);
+ if ($ret === false) {
+ $fail++;
+ $err = PrescriptionOrderLogic::getError();
+ $reasons[$err] = ($reasons[$err] ?? 0) + 1;
+ if ($verbose) {
+ $output->writeln("#{$id} 失败:{$err}");
+ }
+
+ continue;
+ }
+
+ $fee = is_array($ret['fee'] ?? null) ? $ret['fee'] : [];
+ $total = self::totalFeeFromPreview($fee);
+
+ if ($verbose) {
+ $ono = (string) ($row['order_no'] ?? '');
+ $fs = (int) ($row['fulfillment_status'] ?? 0);
+ $fst = PrescriptionOrderLogic::fulfillmentStatusLabel($fs);
+ $output->writeln(sprintf('#%d %s [%s] → internal_cost=%.2f', $id, $ono, $fst, $total));
+ }
+
+ if (!$dryRun) {
+ PrescriptionOrder::where('id', $id)->whereNull('delete_time')->update([
+ 'internal_cost' => $total,
+ ]);
+
+ $log = new PrescriptionOrderLog();
+ $log->prescription_order_id = $id;
+ $log->admin_id = 0;
+ $log->admin_name = 'CLI';
+ $log->action = 'cli_backfill_internal_cost';
+ $log->summary = mb_substr(sprintf('甘草预报价回填 internal_cost=%.2f', $total), 0, 500);
+ $log->create_time = time();
+ try {
+ $log->save();
+ } catch (\Throwable $e) {
+ // 忽略
+ }
+ }
+
+ $ok++;
+ if ($sleepMs > 0 && !$dryRun) {
+ usleep($sleepMs * 1000);
+ }
+ }
+
+ $output->writeln('');
+ $output->writeln(sprintf('完成:成功 %d,失败 %d,跳过 %d', $ok, $fail, $skipped));
+ if ($reasons !== []) {
+ $output->writeln('失败原因统计:');
+ foreach ($reasons as $msg => $cnt) {
+ $output->writeln(' [' . $cnt . 'x] ' . $msg);
+ }
+ }
+
+ return $fail > 0 ? 2 : 0;
+ }
+}
diff --git a/server/app/common/lists/BaseDataLists.php b/server/app/common/lists/BaseDataLists.php
index 3417a32d..4d93ac85 100644
--- a/server/app/common/lists/BaseDataLists.php
+++ b/server/app/common/lists/BaseDataLists.php
@@ -58,6 +58,12 @@ abstract class BaseDataLists implements ListsInterface
public string $export;
+ /**
+ * 管理端列表:在 request 就绪后写入 adminId/adminInfo(见 BaseAdminDataLists)
+ */
+ protected function initAdminIdentity(): void
+ {
+ }
public function __construct()
{
@@ -66,6 +72,8 @@ abstract class BaseDataLists implements ListsInterface
//请求参数设置
$this->request = request();
+ // admin 列表子类在 initExport 中可能触发 count/lists,须先于 initPage/initExport 写入身份
+ $this->initAdminIdentity();
$this->params = $this->request->param();
//分页初始化
diff --git a/server/app/common/service/JsonService.php b/server/app/common/service/JsonService.php
index f15ff542..38a72e0c 100644
--- a/server/app/common/service/JsonService.php
+++ b/server/app/common/service/JsonService.php
@@ -21,6 +21,7 @@ use app\common\enum\ExportEnum;
use app\common\lists\BaseDataLists;
use app\common\lists\ListsExcelInterface;
use app\common\lists\ListsExtendInterface;
+use think\facade\Config;
use think\Response;
use think\response\Json;
use think\exception\HttpResponseException;
@@ -120,12 +121,16 @@ class JsonService
{
//获取导出信息
if ($lists->export == ExportEnum::INFO && $lists instanceof ListsExcelInterface) {
+ self::relaxLimitsForExcelExport();
+
return self::data($lists->excelInfo());
}
//获取导出文件的下载链接
if ($lists->export == ExportEnum::EXPORT && $lists instanceof ListsExcelInterface) {
+ self::relaxLimitsForExcelExport();
$exportDownloadUrl = $lists->createExcel($lists->setExcelFields(), $lists->lists());
+
return self::success('', ['url' => $exportDownloadUrl], 2);
}
@@ -141,4 +146,21 @@ class JsonService
}
return self::success('', $data, 1, 0);
}
+
+ /**
+ * Excel 导出:拉数 + PhpSpreadsheet 易超过默认 max_execution_time=30
+ */
+ private static function relaxLimitsForExcelExport(): void
+ {
+ @set_time_limit(0);
+ $max = Config::get('project.lists.export_max_execution_time', 600);
+ $max = is_numeric($max) ? (int) $max : 600;
+ if ($max > 0) {
+ @ini_set('max_execution_time', (string) $max);
+ }
+ $mem = Config::get('project.lists.export_memory_limit', '512M');
+ if (is_string($mem) && $mem !== '') {
+ @ini_set('memory_limit', $mem);
+ }
+ }
}
\ No newline at end of file
diff --git a/server/config/console.php b/server/config/console.php
index c37e4ac1..8c1f7e4e 100644
--- a/server/config/console.php
+++ b/server/config/console.php
@@ -32,6 +32,8 @@ return [
'qywx:sync-msg-archive' => 'app\\command\\QywxSyncMsgArchive',
// 甘草订单物流路由同步(GET_TASK_ROUTE_LIST)
'gancao:sync-logistics' => 'app\\command\\GancaoSyncLogisticsRoute',
+ // 历史 internal_cost:批量甘草预报价回填(CTM_PREVIEW)
+ 'tcm:backfill-internal-cost' => 'app\\command\\TcmBackfillPrescriptionOrderInternalCost',
// 迁移诊单图片到医生备注表
'migrate:images-to-doctor-note' => 'app\\command\\MigrateImagesToDoctorNote',
// 诊单待办事项:扫描到点的待执行项并向创建人发送企业微信消息
diff --git a/server/config/project.php b/server/config/project.php
index 47f9449a..cde2b3f0 100644
--- a/server/config/project.php
+++ b/server/config/project.php
@@ -47,6 +47,9 @@ return [
'lists' => [
'page_size_max' => 25000,//列表页查询数量限制(列表页每页数量、导出每页数量)
'page_size' => 25, //默认每页数量
+ /** Excel 导出:接口内放宽 PHP 限制(JsonService::relaxLimitsForExcelExport) */
+ 'export_max_execution_time' => 600,
+ 'export_memory_limit' => '512M',
],
// 各种默认图片
diff --git a/server/public/admin/assets/403-BQYUcr_f.js b/server/public/admin/assets/403-s-2fq8XB.js
similarity index 88%
rename from server/public/admin/assets/403-BQYUcr_f.js
rename to server/public/admin/assets/403-s-2fq8XB.js
index 84784a3a..65596d58 100644
--- a/server/public/admin/assets/403-BQYUcr_f.js
+++ b/server/public/admin/assets/403-s-2fq8XB.js
@@ -1 +1 @@
-import r from"./error-BJHvk5qu.js";import{f as p,ak as i,I as m,a as e,aN as s,J as o}from"./@vue/runtime-core-C6bnekPw.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const a="/admin/assets/no_perms-jDxcYpYC.png",n={class:"error404"},W=p({__name:"403",setup(c){return(_,t)=>(i(),m("div",n,[e(r,{code:"403",title:"您的账号权限不足,请联系管理员添加权限!","show-btn":!1},{content:s(()=>[...t[0]||(t[0]=[o("div",{class:"flex justify-center"},[o("img",{class:"w-[150px] h-[150px]",src:a,alt:""})],-1)])]),_:1})]))}});export{W as default};
+import r from"./error-CyjCcUCY.js";import{f as p,ak as i,I as m,a as e,aN as s,J as o}from"./@vue/runtime-core-C6bnekPw.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const a="/admin/assets/no_perms-jDxcYpYC.png",n={class:"error404"},W=p({__name:"403",setup(c){return(_,t)=>(i(),m("div",n,[e(r,{code:"403",title:"您的账号权限不足,请联系管理员添加权限!","show-btn":!1},{content:s(()=>[...t[0]||(t[0]=[o("div",{class:"flex justify-center"},[o("img",{class:"w-[150px] h-[150px]",src:a,alt:""})],-1)])]),_:1})]))}});export{W as default};
diff --git a/server/public/admin/assets/404-hpF_YYxd.js b/server/public/admin/assets/404-CYPI5auS.js
similarity index 87%
rename from server/public/admin/assets/404-hpF_YYxd.js
rename to server/public/admin/assets/404-CYPI5auS.js
index aeb03a3e..15153daf 100644
--- a/server/public/admin/assets/404-hpF_YYxd.js
+++ b/server/public/admin/assets/404-CYPI5auS.js
@@ -1 +1 @@
-import o from"./error-BJHvk5qu.js";import{f as r,ak as t,I as m,a as p}from"./@vue/runtime-core-C6bnekPw.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const i={class:"error404"},T=r({__name:"404",setup(e){return(a,s)=>(t(),m("div",i,[p(o,{code:"404",title:"哎呀,出错了!您访问的页面不存在…"})]))}});export{T as default};
+import o from"./error-CyjCcUCY.js";import{f as r,ak as t,I as m,a as p}from"./@vue/runtime-core-C6bnekPw.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const i={class:"error404"},T=r({__name:"404",setup(e){return(a,s)=>(t(),m("div",i,[p(o,{code:"404",title:"哎呀,出错了!您访问的页面不存在…"})]))}});export{T as default};
diff --git a/server/public/admin/assets/AppointmentRecordPanel-BZnhzLjC.js b/server/public/admin/assets/AppointmentRecordPanel-DH84Bquy.js
similarity index 96%
rename from server/public/admin/assets/AppointmentRecordPanel-BZnhzLjC.js
rename to server/public/admin/assets/AppointmentRecordPanel-DH84Bquy.js
index 5410437a..a279a8d9 100644
--- a/server/public/admin/assets/AppointmentRecordPanel-BZnhzLjC.js
+++ b/server/public/admin/assets/AppointmentRecordPanel-DH84Bquy.js
@@ -1 +1 @@
-import{M as T,N as z,T as C,L as D}from"./element-plus-0wC3naml.js";import{c as B}from"./doctor-6V0qM7Ks.js";import{m as E,_ as L}from"./index-E47--KT7.js";import{f as P,w as R,ak as m,I as V,aP as A,G as d,aN as n,a as s,O as r,J as c}from"./@vue/runtime-core-C6bnekPw.js";import{Q as l}from"./@vue/shared-mAAVTE9n.js";import{n as w}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const M={class:"appointment-record-panel"},$={class:"cell-stack"},G={class:"font-medium"},J={class:"text-gray-500 text-sm"},O={class:"cell-stack"},Q={class:"text-gray-500 text-sm"},j=P({__name:"AppointmentRecordPanel",props:{diagnosisId:{}},setup(y,{expose:b}){const u=y,_=w(!1),g=w([]),h=w({});function x(t){return t?String(t).length>=8?String(t).slice(0,5):t:""}function k(t){return t==="morning"?"上午":t==="afternoon"?"下午":t==="all"?"全天":t||"—"}function S(t){const o=t.channel_source??t.channels??"";if(o===""||o===null||o===void 0)return"—";const a=String(o),i=h.value[a]||a,p=String(t.channel_source_detail??"").trim();return p!==""?`${i}(${p})`:i}function I(t){return[...t].sort((o,a)=>{const i=String(o.appointment_date||""),p=String(a.appointment_date||"");if(i!==p)return p.localeCompare(i);const f=String(o.appointment_time||""),e=String(a.appointment_time||"");return f!==e?e.localeCompare(f):Number(a.id||0)-Number(o.id||0)})}const N=async()=>{try{const t=await E({type:"channels"}),o=((t==null?void 0:t.channels)||[]).filter(i=>i.status!==0),a={};for(const i of o)i.value!=null&&(a[String(i.value)]=i.name||String(i.value));h.value=a}catch{h.value={}}},v=async()=>{if(u.diagnosisId){_.value=!0;try{await N();const t=await B({patient_id:u.diagnosisId,diag_scope_relax:1,page_no:1,page_size:500}),o=(t==null?void 0:t.lists)||[];g.value=I(o)}catch(t){console.error(t),g.value=[]}finally{_.value=!1}}};return R(()=>u.diagnosisId,()=>{v()},{immediate:!0}),b({refresh:v}),(t,o)=>{const a=z,i=C,p=T,f=D;return m(),V("div",M,[A((m(),d(p,{data:g.value,border:"",stripe:"","empty-text":"暂无挂号记录"},{default:n(()=>[s(a,{label:"ID",prop:"id",width:"72",align:"center"}),s(a,{label:"状态",width:"100",align:"center"},{default:n(({row:e})=>[s(i,{type:e.status===1?"success":e.status===2?"info":e.status===3?"primary":"danger",size:"small",effect:"light"},{default:n(()=>[r(l(e.status_desc||"—"),1)]),_:2},1032,["type"])]),_:1}),s(a,{label:"患者(挂号人)","min-width":"150"},{default:n(({row:e})=>[c("div",$,[c("span",G,l(e.patient_name||"—"),1),c("span",J,l(e.patient_phone||""),1)])]),_:1}),s(a,{label:"挂号医生",prop:"doctor_name",width:"110","show-overflow-tooltip":""}),s(a,{label:"挂号助理",width:"110","show-overflow-tooltip":""},{default:n(({row:e})=>[r(l(e.assistant_name||"—"),1)]),_:1}),s(a,{label:"预约时间","min-width":"130"},{default:n(({row:e})=>[c("div",O,[c("span",null,l(e.appointment_date||"—"),1),c("span",Q,l(x(e.appointment_time)),1)])]),_:1}),s(a,{label:"时段",width:"80",align:"center"},{default:n(({row:e})=>[r(l(k(e.period)),1)]),_:1}),s(a,{label:"类型",width:"100","show-overflow-tooltip":""},{default:n(({row:e})=>[r(l(e.appointment_type_desc||"—"),1)]),_:1}),s(a,{label:"渠道",width:"110","show-overflow-tooltip":""},{default:n(({row:e})=>[r(l(S(e)),1)]),_:1}),s(a,{label:"确认诊单",width:"92",align:"center"},{default:n(({row:e})=>[e.diagnosis_confirmed?(m(),d(i,{key:0,type:"success",size:"small",effect:"plain"},{default:n(()=>[...o[0]||(o[0]=[r("已确认",-1)])]),_:1})):(m(),d(i,{key:1,type:"warning",size:"small",effect:"plain"},{default:n(()=>[...o[1]||(o[1]=[r("未确认",-1)])]),_:1}))]),_:1}),s(a,{label:"开方",width:"80",align:"center"},{default:n(({row:e})=>[e.has_prescription?(m(),d(i,{key:0,type:"success",size:"small",effect:"plain"},{default:n(()=>[...o[2]||(o[2]=[r("已开方",-1)])]),_:1})):(m(),d(i,{key:1,type:"info",size:"small",effect:"plain"},{default:n(()=>[...o[3]||(o[3]=[r("未开方",-1)])]),_:1}))]),_:1}),s(a,{label:"备注",prop:"remark","min-width":"100","show-overflow-tooltip":""}),s(a,{label:"创建时间",width:"165",prop:"create_time"})]),_:1},8,["data"])),[[f,_.value]])])}}}),Ct=L(j,[["__scopeId","data-v-4de87dfa"]]);export{Ct as default};
+import{M as T,N as z,T as C,L as D}from"./element-plus-DFTWCWyi.js";import{a as B}from"./doctor-ul0r578d.js";import{m as E,_ as L}from"./index-DBREMm_z.js";import{f as P,w as R,ak as m,I as V,aP as A,G as d,aN as n,a as s,O as r,J as c}from"./@vue/runtime-core-C6bnekPw.js";import{Q as l}from"./@vue/shared-mAAVTE9n.js";import{n as w}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const M={class:"appointment-record-panel"},$={class:"cell-stack"},G={class:"font-medium"},J={class:"text-gray-500 text-sm"},O={class:"cell-stack"},Q={class:"text-gray-500 text-sm"},j=P({__name:"AppointmentRecordPanel",props:{diagnosisId:{}},setup(y,{expose:b}){const u=y,_=w(!1),g=w([]),h=w({});function x(t){return t?String(t).length>=8?String(t).slice(0,5):t:""}function k(t){return t==="morning"?"上午":t==="afternoon"?"下午":t==="all"?"全天":t||"—"}function S(t){const o=t.channel_source??t.channels??"";if(o===""||o===null||o===void 0)return"—";const a=String(o),i=h.value[a]||a,p=String(t.channel_source_detail??"").trim();return p!==""?`${i}(${p})`:i}function I(t){return[...t].sort((o,a)=>{const i=String(o.appointment_date||""),p=String(a.appointment_date||"");if(i!==p)return p.localeCompare(i);const f=String(o.appointment_time||""),e=String(a.appointment_time||"");return f!==e?e.localeCompare(f):Number(a.id||0)-Number(o.id||0)})}const N=async()=>{try{const t=await E({type:"channels"}),o=((t==null?void 0:t.channels)||[]).filter(i=>i.status!==0),a={};for(const i of o)i.value!=null&&(a[String(i.value)]=i.name||String(i.value));h.value=a}catch{h.value={}}},v=async()=>{if(u.diagnosisId){_.value=!0;try{await N();const t=await B({patient_id:u.diagnosisId,diag_scope_relax:1,page_no:1,page_size:500}),o=(t==null?void 0:t.lists)||[];g.value=I(o)}catch(t){console.error(t),g.value=[]}finally{_.value=!1}}};return R(()=>u.diagnosisId,()=>{v()},{immediate:!0}),b({refresh:v}),(t,o)=>{const a=z,i=C,p=T,f=D;return m(),V("div",M,[A((m(),d(p,{data:g.value,border:"",stripe:"","empty-text":"暂无挂号记录"},{default:n(()=>[s(a,{label:"ID",prop:"id",width:"72",align:"center"}),s(a,{label:"状态",width:"100",align:"center"},{default:n(({row:e})=>[s(i,{type:e.status===1?"success":e.status===2?"info":e.status===3?"primary":"danger",size:"small",effect:"light"},{default:n(()=>[r(l(e.status_desc||"—"),1)]),_:2},1032,["type"])]),_:1}),s(a,{label:"患者(挂号人)","min-width":"150"},{default:n(({row:e})=>[c("div",$,[c("span",G,l(e.patient_name||"—"),1),c("span",J,l(e.patient_phone||""),1)])]),_:1}),s(a,{label:"挂号医生",prop:"doctor_name",width:"110","show-overflow-tooltip":""}),s(a,{label:"挂号助理",width:"110","show-overflow-tooltip":""},{default:n(({row:e})=>[r(l(e.assistant_name||"—"),1)]),_:1}),s(a,{label:"预约时间","min-width":"130"},{default:n(({row:e})=>[c("div",O,[c("span",null,l(e.appointment_date||"—"),1),c("span",Q,l(x(e.appointment_time)),1)])]),_:1}),s(a,{label:"时段",width:"80",align:"center"},{default:n(({row:e})=>[r(l(k(e.period)),1)]),_:1}),s(a,{label:"类型",width:"100","show-overflow-tooltip":""},{default:n(({row:e})=>[r(l(e.appointment_type_desc||"—"),1)]),_:1}),s(a,{label:"渠道",width:"110","show-overflow-tooltip":""},{default:n(({row:e})=>[r(l(S(e)),1)]),_:1}),s(a,{label:"确认诊单",width:"92",align:"center"},{default:n(({row:e})=>[e.diagnosis_confirmed?(m(),d(i,{key:0,type:"success",size:"small",effect:"plain"},{default:n(()=>[...o[0]||(o[0]=[r("已确认",-1)])]),_:1})):(m(),d(i,{key:1,type:"warning",size:"small",effect:"plain"},{default:n(()=>[...o[1]||(o[1]=[r("未确认",-1)])]),_:1}))]),_:1}),s(a,{label:"开方",width:"80",align:"center"},{default:n(({row:e})=>[e.has_prescription?(m(),d(i,{key:0,type:"success",size:"small",effect:"plain"},{default:n(()=>[...o[2]||(o[2]=[r("已开方",-1)])]),_:1})):(m(),d(i,{key:1,type:"info",size:"small",effect:"plain"},{default:n(()=>[...o[3]||(o[3]=[r("未开方",-1)])]),_:1}))]),_:1}),s(a,{label:"备注",prop:"remark","min-width":"100","show-overflow-tooltip":""}),s(a,{label:"创建时间",width:"165",prop:"create_time"})]),_:1},8,["data"])),[[f,_.value]])])}}}),Ct=L(j,[["__scopeId","data-v-4de87dfa"]]);export{Ct as default};
diff --git a/server/public/admin/assets/AssignLogPanel-B0ohl4pV.js b/server/public/admin/assets/AssignLogPanel-B0ohl4pV.js
deleted file mode 100644
index 16623f07..00000000
--- a/server/public/admin/assets/AssignLogPanel-B0ohl4pV.js
+++ /dev/null
@@ -1 +0,0 @@
-import{M as x,N as y,r as I,d as $,L as C}from"./element-plus-0wC3naml.js";import{W as D}from"./@element-plus/icons-vue-HOEUG8sr.js";import{$ as L}from"./tcm-SLIwsL8z.js";import{f as T,w as P,ak as g,I as A,aP as E,G as k,aN as n,a,O as m,J as B}from"./@vue/runtime-core-C6bnekPw.js";import{Q as p}from"./@vue/shared-mAAVTE9n.js";import{y as F,n as b}from"./@vue/reactivity-DiY1c2vO.js";import{_ as M}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const V={class:"assign-log-panel"},K=T({__name:"AssignLogPanel",props:{diagnosisId:{}},setup(h,{expose:w}){const c=h,d=b(!1),_=b([]);function v(o){const e=o.related_po_creator_name;if(e!=null&&String(e).trim()!=="")return String(e);const t=Number(o.related_po_creator_id);return Number.isFinite(t)&&t>0?`ID:${t}`:"—"}function N(o){const e=o.related_po_create_time_text;if(e!=null&&String(e).trim()!=="")return String(e);const t=Number(o.related_po_create_time);if(!Number.isFinite(t)||t<=0)return"—";const i=new Date(t*1e3);if(Number.isNaN(i.getTime()))return"—";const r=s=>String(s).padStart(2,"0");return`${i.getFullYear()}-${r(i.getMonth()+1)}-${r(i.getDate())} ${r(i.getHours())}:${r(i.getMinutes())}:${r(i.getSeconds())}`}function u(o,e){const t=e==="from"?"from_assistant_name":"to_assistant_name",i=e==="from"?"from_assistant_id":"to_assistant_id",r=o[t];if(r!=null&&String(r).trim()!==""&&String(r)!=="—")return String(r);const s=Number(o[i]);return Number.isFinite(s)&&s>0?`ID:${s}`:"—"}const f=async()=>{if(c.diagnosisId){d.value=!0;try{const o=await L({id:c.diagnosisId}),e=Array.isArray(o)?o:[];_.value=e}catch(o){console.error(o),_.value=[]}finally{d.value=!1}}};return P(()=>c.diagnosisId,()=>{f()},{immediate:!0}),w({refresh:f}),(o,e)=>{const t=y,i=$,r=I,s=x,S=C;return g(),A("div",V,[E((g(),k(s,{data:_.value,border:"",stripe:"","empty-text":"暂无指派记录"},{default:n(()=>[a(t,{label:"操作时间",width:"175",prop:"create_time_text"}),a(t,{label:"原医助","min-width":"120"},{default:n(({row:l})=>[m(p(u(l,"from")),1)]),_:1}),a(t,{label:"新医助","min-width":"120"},{default:n(({row:l})=>[m(p(u(l,"to")),1)]),_:1}),a(t,{label:"快照·业务单创建人","min-width":"130","show-overflow-tooltip":""},{default:n(({row:l})=>[m(p(v(l)),1)]),_:1}),a(t,{label:"快照·业务单创建时间",width:"190"},{header:n(()=>[e[0]||(e[0]=B("span",null,"快照·业务单创建时间",-1)),a(r,{placement:"top",content:"related_po_create_time:触发本次操作的处方业务订单 create_time;与原文助一致时表示医助创建订单时间"},{default:n(()=>[a(i,{class:"assign-log-col-hint"},{default:n(()=>[a(F(D))]),_:1})]),_:1})]),default:n(({row:l})=>[m(p(N(l)),1)]),_:1}),a(t,{label:"操作人",width:"110",prop:"operator_name"}),a(t,{label:"操作账号",width:"120",prop:"operator_account","show-overflow-tooltip":""}),a(t,{label:"IP",width:"130",prop:"ip","show-overflow-tooltip":""})]),_:1},8,["data"])),[[S,d.value]])])}}}),yt=M(K,[["__scopeId","data-v-5465d5eb"]]);export{yt as default};
diff --git a/server/public/admin/assets/AssignLogPanel-B1RENXkE.js b/server/public/admin/assets/AssignLogPanel-B1RENXkE.js
new file mode 100644
index 00000000..b72091d9
--- /dev/null
+++ b/server/public/admin/assets/AssignLogPanel-B1RENXkE.js
@@ -0,0 +1 @@
+import{M as x,N as y,r as I,d as C,L as $}from"./element-plus-DFTWCWyi.js";import{W as D}from"./@element-plus/icons-vue-HOEUG8sr.js";import{a0 as L}from"./tcm-BcqaE0lo.js";import{f as T,w as P,ak as g,I as A,aP as E,G as k,aN as n,a,O as m,J as B}from"./@vue/runtime-core-C6bnekPw.js";import{Q as p}from"./@vue/shared-mAAVTE9n.js";import{y as F,n as b}from"./@vue/reactivity-DiY1c2vO.js";import{_ as M}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const V={class:"assign-log-panel"},K=T({__name:"AssignLogPanel",props:{diagnosisId:{}},setup(h,{expose:w}){const c=h,d=b(!1),_=b([]);function v(o){const e=o.related_po_creator_name;if(e!=null&&String(e).trim()!=="")return String(e);const t=Number(o.related_po_creator_id);return Number.isFinite(t)&&t>0?`ID:${t}`:"—"}function N(o){const e=o.related_po_create_time_text;if(e!=null&&String(e).trim()!=="")return String(e);const t=Number(o.related_po_create_time);if(!Number.isFinite(t)||t<=0)return"—";const i=new Date(t*1e3);if(Number.isNaN(i.getTime()))return"—";const r=s=>String(s).padStart(2,"0");return`${i.getFullYear()}-${r(i.getMonth()+1)}-${r(i.getDate())} ${r(i.getHours())}:${r(i.getMinutes())}:${r(i.getSeconds())}`}function u(o,e){const t=e==="from"?"from_assistant_name":"to_assistant_name",i=e==="from"?"from_assistant_id":"to_assistant_id",r=o[t];if(r!=null&&String(r).trim()!==""&&String(r)!=="—")return String(r);const s=Number(o[i]);return Number.isFinite(s)&&s>0?`ID:${s}`:"—"}const f=async()=>{if(c.diagnosisId){d.value=!0;try{const o=await L({id:c.diagnosisId}),e=Array.isArray(o)?o:[];_.value=e}catch(o){console.error(o),_.value=[]}finally{d.value=!1}}};return P(()=>c.diagnosisId,()=>{f()},{immediate:!0}),w({refresh:f}),(o,e)=>{const t=y,i=C,r=I,s=x,S=$;return g(),A("div",V,[E((g(),k(s,{data:_.value,border:"",stripe:"","empty-text":"暂无指派记录"},{default:n(()=>[a(t,{label:"操作时间",width:"175",prop:"create_time_text"}),a(t,{label:"原医助","min-width":"120"},{default:n(({row:l})=>[m(p(u(l,"from")),1)]),_:1}),a(t,{label:"新医助","min-width":"120"},{default:n(({row:l})=>[m(p(u(l,"to")),1)]),_:1}),a(t,{label:"快照·业务单创建人","min-width":"130","show-overflow-tooltip":""},{default:n(({row:l})=>[m(p(v(l)),1)]),_:1}),a(t,{label:"快照·业务单创建时间",width:"190"},{header:n(()=>[e[0]||(e[0]=B("span",null,"快照·业务单创建时间",-1)),a(r,{placement:"top",content:"related_po_create_time:触发本次操作的处方业务订单 create_time;与原文助一致时表示医助创建订单时间"},{default:n(()=>[a(i,{class:"assign-log-col-hint"},{default:n(()=>[a(F(D))]),_:1})]),_:1})]),default:n(({row:l})=>[m(p(N(l)),1)]),_:1}),a(t,{label:"操作人",width:"110",prop:"operator_name"}),a(t,{label:"操作账号",width:"120",prop:"operator_account","show-overflow-tooltip":""}),a(t,{label:"IP",width:"130",prop:"ip","show-overflow-tooltip":""})]),_:1},8,["data"])),[[S,d.value]])])}}}),yt=M(K,[["__scopeId","data-v-5465d5eb"]]);export{yt as default};
diff --git a/server/public/admin/assets/AssistantWatchCallDialog-LeKEiefN.js b/server/public/admin/assets/AssistantWatchCallDialog-BRyYQCK0.js
similarity index 94%
rename from server/public/admin/assets/AssistantWatchCallDialog-LeKEiefN.js
rename to server/public/admin/assets/AssistantWatchCallDialog-BRyYQCK0.js
index 74f76402..9d0ecb6e 100644
--- a/server/public/admin/assets/AssistantWatchCallDialog-LeKEiefN.js
+++ b/server/public/admin/assets/AssistantWatchCallDialog-BRyYQCK0.js
@@ -1 +1 @@
-import{i as b,V as D}from"./element-plus-0wC3naml.js";import{q as O}from"./@vue/runtime-dom-DDAG46FW.js";import{T as d}from"./trtc-sdk-v5-D4DbeRqz.js";import{a0 as S}from"./tcm-SLIwsL8z.js";import{f as x,w as W,ak as y,G as P,aN as E,I as _,H as U,aP as $,J as h,a as j,O as H,A as Y}from"./@vue/runtime-core-C6bnekPw.js";import{Q as q}from"./@vue/shared-mAAVTE9n.js";import{n as v}from"./@vue/reactivity-DiY1c2vO.js";import{_ as G}from"./index-E47--KT7.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const J={key:0,class:"watch-state"},K={key:1,class:"watch-state watch-error"},Q=x({__name:"AssistantWatchCallDialog",props:{modelValue:{type:Boolean},diagnosisId:{}},emits:["update:modelValue","closed"],setup(A,{emit:R}){const c=A,w=R,I=Y({get:()=>c.modelValue,set:e=>w("update:modelValue",e)}),s=v(null),l=v(!1),i=v(""),p=v("旁观视频通话"),n=new Map;let o=null,f=0;function g(e,t){return`${e}\0${String(t)}`}function N(e){return e.startsWith("patient_")?"患者":e.startsWith("doctor_")?"医护":e}async function V(e){if(!o||!s.value||e.streamType!==d.TYPE.STREAM_TYPE_MAIN)return;const t=g(e.userId,e.streamType);if(n.has(t))return;const a=document.createElement("div");a.className="watch-tile";const r=document.createElement("div");r.className="watch-tile-cap",r.textContent=N(e.userId);const m=document.createElement("div");m.className="watch-tile-view",a.appendChild(r),a.appendChild(m),s.value.appendChild(a),n.set(t,{wrap:a,userId:e.userId,streamType:e.streamType});try{await o.startRemoteVideo({userId:e.userId,streamType:e.streamType,view:m})}catch(M){console.warn("[AssistantWatchCall] startRemoteVideo",M)}}async function T(e){if(!o)return;const t=g(e.userId,e.streamType),a=n.get(t);if(a){try{await o.stopRemoteVideo({userId:e.userId,streamType:e.streamType})}catch{}a.wrap.remove(),n.delete(t)}}function C(){o&&(o.on(d.EVENT.REMOTE_VIDEO_AVAILABLE,V),o.on(d.EVENT.REMOTE_VIDEO_UNAVAILABLE,T))}function k(){o&&(o.off(d.EVENT.REMOTE_VIDEO_AVAILABLE,V),o.off(d.EVENT.REMOTE_VIDEO_UNAVAILABLE,T))}async function u(){if(k(),o){for(const[,e]of n){try{await o.stopRemoteVideo({userId:e.userId,streamType:e.streamType})}catch{}e.wrap.remove()}n.clear(),s.value&&(s.value.innerHTML="");try{await o.exitRoom()}catch{}try{o.destroy()}catch{}o=null}else n.clear(),s.value&&(s.value.innerHTML="")}async function L(){const e=++f;if(await u(),!c.diagnosisId){i.value="诊单无效";return}l.value=!0,i.value="",p.value="旁观视频通话";try{const t=await S({diagnosis_id:c.diagnosisId});if(e!==f)return;t.patientName&&(p.value=`旁观视频通话 · ${t.patientName}`),o=d.create(),C();const a={sdkAppId:t.sdkAppId,userId:t.userId,userSig:t.userSig,autoReceiveAudio:!0,autoReceiveVideo:!0,...t.roomId!=null&&t.roomId>0?{roomId:t.roomId}:{strRoomId:t.strRoomId}};if(!(t.roomId!=null&&t.roomId>0)&&!t.strRoomId)throw new Error("缺少房间号");if(await o.enterRoom(a),e!==f){await u();return}l.value=!1}catch(t){l.value=!1;let a="进入房间失败";if(typeof t=="string")a=t;else if(t&&typeof t=="object"){const r=t;r.msg?a=String(r.msg):r.message&&(a=String(r.message))}i.value=a,await u()}}function B(){u(),l.value=!1,i.value="",p.value="旁观视频通话",w("closed")}return W(()=>[c.modelValue,c.diagnosisId],([e,t])=>{if(!e){f++,u();return}t>0&&L()}),(e,t)=>{const a=b,r=D;return y(),P(r,{modelValue:I.value,"onUpdate:modelValue":t[1]||(t[1]=m=>I.value=m),title:p.value,width:"760px","destroy-on-close":"","append-to-body":"","close-on-click-modal":!1,class:"assistant-watch-call-dialog",onClosed:B},{footer:E(()=>[t[3]||(t[3]=h("span",{class:"watch-hint"},"仅观看,不会开启摄像头与麦克风",-1)),j(a,{type:"primary",onClick:t[0]||(t[0]=m=>I.value=!1)},{default:E(()=>[...t[2]||(t[2]=[H("离开",-1)])]),_:1})]),default:E(()=>[l.value?(y(),_("div",J,"正在连接房间…")):i.value?(y(),_("div",K,q(i.value),1)):U("",!0),$(h("div",{ref_key:"gridRef",ref:s,class:"watch-grid"},null,512),[[O,!l.value&&!i.value]])]),_:1},8,["modelValue","title"])}}}),Ot=G(Q,[["__scopeId","data-v-7aff665d"]]);export{Ot as default};
+import{i as b,V as D}from"./element-plus-DFTWCWyi.js";import{q as O}from"./@vue/runtime-dom-DDAG46FW.js";import{T as d}from"./trtc-sdk-v5-D4DbeRqz.js";import{a1 as S}from"./tcm-BcqaE0lo.js";import{f as x,w as W,ak as y,G as P,aN as E,I as _,H as U,aP as $,J as h,a as j,O as H,A as Y}from"./@vue/runtime-core-C6bnekPw.js";import{Q as q}from"./@vue/shared-mAAVTE9n.js";import{n as v}from"./@vue/reactivity-DiY1c2vO.js";import{_ as G}from"./index-DBREMm_z.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const J={key:0,class:"watch-state"},K={key:1,class:"watch-state watch-error"},Q=x({__name:"AssistantWatchCallDialog",props:{modelValue:{type:Boolean},diagnosisId:{}},emits:["update:modelValue","closed"],setup(A,{emit:R}){const c=A,w=R,I=Y({get:()=>c.modelValue,set:e=>w("update:modelValue",e)}),s=v(null),l=v(!1),i=v(""),p=v("旁观视频通话"),n=new Map;let o=null,f=0;function g(e,t){return`${e}\0${String(t)}`}function N(e){return e.startsWith("patient_")?"患者":e.startsWith("doctor_")?"医护":e}async function V(e){if(!o||!s.value||e.streamType!==d.TYPE.STREAM_TYPE_MAIN)return;const t=g(e.userId,e.streamType);if(n.has(t))return;const a=document.createElement("div");a.className="watch-tile";const r=document.createElement("div");r.className="watch-tile-cap",r.textContent=N(e.userId);const m=document.createElement("div");m.className="watch-tile-view",a.appendChild(r),a.appendChild(m),s.value.appendChild(a),n.set(t,{wrap:a,userId:e.userId,streamType:e.streamType});try{await o.startRemoteVideo({userId:e.userId,streamType:e.streamType,view:m})}catch(M){console.warn("[AssistantWatchCall] startRemoteVideo",M)}}async function T(e){if(!o)return;const t=g(e.userId,e.streamType),a=n.get(t);if(a){try{await o.stopRemoteVideo({userId:e.userId,streamType:e.streamType})}catch{}a.wrap.remove(),n.delete(t)}}function C(){o&&(o.on(d.EVENT.REMOTE_VIDEO_AVAILABLE,V),o.on(d.EVENT.REMOTE_VIDEO_UNAVAILABLE,T))}function k(){o&&(o.off(d.EVENT.REMOTE_VIDEO_AVAILABLE,V),o.off(d.EVENT.REMOTE_VIDEO_UNAVAILABLE,T))}async function u(){if(k(),o){for(const[,e]of n){try{await o.stopRemoteVideo({userId:e.userId,streamType:e.streamType})}catch{}e.wrap.remove()}n.clear(),s.value&&(s.value.innerHTML="");try{await o.exitRoom()}catch{}try{o.destroy()}catch{}o=null}else n.clear(),s.value&&(s.value.innerHTML="")}async function L(){const e=++f;if(await u(),!c.diagnosisId){i.value="诊单无效";return}l.value=!0,i.value="",p.value="旁观视频通话";try{const t=await S({diagnosis_id:c.diagnosisId});if(e!==f)return;t.patientName&&(p.value=`旁观视频通话 · ${t.patientName}`),o=d.create(),C();const a={sdkAppId:t.sdkAppId,userId:t.userId,userSig:t.userSig,autoReceiveAudio:!0,autoReceiveVideo:!0,...t.roomId!=null&&t.roomId>0?{roomId:t.roomId}:{strRoomId:t.strRoomId}};if(!(t.roomId!=null&&t.roomId>0)&&!t.strRoomId)throw new Error("缺少房间号");if(await o.enterRoom(a),e!==f){await u();return}l.value=!1}catch(t){l.value=!1;let a="进入房间失败";if(typeof t=="string")a=t;else if(t&&typeof t=="object"){const r=t;r.msg?a=String(r.msg):r.message&&(a=String(r.message))}i.value=a,await u()}}function B(){u(),l.value=!1,i.value="",p.value="旁观视频通话",w("closed")}return W(()=>[c.modelValue,c.diagnosisId],([e,t])=>{if(!e){f++,u();return}t>0&&L()}),(e,t)=>{const a=b,r=D;return y(),P(r,{modelValue:I.value,"onUpdate:modelValue":t[1]||(t[1]=m=>I.value=m),title:p.value,width:"760px","destroy-on-close":"","append-to-body":"","close-on-click-modal":!1,class:"assistant-watch-call-dialog",onClosed:B},{footer:E(()=>[t[3]||(t[3]=h("span",{class:"watch-hint"},"仅观看,不会开启摄像头与麦克风",-1)),j(a,{type:"primary",onClick:t[0]||(t[0]=m=>I.value=!1)},{default:E(()=>[...t[2]||(t[2]=[H("离开",-1)])]),_:1})]),default:E(()=>[l.value?(y(),_("div",J,"正在连接房间…")):i.value?(y(),_("div",K,q(i.value),1)):U("",!0),$(h("div",{ref_key:"gridRef",ref:s,class:"watch-grid"},null,512),[[O,!l.value&&!i.value]])]),_:1},8,["modelValue","title"])}}}),Ot=G(Q,[["__scopeId","data-v-7aff665d"]]);export{Ot as default};
diff --git a/server/public/admin/assets/BloodRecordList-D6MglPEn.js b/server/public/admin/assets/BloodRecordList-C0paVrWv.js
similarity index 89%
rename from server/public/admin/assets/BloodRecordList-D6MglPEn.js
rename to server/public/admin/assets/BloodRecordList-C0paVrWv.js
index 7c554505..49787796 100644
--- a/server/public/admin/assets/BloodRecordList-D6MglPEn.js
+++ b/server/public/admin/assets/BloodRecordList-C0paVrWv.js
@@ -1 +1 @@
-import{i as ee,Q as le,P as te,a2 as oe,J as ae,N as se,M as re,D as ne,B as de,ai as ie,h as ue,C as me,V as pe}from"./element-plus-0wC3naml.js";import{a1 as _e,a2 as ce,a3 as fe,K as ge,L as be}from"./tcm-SLIwsL8z.js";import{i as k,_ as ye}from"./index-E47--KT7.js";import{i as ve}from"./echarts-CNLwa9wG.js";import{f as Ve,b as he,d as ke,w as Y,ak as V,I as M,J as u,G as F,aN as r,O as p,H as O,a as l,A as we,n as Ie}from"./@vue/runtime-core-C6bnekPw.js";import{n as _,a as A,y as s}from"./@vue/reactivity-DiY1c2vO.js";import{Q as w}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";const xe={class:"blood-record-list"},Ce={class:"mb-4"},Ee={class:"mb-4"},De={key:0},Te={key:1},Ne=5,Ue=Ve({__name:"BloodRecordList",props:{diagnosisId:{type:Number,default:0},patientId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},setup(T){const n=T,P=_([]),c=_(!1),N=_(!1),$=we(()=>a.value.id?"编辑记录":"添加记录"),f=_(7),g=_(null),m=_({dates:[],fasting:[],postprandial_2h:[],other:[]}),U=_();let b=null,R=0;const a=_({id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",record_time:"",fasting_blood_sugar:0,postprandial_blood_sugar:0,other_blood_sugar:0,systolic_pressure:0,diastolic_pressure:0,western_medicine:"",insulin:"",remark:""});function B(o){if(o==null||o==="")return"-";const e=Number(String(o).trim());return!Number.isFinite(e)||e===0?"-":String(e.toFixed(2).replace(/\.?0+$/,""))}const h=async()=>{if(!(!n.diagnosisId&&!n.patientId))try{const o={diagnosis_id:n.diagnosisId,patient_id:n.patientId};f.value===0&&g.value?(o.start_date=Math.floor(g.value[0].getTime()/1e3),o.end_date=Math.floor(g.value[1].getTime()/1e3)):o.days=f.value;const e=await _e(o);m.value=e,L()}catch(o){console.error("获取趋势图数据失败:",o)}},G=()=>{f.value!==0&&(g.value=null),h()},L=()=>{Ie(()=>{setTimeout(()=>{if(!U.value)return;const o=U.value;if(o.clientWidth===0||o.clientHeight===0){RL(),100));return}R=0,b&&b.dispose(),b=ve(o);const e=(H,i)=>{const C=new Map;return H.forEach(d=>{C.set(d.date,d.value)}),i.map(d=>C.get(d)||null)},y=e(m.value.fasting,m.value.dates),v=e(m.value.postprandial_2h,m.value.dates),S=e(m.value.other,m.value.dates),x={tooltip:{trigger:"axis",axisPointer:{type:"cross"}},legend:{data:["空腹血糖","餐后2小时血糖","其他血糖"]},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:m.value.dates},yAxis:{type:"value",name:"血糖值 (mmol/L)"},series:[{name:"空腹血糖",type:"line",data:y,smooth:!0,connectNulls:!0},{name:"餐后2小时血糖",type:"line",data:v,smooth:!0,connectNulls:!0},{name:"其他血糖",type:"line",data:S,smooth:!0,connectNulls:!0}]};b.setOption(x),b.resize()},100)})},I=async()=>{if(!(!n.diagnosisId&&!n.patientId))try{const o=await ce({diagnosis_id:n.diagnosisId,patient_id:n.patientId});P.value=o}catch(o){console.error("获取记录失败:",o)}},J=()=>{a.value={id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",record_time:"",fasting_blood_sugar:0,postprandial_blood_sugar:0,other_blood_sugar:0,systolic_pressure:0,diastolic_pressure:0,western_medicine:"",insulin:"",remark:""},c.value=!0},Q=o=>{a.value={...o,fasting_blood_sugar:parseFloat(o.fasting_blood_sugar)||0,postprandial_blood_sugar:parseFloat(o.postprandial_blood_sugar)||0,other_blood_sugar:parseFloat(o.other_blood_sugar)||0,systolic_pressure:parseInt(o.systolic_pressure)||0,diastolic_pressure:parseInt(o.diastolic_pressure)||0},c.value=!0},W=o=>{a.value.other_blood_sugar=o.replace(/[^\d.]/g,"")},q=async o=>{await k.confirm("确定要删除这条记录吗?");try{await fe({id:o.id}),k.msgSuccess("删除成功"),I()}catch(e){console.error("删除失败:",e)}},z=async()=>{if(!a.value.record_date){k.msgWarning("请选择记录日期");return}N.value=!0;try{a.value.id?(await ge(a.value),k.msgSuccess("编辑成功")):(await be(a.value),k.msgSuccess("添加成功")),c.value=!1,I(),h()}catch(o){console.error("提交失败:",o)}finally{N.value=!1}};return he(()=>{setTimeout(()=>{I(),h()},500)}),ke(()=>{b&&b.dispose()}),Y(()=>[n.diagnosisId,n.patientId],()=>{I(),h()}),Y(()=>n.diagnosisId,o=>{o&&setTimeout(()=>{L()},500)}),(o,e)=>{const y=ee,v=le,S=te,x=oe,H=ae,i=se,C=re,d=de,K=ie,E=ue,D=me,X=ne,j=pe;return V(),M("div",xe,[u("div",Ce,[T.readOnly?O("",!0):(V(),F(y,{key:0,type:"primary",onClick:J},{default:r(()=>[...e[14]||(e[14]=[p("添加记录",-1)])]),_:1})),l(S,{modelValue:s(f),"onUpdate:modelValue":e[0]||(e[0]=t=>A(f)?f.value=t:null),onChange:G,class:"ml-2",style:{width:"150px"}},{default:r(()=>[l(v,{label:"最近7天",value:7}),l(v,{label:"最近30天",value:30}),l(v,{label:"最近90天",value:90}),l(v,{label:"最近一年",value:365}),l(v,{label:"自定义",value:0})]),_:1},8,["modelValue"]),s(f)===0?(V(),F(x,{key:1,modelValue:s(g),"onUpdate:modelValue":e[1]||(e[1]=t=>A(g)?g.value=t:null),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",onChange:h,class:"ml-2",style:{width:"300px"}},null,8,["modelValue"])):O("",!0)]),u("div",Ee,[l(H,null,{header:r(()=>[...e[15]||(e[15]=[u("div",{class:"card-header"},[u("span",null,"血糖趋势图")],-1)])]),default:r(()=>[u("div",{ref_key:"chartRef",ref:U,style:{width:"100%",height:"400px"}},null,512)]),_:1})]),l(C,{data:s(P),border:"",style:{width:"100%"}},{default:r(()=>[l(i,{prop:"record_date",label:"记录日期",width:"120"}),l(i,{prop:"record_time",label:"记录时间",width:"100"}),l(i,{label:"空腹血糖(mmol/L)",width:"120"},{default:r(({row:t})=>[p(w(B(t.fasting_blood_sugar)),1)]),_:1}),l(i,{label:"餐后2小时血糖(mmol/L)",width:"150"},{default:r(({row:t})=>[p(w(B(t.postprandial_blood_sugar)),1)]),_:1}),l(i,{label:"其他血糖(mmol/L)",width:"120"},{default:r(({row:t})=>[p(w(B(t.other_blood_sugar)),1)]),_:1}),l(i,{label:"血压(mmHg)",width:"150"},{default:r(({row:t})=>[t.systolic_pressure&&t.diastolic_pressure?(V(),M("span",De,w(t.systolic_pressure)+"/"+w(t.diastolic_pressure),1)):(V(),M("span",Te,"-"))]),_:1}),l(i,{prop:"western_medicine",label:"西药","show-overflow-tooltip":""}),l(i,{prop:"insulin",label:"胰岛素","show-overflow-tooltip":""}),l(i,{prop:"remark",label:"备注","show-overflow-tooltip":""}),T.readOnly?O("",!0):(V(),F(i,{key:0,label:"操作",width:"150",fixed:"right"},{default:r(({row:t})=>[l(y,{link:"",type:"primary",onClick:Z=>Q(t)},{default:r(()=>[...e[16]||(e[16]=[p("编辑",-1)])]),_:1},8,["onClick"]),l(y,{link:"",type:"danger",onClick:Z=>q(t)},{default:r(()=>[...e[17]||(e[17]=[p("删除",-1)])]),_:1},8,["onClick"])]),_:1}))]),_:1},8,["data"]),l(j,{modelValue:s(c),"onUpdate:modelValue":e[13]||(e[13]=t=>A(c)?c.value=t:null),title:s($),width:"600px"},{footer:r(()=>[l(y,{onClick:e[12]||(e[12]=t=>c.value=!1)},{default:r(()=>[...e[23]||(e[23]=[p("取消",-1)])]),_:1}),l(y,{type:"primary",onClick:z,loading:s(N)},{default:r(()=>[...e[24]||(e[24]=[p("确定",-1)])]),_:1},8,["loading"])]),default:r(()=>[l(X,{model:s(a),"label-width":"120px"},{default:r(()=>[l(d,{label:"记录日期",required:""},{default:r(()=>[l(x,{modelValue:s(a).record_date,"onUpdate:modelValue":e[2]||(e[2]=t=>s(a).record_date=t),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),l(d,{label:"记录时间"},{default:r(()=>[l(K,{modelValue:s(a).record_time,"onUpdate:modelValue":e[3]||(e[3]=t=>s(a).record_time=t),placeholder:"选择时间",format:"HH:mm","value-format":"HH:mm",class:"w-full"},null,8,["modelValue"])]),_:1}),l(d,{label:"空腹血糖"},{default:r(()=>[l(E,{modelValue:s(a).fasting_blood_sugar,"onUpdate:modelValue":e[4]||(e[4]=t=>s(a).fasting_blood_sugar=t),precision:2,step:.1,min:0,max:50,placeholder:"请输入空腹血糖"},null,8,["modelValue"]),e[18]||(e[18]=u("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),l(d,{label:"餐后2小时血糖"},{default:r(()=>[l(E,{modelValue:s(a).postprandial_blood_sugar,"onUpdate:modelValue":e[5]||(e[5]=t=>s(a).postprandial_blood_sugar=t),precision:2,step:.1,min:0,max:50,placeholder:"请输入餐后2小时血糖"},null,8,["modelValue"]),e[19]||(e[19]=u("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),l(d,{label:"其他血糖"},{default:r(()=>[l(D,{modelValue:s(a).other_blood_sugar,"onUpdate:modelValue":e[6]||(e[6]=t=>s(a).other_blood_sugar=t),placeholder:"请输入其他血糖",type:"number",maxlength:"10",onInput:W,style:{width:"200px"}},null,8,["modelValue"]),e[20]||(e[20]=u("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),l(d,{label:"收缩压(高压)"},{default:r(()=>[l(E,{modelValue:s(a).systolic_pressure,"onUpdate:modelValue":e[7]||(e[7]=t=>s(a).systolic_pressure=t),min:0,max:300,placeholder:"请输入收缩压"},null,8,["modelValue"]),e[21]||(e[21]=u("span",{class:"ml-2"},"mmHg",-1))]),_:1}),l(d,{label:"舒张压(低压)"},{default:r(()=>[l(E,{modelValue:s(a).diastolic_pressure,"onUpdate:modelValue":e[8]||(e[8]=t=>s(a).diastolic_pressure=t),min:0,max:200,placeholder:"请输入舒张压"},null,8,["modelValue"]),e[22]||(e[22]=u("span",{class:"ml-2"},"mmHg",-1))]),_:1}),l(d,{label:"西药"},{default:r(()=>[l(D,{modelValue:s(a).western_medicine,"onUpdate:modelValue":e[9]||(e[9]=t=>s(a).western_medicine=t),placeholder:"请输入西药"},null,8,["modelValue"])]),_:1}),l(d,{label:"胰岛素"},{default:r(()=>[l(D,{modelValue:s(a).insulin,"onUpdate:modelValue":e[10]||(e[10]=t=>s(a).insulin=t),placeholder:"请输入胰岛素"},null,8,["modelValue"])]),_:1}),l(d,{label:"备注"},{default:r(()=>[l(D,{modelValue:s(a).remark,"onUpdate:modelValue":e[11]||(e[11]=t=>s(a).remark=t),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),gl=ye(Ue,[["__scopeId","data-v-3a187401"]]);export{gl as default};
+import{i as ee,Q as le,P as te,a2 as oe,J as ae,N as se,M as re,D as ne,B as de,a3 as ie,h as ue,C as me,V as pe}from"./element-plus-DFTWCWyi.js";import{a2 as _e,a3 as ce,a4 as fe,L as ge,M as be}from"./tcm-BcqaE0lo.js";import{i as k,_ as ye}from"./index-DBREMm_z.js";import{i as ve}from"./echarts-CNLwa9wG.js";import{f as Ve,b as he,d as ke,w as Y,ak as V,I as H,J as u,G as F,aN as r,O as p,H as O,a as l,A as we,n as Ie}from"./@vue/runtime-core-C6bnekPw.js";import{n as _,a as A,y as s}from"./@vue/reactivity-DiY1c2vO.js";import{Q as w}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";const xe={class:"blood-record-list"},Ce={class:"mb-4"},Ee={class:"mb-4"},De={key:0},Te={key:1},Ne=5,Ue=Ve({__name:"BloodRecordList",props:{diagnosisId:{type:Number,default:0},patientId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},setup(T){const n=T,P=_([]),c=_(!1),N=_(!1),$=we(()=>a.value.id?"编辑记录":"添加记录"),f=_(7),g=_(null),m=_({dates:[],fasting:[],postprandial_2h:[],other:[]}),U=_();let b=null,R=0;const a=_({id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",record_time:"",fasting_blood_sugar:0,postprandial_blood_sugar:0,other_blood_sugar:0,systolic_pressure:0,diastolic_pressure:0,western_medicine:"",insulin:"",remark:""});function B(o){if(o==null||o==="")return"-";const e=Number(String(o).trim());return!Number.isFinite(e)||e===0?"-":String(e.toFixed(2).replace(/\.?0+$/,""))}const h=async()=>{if(!(!n.diagnosisId&&!n.patientId))try{const o={diagnosis_id:n.diagnosisId,patient_id:n.patientId};f.value===0&&g.value?(o.start_date=Math.floor(g.value[0].getTime()/1e3),o.end_date=Math.floor(g.value[1].getTime()/1e3)):o.days=f.value;const e=await _e(o);m.value=e,L()}catch(o){console.error("获取趋势图数据失败:",o)}},G=()=>{f.value!==0&&(g.value=null),h()},L=()=>{Ie(()=>{setTimeout(()=>{if(!U.value)return;const o=U.value;if(o.clientWidth===0||o.clientHeight===0){RL(),100));return}R=0,b&&b.dispose(),b=ve(o);const e=(S,i)=>{const C=new Map;return S.forEach(d=>{C.set(d.date,d.value)}),i.map(d=>C.get(d)||null)},y=e(m.value.fasting,m.value.dates),v=e(m.value.postprandial_2h,m.value.dates),M=e(m.value.other,m.value.dates),x={tooltip:{trigger:"axis",axisPointer:{type:"cross"}},legend:{data:["空腹血糖","餐后2小时血糖","其他血糖"]},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:m.value.dates},yAxis:{type:"value",name:"血糖值 (mmol/L)"},series:[{name:"空腹血糖",type:"line",data:y,smooth:!0,connectNulls:!0},{name:"餐后2小时血糖",type:"line",data:v,smooth:!0,connectNulls:!0},{name:"其他血糖",type:"line",data:M,smooth:!0,connectNulls:!0}]};b.setOption(x),b.resize()},100)})},I=async()=>{if(!(!n.diagnosisId&&!n.patientId))try{const o=await ce({diagnosis_id:n.diagnosisId,patient_id:n.patientId});P.value=o}catch(o){console.error("获取记录失败:",o)}},J=()=>{a.value={id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",record_time:"",fasting_blood_sugar:0,postprandial_blood_sugar:0,other_blood_sugar:0,systolic_pressure:0,diastolic_pressure:0,western_medicine:"",insulin:"",remark:""},c.value=!0},Q=o=>{a.value={...o,fasting_blood_sugar:parseFloat(o.fasting_blood_sugar)||0,postprandial_blood_sugar:parseFloat(o.postprandial_blood_sugar)||0,other_blood_sugar:parseFloat(o.other_blood_sugar)||0,systolic_pressure:parseInt(o.systolic_pressure)||0,diastolic_pressure:parseInt(o.diastolic_pressure)||0},c.value=!0},W=o=>{a.value.other_blood_sugar=o.replace(/[^\d.]/g,"")},q=async o=>{await k.confirm("确定要删除这条记录吗?");try{await fe({id:o.id}),k.msgSuccess("删除成功"),I()}catch(e){console.error("删除失败:",e)}},z=async()=>{if(!a.value.record_date){k.msgWarning("请选择记录日期");return}N.value=!0;try{a.value.id?(await ge(a.value),k.msgSuccess("编辑成功")):(await be(a.value),k.msgSuccess("添加成功")),c.value=!1,I(),h()}catch(o){console.error("提交失败:",o)}finally{N.value=!1}};return he(()=>{setTimeout(()=>{I(),h()},500)}),ke(()=>{b&&b.dispose()}),Y(()=>[n.diagnosisId,n.patientId],()=>{I(),h()}),Y(()=>n.diagnosisId,o=>{o&&setTimeout(()=>{L()},500)}),(o,e)=>{const y=ee,v=le,M=te,x=oe,S=ae,i=se,C=re,d=de,X=ie,E=ue,D=me,j=ne,K=pe;return V(),H("div",xe,[u("div",Ce,[T.readOnly?O("",!0):(V(),F(y,{key:0,type:"primary",onClick:J},{default:r(()=>[...e[14]||(e[14]=[p("添加记录",-1)])]),_:1})),l(M,{modelValue:s(f),"onUpdate:modelValue":e[0]||(e[0]=t=>A(f)?f.value=t:null),onChange:G,class:"ml-2",style:{width:"150px"}},{default:r(()=>[l(v,{label:"最近7天",value:7}),l(v,{label:"最近30天",value:30}),l(v,{label:"最近90天",value:90}),l(v,{label:"最近一年",value:365}),l(v,{label:"自定义",value:0})]),_:1},8,["modelValue"]),s(f)===0?(V(),F(x,{key:1,modelValue:s(g),"onUpdate:modelValue":e[1]||(e[1]=t=>A(g)?g.value=t:null),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",onChange:h,class:"ml-2",style:{width:"300px"}},null,8,["modelValue"])):O("",!0)]),u("div",Ee,[l(S,null,{header:r(()=>[...e[15]||(e[15]=[u("div",{class:"card-header"},[u("span",null,"血糖趋势图")],-1)])]),default:r(()=>[u("div",{ref_key:"chartRef",ref:U,style:{width:"100%",height:"400px"}},null,512)]),_:1})]),l(C,{data:s(P),border:"",style:{width:"100%"}},{default:r(()=>[l(i,{prop:"record_date",label:"记录日期",width:"120"}),l(i,{prop:"record_time",label:"记录时间",width:"100"}),l(i,{label:"空腹血糖(mmol/L)",width:"120"},{default:r(({row:t})=>[p(w(B(t.fasting_blood_sugar)),1)]),_:1}),l(i,{label:"餐后2小时血糖(mmol/L)",width:"150"},{default:r(({row:t})=>[p(w(B(t.postprandial_blood_sugar)),1)]),_:1}),l(i,{label:"其他血糖(mmol/L)",width:"120"},{default:r(({row:t})=>[p(w(B(t.other_blood_sugar)),1)]),_:1}),l(i,{label:"血压(mmHg)",width:"150"},{default:r(({row:t})=>[t.systolic_pressure&&t.diastolic_pressure?(V(),H("span",De,w(t.systolic_pressure)+"/"+w(t.diastolic_pressure),1)):(V(),H("span",Te,"-"))]),_:1}),l(i,{prop:"western_medicine",label:"西药","show-overflow-tooltip":""}),l(i,{prop:"insulin",label:"胰岛素","show-overflow-tooltip":""}),l(i,{prop:"remark",label:"备注","show-overflow-tooltip":""}),T.readOnly?O("",!0):(V(),F(i,{key:0,label:"操作",width:"150",fixed:"right"},{default:r(({row:t})=>[l(y,{link:"",type:"primary",onClick:Z=>Q(t)},{default:r(()=>[...e[16]||(e[16]=[p("编辑",-1)])]),_:1},8,["onClick"]),l(y,{link:"",type:"danger",onClick:Z=>q(t)},{default:r(()=>[...e[17]||(e[17]=[p("删除",-1)])]),_:1},8,["onClick"])]),_:1}))]),_:1},8,["data"]),l(K,{modelValue:s(c),"onUpdate:modelValue":e[13]||(e[13]=t=>A(c)?c.value=t:null),title:s($),width:"600px"},{footer:r(()=>[l(y,{onClick:e[12]||(e[12]=t=>c.value=!1)},{default:r(()=>[...e[23]||(e[23]=[p("取消",-1)])]),_:1}),l(y,{type:"primary",onClick:z,loading:s(N)},{default:r(()=>[...e[24]||(e[24]=[p("确定",-1)])]),_:1},8,["loading"])]),default:r(()=>[l(j,{model:s(a),"label-width":"120px"},{default:r(()=>[l(d,{label:"记录日期",required:""},{default:r(()=>[l(x,{modelValue:s(a).record_date,"onUpdate:modelValue":e[2]||(e[2]=t=>s(a).record_date=t),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),l(d,{label:"记录时间"},{default:r(()=>[l(X,{modelValue:s(a).record_time,"onUpdate:modelValue":e[3]||(e[3]=t=>s(a).record_time=t),placeholder:"选择时间",format:"HH:mm","value-format":"HH:mm",class:"w-full"},null,8,["modelValue"])]),_:1}),l(d,{label:"空腹血糖"},{default:r(()=>[l(E,{modelValue:s(a).fasting_blood_sugar,"onUpdate:modelValue":e[4]||(e[4]=t=>s(a).fasting_blood_sugar=t),precision:2,step:.1,min:0,max:50,placeholder:"请输入空腹血糖"},null,8,["modelValue"]),e[18]||(e[18]=u("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),l(d,{label:"餐后2小时血糖"},{default:r(()=>[l(E,{modelValue:s(a).postprandial_blood_sugar,"onUpdate:modelValue":e[5]||(e[5]=t=>s(a).postprandial_blood_sugar=t),precision:2,step:.1,min:0,max:50,placeholder:"请输入餐后2小时血糖"},null,8,["modelValue"]),e[19]||(e[19]=u("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),l(d,{label:"其他血糖"},{default:r(()=>[l(D,{modelValue:s(a).other_blood_sugar,"onUpdate:modelValue":e[6]||(e[6]=t=>s(a).other_blood_sugar=t),placeholder:"请输入其他血糖",type:"number",maxlength:"10",onInput:W,style:{width:"200px"}},null,8,["modelValue"]),e[20]||(e[20]=u("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),l(d,{label:"收缩压(高压)"},{default:r(()=>[l(E,{modelValue:s(a).systolic_pressure,"onUpdate:modelValue":e[7]||(e[7]=t=>s(a).systolic_pressure=t),min:0,max:300,placeholder:"请输入收缩压"},null,8,["modelValue"]),e[21]||(e[21]=u("span",{class:"ml-2"},"mmHg",-1))]),_:1}),l(d,{label:"舒张压(低压)"},{default:r(()=>[l(E,{modelValue:s(a).diastolic_pressure,"onUpdate:modelValue":e[8]||(e[8]=t=>s(a).diastolic_pressure=t),min:0,max:200,placeholder:"请输入舒张压"},null,8,["modelValue"]),e[22]||(e[22]=u("span",{class:"ml-2"},"mmHg",-1))]),_:1}),l(d,{label:"西药"},{default:r(()=>[l(D,{modelValue:s(a).western_medicine,"onUpdate:modelValue":e[9]||(e[9]=t=>s(a).western_medicine=t),placeholder:"请输入西药"},null,8,["modelValue"])]),_:1}),l(d,{label:"胰岛素"},{default:r(()=>[l(D,{modelValue:s(a).insulin,"onUpdate:modelValue":e[10]||(e[10]=t=>s(a).insulin=t),placeholder:"请输入胰岛素"},null,8,["modelValue"])]),_:1}),l(d,{label:"备注"},{default:r(()=>[l(D,{modelValue:s(a).remark,"onUpdate:modelValue":e[11]||(e[11]=t=>s(a).remark=t),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),gl=ye(Ue,[["__scopeId","data-v-3a187401"]]);export{gl as default};
diff --git a/server/public/admin/assets/CallRecordPanel-CLexkvxf.js b/server/public/admin/assets/CallRecordPanel-D709DmJk.js
similarity index 91%
rename from server/public/admin/assets/CallRecordPanel-CLexkvxf.js
rename to server/public/admin/assets/CallRecordPanel-D709DmJk.js
index 770c714a..5130fedc 100644
--- a/server/public/admin/assets/CallRecordPanel-CLexkvxf.js
+++ b/server/public/admin/assets/CallRecordPanel-D709DmJk.js
@@ -1 +1 @@
-import{i as T,M as O,N as P,L as V}from"./element-plus-0wC3naml.js";import L from"./RecordingPlaybackBlock-z0PPBYke.js";import{U as h}from"./index-Ci4dcEQh.js";import{i as d,_ as z}from"./index-E47--KT7.js";import{a4 as D,a5 as w,a6 as G}from"./tcm-SLIwsL8z.js";import{f as M,aG as H,w as J,ak as c,I as _,a as r,aN as l,O as m,H as v,aP as Q,G as x,J as y}from"./@vue/runtime-core-C6bnekPw.js";import{Q as n}from"./@vue/shared-mAAVTE9n.js";import{n as k}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./RecordingVideoPlayer-DWV7klHs.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const j={class:"call-record-panel"},q={key:0,class:"call-record-toolbar"},A={class:"call-record-empty"},F={class:"call-record-empty__desc"},K={key:0,class:"text-primary"},W={key:1,class:"text-gray-400"},X=M({__name:"CallRecordPanel",props:{diagnosisId:{},readOnly:{type:Boolean,default:!1}},setup(p,{expose:R}){const s=p,f=k(!1),g=k([]),U=H("toolbarUploadRef"),u=async()=>{if(s.diagnosisId){f.value=!0;try{g.value=await D({diagnosis_id:s.diagnosisId})||[]}catch(a){console.error(a),g.value=[]}finally{f.value=!1}}};J(()=>s.diagnosisId,()=>{u()},{immediate:!0}),R({refresh:u});function C(a){return{1:"进行中",2:"已结束",3:"未接听",4:"已取消"}[a]??"—"}async function I(a){const e=b(a);if(!e){d.msgError("上传成功但未返回视频地址");return}try{const t=await G({diagnosis_id:s.diagnosisId});await w({diagnosis_id:s.diagnosisId,call_record_id:Number((t==null?void 0:t.id)||0),file_url:e}),d.msgSuccess("视频回放上传成功"),await u()}catch(t){d.msgError((t==null?void 0:t.message)||"写入回放失败")}}async function S(a,e){const t=b(e);if(!t){d.msgError("上传成功但未返回视频地址");return}try{await w({diagnosis_id:s.diagnosisId,call_record_id:Number(a.id||0),file_url:t}),d.msgSuccess("视频回放上传成功"),await u()}catch(o){d.msgError((o==null?void 0:o.message)||"写入回放失败")}}function b(a){var e,t;return String(((e=a==null?void 0:a.data)==null?void 0:e.uri)||((t=a==null?void 0:a.data)==null?void 0:t.url)||"").trim()}return(a,e)=>{const t=T,o=P,E=O,N=V;return c(),_("div",j,[p.readOnly?v("",!0):(c(),_("div",q,[r(h,{ref_key:"toolbarUploadRef",ref:U,type:"video",direct:"",multiple:!1,limit:1,"show-progress":!0,onSuccess:I},{default:l(()=>[r(t,{type:"primary"},{default:l(()=>[...e[0]||(e[0]=[m("上传视频",-1)])]),_:1})]),_:1},512)])),Q((c(),x(E,{data:g.value,border:"",stripe:""},{empty:l(()=>[y("div",A,[e[1]||(e[1]=y("div",{class:"call-record-empty__title"},"暂无通话记录",-1)),y("div",F,n(p.readOnly?"暂无录制回放数据。":"现在可以直接点击上方“上传视频”。系统会自动生成一条默认通话记录来承载回放。"),1)])]),default:l(()=>[r(o,{label:"录制回放","min-width":"320"},{default:l(({row:i})=>[r(L,{"record-id":i.id,urls:i.recording_urls_list},null,8,["record-id","urls"])]),_:1}),r(o,{label:"开始时间",width:"170",prop:"start_time_text"}),r(o,{label:"结束时间",width:"170",prop:"end_time_text"}),r(o,{label:"通话类型",width:"100"},{default:l(({row:i})=>[m(n(i.call_type===1?"语音":"视频"),1)]),_:1}),r(o,{label:"房间号",width:"180"},{default:l(({row:i})=>[i.room_id?(c(),_("span",K,n(i.room_id),1)):(c(),_("span",W,"—"))]),_:1}),r(o,{label:"时长",width:"110",prop:"duration_text"}),r(o,{label:"状态",width:"90"},{default:l(({row:i})=>[m(n(C(i.status)),1)]),_:1}),r(o,{label:"录制",width:"100"},{default:l(({row:i})=>[m(n(i.recording_status_text||"—"),1)]),_:1}),p.readOnly?v("",!0):(c(),x(o,{key:0,label:"上传回放",width:"180"},{default:l(({row:i})=>[r(h,{type:"video",direct:"",multiple:!1,limit:1,"show-progress":!0,onSuccess:B=>S(i,B)},{default:l(()=>[r(t,{type:"primary",plain:"",size:"small"},{default:l(()=>[...e[2]||(e[2]=[m("上传视频",-1)])]),_:1})]),_:1},8,["onSuccess"])]),_:1}))]),_:1},8,["data"])),[[N,f.value]])])}}}),Mt=z(X,[["__scopeId","data-v-78d5c9e4"]]);export{Mt as default};
+import{i as T,M as O,N as P,L as V}from"./element-plus-DFTWCWyi.js";import L from"./RecordingPlaybackBlock-COxLgEiR.js";import{U as h}from"./index-CRoZWY-W.js";import{i as d,_ as z}from"./index-DBREMm_z.js";import{a5 as D,a6 as w,a7 as G}from"./tcm-BcqaE0lo.js";import{f as M,aG as H,w as J,ak as c,I as _,a as r,aN as l,O as m,H as v,aP as Q,G as x,J as y}from"./@vue/runtime-core-C6bnekPw.js";import{Q as n}from"./@vue/shared-mAAVTE9n.js";import{n as k}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./RecordingVideoPlayer-DJ_BP9x7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const j={class:"call-record-panel"},q={key:0,class:"call-record-toolbar"},A={class:"call-record-empty"},F={class:"call-record-empty__desc"},K={key:0,class:"text-primary"},W={key:1,class:"text-gray-400"},X=M({__name:"CallRecordPanel",props:{diagnosisId:{},readOnly:{type:Boolean,default:!1}},setup(p,{expose:R}){const s=p,f=k(!1),g=k([]),U=H("toolbarUploadRef"),u=async()=>{if(s.diagnosisId){f.value=!0;try{g.value=await D({diagnosis_id:s.diagnosisId})||[]}catch(a){console.error(a),g.value=[]}finally{f.value=!1}}};J(()=>s.diagnosisId,()=>{u()},{immediate:!0}),R({refresh:u});function C(a){return{1:"进行中",2:"已结束",3:"未接听",4:"已取消"}[a]??"—"}async function I(a){const e=b(a);if(!e){d.msgError("上传成功但未返回视频地址");return}try{const t=await G({diagnosis_id:s.diagnosisId});await w({diagnosis_id:s.diagnosisId,call_record_id:Number((t==null?void 0:t.id)||0),file_url:e}),d.msgSuccess("视频回放上传成功"),await u()}catch(t){d.msgError((t==null?void 0:t.message)||"写入回放失败")}}async function S(a,e){const t=b(e);if(!t){d.msgError("上传成功但未返回视频地址");return}try{await w({diagnosis_id:s.diagnosisId,call_record_id:Number(a.id||0),file_url:t}),d.msgSuccess("视频回放上传成功"),await u()}catch(o){d.msgError((o==null?void 0:o.message)||"写入回放失败")}}function b(a){var e,t;return String(((e=a==null?void 0:a.data)==null?void 0:e.uri)||((t=a==null?void 0:a.data)==null?void 0:t.url)||"").trim()}return(a,e)=>{const t=T,o=P,E=O,N=V;return c(),_("div",j,[p.readOnly?v("",!0):(c(),_("div",q,[r(h,{ref_key:"toolbarUploadRef",ref:U,type:"video",direct:"",multiple:!1,limit:1,"show-progress":!0,onSuccess:I},{default:l(()=>[r(t,{type:"primary"},{default:l(()=>[...e[0]||(e[0]=[m("上传视频",-1)])]),_:1})]),_:1},512)])),Q((c(),x(E,{data:g.value,border:"",stripe:""},{empty:l(()=>[y("div",A,[e[1]||(e[1]=y("div",{class:"call-record-empty__title"},"暂无通话记录",-1)),y("div",F,n(p.readOnly?"暂无录制回放数据。":"现在可以直接点击上方“上传视频”。系统会自动生成一条默认通话记录来承载回放。"),1)])]),default:l(()=>[r(o,{label:"录制回放","min-width":"320"},{default:l(({row:i})=>[r(L,{"record-id":i.id,urls:i.recording_urls_list},null,8,["record-id","urls"])]),_:1}),r(o,{label:"开始时间",width:"170",prop:"start_time_text"}),r(o,{label:"结束时间",width:"170",prop:"end_time_text"}),r(o,{label:"通话类型",width:"100"},{default:l(({row:i})=>[m(n(i.call_type===1?"语音":"视频"),1)]),_:1}),r(o,{label:"房间号",width:"180"},{default:l(({row:i})=>[i.room_id?(c(),_("span",K,n(i.room_id),1)):(c(),_("span",W,"—"))]),_:1}),r(o,{label:"时长",width:"110",prop:"duration_text"}),r(o,{label:"状态",width:"90"},{default:l(({row:i})=>[m(n(C(i.status)),1)]),_:1}),r(o,{label:"录制",width:"100"},{default:l(({row:i})=>[m(n(i.recording_status_text||"—"),1)]),_:1}),p.readOnly?v("",!0):(c(),x(o,{key:0,label:"上传回放",width:"180"},{default:l(({row:i})=>[r(h,{type:"video",direct:"",multiple:!1,limit:1,"show-progress":!0,onSuccess:B=>S(i,B)},{default:l(()=>[r(t,{type:"primary",plain:"",size:"small"},{default:l(()=>[...e[2]||(e[2]=[m("上传视频",-1)])]),_:1})]),_:1},8,["onSuccess"])]),_:1}))]),_:1},8,["data"])),[[N,f.value]])])}}}),Mt=z(X,[["__scopeId","data-v-78d5c9e4"]]);export{Mt as default};
diff --git a/server/public/admin/assets/CaseRecordList-CsyYkwG-.js b/server/public/admin/assets/CaseRecordList-X66GZZcg.js
similarity index 96%
rename from server/public/admin/assets/CaseRecordList-CsyYkwG-.js
rename to server/public/admin/assets/CaseRecordList-X66GZZcg.js
index d8207c88..10c9a555 100644
--- a/server/public/admin/assets/CaseRecordList-CsyYkwG-.js
+++ b/server/public/admin/assets/CaseRecordList-X66GZZcg.js
@@ -1 +1 @@
-import{i as L,L as T,N as V,T as D,M as z,R as M}from"./element-plus-0wC3naml.js";import{a7 as O}from"./tcm-SLIwsL8z.js";import{f as P,b as F,w as R,ak as a,I as n,a as i,aN as s,O as m,H as w,aP as j,G as g,F as A,J as H}from"./@vue/runtime-core-C6bnekPw.js";import{y as d,n as k}from"./@vue/reactivity-DiY1c2vO.js";import{Q as c}from"./@vue/shared-mAAVTE9n.js";import{_ as G}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const J={class:"case-record-list"},Q={key:0,class:"mb-3 flex justify-end"},Y={key:0},q={key:1,class:"text-gray-400"},K={class:"void-detail text-xs text-gray-500 mt-1"},U=P({__name:"CaseRecordList",props:{diagnosisId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},emits:["view","openPrescription"],setup(y,{expose:x,emit:C}){const _=y,h=C,l=k([]),p=k(!1),u=async()=>{if(_.diagnosisId){p.value=!0;try{const e=await O({diagnosis_id:_.diagnosisId});l.value=Array.isArray(e)?e:[]}catch(e){console.error("获取病历记录失败:",e),l.value=[]}finally{p.value=!1}}},S=e=>{if(!e)return"";const t=new Date(e*1e3);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`},$=e=>{h("view",e)},B=()=>{h("openPrescription")};return F(()=>{u()}),R(()=>_.diagnosisId,()=>{u()}),x({refresh:u}),(e,t)=>{const b=L,r=V,v=D,E=z,N=M,I=T;return a(),n("div",J,[y.readOnly?w("",!0):(a(),n("div",Q,[i(b,{type:"primary",size:"small",onClick:B},{default:s(()=>[...t[0]||(t[0]=[m("开方",-1)])]),_:1})])),j((a(),g(E,{data:d(l),border:""},{default:s(()=>[i(r,{prop:"prescription_date",label:"就诊日期",width:"120"}),i(r,{prop:"visit_no",label:"门诊号",width:"120"}),i(r,{prop:"clinical_diagnosis",label:"临床诊断","min-width":"160","show-overflow-tooltip":""}),i(r,{label:"处方摘要","min-width":"180"},{default:s(({row:o})=>[o.herbs&&o.herbs.length?(a(),n("span",Y,c(o.herbs.slice(0,3).map(f=>`${f.name}${f.dosage}克`).join("、"))+c(o.herbs.length>3?"...":""),1)):(a(),n("span",q,"—"))]),_:1}),i(r,{prop:"doctor_name",label:"医师",width:"90","show-overflow-tooltip":""}),i(r,{label:"状态",width:"140",align:"center"},{default:s(({row:o})=>[o.void_status===1?(a(),n(A,{key:0},[i(v,{type:"danger",size:"small"},{default:s(()=>[...t[1]||(t[1]=[m("已作废",-1)])]),_:1}),H("div",K,c(o.void_by_name||"—")+" "+c(S(o.void_time)),1)],64)):(a(),g(v,{key:1,type:"success",size:"small"},{default:s(()=>[...t[2]||(t[2]=[m("正常",-1)])]),_:1}))]),_:1}),i(r,{label:"操作",width:"120",fixed:"right"},{default:s(({row:o})=>[i(b,{link:"",type:"primary",size:"small",onClick:f=>$(o)},{default:s(()=>[...t[3]||(t[3]=[m(" 查看 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[I,d(p)]]),!d(p)&&d(l).length===0?(a(),g(N,{key:1,description:"暂无病历记录,开方后会自动显示",class:"mt-4"})):w("",!0)])}}}),zt=G(U,[["__scopeId","data-v-043d2738"]]);export{zt as default};
+import{i as L,L as T,N as V,T as D,M as z,R as M}from"./element-plus-DFTWCWyi.js";import{a8 as O}from"./tcm-BcqaE0lo.js";import{f as P,b as F,w as R,ak as a,I as n,a as i,aN as s,O as m,H as w,aP as j,G as g,F as A,J as H}from"./@vue/runtime-core-C6bnekPw.js";import{y as d,n as k}from"./@vue/reactivity-DiY1c2vO.js";import{Q as c}from"./@vue/shared-mAAVTE9n.js";import{_ as G}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const J={class:"case-record-list"},Q={key:0,class:"mb-3 flex justify-end"},Y={key:0},q={key:1,class:"text-gray-400"},K={class:"void-detail text-xs text-gray-500 mt-1"},U=P({__name:"CaseRecordList",props:{diagnosisId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},emits:["view","openPrescription"],setup(y,{expose:x,emit:C}){const _=y,h=C,l=k([]),p=k(!1),u=async()=>{if(_.diagnosisId){p.value=!0;try{const e=await O({diagnosis_id:_.diagnosisId});l.value=Array.isArray(e)?e:[]}catch(e){console.error("获取病历记录失败:",e),l.value=[]}finally{p.value=!1}}},S=e=>{if(!e)return"";const t=new Date(e*1e3);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`},$=e=>{h("view",e)},B=()=>{h("openPrescription")};return F(()=>{u()}),R(()=>_.diagnosisId,()=>{u()}),x({refresh:u}),(e,t)=>{const b=L,r=V,v=D,E=z,N=M,I=T;return a(),n("div",J,[y.readOnly?w("",!0):(a(),n("div",Q,[i(b,{type:"primary",size:"small",onClick:B},{default:s(()=>[...t[0]||(t[0]=[m("开方",-1)])]),_:1})])),j((a(),g(E,{data:d(l),border:""},{default:s(()=>[i(r,{prop:"prescription_date",label:"就诊日期",width:"120"}),i(r,{prop:"visit_no",label:"门诊号",width:"120"}),i(r,{prop:"clinical_diagnosis",label:"临床诊断","min-width":"160","show-overflow-tooltip":""}),i(r,{label:"处方摘要","min-width":"180"},{default:s(({row:o})=>[o.herbs&&o.herbs.length?(a(),n("span",Y,c(o.herbs.slice(0,3).map(f=>`${f.name}${f.dosage}克`).join("、"))+c(o.herbs.length>3?"...":""),1)):(a(),n("span",q,"—"))]),_:1}),i(r,{prop:"doctor_name",label:"医师",width:"90","show-overflow-tooltip":""}),i(r,{label:"状态",width:"140",align:"center"},{default:s(({row:o})=>[o.void_status===1?(a(),n(A,{key:0},[i(v,{type:"danger",size:"small"},{default:s(()=>[...t[1]||(t[1]=[m("已作废",-1)])]),_:1}),H("div",K,c(o.void_by_name||"—")+" "+c(S(o.void_time)),1)],64)):(a(),g(v,{key:1,type:"success",size:"small"},{default:s(()=>[...t[2]||(t[2]=[m("正常",-1)])]),_:1}))]),_:1}),i(r,{label:"操作",width:"120",fixed:"right"},{default:s(({row:o})=>[i(b,{link:"",type:"primary",size:"small",onClick:f=>$(o)},{default:s(()=>[...t[3]||(t[3]=[m(" 查看 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[I,d(p)]]),!d(p)&&d(l).length===0?(a(),g(N,{key:1,description:"暂无病历记录,开方后会自动显示",class:"mt-4"})):w("",!0)])}}}),zt=G(U,[["__scopeId","data-v-043d2738"]]);export{zt as default};
diff --git a/server/public/admin/assets/DailyMatrix-0DiBlpfB.js b/server/public/admin/assets/DailyMatrix-CZKqLaUg.js
similarity index 96%
rename from server/public/admin/assets/DailyMatrix-0DiBlpfB.js
rename to server/public/admin/assets/DailyMatrix-CZKqLaUg.js
index d3351045..87d9ff9b 100644
--- a/server/public/admin/assets/DailyMatrix-0DiBlpfB.js
+++ b/server/public/admin/assets/DailyMatrix-CZKqLaUg.js
@@ -1,2 +1,2 @@
-import{G as ul,F as dl,i as ml,M as pl,N as fl,r as vl,V as gl,D as _l,B as cl,a2 as bl,ai as yl,h as kl,C as Vl,U as xl,P as wl,Q as Dl,L as Rl,R as Cl}from"./element-plus-0wC3naml.js";import{_ as Sl}from"./picker-DlbAZkDm.js";import{H as Ul}from"./vue-echarts-BNtg2q_G.js";import Tl from"./DiagnosisTodoList-DC7uqd6f.js";import{h as El}from"./perm-YIJpPBOg.js";import{I as Hl,J as Ml,K as Yl,L as Nl,M as Bl,N as Wl,O as hl,P as $l,Q as Al}from"./tcm-SLIwsL8z.js";import{c as Ll,f as Fl,d as Il,e as ql,b as Pl}from"./blood-thresholds-CJ1fqMjh.js";import{i as C,_ as Ol}from"./index-E47--KT7.js";import{f as zl,w as Gl,n as _e,b as Ql,d as Jl,aP as Kl,ak as _,I as y,J as c,a,aN as i,O as v,G as T,H as F,F as I,ap as ce,A as d}from"./@vue/runtime-core-C6bnekPw.js";import{n as g,y as jl}from"./@vue/reactivity-DiY1c2vO.js";import{o as Xl,Q as ie}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./resize-detector-G6vbKCU7.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Zl={class:"daily-matrix"},ea={class:"daily-matrix__toolbar"},la={class:"daily-matrix__toolbar-left"},aa={key:0,class:"daily-matrix__toolbar-right"},ta={key:1,class:"daily-matrix__toolbar-right"},oa=["onClick"],na={class:"daily-matrix__tracking-tooltip"},ia={class:"daily-matrix__tracking-preview"},ra={key:0,class:"daily-matrix__cell-up"},sa={class:"daily-matrix__chart"},ua={key:0,class:"daily-matrix__todo"},da={class:"daily-matrix__tracking-existing"},ma=120,pa=zl({__name:"DailyMatrix",props:{diagnosisId:{},patientId:{},age:{default:void 0},readOnly:{type:Boolean,default:!1},patientName:{default:""}},setup(Ye,{expose:Ne}){const Be=["tcm.diagnosis/dailyRecord"],D=Ye,R=d(()=>Number(D.diagnosisId||0)),q=d(()=>Number(D.patientId||0)),re=d(()=>!!D.readOnly),We=d(()=>D.patientName||""),be=d(()=>El(Be)),S=d(()=>be.value&&!re.value),he=d(()=>be.value),se=g(!1),U=g("7"),B=g(null),P=g([]),O=g([]),z=g([]),G=g([]),E=g(!1),H=g(!1),M=g(!1),Y=g(!1),ue=g(!1),de=g(!1),me=g(!1),pe=g(!1),s=g(K()),m=g(j()),p=g(X()),b=g({note_date:"",existing_content:"",content:""}),$e=d(()=>s.value.id?"编辑血糖血压记录":"新增血糖血压记录"),Ae=d(()=>m.value.id?"编辑饮食记录":"新增饮食记录"),Le=d(()=>p.value.id?"编辑运动记录":"新增运动记录"),Q=d(()=>W(new Date)),N=d(()=>!re.value&&b.value.note_date===Q.value),Fe=d(()=>N.value?"新增/追加跟踪备注":"查看跟踪备注"),ye=g(null),ke=g(0),Ie=[{key:"fasting",label:"空腹血糖"},{key:"postprandial",label:"餐后2h血糖"},{key:"other",label:"其他血糖"},{key:"bp",label:"血压"},{key:"western",label:"西药"},{key:"insulin",label:"胰岛素"},{key:"breakfast",label:"早餐"},{key:"lunch",label:"午餐"},{key:"dinner",label:"晚餐"},{key:"exercise",label:"运动"},{key:"tracking",label:"跟踪备注"}],qe=d(()=>[...Ie]),Pe=d(()=>{const t=$.value.length;if(t<=0||t>7)return 100;const e=Math.max(ke.value-ma-2,0),l=e>0?Math.floor(e/t):100;return Math.max(100,l)});let J=0;function W(t){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function Ve(t){return new Date(`${t}T00:00:00`)}function h(){var t;ke.value=((t=ye.value)==null?void 0:t.clientWidth)||0}function K(t=""){return{id:"",diagnosis_id:R.value,patient_id:q.value,record_date:t,record_time:"",fasting_blood_sugar:0,postprandial_blood_sugar:0,other_blood_sugar:"",systolic_pressure:0,diastolic_pressure:0,western_medicine:"",insulin:"",remark:""}}function j(t=""){return{id:"",diagnosis_id:R.value,patient_id:q.value,record_date:t,breakfast_foods:"",breakfast_images:[],lunch_foods:"",lunch_images:[],dinner_foods:"",dinner_images:[],note:""}}function X(t=""){return{id:"",diagnosis_id:R.value,patient_id:q.value,record_date:t,exercise_type:"",duration:0,intensity:1,images:[],note:""}}function Oe(t){return t.getTime()>Date.now()}function xe(t){if(t==="custom"){const[f,r]=B.value||["",""];return{start:f||"",end:r||""}}const e=t==="7"?7:30,l=new Date;l.setHours(0,0,0,0);const n=new Date(l);return n.setDate(n.getDate()-(e-1)),{start:W(n),end:W(l)}}const we=d(()=>xe(U.value)),$=d(()=>{const{start:t,end:e}=we.value;if(!t||!e)return[];const l=[],n=Ve(e),f=Ve(t).getTime();for(;n.getTime()>=f;)l.push(W(n)),n.setDate(n.getDate()-1);return l}),fe=d(()=>{const t=new Map;for(const e of P.value){const l=String(e.record_date||"");if(!l)continue;t.has(l)||t.set(l,{id:e.id,diagnosis_id:e.diagnosis_id,patient_id:e.patient_id,record_date:l,record_time:e.record_time||"",record_date_ts:e.record_date_ts});const n=t.get(l),f=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin","remark"];for(const r of f)(n[r]===void 0||n[r]===null||n[r]==="")&&e[r]!==void 0&&e[r]!==null&&e[r]!==""&&(n[r]=e[r])}return t}),De=d(()=>{const t=new Map;for(const e of O.value){const l=String(e.record_date||"");!l||t.has(l)||t.set(l,e)}return t}),Re=d(()=>{const t=new Map;for(const e of z.value){const l=String(e.record_date||"");!l||t.has(l)||t.set(l,e)}return t}),Z=d(()=>{const t=new Map;for(const e of G.value){const l=String(e.note_date||"");!l||t.has(l)||t.set(l,e)}return t}),Ce=d(()=>[...$.value].reverse()),ee=d(()=>Ce.value.reduce((t,e)=>{const l=fe.value.get(e);return t.fasting.push(Ue(l==null?void 0:l.fasting_blood_sugar)),t.postprandial.push(Ue(l==null?void 0:l.postprandial_blood_sugar)),t},{fasting:[],postprandial:[]})),ze=d(()=>[...ee.value.fasting,...ee.value.postprandial].some(t=>t!=null)),Ge=d(()=>({tooltip:{trigger:"axis"},legend:{top:0,data:["空腹血糖","餐后血糖"]},grid:{left:24,right:24,top:52,bottom:20,containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:Ce.value.map(t=>Se(t))},yAxis:{type:"value",name:"mmol/L",splitLine:{lineStyle:{color:"#e5e7eb"}}},series:[{name:"空腹血糖",type:"line",smooth:!0,connectNulls:!1,data:ee.value.fasting,symbolSize:7,itemStyle:{color:"#2563eb"},lineStyle:{width:3,color:"#2563eb"}},{name:"餐后血糖",type:"line",smooth:!0,connectNulls:!1,data:ee.value.postprandial,symbolSize:7,itemStyle:{color:"#f97316"},lineStyle:{width:3,color:"#f97316"}}]}));function Se(t){return t.slice(5)}function Ue(t){if(t===""||t==null)return null;const e=Number(t);return Number.isFinite(e)?e:null}function A(t,e){const l=fe.value.get(e),n=De.value.get(e),f=Re.value.get(e),r=Z.value.get(e);switch(t){case"fasting":return{value:(l==null?void 0:l.fasting_blood_sugar)!=null&&l.fasting_blood_sugar!==""?String(l.fasting_blood_sugar):"",isHigh:Pl(l==null?void 0:l.fasting_blood_sugar,D.age),hasRecord:!!l&&l.fasting_blood_sugar!=null&&l.fasting_blood_sugar!==""};case"postprandial":return{value:(l==null?void 0:l.postprandial_blood_sugar)!=null&&l.postprandial_blood_sugar!==""?String(l.postprandial_blood_sugar):"",isHigh:ql(l==null?void 0:l.postprandial_blood_sugar,D.age),hasRecord:!!l&&l.postprandial_blood_sugar!=null&&l.postprandial_blood_sugar!==""};case"other":return{value:(l==null?void 0:l.other_blood_sugar)!=null&&l.other_blood_sugar!==""?String(l.other_blood_sugar):"",isHigh:Il(l==null?void 0:l.other_blood_sugar,D.age),hasRecord:!!l&&l.other_blood_sugar!=null&&l.other_blood_sugar!==""};case"bp":return{value:l&&(l.systolic_pressure||l.diastolic_pressure)?Fl(l):"",isHigh:Ll(l),hasRecord:!!l&&!!(l.systolic_pressure||l.diastolic_pressure)};case"western":return{value:(l==null?void 0:l.western_medicine)||"",isHigh:!1,hasRecord:!!(l!=null&&l.western_medicine)};case"insulin":return{value:(l==null?void 0:l.insulin)||"",isHigh:!1,hasRecord:!!(l!=null&&l.insulin)};case"breakfast":return{value:n!=null&&n.breakfast||n!=null&&n.breakfast_foods?"✓":"",isHigh:!1,hasRecord:!!(n!=null&&n.breakfast||n!=null&&n.breakfast_foods)};case"lunch":return{value:n!=null&&n.lunch||n!=null&&n.lunch_foods?"✓":"",isHigh:!1,hasRecord:!!(n!=null&&n.lunch||n!=null&&n.lunch_foods)};case"dinner":return{value:n!=null&&n.dinner||n!=null&&n.dinner_foods?"✓":"",isHigh:!1,hasRecord:!!(n!=null&&n.dinner||n!=null&&n.dinner_foods)};case"exercise":return{value:f!=null&&f.duration?`${f.duration}min`:"",isHigh:!1,hasRecord:!!(f!=null&&f.id)};case"tracking":return{value:r!=null&&r.content?Te(r.content):"",isHigh:!1,hasRecord:!!(r!=null&&r.content)};default:return{value:"",isHigh:!1,hasRecord:!1}}}async function k(){if(!R.value){P.value=[],O.value=[],z.value=[],G.value=[];return}const{start:t,end:e}=we.value;if(U.value==="custom"&&(!t||!e))return;const l=++J;se.value=!0;try{const n=await Hl({id:R.value,start_date:t,end_date:e}),f=await Ml({diagnosis_id:R.value});if(l!==J)return;P.value=Array.isArray(n==null?void 0:n.blood_records)?n.blood_records:[],O.value=Array.isArray(n==null?void 0:n.diet_records)?n.diet_records:[],z.value=Array.isArray(n==null?void 0:n.exercise_records)?n.exercise_records:[],G.value=Array.isArray(f)?f.filter(r=>$.value.includes(String((r==null?void 0:r.note_date)||""))):[]}catch{l===J&&(P.value=[],O.value=[],z.value=[],G.value=[])}finally{l===J&&(se.value=!1)}}function Qe(){if(U.value==="custom"&&!B.value){const t=xe("7");B.value=[t.start,t.end]}k(),_e(h)}function Je(){U.value==="custom"&&k()}function le(t){if(!S.value)return;const e=$.value[0]||W(new Date);if(t==="blood"){s.value=K(e),E.value=!0;return}if(t==="diet"){m.value=j(e),H.value=!0;return}if(t==="tracking"){const l=Q.value,n=Z.value.get(l);b.value={note_date:l,existing_content:String((n==null?void 0:n.content)||""),content:""},Y.value=!0;return}p.value=X(e),M.value=!0}function Ke(t,e){if(!S.value)return;if(["fasting","postprandial","other","bp","western","insulin"].includes(t)){const n=fe.value.get(e);s.value=n?{...K(e),...n}:K(e),E.value=!0;return}if(["breakfast","lunch","dinner"].includes(t)){const n=De.value.get(e);m.value=n?{...j(e),...n}:j(e),H.value=!0;return}if(t==="tracking"){const n=Z.value.get(e);if(!n&&e!==Q.value)return;b.value={note_date:e,existing_content:String((n==null?void 0:n.content)||""),content:""},Y.value=!0;return}const l=Re.value.get(e);p.value=l?{...X(e),...l}:X(e),M.value=!0}async function je(){if(!s.value.record_date){C.msgWarning("请选择记录日期");return}ue.value=!0;try{s.value.id?await Yl(s.value):await Nl(s.value),E.value=!1,await k()}finally{ue.value=!1}}async function Xe(){if(!m.value.record_date){C.msgWarning("请选择记录日期");return}de.value=!0;try{m.value.id?await Bl(m.value):await Wl(m.value),H.value=!1,await k()}finally{de.value=!1}}async function Ze(){if(!p.value.record_date){C.msgWarning("请选择记录日期");return}if(!p.value.exercise_type){C.msgWarning("请选择运动类型");return}if(!p.value.duration){C.msgWarning("请输入运动时长");return}me.value=!0;try{p.value.id?await hl(p.value):await $l(p.value),M.value=!1,await k()}finally{me.value=!1}}async function el(){if(!b.value.note_date){C.msgWarning("请选择记录日期");return}if(!N.value){C.msgWarning("仅支持给今天追加跟踪备注");return}const t=b.value.content.trim();if(!t){C.msgWarning("请输入跟踪备注");return}pe.value=!0;try{await Al({diagnosis_id:R.value,tracking_content:t}),Y.value=!1,await k()}finally{pe.value=!1}}function Te(t){return ve(t)[0]||""}function ve(t){return t.split(`
+import{G as ul,F as dl,i as ml,M as pl,N as fl,r as vl,V as gl,D as _l,B as cl,a2 as bl,a3 as yl,h as kl,C as Vl,U as xl,P as wl,Q as Dl,L as Rl,R as Cl}from"./element-plus-DFTWCWyi.js";import{_ as Sl}from"./picker-BCRrEZaA.js";import{H as Ul}from"./vue-echarts-BNtg2q_G.js";import Tl from"./DiagnosisTodoList-CgT2M9eR.js";import{h as El}from"./perm-Bo9eM8XD.js";import{J as Hl,K as Ml,L as Yl,M as Nl,N as Bl,O as Wl,P as hl,Q as $l,R as Al}from"./tcm-BcqaE0lo.js";import{c as Ll,f as Fl,d as Il,e as ql,b as Pl}from"./blood-thresholds-CJ1fqMjh.js";import{i as C,_ as Ol}from"./index-DBREMm_z.js";import{f as zl,w as Gl,n as _e,b as Ql,d as Jl,aP as Kl,ak as _,I as y,J as c,a,aN as i,O as v,G as T,H as F,F as I,ap as ce,A as d}from"./@vue/runtime-core-C6bnekPw.js";import{n as g,y as jl}from"./@vue/reactivity-DiY1c2vO.js";import{o as Xl,Q as ie}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./resize-detector-G6vbKCU7.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Zl={class:"daily-matrix"},ea={class:"daily-matrix__toolbar"},la={class:"daily-matrix__toolbar-left"},aa={key:0,class:"daily-matrix__toolbar-right"},ta={key:1,class:"daily-matrix__toolbar-right"},oa=["onClick"],na={class:"daily-matrix__tracking-tooltip"},ia={class:"daily-matrix__tracking-preview"},ra={key:0,class:"daily-matrix__cell-up"},sa={class:"daily-matrix__chart"},ua={key:0,class:"daily-matrix__todo"},da={class:"daily-matrix__tracking-existing"},ma=120,pa=zl({__name:"DailyMatrix",props:{diagnosisId:{},patientId:{},age:{default:void 0},readOnly:{type:Boolean,default:!1},patientName:{default:""}},setup(Ye,{expose:Ne}){const Be=["tcm.diagnosis/dailyRecord"],D=Ye,R=d(()=>Number(D.diagnosisId||0)),q=d(()=>Number(D.patientId||0)),re=d(()=>!!D.readOnly),We=d(()=>D.patientName||""),be=d(()=>El(Be)),S=d(()=>be.value&&!re.value),he=d(()=>be.value),se=g(!1),U=g("7"),B=g(null),P=g([]),O=g([]),z=g([]),G=g([]),E=g(!1),H=g(!1),M=g(!1),Y=g(!1),ue=g(!1),de=g(!1),me=g(!1),pe=g(!1),s=g(K()),m=g(j()),p=g(X()),b=g({note_date:"",existing_content:"",content:""}),$e=d(()=>s.value.id?"编辑血糖血压记录":"新增血糖血压记录"),Ae=d(()=>m.value.id?"编辑饮食记录":"新增饮食记录"),Le=d(()=>p.value.id?"编辑运动记录":"新增运动记录"),Q=d(()=>W(new Date)),N=d(()=>!re.value&&b.value.note_date===Q.value),Fe=d(()=>N.value?"新增/追加跟踪备注":"查看跟踪备注"),ye=g(null),ke=g(0),Ie=[{key:"fasting",label:"空腹血糖"},{key:"postprandial",label:"餐后2h血糖"},{key:"other",label:"其他血糖"},{key:"bp",label:"血压"},{key:"western",label:"西药"},{key:"insulin",label:"胰岛素"},{key:"breakfast",label:"早餐"},{key:"lunch",label:"午餐"},{key:"dinner",label:"晚餐"},{key:"exercise",label:"运动"},{key:"tracking",label:"跟踪备注"}],qe=d(()=>[...Ie]),Pe=d(()=>{const t=$.value.length;if(t<=0||t>7)return 100;const e=Math.max(ke.value-ma-2,0),l=e>0?Math.floor(e/t):100;return Math.max(100,l)});let J=0;function W(t){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function Ve(t){return new Date(`${t}T00:00:00`)}function h(){var t;ke.value=((t=ye.value)==null?void 0:t.clientWidth)||0}function K(t=""){return{id:"",diagnosis_id:R.value,patient_id:q.value,record_date:t,record_time:"",fasting_blood_sugar:0,postprandial_blood_sugar:0,other_blood_sugar:"",systolic_pressure:0,diastolic_pressure:0,western_medicine:"",insulin:"",remark:""}}function j(t=""){return{id:"",diagnosis_id:R.value,patient_id:q.value,record_date:t,breakfast_foods:"",breakfast_images:[],lunch_foods:"",lunch_images:[],dinner_foods:"",dinner_images:[],note:""}}function X(t=""){return{id:"",diagnosis_id:R.value,patient_id:q.value,record_date:t,exercise_type:"",duration:0,intensity:1,images:[],note:""}}function Oe(t){return t.getTime()>Date.now()}function xe(t){if(t==="custom"){const[f,r]=B.value||["",""];return{start:f||"",end:r||""}}const e=t==="7"?7:30,l=new Date;l.setHours(0,0,0,0);const n=new Date(l);return n.setDate(n.getDate()-(e-1)),{start:W(n),end:W(l)}}const we=d(()=>xe(U.value)),$=d(()=>{const{start:t,end:e}=we.value;if(!t||!e)return[];const l=[],n=Ve(e),f=Ve(t).getTime();for(;n.getTime()>=f;)l.push(W(n)),n.setDate(n.getDate()-1);return l}),fe=d(()=>{const t=new Map;for(const e of P.value){const l=String(e.record_date||"");if(!l)continue;t.has(l)||t.set(l,{id:e.id,diagnosis_id:e.diagnosis_id,patient_id:e.patient_id,record_date:l,record_time:e.record_time||"",record_date_ts:e.record_date_ts});const n=t.get(l),f=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin","remark"];for(const r of f)(n[r]===void 0||n[r]===null||n[r]==="")&&e[r]!==void 0&&e[r]!==null&&e[r]!==""&&(n[r]=e[r])}return t}),De=d(()=>{const t=new Map;for(const e of O.value){const l=String(e.record_date||"");!l||t.has(l)||t.set(l,e)}return t}),Re=d(()=>{const t=new Map;for(const e of z.value){const l=String(e.record_date||"");!l||t.has(l)||t.set(l,e)}return t}),Z=d(()=>{const t=new Map;for(const e of G.value){const l=String(e.note_date||"");!l||t.has(l)||t.set(l,e)}return t}),Ce=d(()=>[...$.value].reverse()),ee=d(()=>Ce.value.reduce((t,e)=>{const l=fe.value.get(e);return t.fasting.push(Ue(l==null?void 0:l.fasting_blood_sugar)),t.postprandial.push(Ue(l==null?void 0:l.postprandial_blood_sugar)),t},{fasting:[],postprandial:[]})),ze=d(()=>[...ee.value.fasting,...ee.value.postprandial].some(t=>t!=null)),Ge=d(()=>({tooltip:{trigger:"axis"},legend:{top:0,data:["空腹血糖","餐后血糖"]},grid:{left:24,right:24,top:52,bottom:20,containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:Ce.value.map(t=>Se(t))},yAxis:{type:"value",name:"mmol/L",splitLine:{lineStyle:{color:"#e5e7eb"}}},series:[{name:"空腹血糖",type:"line",smooth:!0,connectNulls:!1,data:ee.value.fasting,symbolSize:7,itemStyle:{color:"#2563eb"},lineStyle:{width:3,color:"#2563eb"}},{name:"餐后血糖",type:"line",smooth:!0,connectNulls:!1,data:ee.value.postprandial,symbolSize:7,itemStyle:{color:"#f97316"},lineStyle:{width:3,color:"#f97316"}}]}));function Se(t){return t.slice(5)}function Ue(t){if(t===""||t==null)return null;const e=Number(t);return Number.isFinite(e)?e:null}function A(t,e){const l=fe.value.get(e),n=De.value.get(e),f=Re.value.get(e),r=Z.value.get(e);switch(t){case"fasting":return{value:(l==null?void 0:l.fasting_blood_sugar)!=null&&l.fasting_blood_sugar!==""?String(l.fasting_blood_sugar):"",isHigh:Pl(l==null?void 0:l.fasting_blood_sugar,D.age),hasRecord:!!l&&l.fasting_blood_sugar!=null&&l.fasting_blood_sugar!==""};case"postprandial":return{value:(l==null?void 0:l.postprandial_blood_sugar)!=null&&l.postprandial_blood_sugar!==""?String(l.postprandial_blood_sugar):"",isHigh:ql(l==null?void 0:l.postprandial_blood_sugar,D.age),hasRecord:!!l&&l.postprandial_blood_sugar!=null&&l.postprandial_blood_sugar!==""};case"other":return{value:(l==null?void 0:l.other_blood_sugar)!=null&&l.other_blood_sugar!==""?String(l.other_blood_sugar):"",isHigh:Il(l==null?void 0:l.other_blood_sugar,D.age),hasRecord:!!l&&l.other_blood_sugar!=null&&l.other_blood_sugar!==""};case"bp":return{value:l&&(l.systolic_pressure||l.diastolic_pressure)?Fl(l):"",isHigh:Ll(l),hasRecord:!!l&&!!(l.systolic_pressure||l.diastolic_pressure)};case"western":return{value:(l==null?void 0:l.western_medicine)||"",isHigh:!1,hasRecord:!!(l!=null&&l.western_medicine)};case"insulin":return{value:(l==null?void 0:l.insulin)||"",isHigh:!1,hasRecord:!!(l!=null&&l.insulin)};case"breakfast":return{value:n!=null&&n.breakfast||n!=null&&n.breakfast_foods?"✓":"",isHigh:!1,hasRecord:!!(n!=null&&n.breakfast||n!=null&&n.breakfast_foods)};case"lunch":return{value:n!=null&&n.lunch||n!=null&&n.lunch_foods?"✓":"",isHigh:!1,hasRecord:!!(n!=null&&n.lunch||n!=null&&n.lunch_foods)};case"dinner":return{value:n!=null&&n.dinner||n!=null&&n.dinner_foods?"✓":"",isHigh:!1,hasRecord:!!(n!=null&&n.dinner||n!=null&&n.dinner_foods)};case"exercise":return{value:f!=null&&f.duration?`${f.duration}min`:"",isHigh:!1,hasRecord:!!(f!=null&&f.id)};case"tracking":return{value:r!=null&&r.content?Te(r.content):"",isHigh:!1,hasRecord:!!(r!=null&&r.content)};default:return{value:"",isHigh:!1,hasRecord:!1}}}async function k(){if(!R.value){P.value=[],O.value=[],z.value=[],G.value=[];return}const{start:t,end:e}=we.value;if(U.value==="custom"&&(!t||!e))return;const l=++J;se.value=!0;try{const n=await Hl({id:R.value,start_date:t,end_date:e}),f=await Ml({diagnosis_id:R.value});if(l!==J)return;P.value=Array.isArray(n==null?void 0:n.blood_records)?n.blood_records:[],O.value=Array.isArray(n==null?void 0:n.diet_records)?n.diet_records:[],z.value=Array.isArray(n==null?void 0:n.exercise_records)?n.exercise_records:[],G.value=Array.isArray(f)?f.filter(r=>$.value.includes(String((r==null?void 0:r.note_date)||""))):[]}catch{l===J&&(P.value=[],O.value=[],z.value=[],G.value=[])}finally{l===J&&(se.value=!1)}}function Qe(){if(U.value==="custom"&&!B.value){const t=xe("7");B.value=[t.start,t.end]}k(),_e(h)}function Je(){U.value==="custom"&&k()}function le(t){if(!S.value)return;const e=$.value[0]||W(new Date);if(t==="blood"){s.value=K(e),E.value=!0;return}if(t==="diet"){m.value=j(e),H.value=!0;return}if(t==="tracking"){const l=Q.value,n=Z.value.get(l);b.value={note_date:l,existing_content:String((n==null?void 0:n.content)||""),content:""},Y.value=!0;return}p.value=X(e),M.value=!0}function Ke(t,e){if(!S.value)return;if(["fasting","postprandial","other","bp","western","insulin"].includes(t)){const n=fe.value.get(e);s.value=n?{...K(e),...n}:K(e),E.value=!0;return}if(["breakfast","lunch","dinner"].includes(t)){const n=De.value.get(e);m.value=n?{...j(e),...n}:j(e),H.value=!0;return}if(t==="tracking"){const n=Z.value.get(e);if(!n&&e!==Q.value)return;b.value={note_date:e,existing_content:String((n==null?void 0:n.content)||""),content:""},Y.value=!0;return}const l=Re.value.get(e);p.value=l?{...X(e),...l}:X(e),M.value=!0}async function je(){if(!s.value.record_date){C.msgWarning("请选择记录日期");return}ue.value=!0;try{s.value.id?await Yl(s.value):await Nl(s.value),E.value=!1,await k()}finally{ue.value=!1}}async function Xe(){if(!m.value.record_date){C.msgWarning("请选择记录日期");return}de.value=!0;try{m.value.id?await Bl(m.value):await Wl(m.value),H.value=!1,await k()}finally{de.value=!1}}async function Ze(){if(!p.value.record_date){C.msgWarning("请选择记录日期");return}if(!p.value.exercise_type){C.msgWarning("请选择运动类型");return}if(!p.value.duration){C.msgWarning("请输入运动时长");return}me.value=!0;try{p.value.id?await hl(p.value):await $l(p.value),M.value=!1,await k()}finally{me.value=!1}}async function el(){if(!b.value.note_date){C.msgWarning("请选择记录日期");return}if(!N.value){C.msgWarning("仅支持给今天追加跟踪备注");return}const t=b.value.content.trim();if(!t){C.msgWarning("请输入跟踪备注");return}pe.value=!0;try{await Al({diagnosis_id:R.value,tracking_content:t}),Y.value=!1,await k()}finally{pe.value=!1}}function Te(t){return ve(t)[0]||""}function ve(t){return t.split(`
`).map(e=>e.trim()).filter(Boolean)}function ae(t){var e;return String(((e=Z.value.get(t))==null?void 0:e.content)||"")}function ll(t){return Te(t)}function al(t,e){return S.value?t!=="tracking"?!0:e===Q.value||!!ae(e):!1}return Gl(()=>D.diagnosisId,t=>{t&&k(),_e(h)}),Ql(()=>{D.diagnosisId&&k(),_e(h),window.addEventListener("resize",h)}),Jl(()=>{window.removeEventListener("resize",h)}),Ne({refresh:k}),(t,e)=>{const l=dl,n=ul,f=bl,r=ml,Ee=fl,tl=vl,ol=pl,nl=Cl,u=cl,il=yl,L=kl,V=Vl,te=_l,oe=gl,ge=xl,ne=Sl,x=Dl,He=wl,rl=Rl;return Kl((_(),y("div",Zl,[c("div",ea,[c("div",la,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),onChange:Qe},{default:i(()=>[a(l,{value:"7"},{default:i(()=>[...e[40]||(e[40]=[v("最近7天",-1)])]),_:1}),a(l,{value:"30"},{default:i(()=>[...e[41]||(e[41]=[v("最近30天",-1)])]),_:1}),a(l,{value:"custom"},{default:i(()=>[...e[42]||(e[42]=[v("自定义",-1)])]),_:1})]),_:1},8,["modelValue"]),U.value==="custom"?(_(),T(f,{key:0,modelValue:B.value,"onUpdate:modelValue":e[1]||(e[1]=o=>B.value=o),type:"daterange","value-format":"YYYY-MM-DD","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",clearable:!1,"disabled-date":Oe,onChange:Je},null,8,["modelValue"])):F("",!0)]),S.value?(_(),y("div",aa,[a(r,{type:"primary",onClick:e[2]||(e[2]=o=>le("blood"))},{default:i(()=>[...e[43]||(e[43]=[v("+血糖",-1)])]),_:1}),a(r,{onClick:e[3]||(e[3]=o=>le("diet"))},{default:i(()=>[...e[44]||(e[44]=[v("+饮食",-1)])]),_:1}),a(r,{onClick:e[4]||(e[4]=o=>le("exercise"))},{default:i(()=>[...e[45]||(e[45]=[v("+运动",-1)])]),_:1}),a(r,{onClick:e[5]||(e[5]=o=>le("tracking"))},{default:i(()=>[...e[46]||(e[46]=[v("+备注",-1)])]),_:1}),a(r,{onClick:k},{default:i(()=>[...e[47]||(e[47]=[v("刷新",-1)])]),_:1})])):(_(),y("div",ta,[a(r,{onClick:k},{default:i(()=>[...e[48]||(e[48]=[v("刷新",-1)])]),_:1})]))]),c("div",{ref_key:"tableWrapRef",ref:ye,class:"daily-matrix__table-wrap"},[a(ol,{data:qe.value,border:"",stripe:"","row-key":"key",class:"daily-matrix__table","empty-text":"暂无记录"},{default:i(()=>[a(Ee,{prop:"label",label:"指标",fixed:"left",width:"120"}),(_(!0),y(I,null,ce($.value,o=>(_(),T(Ee,{key:o,label:Se(o),"min-width":Pe.value,align:"center"},{default:i(({row:w})=>[c("div",{class:Xl(["daily-matrix__cell",{"is-clickable":al(w.key,o),"is-empty":!A(w.key,o).hasRecord,"is-high":A(w.key,o).isHigh}]),onClick:Me=>Ke(w.key,o)},[w.key==="tracking"&&ae(o)?(_(),T(tl,{key:0,placement:"top",effect:"light","show-after":150},{content:i(()=>[c("div",na,[(_(!0),y(I,null,ce(ve(ae(o)),(Me,sl)=>(_(),y("div",{key:`${o}-${sl}`,class:"daily-matrix__tracking-tooltip-line"},ie(Me),1))),128))])]),default:i(()=>[c("div",ia,ie(ll(ae(o))),1)]),_:2},1024)):A(w.key,o).value?(_(),y(I,{key:1},[c("span",null,ie(A(w.key,o).value),1),A(w.key,o).isHigh?(_(),y("span",ra,"↑")):F("",!0)],64)):(_(),y(I,{key:2},[v("—")],64))],10,oa)]),_:2},1032,["label","min-width"]))),128))]),_:1},8,["data"])],512),c("div",sa,[e[49]||(e[49]=c("div",{class:"daily-matrix__section-title"},"血糖趋势",-1)),ze.value?(_(),T(jl(Ul),{key:0,class:"daily-matrix__chart-canvas",option:Ge.value,autoresize:""},null,8,["option"])):(_(),T(nl,{key:1,description:"当前时间范围暂无血糖数据","image-size":84}))]),he.value?(_(),y("div",ua,[e[50]||(e[50]=c("div",{class:"daily-matrix__section-title"},"待办事项",-1)),a(Tl,{"diagnosis-id":R.value,"patient-id":q.value,"patient-name":We.value,"read-only":re.value},null,8,["diagnosis-id","patient-id","patient-name","read-only"])])):F("",!0),a(oe,{modelValue:E.value,"onUpdate:modelValue":e[17]||(e[17]=o=>E.value=o),title:$e.value,width:"600px","close-on-click-modal":!1},{footer:i(()=>[a(r,{onClick:e[16]||(e[16]=o=>E.value=!1)},{default:i(()=>[...e[56]||(e[56]=[v("取消",-1)])]),_:1}),a(r,{type:"primary",loading:ue.value,disabled:!S.value,onClick:je},{default:i(()=>[...e[57]||(e[57]=[v("确定",-1)])]),_:1},8,["loading","disabled"])]),default:i(()=>[a(te,{model:s.value,"label-width":"120px"},{default:i(()=>[a(u,{label:"记录日期",required:""},{default:i(()=>[a(f,{modelValue:s.value.record_date,"onUpdate:modelValue":e[6]||(e[6]=o=>s.value.record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),a(u,{label:"记录时间"},{default:i(()=>[a(il,{modelValue:s.value.record_time,"onUpdate:modelValue":e[7]||(e[7]=o=>s.value.record_time=o),placeholder:"选择时间",format:"HH:mm","value-format":"HH:mm",class:"w-full"},null,8,["modelValue"])]),_:1}),a(u,{label:"空腹血糖"},{default:i(()=>[a(L,{modelValue:s.value.fasting_blood_sugar,"onUpdate:modelValue":e[8]||(e[8]=o=>s.value.fasting_blood_sugar=o),precision:2,step:.1,min:0,max:50},null,8,["modelValue"]),e[51]||(e[51]=c("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),a(u,{label:"餐后2小时血糖"},{default:i(()=>[a(L,{modelValue:s.value.postprandial_blood_sugar,"onUpdate:modelValue":e[9]||(e[9]=o=>s.value.postprandial_blood_sugar=o),precision:2,step:.1,min:0,max:50},null,8,["modelValue"]),e[52]||(e[52]=c("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),a(u,{label:"其他血糖"},{default:i(()=>[a(V,{modelValue:s.value.other_blood_sugar,"onUpdate:modelValue":e[10]||(e[10]=o=>s.value.other_blood_sugar=o),type:"number",style:{width:"200px"}},null,8,["modelValue"]),e[53]||(e[53]=c("span",{class:"ml-2"},"mmol/L",-1))]),_:1}),a(u,{label:"收缩压(高压)"},{default:i(()=>[a(L,{modelValue:s.value.systolic_pressure,"onUpdate:modelValue":e[11]||(e[11]=o=>s.value.systolic_pressure=o),min:0,max:300},null,8,["modelValue"]),e[54]||(e[54]=c("span",{class:"ml-2"},"mmHg",-1))]),_:1}),a(u,{label:"舒张压(低压)"},{default:i(()=>[a(L,{modelValue:s.value.diastolic_pressure,"onUpdate:modelValue":e[12]||(e[12]=o=>s.value.diastolic_pressure=o),min:0,max:200},null,8,["modelValue"]),e[55]||(e[55]=c("span",{class:"ml-2"},"mmHg",-1))]),_:1}),a(u,{label:"西药"},{default:i(()=>[a(V,{modelValue:s.value.western_medicine,"onUpdate:modelValue":e[13]||(e[13]=o=>s.value.western_medicine=o)},null,8,["modelValue"])]),_:1}),a(u,{label:"胰岛素"},{default:i(()=>[a(V,{modelValue:s.value.insulin,"onUpdate:modelValue":e[14]||(e[14]=o=>s.value.insulin=o)},null,8,["modelValue"])]),_:1}),a(u,{label:"备注"},{default:i(()=>[a(V,{modelValue:s.value.remark,"onUpdate:modelValue":e[15]||(e[15]=o=>s.value.remark=o),type:"textarea",rows:3},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),a(oe,{modelValue:H.value,"onUpdate:modelValue":e[27]||(e[27]=o=>H.value=o),title:Ae.value,width:"800px","close-on-click-modal":!1},{footer:i(()=>[a(r,{onClick:e[26]||(e[26]=o=>H.value=!1)},{default:i(()=>[...e[61]||(e[61]=[v("取消",-1)])]),_:1}),a(r,{type:"primary",loading:de.value,disabled:!S.value,onClick:Xe},{default:i(()=>[...e[62]||(e[62]=[v("确定",-1)])]),_:1},8,["loading","disabled"])]),default:i(()=>[a(te,{model:m.value,"label-width":"100px"},{default:i(()=>[a(u,{label:"记录日期",required:""},{default:i(()=>[a(f,{modelValue:m.value.record_date,"onUpdate:modelValue":e[18]||(e[18]=o=>m.value.record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),a(ge,{"content-position":"left"},{default:i(()=>[...e[58]||(e[58]=[v("早餐",-1)])]),_:1}),a(u,{label:"食物描述"},{default:i(()=>[a(V,{modelValue:m.value.breakfast_foods,"onUpdate:modelValue":e[19]||(e[19]=o=>m.value.breakfast_foods=o),type:"textarea",rows:2,placeholder:"请输入早餐食物"},null,8,["modelValue"])]),_:1}),a(u,{label:"图片"},{default:i(()=>[a(ne,{modelValue:m.value.breakfast_images,"onUpdate:modelValue":e[20]||(e[20]=o=>m.value.breakfast_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),a(ge,{"content-position":"left"},{default:i(()=>[...e[59]||(e[59]=[v("午餐",-1)])]),_:1}),a(u,{label:"食物描述"},{default:i(()=>[a(V,{modelValue:m.value.lunch_foods,"onUpdate:modelValue":e[21]||(e[21]=o=>m.value.lunch_foods=o),type:"textarea",rows:2,placeholder:"请输入午餐食物"},null,8,["modelValue"])]),_:1}),a(u,{label:"图片"},{default:i(()=>[a(ne,{modelValue:m.value.lunch_images,"onUpdate:modelValue":e[22]||(e[22]=o=>m.value.lunch_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),a(ge,{"content-position":"left"},{default:i(()=>[...e[60]||(e[60]=[v("晚餐",-1)])]),_:1}),a(u,{label:"食物描述"},{default:i(()=>[a(V,{modelValue:m.value.dinner_foods,"onUpdate:modelValue":e[23]||(e[23]=o=>m.value.dinner_foods=o),type:"textarea",rows:2,placeholder:"请输入晚餐食物"},null,8,["modelValue"])]),_:1}),a(u,{label:"图片"},{default:i(()=>[a(ne,{modelValue:m.value.dinner_images,"onUpdate:modelValue":e[24]||(e[24]=o=>m.value.dinner_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),a(u,{label:"备注"},{default:i(()=>[a(V,{modelValue:m.value.note,"onUpdate:modelValue":e[25]||(e[25]=o=>m.value.note=o),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),a(oe,{modelValue:M.value,"onUpdate:modelValue":e[35]||(e[35]=o=>M.value=o),title:Le.value,width:"600px","close-on-click-modal":!1},{footer:i(()=>[a(r,{onClick:e[34]||(e[34]=o=>M.value=!1)},{default:i(()=>[...e[63]||(e[63]=[v("取消",-1)])]),_:1}),a(r,{type:"primary",loading:me.value,disabled:!S.value,onClick:Ze},{default:i(()=>[...e[64]||(e[64]=[v("确定",-1)])]),_:1},8,["loading","disabled"])]),default:i(()=>[a(te,{model:p.value,"label-width":"120px"},{default:i(()=>[a(u,{label:"记录日期",required:""},{default:i(()=>[a(f,{modelValue:p.value.record_date,"onUpdate:modelValue":e[28]||(e[28]=o=>p.value.record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),a(u,{label:"运动类型",required:""},{default:i(()=>[a(He,{modelValue:p.value.exercise_type,"onUpdate:modelValue":e[29]||(e[29]=o=>p.value.exercise_type=o),placeholder:"请选择运动类型",class:"w-full"},{default:i(()=>[a(x,{label:"散步",value:"散步"}),a(x,{label:"慢跑",value:"慢跑"}),a(x,{label:"游泳",value:"游泳"}),a(x,{label:"瑜伽",value:"瑜伽"}),a(x,{label:"骑自行车",value:"骑自行车"}),a(x,{label:"打太极拳",value:"打太极拳"}),a(x,{label:"其他",value:"其他"})]),_:1},8,["modelValue"])]),_:1}),a(u,{label:"运动时长(分钟)",required:""},{default:i(()=>[a(L,{modelValue:p.value.duration,"onUpdate:modelValue":e[30]||(e[30]=o=>p.value.duration=o),min:0,max:300},null,8,["modelValue"])]),_:1}),a(u,{label:"运动强度",required:""},{default:i(()=>[a(He,{modelValue:p.value.intensity,"onUpdate:modelValue":e[31]||(e[31]=o=>p.value.intensity=o),placeholder:"请选择运动强度",class:"w-full"},{default:i(()=>[a(x,{label:"低强度",value:1}),a(x,{label:"中强度",value:2}),a(x,{label:"高强度",value:3})]),_:1},8,["modelValue"])]),_:1}),a(u,{label:"运动图片"},{default:i(()=>[a(ne,{modelValue:p.value.images,"onUpdate:modelValue":e[32]||(e[32]=o=>p.value.images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),a(u,{label:"备注"},{default:i(()=>[a(V,{modelValue:p.value.note,"onUpdate:modelValue":e[33]||(e[33]=o=>p.value.note=o),type:"textarea",rows:3},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),a(oe,{modelValue:Y.value,"onUpdate:modelValue":e[39]||(e[39]=o=>Y.value=o),title:Fe.value,width:"600px","close-on-click-modal":!1},{footer:i(()=>[a(r,{onClick:e[38]||(e[38]=o=>Y.value=!1)},{default:i(()=>[...e[65]||(e[65]=[v("取消",-1)])]),_:1}),N.value?(_(),T(r,{key:0,type:"primary",loading:pe.value,onClick:el},{default:i(()=>[...e[66]||(e[66]=[v("确定",-1)])]),_:1},8,["loading"])):F("",!0)]),default:i(()=>[a(te,{model:b.value,"label-width":"100px"},{default:i(()=>[a(u,{label:"记录日期",required:""},{default:i(()=>[a(f,{modelValue:b.value.note_date,"onUpdate:modelValue":e[36]||(e[36]=o=>b.value.note_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full",disabled:!0},null,8,["modelValue"])]),_:1}),b.value.existing_content?(_(),T(u,{key:0,label:"已有备注"},{default:i(()=>[c("div",da,[(_(!0),y(I,null,ce(ve(b.value.existing_content),(o,w)=>(_(),y("div",{key:`${b.value.note_date}-${w}`,class:"daily-matrix__tracking-line"},ie(o),1))),128))])]),_:1})):F("",!0),a(u,{label:N.value?"追加备注":"备注内容",required:""},{default:i(()=>[a(V,{modelValue:b.value.content,"onUpdate:modelValue":e[37]||(e[37]=o=>b.value.content=o),type:"textarea",rows:5,maxlength:"1000","show-word-limit":"",disabled:!N.value,placeholder:N.value?"请输入跟踪备注":"历史跟踪备注仅支持查看"},null,8,["modelValue","disabled","placeholder"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])),[[rl,se.value]])}}}),ct=Ol(pa,[["__scopeId","data-v-8849b23d"]]);export{ct as default};
diff --git a/server/public/admin/assets/DiagnosisTodoList-DC7uqd6f.js b/server/public/admin/assets/DiagnosisTodoList-CgT2M9eR.js
similarity index 92%
rename from server/public/admin/assets/DiagnosisTodoList-DC7uqd6f.js
rename to server/public/admin/assets/DiagnosisTodoList-CgT2M9eR.js
index d9ef6c93..0fc5c611 100644
--- a/server/public/admin/assets/DiagnosisTodoList-DC7uqd6f.js
+++ b/server/public/admin/assets/DiagnosisTodoList-CgT2M9eR.js
@@ -1 +1 @@
-import{G as K,F as X,i as Z,N as tt,T as et,L as at,V as ot,D as it,B as st,a2 as lt,C as nt,M as rt}from"./element-plus-0wC3naml.js";import{_ as dt}from"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import{R as mt,S as ut,T as pt}from"./tcm-SLIwsL8z.js";import{h as ct}from"./perm-YIJpPBOg.js";import{i as y,_ as ft}from"./index-E47--KT7.js";import{f as _t,w as gt,as as vt,ak as p,I as w,J as T,aP as N,G as h,aN as o,O as l,a as e,A as bt,n as yt}from"./@vue/runtime-core-C6bnekPw.js";import{a as A,y as n,r as I,n as k}from"./@vue/reactivity-DiY1c2vO.js";import{Q as V}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const wt={class:"diagnosis-todo-list"},kt={class:"toolbar"},Vt={key:0,class:"text-danger"},xt={key:1},Dt={key:1,class:"text-muted"},Ct={class:"pagination-wrap"},Tt=_t({__name:"DiagnosisTodoList",props:{diagnosisId:{},patientId:{},patientName:{},readOnly:{type:Boolean}},setup(R,{expose:B}){const x=["tcm.diagnosis/dailyRecord"],r=R,v=bt(()=>ct(x)),s=I({page:1,size:15,count:0,loading:!1,lists:[]}),c=k(""),m=async()=>{if(!r.diagnosisId||Number(r.diagnosisId)<=0||!v.value){s.lists=[],s.count=0;return}s.loading=!0;try{const i={page_no:s.page,page_size:s.size,diagnosis_id:Number(r.diagnosisId)};c.value!==""&&c.value!==void 0&&(i.status=Number(c.value));const t=await mt(i);s.count=Number((t==null?void 0:t.count)??0),s.lists=Array.isArray(t==null?void 0:t.lists)?t.lists:[]}catch{s.lists=[],s.count=0}finally{s.loading=!1}};gt(()=>r.diagnosisId,()=>{s.page=1,m()},{immediate:!0});const F=()=>{s.page=1,m()},L=i=>{switch(Number(i)){case 0:return"info";case 1:return"success";case 2:return"warning";case 3:return"danger";default:return"info"}},f=k(!1),D=k(!1),b=k(),d=I({remindAt:"",content:""}),S={remindAt:[{required:!0,message:"请选择提醒时间",trigger:"change"}],content:[{required:!0,message:"请输入提醒内容",trigger:"blur"},{max:500,message:"内容最多 500 字",trigger:"blur"}]},M=i=>{const t=new Date;return t.setHours(0,0,0,0),i.getTime(){if(!r.diagnosisId||!v.value){y.msgWarning("诊单未保存,无法添加待办");return}d.remindAt="",d.content="",f.value=!0,yt(()=>{var i;return(i=b.value)==null?void 0:i.clearValidate()})},O=async()=>{if(!b.value||!await b.value.validate().catch(()=>!1))return;const t=Number(d.remindAt);if(!Number.isFinite(t)||t<=Date.now()+30*1e3){y.msgWarning("提醒时间必须晚于当前时间至少 30 秒");return}D.value=!0;try{await ut({diagnosis_id:Number(r.diagnosisId),content:d.content.trim(),remind_time:Math.floor(t/1e3)}),f.value=!1,m()}catch{}finally{D.value=!1}},U=async i=>{if(!(!v.value||r.readOnly)){try{await y.confirm(`确认取消「${i.remind_time_text} · ${Y(i.content,30)}」吗?`)}catch{return}try{await pt({id:Number(i.id)}),y.msgSuccess("已取消"),m()}catch{}}},Y=(i,t)=>i?i.length>t?i.slice(0,t)+"...":i:"";return B({refresh:m}),(i,t)=>{const _=Z,g=X,$=K,u=tt,z=et,G=rt,H=dt,q=lt,C=st,W=nt,J=it,Q=ot,E=vt("perms"),j=at;return p(),w("div",wt,[T("div",kt,[N((p(),h(_,{type:"primary",disabled:!r.diagnosisId||!v.value,onClick:P},{default:o(()=>[...t[6]||(t[6]=[l(" + 新增待办 ",-1)])]),_:1},8,["disabled"])),[[E,x]]),e($,{modelValue:n(c),"onUpdate:modelValue":t[0]||(t[0]=a=>A(c)?c.value=a:null),class:"ml-3",onChange:F},{default:o(()=>[e(g,{value:""},{default:o(()=>[...t[7]||(t[7]=[l("全部",-1)])]),_:1}),e(g,{value:0},{default:o(()=>[...t[8]||(t[8]=[l("待执行",-1)])]),_:1}),e(g,{value:1},{default:o(()=>[...t[9]||(t[9]=[l("已发送",-1)])]),_:1}),e(g,{value:3},{default:o(()=>[...t[10]||(t[10]=[l("失败",-1)])]),_:1}),e(g,{value:2},{default:o(()=>[...t[11]||(t[11]=[l("已取消",-1)])]),_:1})]),_:1},8,["modelValue"]),e(_,{class:"ml-3",onClick:m},{default:o(()=>[...t[12]||(t[12]=[l("刷新",-1)])]),_:1})]),N((p(),h(G,{data:n(s).lists,border:"",class:"todo-table","empty-text":"暂无待办","row-key":"id"},{default:o(()=>[e(u,{label:"提醒时间",prop:"remind_time_text",width:"160"}),e(u,{label:"内容",prop:"content","min-width":"240","show-overflow-tooltip":""}),e(u,{label:"状态",width:"110",align:"center"},{default:o(({row:a})=>[e(z,{type:L(a.status),effect:"light",size:"small"},{default:o(()=>[l(V(a.status_text),1)]),_:2},1032,["type"])]),_:1}),e(u,{label:"创建人",prop:"creator_name",width:"120"},{default:o(({row:a})=>[l(V(a.creator_name||"-"),1)]),_:1}),e(u,{label:"推送时间",prop:"notified_at_text",width:"160"},{default:o(({row:a})=>[l(V(a.notified_at_text||"-"),1)]),_:1}),e(u,{label:"失败原因",prop:"error","min-width":"200","show-overflow-tooltip":""},{default:o(({row:a})=>[a.status===3?(p(),w("span",Vt,V(a.error||"未知错误"),1)):(p(),w("span",xt,"-"))]),_:1}),e(u,{label:"操作",width:"120",fixed:"right",align:"center"},{default:o(({row:a})=>[!r.readOnly&&a.status===0&&a.can_cancel?N((p(),h(_,{key:0,link:"",type:"danger",onClick:Nt=>U(a)},{default:o(()=>[...t[13]||(t[13]=[l(" 取消 ",-1)])]),_:1},8,["onClick"])),[[E,x]]):(p(),w("span",Dt,"-"))]),_:1})]),_:1},8,["data"])),[[j,n(s).loading]]),T("div",Ct,[e(H,{modelValue:n(s),"onUpdate:modelValue":t[1]||(t[1]=a=>A(s)?s.value=a:null),onChange:m},null,8,["modelValue"])]),e(Q,{modelValue:n(f),"onUpdate:modelValue":t[5]||(t[5]=a=>A(f)?f.value=a:null),title:"新增待办",width:"520px","close-on-click-modal":!1},{footer:o(()=>[e(_,{onClick:t[4]||(t[4]=a=>f.value=!1)},{default:o(()=>[...t[15]||(t[15]=[l("取消",-1)])]),_:1}),e(_,{type:"primary",loading:n(D),onClick:O},{default:o(()=>[...t[16]||(t[16]=[l(" 提交 ",-1)])]),_:1},8,["loading"])]),default:o(()=>[e(J,{ref_key:"addFormRef",ref:b,model:n(d),rules:S,"label-width":"100px"},{default:o(()=>[e(C,{label:"提醒时间",prop:"remindAt"},{default:o(()=>[e(q,{modelValue:n(d).remindAt,"onUpdate:modelValue":t[2]||(t[2]=a=>n(d).remindAt=a),type:"datetime",placeholder:"选择提醒时间",format:"YYYY-MM-DD HH:mm","value-format":"x","disabled-date":M,class:"w-full"},null,8,["modelValue"])]),_:1}),e(C,{label:"提醒内容",prop:"content"},{default:o(()=>[e(W,{modelValue:n(d).content,"onUpdate:modelValue":t[3]||(t[3]=a=>n(d).content=a),type:"textarea",rows:4,maxlength:500,"show-word-limit":"",placeholder:"例:3 天后回访患者复测餐后血糖"},null,8,["modelValue"])]),_:1}),e(C,{label:"提醒人"},{default:o(()=>[...t[14]||(t[14]=[T("span",{class:"text-muted"},"企微推送给当前登录账号(创建人本人)",-1)])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),fe=ft(Tt,[["__scopeId","data-v-c136d72f"]]);export{fe as default};
+import{G as K,F as X,i as Z,N as tt,T as et,L as at,V as ot,D as it,B as st,a2 as lt,C as nt,M as rt}from"./element-plus-DFTWCWyi.js";import{_ as dt}from"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import{S as mt,T as ut,U as pt}from"./tcm-BcqaE0lo.js";import{h as ct}from"./perm-Bo9eM8XD.js";import{i as y,_ as ft}from"./index-DBREMm_z.js";import{f as _t,w as gt,as as vt,ak as p,I as w,J as T,aP as N,G as h,aN as o,O as l,a as e,A as bt,n as yt}from"./@vue/runtime-core-C6bnekPw.js";import{a as A,y as n,r as I,n as k}from"./@vue/reactivity-DiY1c2vO.js";import{Q as V}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const wt={class:"diagnosis-todo-list"},kt={class:"toolbar"},Vt={key:0,class:"text-danger"},xt={key:1},Dt={key:1,class:"text-muted"},Ct={class:"pagination-wrap"},Tt=_t({__name:"DiagnosisTodoList",props:{diagnosisId:{},patientId:{},patientName:{},readOnly:{type:Boolean}},setup(R,{expose:B}){const x=["tcm.diagnosis/dailyRecord"],r=R,v=bt(()=>ct(x)),s=I({page:1,size:15,count:0,loading:!1,lists:[]}),c=k(""),m=async()=>{if(!r.diagnosisId||Number(r.diagnosisId)<=0||!v.value){s.lists=[],s.count=0;return}s.loading=!0;try{const i={page_no:s.page,page_size:s.size,diagnosis_id:Number(r.diagnosisId)};c.value!==""&&c.value!==void 0&&(i.status=Number(c.value));const t=await mt(i);s.count=Number((t==null?void 0:t.count)??0),s.lists=Array.isArray(t==null?void 0:t.lists)?t.lists:[]}catch{s.lists=[],s.count=0}finally{s.loading=!1}};gt(()=>r.diagnosisId,()=>{s.page=1,m()},{immediate:!0});const F=()=>{s.page=1,m()},L=i=>{switch(Number(i)){case 0:return"info";case 1:return"success";case 2:return"warning";case 3:return"danger";default:return"info"}},f=k(!1),D=k(!1),b=k(),d=I({remindAt:"",content:""}),S={remindAt:[{required:!0,message:"请选择提醒时间",trigger:"change"}],content:[{required:!0,message:"请输入提醒内容",trigger:"blur"},{max:500,message:"内容最多 500 字",trigger:"blur"}]},M=i=>{const t=new Date;return t.setHours(0,0,0,0),i.getTime(){if(!r.diagnosisId||!v.value){y.msgWarning("诊单未保存,无法添加待办");return}d.remindAt="",d.content="",f.value=!0,yt(()=>{var i;return(i=b.value)==null?void 0:i.clearValidate()})},U=async()=>{if(!b.value||!await b.value.validate().catch(()=>!1))return;const t=Number(d.remindAt);if(!Number.isFinite(t)||t<=Date.now()+30*1e3){y.msgWarning("提醒时间必须晚于当前时间至少 30 秒");return}D.value=!0;try{await ut({diagnosis_id:Number(r.diagnosisId),content:d.content.trim(),remind_time:Math.floor(t/1e3)}),f.value=!1,m()}catch{}finally{D.value=!1}},O=async i=>{if(!(!v.value||r.readOnly)){try{await y.confirm(`确认取消「${i.remind_time_text} · ${Y(i.content,30)}」吗?`)}catch{return}try{await pt({id:Number(i.id)}),y.msgSuccess("已取消"),m()}catch{}}},Y=(i,t)=>i?i.length>t?i.slice(0,t)+"...":i:"";return B({refresh:m}),(i,t)=>{const _=Z,g=X,$=K,u=tt,z=et,G=rt,H=dt,q=lt,C=st,W=nt,J=it,Q=ot,E=vt("perms"),j=at;return p(),w("div",wt,[T("div",kt,[N((p(),h(_,{type:"primary",disabled:!r.diagnosisId||!v.value,onClick:P},{default:o(()=>[...t[6]||(t[6]=[l(" + 新增待办 ",-1)])]),_:1},8,["disabled"])),[[E,x]]),e($,{modelValue:n(c),"onUpdate:modelValue":t[0]||(t[0]=a=>A(c)?c.value=a:null),class:"ml-3",onChange:F},{default:o(()=>[e(g,{value:""},{default:o(()=>[...t[7]||(t[7]=[l("全部",-1)])]),_:1}),e(g,{value:0},{default:o(()=>[...t[8]||(t[8]=[l("待执行",-1)])]),_:1}),e(g,{value:1},{default:o(()=>[...t[9]||(t[9]=[l("已发送",-1)])]),_:1}),e(g,{value:3},{default:o(()=>[...t[10]||(t[10]=[l("失败",-1)])]),_:1}),e(g,{value:2},{default:o(()=>[...t[11]||(t[11]=[l("已取消",-1)])]),_:1})]),_:1},8,["modelValue"]),e(_,{class:"ml-3",onClick:m},{default:o(()=>[...t[12]||(t[12]=[l("刷新",-1)])]),_:1})]),N((p(),h(G,{data:n(s).lists,border:"",class:"todo-table","empty-text":"暂无待办","row-key":"id"},{default:o(()=>[e(u,{label:"提醒时间",prop:"remind_time_text",width:"160"}),e(u,{label:"内容",prop:"content","min-width":"240","show-overflow-tooltip":""}),e(u,{label:"状态",width:"110",align:"center"},{default:o(({row:a})=>[e(z,{type:L(a.status),effect:"light",size:"small"},{default:o(()=>[l(V(a.status_text),1)]),_:2},1032,["type"])]),_:1}),e(u,{label:"创建人",prop:"creator_name",width:"120"},{default:o(({row:a})=>[l(V(a.creator_name||"-"),1)]),_:1}),e(u,{label:"推送时间",prop:"notified_at_text",width:"160"},{default:o(({row:a})=>[l(V(a.notified_at_text||"-"),1)]),_:1}),e(u,{label:"失败原因",prop:"error","min-width":"200","show-overflow-tooltip":""},{default:o(({row:a})=>[a.status===3?(p(),w("span",Vt,V(a.error||"未知错误"),1)):(p(),w("span",xt,"-"))]),_:1}),e(u,{label:"操作",width:"120",fixed:"right",align:"center"},{default:o(({row:a})=>[!r.readOnly&&a.status===0&&a.can_cancel?N((p(),h(_,{key:0,link:"",type:"danger",onClick:Nt=>O(a)},{default:o(()=>[...t[13]||(t[13]=[l(" 取消 ",-1)])]),_:1},8,["onClick"])),[[E,x]]):(p(),w("span",Dt,"-"))]),_:1})]),_:1},8,["data"])),[[j,n(s).loading]]),T("div",Ct,[e(H,{modelValue:n(s),"onUpdate:modelValue":t[1]||(t[1]=a=>A(s)?s.value=a:null),onChange:m},null,8,["modelValue"])]),e(Q,{modelValue:n(f),"onUpdate:modelValue":t[5]||(t[5]=a=>A(f)?f.value=a:null),title:"新增待办",width:"520px","close-on-click-modal":!1},{footer:o(()=>[e(_,{onClick:t[4]||(t[4]=a=>f.value=!1)},{default:o(()=>[...t[15]||(t[15]=[l("取消",-1)])]),_:1}),e(_,{type:"primary",loading:n(D),onClick:U},{default:o(()=>[...t[16]||(t[16]=[l(" 提交 ",-1)])]),_:1},8,["loading"])]),default:o(()=>[e(J,{ref_key:"addFormRef",ref:b,model:n(d),rules:S,"label-width":"100px"},{default:o(()=>[e(C,{label:"提醒时间",prop:"remindAt"},{default:o(()=>[e(q,{modelValue:n(d).remindAt,"onUpdate:modelValue":t[2]||(t[2]=a=>n(d).remindAt=a),type:"datetime",placeholder:"选择提醒时间",format:"YYYY-MM-DD HH:mm","value-format":"x","disabled-date":M,class:"w-full"},null,8,["modelValue"])]),_:1}),e(C,{label:"提醒内容",prop:"content"},{default:o(()=>[e(W,{modelValue:n(d).content,"onUpdate:modelValue":t[3]||(t[3]=a=>n(d).content=a),type:"textarea",rows:4,maxlength:500,"show-word-limit":"",placeholder:"例:3 天后回访患者复测餐后血糖"},null,8,["modelValue"])]),_:1}),e(C,{label:"提醒人"},{default:o(()=>[...t[14]||(t[14]=[T("span",{class:"text-muted"},"企微推送给当前登录账号(创建人本人)",-1)])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),fe=ft(Tt,[["__scopeId","data-v-c136d72f"]]);export{fe as default};
diff --git a/server/public/admin/assets/DietRecordList-k5hMEz1n.js b/server/public/admin/assets/DietRecordList-CS8Yg4vf.js
similarity index 89%
rename from server/public/admin/assets/DietRecordList-k5hMEz1n.js
rename to server/public/admin/assets/DietRecordList-CS8Yg4vf.js
index ff5c1581..e4b08fab 100644
--- a/server/public/admin/assets/DietRecordList-k5hMEz1n.js
+++ b/server/public/admin/assets/DietRecordList-CS8Yg4vf.js
@@ -1 +1 @@
-import{i as T,N as Y,M as A,D as F,B as L,a2 as $,U as P,C as q,V as G}from"./element-plus-0wC3naml.js";import{_ as H}from"./picker-DlbAZkDm.js";import{a8 as Q,a9 as W,M as j,N as z}from"./tcm-SLIwsL8z.js";import{i as c,_ as J}from"./index-E47--KT7.js";import{f as K,b as X,w as Z,ak as r,I as m,a as t,aN as a,O as p,H as C,G as ee,A as te}from"./@vue/runtime-core-C6bnekPw.js";import{n as y,y as i,a as oe}from"./@vue/reactivity-DiY1c2vO.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const le={class:"diet-record-list"},ae={key:0,class:"mb-4"},ie={key:0},de={key:1},ne={key:0},re={key:1},se={key:0},me={key:1},pe=K({__name:"DietRecordList",props:{diagnosisId:{type:Number,default:0},patientId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},setup(k){const d=k,x=y([]),u=y(!1),V=y(!1),D=te(()=>l.value.id?"编辑记录":"添加记录"),l=y({id:"",diagnosis_id:d.diagnosisId,patient_id:d.patientId,record_date:"",breakfast_foods:"",breakfast_images:[],lunch_foods:"",lunch_images:[],dinner_foods:"",dinner_images:[],note:""}),g=async()=>{if(!(!d.diagnosisId&&!d.patientId))try{const n=await Q({diagnosis_id:d.diagnosisId,patient_id:d.patientId});x.value=n}catch(n){console.error("获取记录失败:",n)}},E=()=>{l.value={id:"",diagnosis_id:d.diagnosisId,patient_id:d.patientId,record_date:"",breakfast_foods:"",breakfast_images:[],lunch_foods:"",lunch_images:[],dinner_foods:"",dinner_images:[],note:""},u.value=!0},U=n=>{l.value={...n},u.value=!0},N=async n=>{await c.confirm("确定要删除这条记录吗?");try{await W({id:n.id}),c.msgSuccess("删除成功"),g()}catch(e){console.error("删除失败:",e)}},R=async()=>{if(!l.value.record_date){c.msgWarning("请选择记录日期");return}V.value=!0;try{l.value.id?(await j(l.value),c.msgSuccess("编辑成功")):(await z(l.value),c.msgSuccess("添加成功")),u.value=!1,g()}catch(n){console.error("提交失败:",n)}finally{V.value=!1}};return X(()=>{g()}),Z(()=>[d.diagnosisId,d.patientId],()=>{g()}),(n,e)=>{const _=T,f=Y,B=A,h=$,s=L,v=P,b=q,w=H,M=F,S=G;return r(),m("div",le,[k.readOnly?C("",!0):(r(),m("div",ae,[t(_,{type:"primary",onClick:E},{default:a(()=>[...e[10]||(e[10]=[p("添加记录",-1)])]),_:1})])),t(B,{data:i(x),border:""},{default:a(()=>[t(f,{prop:"record_date",label:"记录日期",width:"120"}),t(f,{label:"早餐","min-width":"200"},{default:a(({row:o})=>[o.breakfast_foods?(r(),m("div",ie,I(o.breakfast_foods),1)):(r(),m("span",de,"-"))]),_:1}),t(f,{label:"午餐","min-width":"200"},{default:a(({row:o})=>[o.lunch_foods?(r(),m("div",ne,I(o.lunch_foods),1)):(r(),m("span",re,"-"))]),_:1}),t(f,{label:"晚餐","min-width":"200"},{default:a(({row:o})=>[o.dinner_foods?(r(),m("div",se,I(o.dinner_foods),1)):(r(),m("span",me,"-"))]),_:1}),t(f,{prop:"note",label:"备注","show-overflow-tooltip":""}),k.readOnly?C("",!0):(r(),ee(f,{key:0,label:"操作",width:"150",fixed:"right"},{default:a(({row:o})=>[t(_,{link:"",type:"primary",onClick:O=>U(o)},{default:a(()=>[...e[11]||(e[11]=[p("编辑",-1)])]),_:1},8,["onClick"]),t(_,{link:"",type:"danger",onClick:O=>N(o)},{default:a(()=>[...e[12]||(e[12]=[p("删除",-1)])]),_:1},8,["onClick"])]),_:1}))]),_:1},8,["data"]),t(S,{modelValue:i(u),"onUpdate:modelValue":e[9]||(e[9]=o=>oe(u)?u.value=o:null),title:i(D),width:"800px"},{footer:a(()=>[t(_,{onClick:e[8]||(e[8]=o=>u.value=!1)},{default:a(()=>[...e[16]||(e[16]=[p("取消",-1)])]),_:1}),t(_,{type:"primary",onClick:R,loading:i(V)},{default:a(()=>[...e[17]||(e[17]=[p("确定",-1)])]),_:1},8,["loading"])]),default:a(()=>[t(M,{model:i(l),"label-width":"100px"},{default:a(()=>[t(s,{label:"记录日期",required:""},{default:a(()=>[t(h,{modelValue:i(l).record_date,"onUpdate:modelValue":e[0]||(e[0]=o=>i(l).record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),t(v,{"content-position":"left"},{default:a(()=>[...e[13]||(e[13]=[p("早餐",-1)])]),_:1}),t(s,{label:"食物描述"},{default:a(()=>[t(b,{modelValue:i(l).breakfast_foods,"onUpdate:modelValue":e[1]||(e[1]=o=>i(l).breakfast_foods=o),type:"textarea",rows:2,placeholder:"请输入早餐食物"},null,8,["modelValue"])]),_:1}),t(s,{label:"图片"},{default:a(()=>[t(w,{modelValue:i(l).breakfast_images,"onUpdate:modelValue":e[2]||(e[2]=o=>i(l).breakfast_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),t(v,{"content-position":"left"},{default:a(()=>[...e[14]||(e[14]=[p("午餐",-1)])]),_:1}),t(s,{label:"食物描述"},{default:a(()=>[t(b,{modelValue:i(l).lunch_foods,"onUpdate:modelValue":e[3]||(e[3]=o=>i(l).lunch_foods=o),type:"textarea",rows:2,placeholder:"请输入午餐食物"},null,8,["modelValue"])]),_:1}),t(s,{label:"图片"},{default:a(()=>[t(w,{modelValue:i(l).lunch_images,"onUpdate:modelValue":e[4]||(e[4]=o=>i(l).lunch_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),t(v,{"content-position":"left"},{default:a(()=>[...e[15]||(e[15]=[p("晚餐",-1)])]),_:1}),t(s,{label:"食物描述"},{default:a(()=>[t(b,{modelValue:i(l).dinner_foods,"onUpdate:modelValue":e[5]||(e[5]=o=>i(l).dinner_foods=o),type:"textarea",rows:2,placeholder:"请输入晚餐食物"},null,8,["modelValue"])]),_:1}),t(s,{label:"图片"},{default:a(()=>[t(w,{modelValue:i(l).dinner_images,"onUpdate:modelValue":e[6]||(e[6]=o=>i(l).dinner_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),t(s,{label:"备注"},{default:a(()=>[t(b,{modelValue:i(l).note,"onUpdate:modelValue":e[7]||(e[7]=o=>i(l).note=o),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),pt=J(pe,[["__scopeId","data-v-7c66f363"]]);export{pt as default};
+import{i as T,N as Y,M as A,D as F,B as L,a2 as $,U as P,C as q,V as G}from"./element-plus-DFTWCWyi.js";import{_ as H}from"./picker-BCRrEZaA.js";import{a9 as Q,aa as W,N as j,O as z}from"./tcm-BcqaE0lo.js";import{i as c,_ as J}from"./index-DBREMm_z.js";import{f as K,b as X,w as Z,ak as r,I as m,a as t,aN as a,O as p,H as C,G as ee,A as te}from"./@vue/runtime-core-C6bnekPw.js";import{n as y,y as i,a as oe}from"./@vue/reactivity-DiY1c2vO.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const le={class:"diet-record-list"},ae={key:0,class:"mb-4"},ie={key:0},de={key:1},ne={key:0},re={key:1},se={key:0},me={key:1},pe=K({__name:"DietRecordList",props:{diagnosisId:{type:Number,default:0},patientId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},setup(k){const d=k,x=y([]),u=y(!1),V=y(!1),D=te(()=>l.value.id?"编辑记录":"添加记录"),l=y({id:"",diagnosis_id:d.diagnosisId,patient_id:d.patientId,record_date:"",breakfast_foods:"",breakfast_images:[],lunch_foods:"",lunch_images:[],dinner_foods:"",dinner_images:[],note:""}),g=async()=>{if(!(!d.diagnosisId&&!d.patientId))try{const n=await Q({diagnosis_id:d.diagnosisId,patient_id:d.patientId});x.value=n}catch(n){console.error("获取记录失败:",n)}},E=()=>{l.value={id:"",diagnosis_id:d.diagnosisId,patient_id:d.patientId,record_date:"",breakfast_foods:"",breakfast_images:[],lunch_foods:"",lunch_images:[],dinner_foods:"",dinner_images:[],note:""},u.value=!0},U=n=>{l.value={...n},u.value=!0},N=async n=>{await c.confirm("确定要删除这条记录吗?");try{await W({id:n.id}),c.msgSuccess("删除成功"),g()}catch(e){console.error("删除失败:",e)}},R=async()=>{if(!l.value.record_date){c.msgWarning("请选择记录日期");return}V.value=!0;try{l.value.id?(await j(l.value),c.msgSuccess("编辑成功")):(await z(l.value),c.msgSuccess("添加成功")),u.value=!1,g()}catch(n){console.error("提交失败:",n)}finally{V.value=!1}};return X(()=>{g()}),Z(()=>[d.diagnosisId,d.patientId],()=>{g()}),(n,e)=>{const _=T,f=Y,B=A,h=$,s=L,v=P,b=q,w=H,O=F,S=G;return r(),m("div",le,[k.readOnly?C("",!0):(r(),m("div",ae,[t(_,{type:"primary",onClick:E},{default:a(()=>[...e[10]||(e[10]=[p("添加记录",-1)])]),_:1})])),t(B,{data:i(x),border:""},{default:a(()=>[t(f,{prop:"record_date",label:"记录日期",width:"120"}),t(f,{label:"早餐","min-width":"200"},{default:a(({row:o})=>[o.breakfast_foods?(r(),m("div",ie,I(o.breakfast_foods),1)):(r(),m("span",de,"-"))]),_:1}),t(f,{label:"午餐","min-width":"200"},{default:a(({row:o})=>[o.lunch_foods?(r(),m("div",ne,I(o.lunch_foods),1)):(r(),m("span",re,"-"))]),_:1}),t(f,{label:"晚餐","min-width":"200"},{default:a(({row:o})=>[o.dinner_foods?(r(),m("div",se,I(o.dinner_foods),1)):(r(),m("span",me,"-"))]),_:1}),t(f,{prop:"note",label:"备注","show-overflow-tooltip":""}),k.readOnly?C("",!0):(r(),ee(f,{key:0,label:"操作",width:"150",fixed:"right"},{default:a(({row:o})=>[t(_,{link:"",type:"primary",onClick:M=>U(o)},{default:a(()=>[...e[11]||(e[11]=[p("编辑",-1)])]),_:1},8,["onClick"]),t(_,{link:"",type:"danger",onClick:M=>N(o)},{default:a(()=>[...e[12]||(e[12]=[p("删除",-1)])]),_:1},8,["onClick"])]),_:1}))]),_:1},8,["data"]),t(S,{modelValue:i(u),"onUpdate:modelValue":e[9]||(e[9]=o=>oe(u)?u.value=o:null),title:i(D),width:"800px"},{footer:a(()=>[t(_,{onClick:e[8]||(e[8]=o=>u.value=!1)},{default:a(()=>[...e[16]||(e[16]=[p("取消",-1)])]),_:1}),t(_,{type:"primary",onClick:R,loading:i(V)},{default:a(()=>[...e[17]||(e[17]=[p("确定",-1)])]),_:1},8,["loading"])]),default:a(()=>[t(O,{model:i(l),"label-width":"100px"},{default:a(()=>[t(s,{label:"记录日期",required:""},{default:a(()=>[t(h,{modelValue:i(l).record_date,"onUpdate:modelValue":e[0]||(e[0]=o=>i(l).record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),t(v,{"content-position":"left"},{default:a(()=>[...e[13]||(e[13]=[p("早餐",-1)])]),_:1}),t(s,{label:"食物描述"},{default:a(()=>[t(b,{modelValue:i(l).breakfast_foods,"onUpdate:modelValue":e[1]||(e[1]=o=>i(l).breakfast_foods=o),type:"textarea",rows:2,placeholder:"请输入早餐食物"},null,8,["modelValue"])]),_:1}),t(s,{label:"图片"},{default:a(()=>[t(w,{modelValue:i(l).breakfast_images,"onUpdate:modelValue":e[2]||(e[2]=o=>i(l).breakfast_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),t(v,{"content-position":"left"},{default:a(()=>[...e[14]||(e[14]=[p("午餐",-1)])]),_:1}),t(s,{label:"食物描述"},{default:a(()=>[t(b,{modelValue:i(l).lunch_foods,"onUpdate:modelValue":e[3]||(e[3]=o=>i(l).lunch_foods=o),type:"textarea",rows:2,placeholder:"请输入午餐食物"},null,8,["modelValue"])]),_:1}),t(s,{label:"图片"},{default:a(()=>[t(w,{modelValue:i(l).lunch_images,"onUpdate:modelValue":e[4]||(e[4]=o=>i(l).lunch_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),t(v,{"content-position":"left"},{default:a(()=>[...e[15]||(e[15]=[p("晚餐",-1)])]),_:1}),t(s,{label:"食物描述"},{default:a(()=>[t(b,{modelValue:i(l).dinner_foods,"onUpdate:modelValue":e[5]||(e[5]=o=>i(l).dinner_foods=o),type:"textarea",rows:2,placeholder:"请输入晚餐食物"},null,8,["modelValue"])]),_:1}),t(s,{label:"图片"},{default:a(()=>[t(w,{modelValue:i(l).dinner_images,"onUpdate:modelValue":e[6]||(e[6]=o=>i(l).dinner_images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),t(s,{label:"备注"},{default:a(()=>[t(b,{modelValue:i(l).note,"onUpdate:modelValue":e[7]||(e[7]=o=>i(l).note=o),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),pt=J(pe,[["__scopeId","data-v-7c66f363"]]);export{pt as default};
diff --git a/server/public/admin/assets/ExerciseRecordList-B5U5W1JH.js b/server/public/admin/assets/ExerciseRecordList-D_Lyt-5M.js
similarity index 86%
rename from server/public/admin/assets/ExerciseRecordList-B5U5W1JH.js
rename to server/public/admin/assets/ExerciseRecordList-D_Lyt-5M.js
index e9ac5217..9646cc85 100644
--- a/server/public/admin/assets/ExerciseRecordList-B5U5W1JH.js
+++ b/server/public/admin/assets/ExerciseRecordList-D_Lyt-5M.js
@@ -1 +1 @@
-import{i as F,N as L,M as W,D as $,B as h,a2 as Q,P as G,Q as H,h as j,C as z,V as J}from"./element-plus-0wC3naml.js";import{_ as K}from"./picker-DlbAZkDm.js";import{aa as X,ab as Z,O as ee,P as te}from"./tcm-SLIwsL8z.js";import{i as p,_ as le}from"./index-E47--KT7.js";import{f as oe,b as ae,w as ie,ak as g,I as w,a as e,aN as a,O as u,H as k,G as re,A as ne}from"./@vue/runtime-core-C6bnekPw.js";import{n as b,y as i,a as de}from"./@vue/reactivity-DiY1c2vO.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const se={class:"exercise-record-list"},me={key:0,class:"mb-4"},pe=oe({__name:"ExerciseRecordList",props:{diagnosisId:{type:Number,default:0},patientId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},setup(y){const n=y,V=b([]),s=b(!1),v=b(!1),E=ne(()=>l.value.id?"编辑记录":"添加记录"),l=b({id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",exercise_type:"",duration:0,intensity:1,images:[],note:""}),C=[{label:"低强度",value:1},{label:"中强度",value:2},{label:"高强度",value:3}],D=r=>{const t=C.find(m=>m.value===r);return t?t.label:"未知"},f=async()=>{if(!(!n.diagnosisId&&!n.patientId))try{const r=await X({diagnosis_id:n.diagnosisId,patient_id:n.patientId});V.value=r}catch(r){console.error("获取记录失败:",r)}},N=()=>{l.value={id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",exercise_type:"",duration:0,intensity:1,images:[],note:""},s.value=!0},R=r=>{l.value={...r},s.value=!0},B=async r=>{await p.confirm("确定要删除这条记录吗?");try{await Z({id:r.id}),p.msgSuccess("删除成功"),f()}catch(t){console.error("删除失败:",t)}},O=async()=>{if(!l.value.record_date){p.msgWarning("请选择记录日期");return}if(!l.value.exercise_type){p.msgWarning("请选择运动类型");return}if(!l.value.duration){p.msgWarning("请输入运动时长");return}v.value=!0;try{l.value.id?(await ee(l.value),p.msgSuccess("编辑成功")):(await te(l.value),p.msgSuccess("添加成功")),s.value=!1,f()}catch(r){console.error("提交失败:",r)}finally{v.value=!1}};return ae(()=>{f()}),ie(()=>[n.diagnosisId,n.patientId],()=>{f()}),(r,t)=>{const m=F,c=L,U=W,S=Q,_=h,d=H,x=G,T=j,q=K,M=z,P=$,Y=J;return g(),w("div",se,[y.readOnly?k("",!0):(g(),w("div",me,[e(m,{type:"primary",onClick:N},{default:a(()=>[...t[8]||(t[8]=[u("添加记录",-1)])]),_:1})])),e(U,{data:i(V),border:"",style:{width:"100%"}},{default:a(()=>[e(c,{prop:"record_date",label:"记录日期",width:"120"}),e(c,{prop:"exercise_type",label:"运动类型",width:"150"}),e(c,{prop:"duration",label:"运动时长",width:"100"},{default:a(({row:o})=>[u(I(o.duration)+" 分钟 ",1)]),_:1}),e(c,{label:"运动强度",width:"100"},{default:a(({row:o})=>[u(I(D(o.intensity)),1)]),_:1}),e(c,{prop:"note",label:"备注","show-overflow-tooltip":""}),y.readOnly?k("",!0):(g(),re(c,{key:0,label:"操作",width:"150",fixed:"right"},{default:a(({row:o})=>[e(m,{link:"",type:"primary",onClick:A=>R(o)},{default:a(()=>[...t[9]||(t[9]=[u("编辑",-1)])]),_:1},8,["onClick"]),e(m,{link:"",type:"danger",onClick:A=>B(o)},{default:a(()=>[...t[10]||(t[10]=[u("删除",-1)])]),_:1},8,["onClick"])]),_:1}))]),_:1},8,["data"]),e(Y,{modelValue:i(s),"onUpdate:modelValue":t[7]||(t[7]=o=>de(s)?s.value=o:null),title:i(E),width:"600px"},{footer:a(()=>[e(m,{onClick:t[6]||(t[6]=o=>s.value=!1)},{default:a(()=>[...t[11]||(t[11]=[u("取消",-1)])]),_:1}),e(m,{type:"primary",onClick:O,loading:i(v)},{default:a(()=>[...t[12]||(t[12]=[u("确定",-1)])]),_:1},8,["loading"])]),default:a(()=>[e(P,{model:i(l),"label-width":"120px"},{default:a(()=>[e(_,{label:"记录日期",required:""},{default:a(()=>[e(S,{modelValue:i(l).record_date,"onUpdate:modelValue":t[0]||(t[0]=o=>i(l).record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),e(_,{label:"运动类型",required:""},{default:a(()=>[e(x,{modelValue:i(l).exercise_type,"onUpdate:modelValue":t[1]||(t[1]=o=>i(l).exercise_type=o),placeholder:"请选择运动类型",class:"w-full"},{default:a(()=>[e(d,{label:"散步",value:"散步"}),e(d,{label:"慢跑",value:"慢跑"}),e(d,{label:"游泳",value:"游泳"}),e(d,{label:"瑜伽",value:"瑜伽"}),e(d,{label:"骑自行车",value:"骑自行车"}),e(d,{label:"打太极拳",value:"打太极拳"}),e(d,{label:"其他",value:"其他"})]),_:1},8,["modelValue"])]),_:1}),e(_,{label:"运动时长(分钟)",required:""},{default:a(()=>[e(T,{modelValue:i(l).duration,"onUpdate:modelValue":t[2]||(t[2]=o=>i(l).duration=o),min:0,max:300,placeholder:"请输入运动时长"},null,8,["modelValue"])]),_:1}),e(_,{label:"运动强度",required:""},{default:a(()=>[e(x,{modelValue:i(l).intensity,"onUpdate:modelValue":t[3]||(t[3]=o=>i(l).intensity=o),placeholder:"请选择运动强度",class:"w-full"},{default:a(()=>[e(d,{label:"低强度",value:1}),e(d,{label:"中强度",value:2}),e(d,{label:"高强度",value:3})]),_:1},8,["modelValue"])]),_:1}),e(_,{label:"运动图片"},{default:a(()=>[e(q,{modelValue:i(l).images,"onUpdate:modelValue":t[4]||(t[4]=o=>i(l).images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),e(_,{label:"备注"},{default:a(()=>[e(M,{modelValue:i(l).note,"onUpdate:modelValue":t[5]||(t[5]=o=>i(l).note=o),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),pt=le(pe,[["__scopeId","data-v-ab6f0ec7"]]);export{pt as default};
+import{i as F,N as L,M as Q,D as W,B as $,a2 as h,P as G,Q as H,h as j,C as z,V as J}from"./element-plus-DFTWCWyi.js";import{_ as K}from"./picker-BCRrEZaA.js";import{ab as X,ac as Z,P as ee,Q as te}from"./tcm-BcqaE0lo.js";import{i as p,_ as le}from"./index-DBREMm_z.js";import{f as oe,b as ae,w as ie,ak as g,I as w,a as e,aN as a,O as u,H as k,G as re,A as ne}from"./@vue/runtime-core-C6bnekPw.js";import{n as b,y as i,a as de}from"./@vue/reactivity-DiY1c2vO.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const se={class:"exercise-record-list"},me={key:0,class:"mb-4"},pe=oe({__name:"ExerciseRecordList",props:{diagnosisId:{type:Number,default:0},patientId:{type:Number,default:0},readOnly:{type:Boolean,default:!1}},setup(y){const n=y,V=b([]),s=b(!1),v=b(!1),E=ne(()=>l.value.id?"编辑记录":"添加记录"),l=b({id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",exercise_type:"",duration:0,intensity:1,images:[],note:""}),C=[{label:"低强度",value:1},{label:"中强度",value:2},{label:"高强度",value:3}],D=r=>{const t=C.find(m=>m.value===r);return t?t.label:"未知"},f=async()=>{if(!(!n.diagnosisId&&!n.patientId))try{const r=await X({diagnosis_id:n.diagnosisId,patient_id:n.patientId});V.value=r}catch(r){console.error("获取记录失败:",r)}},N=()=>{l.value={id:"",diagnosis_id:n.diagnosisId,patient_id:n.patientId,record_date:"",exercise_type:"",duration:0,intensity:1,images:[],note:""},s.value=!0},R=r=>{l.value={...r},s.value=!0},B=async r=>{await p.confirm("确定要删除这条记录吗?");try{await Z({id:r.id}),p.msgSuccess("删除成功"),f()}catch(t){console.error("删除失败:",t)}},U=async()=>{if(!l.value.record_date){p.msgWarning("请选择记录日期");return}if(!l.value.exercise_type){p.msgWarning("请选择运动类型");return}if(!l.value.duration){p.msgWarning("请输入运动时长");return}v.value=!0;try{l.value.id?(await ee(l.value),p.msgSuccess("编辑成功")):(await te(l.value),p.msgSuccess("添加成功")),s.value=!1,f()}catch(r){console.error("提交失败:",r)}finally{v.value=!1}};return ae(()=>{f()}),ie(()=>[n.diagnosisId,n.patientId],()=>{f()}),(r,t)=>{const m=F,c=L,O=Q,S=h,_=$,d=H,x=G,T=j,q=K,M=z,P=W,Y=J;return g(),w("div",se,[y.readOnly?k("",!0):(g(),w("div",me,[e(m,{type:"primary",onClick:N},{default:a(()=>[...t[8]||(t[8]=[u("添加记录",-1)])]),_:1})])),e(O,{data:i(V),border:"",style:{width:"100%"}},{default:a(()=>[e(c,{prop:"record_date",label:"记录日期",width:"120"}),e(c,{prop:"exercise_type",label:"运动类型",width:"150"}),e(c,{prop:"duration",label:"运动时长",width:"100"},{default:a(({row:o})=>[u(I(o.duration)+" 分钟 ",1)]),_:1}),e(c,{label:"运动强度",width:"100"},{default:a(({row:o})=>[u(I(D(o.intensity)),1)]),_:1}),e(c,{prop:"note",label:"备注","show-overflow-tooltip":""}),y.readOnly?k("",!0):(g(),re(c,{key:0,label:"操作",width:"150",fixed:"right"},{default:a(({row:o})=>[e(m,{link:"",type:"primary",onClick:A=>R(o)},{default:a(()=>[...t[9]||(t[9]=[u("编辑",-1)])]),_:1},8,["onClick"]),e(m,{link:"",type:"danger",onClick:A=>B(o)},{default:a(()=>[...t[10]||(t[10]=[u("删除",-1)])]),_:1},8,["onClick"])]),_:1}))]),_:1},8,["data"]),e(Y,{modelValue:i(s),"onUpdate:modelValue":t[7]||(t[7]=o=>de(s)?s.value=o:null),title:i(E),width:"600px"},{footer:a(()=>[e(m,{onClick:t[6]||(t[6]=o=>s.value=!1)},{default:a(()=>[...t[11]||(t[11]=[u("取消",-1)])]),_:1}),e(m,{type:"primary",onClick:U,loading:i(v)},{default:a(()=>[...t[12]||(t[12]=[u("确定",-1)])]),_:1},8,["loading"])]),default:a(()=>[e(P,{model:i(l),"label-width":"120px"},{default:a(()=>[e(_,{label:"记录日期",required:""},{default:a(()=>[e(S,{modelValue:i(l).record_date,"onUpdate:modelValue":t[0]||(t[0]=o=>i(l).record_date=o),type:"date",placeholder:"选择日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1}),e(_,{label:"运动类型",required:""},{default:a(()=>[e(x,{modelValue:i(l).exercise_type,"onUpdate:modelValue":t[1]||(t[1]=o=>i(l).exercise_type=o),placeholder:"请选择运动类型",class:"w-full"},{default:a(()=>[e(d,{label:"散步",value:"散步"}),e(d,{label:"慢跑",value:"慢跑"}),e(d,{label:"游泳",value:"游泳"}),e(d,{label:"瑜伽",value:"瑜伽"}),e(d,{label:"骑自行车",value:"骑自行车"}),e(d,{label:"打太极拳",value:"打太极拳"}),e(d,{label:"其他",value:"其他"})]),_:1},8,["modelValue"])]),_:1}),e(_,{label:"运动时长(分钟)",required:""},{default:a(()=>[e(T,{modelValue:i(l).duration,"onUpdate:modelValue":t[2]||(t[2]=o=>i(l).duration=o),min:0,max:300,placeholder:"请输入运动时长"},null,8,["modelValue"])]),_:1}),e(_,{label:"运动强度",required:""},{default:a(()=>[e(x,{modelValue:i(l).intensity,"onUpdate:modelValue":t[3]||(t[3]=o=>i(l).intensity=o),placeholder:"请选择运动强度",class:"w-full"},{default:a(()=>[e(d,{label:"低强度",value:1}),e(d,{label:"中强度",value:2}),e(d,{label:"高强度",value:3})]),_:1},8,["modelValue"])]),_:1}),e(_,{label:"运动图片"},{default:a(()=>[e(q,{modelValue:i(l).images,"onUpdate:modelValue":t[4]||(t[4]=o=>i(l).images=o),limit:3,type:"image"},null,8,["modelValue"])]),_:1}),e(_,{label:"备注"},{default:a(()=>[e(M,{modelValue:i(l).note,"onUpdate:modelValue":t[5]||(t[5]=o=>i(l).note=o),type:"textarea",rows:3,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),pt=le(pe,[["__scopeId","data-v-ab6f0ec7"]]);export{pt as default};
diff --git a/server/public/admin/assets/ImChatRecordPanel-DiuuXcLT.js b/server/public/admin/assets/ImChatRecordPanel-C40Ue1e_.js
similarity index 96%
rename from server/public/admin/assets/ImChatRecordPanel-DiuuXcLT.js
rename to server/public/admin/assets/ImChatRecordPanel-C40Ue1e_.js
index 6f365884..bb31890b 100644
--- a/server/public/admin/assets/ImChatRecordPanel-DiuuXcLT.js
+++ b/server/public/admin/assets/ImChatRecordPanel-C40Ue1e_.js
@@ -1 +1 @@
-import{K as F,d as H,i as G,R as J,L as $,T as j,v as q,_ as K,E as x}from"./element-plus-0wC3naml.js";import{d as O}from"./dayjs-DG77mNTn.js";import{a9 as Q,L as W}from"./@element-plus/icons-vue-HOEUG8sr.js";import{ac as U,ad as X}from"./tcm-SLIwsL8z.js";import{p as Z}from"./im-business-message-parse-QKjFLn3X.js";import{f as tt,w as et,ak as s,I as o,a as l,aN as c,J as r,O as d,aP as at,F as E,ap as st,G as _,H as v,A as ot}from"./@vue/runtime-core-C6bnekPw.js";import{y as C,n as u,q as rt}from"./@vue/reactivity-DiY1c2vO.js";import{o as nt,Q as n}from"./@vue/shared-mAAVTE9n.js";import{_ as it}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const lt={class:"im-chat-record-panel"},ct={class:"toolbar mb-3"},mt={class:"chat-wrap"},dt={key:0,class:"chat-list"},pt={class:"meta"},_t={class:"name"},ut={class:"time"},ft={class:"bubble"},yt={key:0,class:"friendly-text"},gt={class:"friendly-main"},vt={key:0,class:"friendly-sub"},ht={key:1,class:"text-content"},wt={key:2,class:"text-content"},kt={key:3,class:"muted"},It=tt({__name:"ImChatRecordPanel",props:{diagnosisId:{}},setup(L,{expose:B}){const p=L,m=u(!1),f=u(!1),y=rt([]),M=u(""),g=u(""),N={text:"",image:"图片",file:"文件",sound:"语音",video:"视频",location:"位置",custom:"自定义",face:"表情",other:""},h=ot(()=>y.value.map(t=>{const a=P(t);let i="";return a!=null&&a.tag?i=a.tag:i=N[t.msg_type]||(t.msg_type!=="other"?t.msg_type:""),{raw:t,friendly:a,tag:i}}));function D(t){if(t==null||!t)return"—";const a=t>1e12?Math.floor(t/1e3):t;return O.unix(a).format("YYYY-MM-DD HH:mm:ss")}function P(t){const a=(t.text||"").trim();if(!a)return null;const i=a.startsWith("{")&&(/\bbusinessID\b/.test(a)||/\bcmd\b/.test(a));return t.msg_type==="custom"||i?Z(a):null}function R(t){return t.is_from_doctor?t.from_staff_name?`医生(${t.from_staff_name})`:"医生/员工":g.value?`患者(${g.value})`:"患者"}async function w(){if(p.diagnosisId){m.value=!0;try{const t=await U({diagnosis_id:p.diagnosisId,only_archived:1});y.value=(t==null?void 0:t.lists)||[],M.value=(t==null?void 0:t.patient_im_id)||"",g.value=(t==null?void 0:t.patient_name)||""}catch(t){console.error(t),y.value=[]}finally{m.value=!1}}}function k(){w()}async function S(){if(p.diagnosisId){f.value=!0;try{await X({diagnosis_id:p.diagnosisId}),x.success('已发起后台同步,几秒后请点击"重新加载已归档"查看新消息')}catch(t){console.error(t),x.error("发起同步失败")}finally{f.value=!1}}}return et(()=>p.diagnosisId,()=>{w()},{immediate:!0}),B({refresh:k}),(t,a)=>{const i=F,I=H,b=G,T=j,Y=q,A=K,V=J,z=$;return s(),o("div",lt,[l(i,{type:"info","show-icon":"",closable:!1,class:"mb-4",title:"说明"},{default:c(()=>[...a[0]||(a[0]=[r("p",{class:"panel-tip"},[d(" 展示单聊记录:已合并患者 与 "),r("strong",null,"所有医生 / 医助账号"),d("分别产生的会话,按时间排序。 数据由后台定时任务从腾讯云 IM 漫游消息同步至本地归档;点击下方按钮可立即触发后台同步。 ")],-1)])]),_:1}),r("div",ct,[l(b,{type:"primary",link:"",loading:f.value,onClick:S},{default:c(()=>[l(I,{class:"mr-1"},{default:c(()=>[l(C(Q))]),_:1}),a[1]||(a[1]=d(" 同步最新(后台异步) ",-1))]),_:1},8,["loading"]),l(b,{type:"primary",link:"",loading:m.value,onClick:k},{default:c(()=>[l(I,{class:"mr-1"},{default:c(()=>[l(C(W))]),_:1}),a[2]||(a[2]=d(" 重新加载已归档 ",-1))]),_:1},8,["loading"])]),at((s(),o("div",mt,[!m.value&&h.value.length?(s(),o("div",dt,[(s(!0),o(E,null,st(h.value,e=>(s(),o("div",{key:e.raw.msg_id,class:nt(["chat-row",e.raw.is_from_doctor?"from-doctor":"from-patient"])},[r("div",pt,[r("span",_t,n(R(e.raw)),1),r("span",ut,n(D(e.raw.time)),1),e.tag?(s(),_(T,{key:0,size:"small",type:"info",class:"ml-2"},{default:c(()=>[d(n(e.tag),1)]),_:2},1024)):v("",!0)]),r("div",ft,[e.raw.msg_type==="image"&&e.raw.image_url?(s(),_(Y,{key:0,src:e.raw.image_url,"preview-src-list":[e.raw.image_url],fit:"contain",class:"chat-img"},null,8,["src","preview-src-list"])):(e.raw.msg_type==="file"||e.raw.msg_type==="sound"||e.raw.msg_type==="video")&&e.raw.file_url?(s(),_(A,{key:1,href:e.raw.file_url,target:"_blank",type:"primary"},{default:c(()=>[d(n(e.raw.file_name||"打开文件"),1)]),_:2},1032,["href"])):(s(),o(E,{key:2},[e.friendly?(s(),o("div",yt,[r("div",gt,n(e.friendly.main),1),e.friendly.sub?(s(),o("div",vt,n(e.friendly.sub),1)):v("",!0)])):e.raw.msg_type==="text"&&e.raw.text?(s(),o("div",ht,n(e.raw.text),1)):e.raw.text?(s(),o("div",wt,n(e.raw.text),1)):(s(),o("span",kt,"(无法展示该消息类型)"))],64))])],2))),128))])):m.value?v("",!0):(s(),_(V,{key:1,description:"暂无 IM 聊天记录"}))])),[[z,m.value]])])}}}),le=it(It,[["__scopeId","data-v-58b699dd"]]);export{le as default};
+import{K as F,d as H,i as G,R as J,L as $,T as j,v as q,_ as K,E as x}from"./element-plus-DFTWCWyi.js";import{d as O}from"./dayjs-DG77mNTn.js";import{a9 as Q,L as W}from"./@element-plus/icons-vue-HOEUG8sr.js";import{ad as U,ae as X}from"./tcm-BcqaE0lo.js";import{p as Z}from"./im-business-message-parse-QKjFLn3X.js";import{f as tt,w as et,ak as s,I as o,a as l,aN as c,J as r,O as d,aP as at,F as E,ap as st,G as _,H as v,A as ot}from"./@vue/runtime-core-C6bnekPw.js";import{y as C,n as u,q as rt}from"./@vue/reactivity-DiY1c2vO.js";import{o as nt,Q as n}from"./@vue/shared-mAAVTE9n.js";import{_ as it}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const lt={class:"im-chat-record-panel"},ct={class:"toolbar mb-3"},mt={class:"chat-wrap"},dt={key:0,class:"chat-list"},pt={class:"meta"},_t={class:"name"},ut={class:"time"},ft={class:"bubble"},yt={key:0,class:"friendly-text"},gt={class:"friendly-main"},vt={key:0,class:"friendly-sub"},ht={key:1,class:"text-content"},wt={key:2,class:"text-content"},kt={key:3,class:"muted"},It=tt({__name:"ImChatRecordPanel",props:{diagnosisId:{}},setup(L,{expose:B}){const p=L,m=u(!1),f=u(!1),y=rt([]),M=u(""),g=u(""),N={text:"",image:"图片",file:"文件",sound:"语音",video:"视频",location:"位置",custom:"自定义",face:"表情",other:""},h=ot(()=>y.value.map(t=>{const a=P(t);let i="";return a!=null&&a.tag?i=a.tag:i=N[t.msg_type]||(t.msg_type!=="other"?t.msg_type:""),{raw:t,friendly:a,tag:i}}));function D(t){if(t==null||!t)return"—";const a=t>1e12?Math.floor(t/1e3):t;return O.unix(a).format("YYYY-MM-DD HH:mm:ss")}function P(t){const a=(t.text||"").trim();if(!a)return null;const i=a.startsWith("{")&&(/\bbusinessID\b/.test(a)||/\bcmd\b/.test(a));return t.msg_type==="custom"||i?Z(a):null}function R(t){return t.is_from_doctor?t.from_staff_name?`医生(${t.from_staff_name})`:"医生/员工":g.value?`患者(${g.value})`:"患者"}async function w(){if(p.diagnosisId){m.value=!0;try{const t=await U({diagnosis_id:p.diagnosisId,only_archived:1});y.value=(t==null?void 0:t.lists)||[],M.value=(t==null?void 0:t.patient_im_id)||"",g.value=(t==null?void 0:t.patient_name)||""}catch(t){console.error(t),y.value=[]}finally{m.value=!1}}}function k(){w()}async function S(){if(p.diagnosisId){f.value=!0;try{await X({diagnosis_id:p.diagnosisId}),x.success('已发起后台同步,几秒后请点击"重新加载已归档"查看新消息')}catch(t){console.error(t),x.error("发起同步失败")}finally{f.value=!1}}}return et(()=>p.diagnosisId,()=>{w()},{immediate:!0}),B({refresh:k}),(t,a)=>{const i=F,I=H,b=G,T=j,Y=q,A=K,V=J,z=$;return s(),o("div",lt,[l(i,{type:"info","show-icon":"",closable:!1,class:"mb-4",title:"说明"},{default:c(()=>[...a[0]||(a[0]=[r("p",{class:"panel-tip"},[d(" 展示单聊记录:已合并患者 与 "),r("strong",null,"所有医生 / 医助账号"),d("分别产生的会话,按时间排序。 数据由后台定时任务从腾讯云 IM 漫游消息同步至本地归档;点击下方按钮可立即触发后台同步。 ")],-1)])]),_:1}),r("div",ct,[l(b,{type:"primary",link:"",loading:f.value,onClick:S},{default:c(()=>[l(I,{class:"mr-1"},{default:c(()=>[l(C(Q))]),_:1}),a[1]||(a[1]=d(" 同步最新(后台异步) ",-1))]),_:1},8,["loading"]),l(b,{type:"primary",link:"",loading:m.value,onClick:k},{default:c(()=>[l(I,{class:"mr-1"},{default:c(()=>[l(C(W))]),_:1}),a[2]||(a[2]=d(" 重新加载已归档 ",-1))]),_:1},8,["loading"])]),at((s(),o("div",mt,[!m.value&&h.value.length?(s(),o("div",dt,[(s(!0),o(E,null,st(h.value,e=>(s(),o("div",{key:e.raw.msg_id,class:nt(["chat-row",e.raw.is_from_doctor?"from-doctor":"from-patient"])},[r("div",pt,[r("span",_t,n(R(e.raw)),1),r("span",ut,n(D(e.raw.time)),1),e.tag?(s(),_(T,{key:0,size:"small",type:"info",class:"ml-2"},{default:c(()=>[d(n(e.tag),1)]),_:2},1024)):v("",!0)]),r("div",ft,[e.raw.msg_type==="image"&&e.raw.image_url?(s(),_(Y,{key:0,src:e.raw.image_url,"preview-src-list":[e.raw.image_url],fit:"contain",class:"chat-img"},null,8,["src","preview-src-list"])):(e.raw.msg_type==="file"||e.raw.msg_type==="sound"||e.raw.msg_type==="video")&&e.raw.file_url?(s(),_(A,{key:1,href:e.raw.file_url,target:"_blank",type:"primary"},{default:c(()=>[d(n(e.raw.file_name||"打开文件"),1)]),_:2},1032,["href"])):(s(),o(E,{key:2},[e.friendly?(s(),o("div",yt,[r("div",gt,n(e.friendly.main),1),e.friendly.sub?(s(),o("div",vt,n(e.friendly.sub),1)):v("",!0)])):e.raw.msg_type==="text"&&e.raw.text?(s(),o("div",ht,n(e.raw.text),1)):e.raw.text?(s(),o("div",wt,n(e.raw.text),1)):(s(),o("span",kt,"(无法展示该消息类型)"))],64))])],2))),128))])):m.value?v("",!0):(s(),_(V,{key:1,description:"暂无 IM 聊天记录"}))])),[[z,m.value]])])}}}),le=it(It,[["__scopeId","data-v-58b699dd"]]);export{le as default};
diff --git a/server/public/admin/assets/MessageBubble-c6JPgo9w.js b/server/public/admin/assets/MessageBubble-joJCVvzv.js
similarity index 95%
rename from server/public/admin/assets/MessageBubble-c6JPgo9w.js
rename to server/public/admin/assets/MessageBubble-joJCVvzv.js
index d9e3b7f9..ca7c0e53 100644
--- a/server/public/admin/assets/MessageBubble-c6JPgo9w.js
+++ b/server/public/admin/assets/MessageBubble-joJCVvzv.js
@@ -1 +1 @@
-import{q as G,T as S,v as A,d as O,i as Q}from"./element-plus-0wC3naml.js";import{O as q,P as D,Q as H,G as J}from"./@element-plus/icons-vue-HOEUG8sr.js";import{t as K,_ as L}from"./index-E47--KT7.js";import{f as P,ak as a,I as o,a as r,aN as c,O as d,J as i,G as g,H as x,F as U,A as u}from"./@vue/runtime-core-C6bnekPw.js";import{o as B,Q as n}from"./@vue/shared-mAAVTE9n.js";import{y as p}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const j={class:"msg-body"},R={class:"msg-meta"},W={class:"msg-sender"},X={class:"msg-time"},Y={key:0,class:"content-text"},Z={key:2,class:"content-pending"},ee=["src"],te={key:4,class:"content-pending"},se=["src"],ae={key:6,class:"content-pending"},ie={key:7,class:"content-file"},oe={class:"file-meta"},ne=["title"],le={class:"file-info"},me={key:8,class:"content-fallback"},re={class:"fallback-title"},ce={class:"fallback-desc"},ue=P({__name:"MessageBubble",props:{message:{}},setup(t){const l=t,w=u(()=>l.message.from_is_staff),m=u(()=>(l.message.media||[]).find(s=>s.status===1)??null),v=u(()=>{const e=l.message.from_profile;return e&&e.name||l.message.from_user}),z=u(()=>{const e=l.message.from_profile;return(e==null?void 0:e.avatar)||""}),F=u(()=>(v.value||"").slice(-2)||"?"),N=u(()=>{const e=l.message.msgtype;return e==="image"||e==="video"||e==="voice"?"bubble-media":e==="file"?"bubble-file":"bubble-text"}),C=u(()=>{switch(l.message.msgtype){case"link":return"[链接]";case"weapp":return"[小程序]";case"chatrecord":return"[聊天记录]";case"location":return"[位置]";case"card":return"[名片]";case"meeting":return"[会议]";case"docmsg":return"[文档]";case"mixed":return"[混合消息]";case"emotion":return"[表情]";default:return`[${l.message.msgtype}]`}});function E(e){return e?K(e*1e3,"mm-dd hh:MM"):""}function M(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/1024/1024).toFixed(2)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`:""}function $(e){window.open(e,"_blank","noopener")}return(e,s)=>{var k,y,b,h;const I=G,_=S,T=A,f=O,V=Q;return a(),o("div",{class:B(["msg-bubble",{"is-staff":w.value}])},[r(I,{class:"msg-avatar",size:36,src:z.value},{default:c(()=>[d(n(F.value),1)]),_:1},8,["src"]),i("div",j,[i("div",R,[i("span",W,n(v.value),1),i("span",X,n(E(t.message.send_time)),1),t.message.action==="recall"?(a(),g(_,{key:0,size:"small",type:"info"},{default:c(()=>[...s[1]||(s[1]=[d(" 已撤回 ",-1)])]),_:1})):x("",!0)]),i("div",{class:B(["msg-content",N.value])},[t.message.msgtype==="text"||t.message.msgtype==="markdown"?(a(),o("div",Y,n(t.message.content),1)):t.message.msgtype==="image"&&((k=m.value)!=null&&k.file_url)?(a(),g(T,{key:1,src:m.value.file_url,"preview-src-list":[m.value.file_url],fit:"contain",class:"content-image","hide-on-click-modal":""},null,8,["src","preview-src-list"])):t.message.msgtype==="image"?(a(),o("div",Z,[r(f,null,{default:c(()=>[r(p(q))]),_:1}),s[2]||(s[2]=i("span",null,"图片下载中…",-1))])):t.message.msgtype==="video"&&((y=m.value)!=null&&y.file_url)?(a(),o("video",{key:3,src:m.value.file_url,controls:"",class:"content-video"},null,8,ee)):t.message.msgtype==="video"?(a(),o("div",te,[r(f,null,{default:c(()=>[r(p(D))]),_:1}),s[3]||(s[3]=i("span",null,"视频下载中…",-1))])):t.message.msgtype==="voice"&&((b=m.value)!=null&&b.file_url)?(a(),o("audio",{key:5,src:m.value.file_url,controls:"",class:"content-audio"},null,8,se)):t.message.msgtype==="voice"?(a(),o("div",ae,[r(f,null,{default:c(()=>[r(p(H))]),_:1}),i("span",null,"语音下载中…("+n(t.message.play_length)+"s)",1)])):t.message.msgtype==="file"?(a(),o("div",ie,[r(f,{size:24},{default:c(()=>[r(p(J))]),_:1}),i("div",oe,[i("div",{class:"file-name",title:t.message.file_name},n(t.message.file_name||"未命名文件"),9,ne),i("div",le,[d(n(M(t.message.file_size))+" ",1),t.message.file_ext?(a(),o(U,{key:0},[d("· "+n(t.message.file_ext),1)],64)):x("",!0)])]),(h=m.value)!=null&&h.file_url?(a(),g(V,{key:0,size:"small",type:"primary",link:"",onClick:s[0]||(s[0]=de=>$(m.value.file_url))},{default:c(()=>[...s[4]||(s[4]=[d(" 下载 ",-1)])]),_:1})):(a(),g(_,{key:1,size:"small",type:"info"},{default:c(()=>[...s[5]||(s[5]=[d("下载中…",-1)])]),_:1}))])):(a(),o("div",me,[i("div",re,n(C.value),1),i("div",ce,n(t.message.content),1)]))],2)])],2)}}}),We=L(ue,[["__scopeId","data-v-b5ff1168"]]);export{We as default};
+import{q as G,T as S,v as A,d as O,i as Q}from"./element-plus-DFTWCWyi.js";import{O as q,P as D,Q as H,G as J}from"./@element-plus/icons-vue-HOEUG8sr.js";import{t as K,_ as L}from"./index-DBREMm_z.js";import{f as P,ak as a,I as o,a as r,aN as c,O as d,J as i,G as g,H as x,F as U,A as u}from"./@vue/runtime-core-C6bnekPw.js";import{o as B,Q as n}from"./@vue/shared-mAAVTE9n.js";import{y as p}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const j={class:"msg-body"},R={class:"msg-meta"},W={class:"msg-sender"},X={class:"msg-time"},Y={key:0,class:"content-text"},Z={key:2,class:"content-pending"},ee=["src"],te={key:4,class:"content-pending"},se=["src"],ae={key:6,class:"content-pending"},ie={key:7,class:"content-file"},oe={class:"file-meta"},ne=["title"],le={class:"file-info"},me={key:8,class:"content-fallback"},re={class:"fallback-title"},ce={class:"fallback-desc"},ue=P({__name:"MessageBubble",props:{message:{}},setup(t){const l=t,w=u(()=>l.message.from_is_staff),m=u(()=>(l.message.media||[]).find(s=>s.status===1)??null),v=u(()=>{const e=l.message.from_profile;return e&&e.name||l.message.from_user}),z=u(()=>{const e=l.message.from_profile;return(e==null?void 0:e.avatar)||""}),F=u(()=>(v.value||"").slice(-2)||"?"),N=u(()=>{const e=l.message.msgtype;return e==="image"||e==="video"||e==="voice"?"bubble-media":e==="file"?"bubble-file":"bubble-text"}),C=u(()=>{switch(l.message.msgtype){case"link":return"[链接]";case"weapp":return"[小程序]";case"chatrecord":return"[聊天记录]";case"location":return"[位置]";case"card":return"[名片]";case"meeting":return"[会议]";case"docmsg":return"[文档]";case"mixed":return"[混合消息]";case"emotion":return"[表情]";default:return`[${l.message.msgtype}]`}});function E(e){return e?K(e*1e3,"mm-dd hh:MM"):""}function M(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/1024/1024).toFixed(2)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`:""}function $(e){window.open(e,"_blank","noopener")}return(e,s)=>{var k,y,b,h;const I=G,_=S,T=A,f=O,V=Q;return a(),o("div",{class:B(["msg-bubble",{"is-staff":w.value}])},[r(I,{class:"msg-avatar",size:36,src:z.value},{default:c(()=>[d(n(F.value),1)]),_:1},8,["src"]),i("div",j,[i("div",R,[i("span",W,n(v.value),1),i("span",X,n(E(t.message.send_time)),1),t.message.action==="recall"?(a(),g(_,{key:0,size:"small",type:"info"},{default:c(()=>[...s[1]||(s[1]=[d(" 已撤回 ",-1)])]),_:1})):x("",!0)]),i("div",{class:B(["msg-content",N.value])},[t.message.msgtype==="text"||t.message.msgtype==="markdown"?(a(),o("div",Y,n(t.message.content),1)):t.message.msgtype==="image"&&((k=m.value)!=null&&k.file_url)?(a(),g(T,{key:1,src:m.value.file_url,"preview-src-list":[m.value.file_url],fit:"contain",class:"content-image","hide-on-click-modal":""},null,8,["src","preview-src-list"])):t.message.msgtype==="image"?(a(),o("div",Z,[r(f,null,{default:c(()=>[r(p(q))]),_:1}),s[2]||(s[2]=i("span",null,"图片下载中…",-1))])):t.message.msgtype==="video"&&((y=m.value)!=null&&y.file_url)?(a(),o("video",{key:3,src:m.value.file_url,controls:"",class:"content-video"},null,8,ee)):t.message.msgtype==="video"?(a(),o("div",te,[r(f,null,{default:c(()=>[r(p(D))]),_:1}),s[3]||(s[3]=i("span",null,"视频下载中…",-1))])):t.message.msgtype==="voice"&&((b=m.value)!=null&&b.file_url)?(a(),o("audio",{key:5,src:m.value.file_url,controls:"",class:"content-audio"},null,8,se)):t.message.msgtype==="voice"?(a(),o("div",ae,[r(f,null,{default:c(()=>[r(p(H))]),_:1}),i("span",null,"语音下载中…("+n(t.message.play_length)+"s)",1)])):t.message.msgtype==="file"?(a(),o("div",ie,[r(f,{size:24},{default:c(()=>[r(p(J))]),_:1}),i("div",oe,[i("div",{class:"file-name",title:t.message.file_name},n(t.message.file_name||"未命名文件"),9,ne),i("div",le,[d(n(M(t.message.file_size))+" ",1),t.message.file_ext?(a(),o(U,{key:0},[d("· "+n(t.message.file_ext),1)],64)):x("",!0)])]),(h=m.value)!=null&&h.file_url?(a(),g(V,{key:0,size:"small",type:"primary",link:"",onClick:s[0]||(s[0]=de=>$(m.value.file_url))},{default:c(()=>[...s[4]||(s[4]=[d(" 下载 ",-1)])]),_:1})):(a(),g(_,{key:1,size:"small",type:"info"},{default:c(()=>[...s[5]||(s[5]=[d("下载中…",-1)])]),_:1}))])):(a(),o("div",me,[i("div",re,n(C.value),1),i("div",ce,n(t.message.content),1)]))],2)])],2)}}}),We=L(ue,[["__scopeId","data-v-b5ff1168"]]);export{We as default};
diff --git a/server/public/admin/assets/NoteTimeline-CDNv1DMC.js b/server/public/admin/assets/NoteTimeline-BzPD6QHw.js
similarity index 90%
rename from server/public/admin/assets/NoteTimeline-CDNv1DMC.js
rename to server/public/admin/assets/NoteTimeline-BzPD6QHw.js
index 08173d4a..3c71b5f9 100644
--- a/server/public/admin/assets/NoteTimeline-CDNv1DMC.js
+++ b/server/public/admin/assets/NoteTimeline-BzPD6QHw.js
@@ -1,2 +1,2 @@
-import{R as W,v as Z,d as q,a as K}from"./element-plus-0wC3naml.js";import{_ as Y}from"./picker-DlbAZkDm.js";import{e as ee,c as te,i as S,_ as ie}from"./index-E47--KT7.js";import{s as A}from"./@vue/runtime-dom-DDAG46FW.js";import{b as B,G as se}from"./@element-plus/icons-vue-HOEUG8sr.js";import{d as oe,a as R}from"./patient-DKQ1nUyC.js";import{f as ne,w as re,ak as i,I as n,a as l,aN as c,J as a,H as d,F as v,ap as k,G as I}from"./@vue/runtime-core-C6bnekPw.js";import{n as w,y as C}from"./@vue/reactivity-DiY1c2vO.js";import{Q as z}from"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const le={class:"note-timeline-wrap"},ae={key:0,class:"timeline-actions"},me={class:"upload-trigger"},de={class:"upload-trigger"},pe={key:1,class:"note-timeline"},ce={class:"timeline-date"},ue={class:"timeline-body"},ge={key:0,class:"timeline-content"},_e={key:1,class:"timeline-images"},fe={key:2,class:"timeline-images"},ve={key:0,class:"thumb-wrap"},he={key:1,class:"file-wrap"},ye=["href","title"],ke={class:"file-name"},T=8e3,Ie=ne({__name:"NoteTimeline",props:{notes:{},diagnosisId:{},readonly:{type:Boolean}},emits:["refresh"],setup(m,{emit:G}){const u=m,b=G,L=ee(),g=t=>L.getImageUrl(t),x=w([]),E=w([]),_=w(0),f=w(0),$=["jpg","jpeg","png","gif","bmp","webp","svg"],N=t=>{var s;const e=((s=t.split(".").pop())==null?void 0:s.toLowerCase().split("?")[0])||"";return $.includes(e)},M=t=>{var s;const e=t.split("/");return decodeURIComponent(((s=e[e.length-1])==null?void 0:s.split("?")[0])||"文件")},j=t=>t.filter(N).map(g),O=(t,e)=>{const s=t.filter(N),h=t[e];return s.indexOf(h)},X=t=>t?t.split(`
+import{R as W,v as Z,d as q,a as K}from"./element-plus-DFTWCWyi.js";import{_ as Y}from"./picker-BCRrEZaA.js";import{e as ee,c as te,i as S,_ as ie}from"./index-DBREMm_z.js";import{s as A}from"./@vue/runtime-dom-DDAG46FW.js";import{b as B,G as se}from"./@element-plus/icons-vue-HOEUG8sr.js";import{d as oe,a as R}from"./patient-DdWkVUZB.js";import{f as ne,w as re,ak as i,I as n,a as l,aN as c,J as a,H as d,F as v,ap as k,G as I}from"./@vue/runtime-core-C6bnekPw.js";import{n as w,y as C}from"./@vue/reactivity-DiY1c2vO.js";import{Q as z}from"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const le={class:"note-timeline-wrap"},ae={key:0,class:"timeline-actions"},me={class:"upload-trigger"},de={class:"upload-trigger"},pe={key:1,class:"note-timeline"},ce={class:"timeline-date"},ue={class:"timeline-body"},ge={key:0,class:"timeline-content"},_e={key:1,class:"timeline-images"},fe={key:2,class:"timeline-images"},ve={key:0,class:"thumb-wrap"},he={key:1,class:"file-wrap"},ye=["href","title"],ke={class:"file-name"},T=8e3,Ie=ne({__name:"NoteTimeline",props:{notes:{},diagnosisId:{},readonly:{type:Boolean}},emits:["refresh"],setup(m,{emit:G}){const u=m,b=G,L=ee(),g=t=>L.getImageUrl(t),x=w([]),E=w([]),_=w(0),f=w(0),$=["jpg","jpeg","png","gif","bmp","webp","svg"],N=t=>{var s;const e=((s=t.split(".").pop())==null?void 0:s.toLowerCase().split("?")[0])||"";return $.includes(e)},M=t=>{var s;const e=t.split("/");return decodeURIComponent(((s=e[e.length-1])==null?void 0:s.split("?")[0])||"文件")},j=t=>t.filter(N).map(g),O=(t,e)=>{const s=t.filter(N),h=t[e];return s.indexOf(h)},X=t=>t?t.split(`
`).filter(Boolean):[],H=t=>{if(!u.diagnosisId)return;const e=Array.isArray(t)?t:[t];if(e.length<=_.value){_.value=e.length;return}const s=e.slice(_.value);_.value=e.length,s.length>0&&R({diagnosis_id:u.diagnosisId,tongue_images:s}).then(()=>{S.msgSuccess("舌苔照片已添加"),b("refresh")})},J=t=>{if(!u.diagnosisId)return;const e=Array.isArray(t)?t:[t];if(e.length<=f.value){f.value=e.length;return}const s=e.slice(f.value);f.value=e.length,s.length>0&&R({diagnosis_id:u.diagnosisId,report_files:s}).then(()=>{S.msgSuccess("检查报告已添加"),b("refresh")})};re(()=>u.notes,()=>{x.value=[],E.value=[],_.value=0,f.value=0});const V=async(t,e,s)=>{try{await K.confirm("确认删除?","提示",{type:"warning"})}catch{return}await oe({note_id:t,image_type:e,image_path:s}),S.msgSuccess("已删除"),b("refresh")};return(t,e)=>{const s=te,h=Y,U=Z,y=q,Q=W;return i(),n("div",le,[!m.readonly&&m.diagnosisId?(i(),n("div",ae,[l(h,{modelValue:x.value,"onUpdate:modelValue":e[0]||(e[0]=o=>x.value=o),limit:99,type:"image","exclude-domain":!0,onChange:H},{upload:c(()=>[a("div",me,[l(s,{size:20,name:"el-icon-Plus"}),e[2]||(e[2]=a("span",null,"舌苔照片",-1))])]),_:1},8,["modelValue"]),l(h,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),limit:99,type:"file","exclude-domain":!0,onChange:J},{upload:c(()=>[a("div",de,[l(s,{size:20,name:"el-icon-Plus"}),e[3]||(e[3]=a("span",null,"检查报告",-1))])]),_:1},8,["modelValue"])])):d("",!0),m.notes.length?(i(),n("div",pe,[(i(!0),n(v,null,k(m.notes,o=>{var D,F;return i(),n("div",{key:o.id,class:"timeline-node"},[e[6]||(e[6]=a("div",{class:"timeline-dot"},null,-1)),a("div",ce,z(o.note_date),1),a("div",ue,[o.content?(i(),n("div",ge,[(i(!0),n(v,null,k(X(o.content),(r,p)=>(i(),n("div",{key:p,class:"content-line"},z(r),1))),128))])):d("",!0),(D=o.tongue_images)!=null&&D.length?(i(),n("div",_e,[e[4]||(e[4]=a("span",{class:"images-label"},"舌苔照片",-1)),(i(!0),n(v,null,k(o.tongue_images,(r,p)=>(i(),n("div",{key:p,class:"thumb-wrap"},[l(U,{src:g(r),"preview-src-list":o.tongue_images.map(g),"initial-index":p,"z-index":T,fit:"cover",class:"timeline-thumb","preview-teleported":""},null,8,["src","preview-src-list","initial-index"]),m.readonly?d("",!0):(i(),I(y,{key:0,class:"thumb-delete",onClick:A(P=>V(o.id,"tongue_images",r),["stop"])},{default:c(()=>[l(C(B))]),_:1},8,["onClick"]))]))),128))])):d("",!0),(F=o.report_files)!=null&&F.length?(i(),n("div",fe,[e[5]||(e[5]=a("span",{class:"images-label"},"检查报告",-1)),(i(!0),n(v,null,k(o.report_files,(r,p)=>(i(),n(v,{key:p},[N(r)?(i(),n("div",ve,[l(U,{src:g(r),"preview-src-list":j(o.report_files),"initial-index":O(o.report_files,p),"z-index":T,fit:"cover",class:"timeline-thumb","preview-teleported":""},null,8,["src","preview-src-list","initial-index"]),m.readonly?d("",!0):(i(),I(y,{key:0,class:"thumb-delete",onClick:A(P=>V(o.id,"report_files",r),["stop"])},{default:c(()=>[l(C(B))]),_:1},8,["onClick"]))])):(i(),n("div",he,[a("a",{href:g(r),target:"_blank",class:"file-link",title:M(r)},[l(y,{size:20},{default:c(()=>[l(C(se))]),_:1}),a("span",ke,z(M(r)),1)],8,ye),m.readonly?d("",!0):(i(),I(y,{key:0,class:"file-delete",onClick:A(P=>V(o.id,"report_files",r),["stop"])},{default:c(()=>[l(C(B))]),_:1},8,["onClick"]))]))],64))),128))])):d("",!0)])])}),128))])):d("",!0),!m.notes.length&&m.readonly?(i(),I(Q,{key:2,description:"暂无备注","image-size":48})):d("",!0)])}}}),It=ie(Ie,[["__scopeId","data-v-f77bb3f4"]]);export{It as default};
diff --git a/server/public/admin/assets/PatientCaseCard-Dkbl8NTI.js b/server/public/admin/assets/PatientCaseCard-8RzolaE2.js
similarity index 98%
rename from server/public/admin/assets/PatientCaseCard-Dkbl8NTI.js
rename to server/public/admin/assets/PatientCaseCard-8RzolaE2.js
index 2b23fc90..81d0cc4d 100644
--- a/server/public/admin/assets/PatientCaseCard-Dkbl8NTI.js
+++ b/server/public/admin/assets/PatientCaseCard-8RzolaE2.js
@@ -1 +1 @@
-import{i as Q,a as q,b as z}from"./blood-thresholds-CJ1fqMjh.js";import{m as G,j as R,b as U}from"./diag-display-DCz_VAqj.js";import{f as E}from"./diabetes-discovery-display-B_wmGXQJ.js";import{f as W,ak as F,I as J,J as s,O as X,a as l,H as Y,A as Z,i as d}from"./@vue/runtime-core-C6bnekPw.js";import{Q as r}from"./@vue/shared-mAAVTE9n.js";import{y as i}from"./@vue/reactivity-DiY1c2vO.js";import{_ as P}from"./index-E47--KT7.js";import"./lodash-D3kF6u-c.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const ll={class:"card case-card"},al={class:"card-title"},el={class:"case-sub"},il={class:"grid-block"},tl={class:"kv-grid four"},sl={class:"grid-block"},ul={class:"kv-grid four"},nl={class:"grid-block"},dl={class:"kv-grid four"},ol={class:"grid-block"},vl={class:"kv-grid three"},rl={class:"grid-block"},gl={class:"kv-grid three"},cl={class:"grid-block"},ml={class:"kv-grid three"},bl={key:0,class:"grid-block"},hl={class:"kv-grid one"},yl={class:"grid-block"},fl={class:"rx-note"},pl=W({__name:"PatientCaseCard",props:{apt:{default:()=>({})},diag:{default:()=>({})}},setup(e){const g=e,M=Z(()=>(g.diag||{}).consultation_type==="follow_up"?"复诊":"初诊"),u=U(()=>g.diag||{}),a=n=>{const t=n.value,o=t==null||t===""||Array.isArray(t)&&t.length===0;return d("div",{class:["kv-item",n.multiline?"multiline":"",o?"empty":""],style:n.span?`grid-column: span ${n.span}`:""},[d("span",{class:"kv-label"},n.label),d("span",{class:"kv-value"},o?"—":String(t))])},v=n=>{const t=n.value===void 0||n.value===null||n.value==="";return d("div",{class:["kv-item","metric-kv-item",t?"empty":""],style:n.span?`grid-column: span ${n.span}`:""},[d("span",{class:"kv-label"},n.label),d("span",{class:["kv-value","metric-kv-value",n.high?"high":""]},t?"—":[`${n.value}${n.unit||""}`,n.high?d("span",{class:"metric-up"},"↑"):null])])};return(n,t)=>{var o,c,m,b,h,y,f,p,k,_,x,w,C,D,H,V,I,A,B,N,S,$,O,T,j,K,L;return F(),J("div",ll,[s("div",al,[t[0]||(t[0]=X(" 患者病例 ",-1)),s("span",el,r(M.value)+" · 诊断日期 "+r(((o=e.diag)==null?void 0:o.diagnosis_date)||((c=e.apt)==null?void 0:c.appointment_date)||"—"),1)]),s("div",il,[t[1]||(t[1]=s("div",{class:"grid-title"},"基本信息",-1)),s("div",tl,[l(a,{label:"诊单ID",value:(m=e.diag)==null?void 0:m.patient_id},null,8,["value"]),l(a,{label:"姓名",value:(b=e.diag)==null?void 0:b.patient_name},null,8,["value"]),l(a,{label:"身份证号",value:(h=e.diag)==null?void 0:h.id_card},null,8,["value"]),l(a,{label:"手机号",value:i(G)(((y=e.diag)==null?void 0:y.phone)||((f=e.apt)==null?void 0:f.patient_phone))},null,8,["value"]),l(a,{label:"性别",value:i(u)("gender")},null,8,["value"]),l(a,{label:"年龄",value:((p=e.diag)==null?void 0:p.age)!=null?e.diag.age+"岁":""},null,8,["value"]),l(a,{label:"婚姻状态",value:i(u)("marital_status")},null,8,["value"]),l(a,{label:"地区",value:(k=e.diag)==null?void 0:k.region},null,8,["value"])])]),s("div",sl,[t[2]||(t[2]=s("div",{class:"grid-title"},"生命体征",-1)),s("div",ul,[l(a,{label:"身高",value:(_=e.diag)!=null&&_.height?e.diag.height+" cm":""},null,8,["value"]),l(a,{label:"体重",value:(x=e.diag)!=null&&x.weight?e.diag.weight+" kg":""},null,8,["value"]),l(v,{label:"高压",value:(w=e.diag)==null?void 0:w.systolic_pressure,unit:" mmHg",high:i(Q)((C=e.diag)==null?void 0:C.systolic_pressure)},null,8,["value","high"]),l(v,{label:"低压",value:(D=e.diag)==null?void 0:D.diastolic_pressure,unit:" mmHg",high:i(q)((H=e.diag)==null?void 0:H.diastolic_pressure)},null,8,["value","high"]),l(a,{label:"诊断类型",value:i(u)("diagnosis_type")},null,8,["value"]),l(v,{label:"空腹血糖",value:(V=e.diag)==null?void 0:V.fasting_blood_sugar,unit:" mmol/L",high:i(z)((I=e.diag)==null?void 0:I.fasting_blood_sugar,(A=e.diag)==null?void 0:A.age)},null,8,["value","high"]),l(a,{label:"在用药物",value:(B=e.diag)==null?void 0:B.current_medications,multiline:""},null,8,["value"])])]),s("div",nl,[t[3]||(t[3]=s("div",{class:"grid-title"},"主诉",-1)),s("div",dl,[l(a,{label:"当地医院诊断日期",value:(N=e.diag)==null?void 0:N.diagnosis_date},null,8,["value"]),l(a,{label:"发现糖尿病病史",value:i(E)?i(E)((S=e.diag)==null?void 0:S.diabetes_discovery_year):($=e.diag)==null?void 0:$.diabetes_discovery_year},null,8,["value"]),l(a,{label:"当地就诊医院",value:(O=e.diag)==null?void 0:O.local_hospital_name},null,8,["value"]),l(a,{label:"当地医院诊断结果",value:i(R)((T=e.diag)==null?void 0:T.local_hospital_diagnosis)},null,8,["value"])])]),s("div",ol,[t[4]||(t[4]=s("div",{class:"grid-title"},"现病史",-1)),s("div",vl,[l(a,{label:"口腔感觉",value:i(u)("appetite")},null,8,["value"]),l(a,{label:"每日饮水量",value:i(u)("water_intake")},null,8,["value"]),l(a,{label:"近月体重变化",value:i(u)("weight_change")},null,8,["value"]),l(a,{label:"脂肪肝程度",value:i(u)("fatty_liver_degree")},null,8,["value"]),l(a,{label:"饮食情况",value:i(u)("diet_condition"),span:"2"},null,8,["value"]),l(a,{label:"肢体感觉",value:i(u)("body_feeling")},null,8,["value"]),l(a,{label:"睡眠情况",value:i(u)("sleep_condition")},null,8,["value"]),l(a,{label:"眼睛情况",value:i(u)("eye_condition")},null,8,["value"]),l(a,{label:"头部感觉",value:i(u)("head_feeling")},null,8,["value"]),l(a,{label:"出汗情况",value:i(u)("sweat_condition")},null,8,["value"]),l(a,{label:"皮肤情况",value:i(u)("skin_condition")},null,8,["value"]),l(a,{label:"小便情况",value:i(u)("urine_condition")},null,8,["value"]),l(a,{label:"大便情况",value:i(u)("stool_condition")},null,8,["value"]),l(a,{label:"腰肾情况",value:i(u)("kidney_condition")},null,8,["value"]),l(a,{label:"其他补充",value:(j=e.diag)==null?void 0:j.symptoms,span:"3",multiline:""},null,8,["value"])])]),s("div",rl,[t[5]||(t[5]=s("div",{class:"grid-title"},"既往史",-1)),s("div",gl,[l(a,{label:"既往病史",value:i(u)("past_history"),span:"3"},null,8,["value"])])]),s("div",cl,[t[6]||(t[6]=s("div",{class:"grid-title"},"其他病史",-1)),s("div",ml,[l(a,{label:"外伤史",value:i(u)("trauma_history")},null,8,["value"]),l(a,{label:"手术史",value:i(u)("surgery_history")},null,8,["value"]),l(a,{label:"过敏史",value:i(u)("allergy_history")},null,8,["value"]),l(a,{label:"家族病史",value:i(u)("family_history")},null,8,["value"]),l(a,{label:"妊娠哺乳史",value:i(u)("pregnancy_history")},null,8,["value"])])]),(K=e.diag)!=null&&K.remark?(F(),J("div",bl,[t[7]||(t[7]=s("div",{class:"grid-title"},"病史补充",-1)),s("div",hl,[l(a,{label:"",value:e.diag.remark,multiline:""},null,8,["value"])])])):Y("",!0),s("div",yl,[t[8]||(t[8]=s("div",{class:"grid-title"},"处方意见",-1)),s("div",fl,r((L=e.apt)!=null&&L.has_prescription?"已开方。":"当前未开方。"),1)])])}}}),ua=P(pl,[["__scopeId","data-v-5de08f8e"]]);export{ua as default};
+import{i as Q,a as q,b as z}from"./blood-thresholds-CJ1fqMjh.js";import{m as G,j as R,b as U}from"./diag-display-DCz_VAqj.js";import{f as E}from"./diabetes-discovery-display-B_wmGXQJ.js";import{f as W,ak as F,I as J,J as s,O as X,a as l,H as Y,A as Z,i as d}from"./@vue/runtime-core-C6bnekPw.js";import{Q as r}from"./@vue/shared-mAAVTE9n.js";import{y as i}from"./@vue/reactivity-DiY1c2vO.js";import{_ as P}from"./index-DBREMm_z.js";import"./lodash-D3kF6u-c.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const ll={class:"card case-card"},al={class:"card-title"},el={class:"case-sub"},il={class:"grid-block"},tl={class:"kv-grid four"},sl={class:"grid-block"},ul={class:"kv-grid four"},nl={class:"grid-block"},dl={class:"kv-grid four"},ol={class:"grid-block"},vl={class:"kv-grid three"},rl={class:"grid-block"},gl={class:"kv-grid three"},cl={class:"grid-block"},ml={class:"kv-grid three"},bl={key:0,class:"grid-block"},hl={class:"kv-grid one"},yl={class:"grid-block"},fl={class:"rx-note"},pl=W({__name:"PatientCaseCard",props:{apt:{default:()=>({})},diag:{default:()=>({})}},setup(e){const g=e,M=Z(()=>(g.diag||{}).consultation_type==="follow_up"?"复诊":"初诊"),u=U(()=>g.diag||{}),a=n=>{const t=n.value,o=t==null||t===""||Array.isArray(t)&&t.length===0;return d("div",{class:["kv-item",n.multiline?"multiline":"",o?"empty":""],style:n.span?`grid-column: span ${n.span}`:""},[d("span",{class:"kv-label"},n.label),d("span",{class:"kv-value"},o?"—":String(t))])},v=n=>{const t=n.value===void 0||n.value===null||n.value==="";return d("div",{class:["kv-item","metric-kv-item",t?"empty":""],style:n.span?`grid-column: span ${n.span}`:""},[d("span",{class:"kv-label"},n.label),d("span",{class:["kv-value","metric-kv-value",n.high?"high":""]},t?"—":[`${n.value}${n.unit||""}`,n.high?d("span",{class:"metric-up"},"↑"):null])])};return(n,t)=>{var o,c,m,b,h,y,f,p,k,_,x,w,C,D,H,V,I,A,B,N,S,$,O,T,j,K,L;return F(),J("div",ll,[s("div",al,[t[0]||(t[0]=X(" 患者病例 ",-1)),s("span",el,r(M.value)+" · 诊断日期 "+r(((o=e.diag)==null?void 0:o.diagnosis_date)||((c=e.apt)==null?void 0:c.appointment_date)||"—"),1)]),s("div",il,[t[1]||(t[1]=s("div",{class:"grid-title"},"基本信息",-1)),s("div",tl,[l(a,{label:"诊单ID",value:(m=e.diag)==null?void 0:m.patient_id},null,8,["value"]),l(a,{label:"姓名",value:(b=e.diag)==null?void 0:b.patient_name},null,8,["value"]),l(a,{label:"身份证号",value:(h=e.diag)==null?void 0:h.id_card},null,8,["value"]),l(a,{label:"手机号",value:i(G)(((y=e.diag)==null?void 0:y.phone)||((f=e.apt)==null?void 0:f.patient_phone))},null,8,["value"]),l(a,{label:"性别",value:i(u)("gender")},null,8,["value"]),l(a,{label:"年龄",value:((p=e.diag)==null?void 0:p.age)!=null?e.diag.age+"岁":""},null,8,["value"]),l(a,{label:"婚姻状态",value:i(u)("marital_status")},null,8,["value"]),l(a,{label:"地区",value:(k=e.diag)==null?void 0:k.region},null,8,["value"])])]),s("div",sl,[t[2]||(t[2]=s("div",{class:"grid-title"},"生命体征",-1)),s("div",ul,[l(a,{label:"身高",value:(_=e.diag)!=null&&_.height?e.diag.height+" cm":""},null,8,["value"]),l(a,{label:"体重",value:(x=e.diag)!=null&&x.weight?e.diag.weight+" kg":""},null,8,["value"]),l(v,{label:"高压",value:(w=e.diag)==null?void 0:w.systolic_pressure,unit:" mmHg",high:i(Q)((C=e.diag)==null?void 0:C.systolic_pressure)},null,8,["value","high"]),l(v,{label:"低压",value:(D=e.diag)==null?void 0:D.diastolic_pressure,unit:" mmHg",high:i(q)((H=e.diag)==null?void 0:H.diastolic_pressure)},null,8,["value","high"]),l(a,{label:"诊断类型",value:i(u)("diagnosis_type")},null,8,["value"]),l(v,{label:"空腹血糖",value:(V=e.diag)==null?void 0:V.fasting_blood_sugar,unit:" mmol/L",high:i(z)((I=e.diag)==null?void 0:I.fasting_blood_sugar,(A=e.diag)==null?void 0:A.age)},null,8,["value","high"]),l(a,{label:"在用药物",value:(B=e.diag)==null?void 0:B.current_medications,multiline:""},null,8,["value"])])]),s("div",nl,[t[3]||(t[3]=s("div",{class:"grid-title"},"主诉",-1)),s("div",dl,[l(a,{label:"当地医院诊断日期",value:(N=e.diag)==null?void 0:N.diagnosis_date},null,8,["value"]),l(a,{label:"发现糖尿病病史",value:i(E)?i(E)((S=e.diag)==null?void 0:S.diabetes_discovery_year):($=e.diag)==null?void 0:$.diabetes_discovery_year},null,8,["value"]),l(a,{label:"当地就诊医院",value:(O=e.diag)==null?void 0:O.local_hospital_name},null,8,["value"]),l(a,{label:"当地医院诊断结果",value:i(R)((T=e.diag)==null?void 0:T.local_hospital_diagnosis)},null,8,["value"])])]),s("div",ol,[t[4]||(t[4]=s("div",{class:"grid-title"},"现病史",-1)),s("div",vl,[l(a,{label:"口腔感觉",value:i(u)("appetite")},null,8,["value"]),l(a,{label:"每日饮水量",value:i(u)("water_intake")},null,8,["value"]),l(a,{label:"近月体重变化",value:i(u)("weight_change")},null,8,["value"]),l(a,{label:"脂肪肝程度",value:i(u)("fatty_liver_degree")},null,8,["value"]),l(a,{label:"饮食情况",value:i(u)("diet_condition"),span:"2"},null,8,["value"]),l(a,{label:"肢体感觉",value:i(u)("body_feeling")},null,8,["value"]),l(a,{label:"睡眠情况",value:i(u)("sleep_condition")},null,8,["value"]),l(a,{label:"眼睛情况",value:i(u)("eye_condition")},null,8,["value"]),l(a,{label:"头部感觉",value:i(u)("head_feeling")},null,8,["value"]),l(a,{label:"出汗情况",value:i(u)("sweat_condition")},null,8,["value"]),l(a,{label:"皮肤情况",value:i(u)("skin_condition")},null,8,["value"]),l(a,{label:"小便情况",value:i(u)("urine_condition")},null,8,["value"]),l(a,{label:"大便情况",value:i(u)("stool_condition")},null,8,["value"]),l(a,{label:"腰肾情况",value:i(u)("kidney_condition")},null,8,["value"]),l(a,{label:"其他补充",value:(j=e.diag)==null?void 0:j.symptoms,span:"3",multiline:""},null,8,["value"])])]),s("div",rl,[t[5]||(t[5]=s("div",{class:"grid-title"},"既往史",-1)),s("div",gl,[l(a,{label:"既往病史",value:i(u)("past_history"),span:"3"},null,8,["value"])])]),s("div",cl,[t[6]||(t[6]=s("div",{class:"grid-title"},"其他病史",-1)),s("div",ml,[l(a,{label:"外伤史",value:i(u)("trauma_history")},null,8,["value"]),l(a,{label:"手术史",value:i(u)("surgery_history")},null,8,["value"]),l(a,{label:"过敏史",value:i(u)("allergy_history")},null,8,["value"]),l(a,{label:"家族病史",value:i(u)("family_history")},null,8,["value"]),l(a,{label:"妊娠哺乳史",value:i(u)("pregnancy_history")},null,8,["value"])])]),(K=e.diag)!=null&&K.remark?(F(),J("div",bl,[t[7]||(t[7]=s("div",{class:"grid-title"},"病史补充",-1)),s("div",hl,[l(a,{label:"",value:e.diag.remark,multiline:""},null,8,["value"])])])):Y("",!0),s("div",yl,[t[8]||(t[8]=s("div",{class:"grid-title"},"处方意见",-1)),s("div",fl,r((L=e.apt)!=null&&L.has_prescription?"已开方。":"当前未开方。"),1)])])}}}),ua=P(pl,[["__scopeId","data-v-5de08f8e"]]);export{ua as default};
diff --git a/server/public/admin/assets/PatientInfoCard-BuXf4C8w.js b/server/public/admin/assets/PatientInfoCard-pcwXrrnQ.js
similarity index 95%
rename from server/public/admin/assets/PatientInfoCard-BuXf4C8w.js
rename to server/public/admin/assets/PatientInfoCard-pcwXrrnQ.js
index 6919b8b0..45185273 100644
--- a/server/public/admin/assets/PatientInfoCard-BuXf4C8w.js
+++ b/server/public/admin/assets/PatientInfoCard-pcwXrrnQ.js
@@ -1 +1 @@
-import{m as x,f as y,a as B}from"./diag-display-DCz_VAqj.js";import{f as w,ak as I,I as P,J as a,H as N}from"./@vue/runtime-core-C6bnekPw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{y as e}from"./@vue/reactivity-DiY1c2vO.js";import{_ as V}from"./index-E47--KT7.js";import"./lodash-D3kF6u-c.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const D={class:"card patient-card"},E={class:"patient-hero"},G={class:"patient-name"},H={class:"patient-meta"},J={key:0},Q=w({__name:"PatientInfoCard",props:{apt:{default:()=>({})},diag:{default:()=>({})}},setup(t){return(S,o)=>{var m,r,n,d,p,s,c,l,g,f,u,h,v,k,C;return I(),P("div",D,[o[0]||(o[0]=a("div",{class:"card-title"},"患者信息",-1)),a("div",E,[a("div",G,i(((m=t.apt)==null?void 0:m.patient_name)||"—"),1),a("div",H,[a("div",null,i(e(x)((r=t.apt)==null?void 0:r.patient_phone))+" · "+i(e(y)((n=t.diag)==null?void 0:n.gender))+" · "+i(((d=t.diag)==null?void 0:d.age)!=null?t.diag.age+"岁":"—"),1),a("div",null,i((p=t.diag)!=null&&p.height?t.diag.height+"cm":"—")+" / "+i((s=t.diag)!=null&&s.weight?t.diag.weight+"kg":"—")+" · "+i(((c=t.diag)==null?void 0:c.region)||"—"),1),a("div",null," 预约:"+i((l=t.apt)==null?void 0:l.appointment_date)+" "+i((g=t.apt)==null?void 0:g.appointment_time)+" · "+i(e(B)((f=t.apt)==null?void 0:f.period)),1),a("div",null,"医生:"+i(((u=t.apt)==null?void 0:u.doctor_name)||"—")+" 医助:"+i(((h=t.apt)==null?void 0:h.assistant_name)||"—"),1),a("div",null," 状态:"+i(((v=t.apt)==null?void 0:v.status_desc)||"—")+" · "+i((k=t.apt)!=null&&k.has_prescription?"已开方":"未开方"),1),(C=t.apt)!=null&&C.remark?(I(),P("div",J,"备注:"+i(t.apt.remark),1)):N("",!0)])])])}}}),Ct=V(Q,[["__scopeId","data-v-e3476da5"]]);export{Ct as default};
+import{m as x,f as y,a as B}from"./diag-display-DCz_VAqj.js";import{f as w,ak as I,I as P,J as a,H as N}from"./@vue/runtime-core-C6bnekPw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{y as e}from"./@vue/reactivity-DiY1c2vO.js";import{_ as V}from"./index-DBREMm_z.js";import"./lodash-D3kF6u-c.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const D={class:"card patient-card"},E={class:"patient-hero"},G={class:"patient-name"},H={class:"patient-meta"},J={key:0},Q=w({__name:"PatientInfoCard",props:{apt:{default:()=>({})},diag:{default:()=>({})}},setup(t){return(S,o)=>{var m,r,n,d,p,s,c,l,g,f,u,h,v,k,C;return I(),P("div",D,[o[0]||(o[0]=a("div",{class:"card-title"},"患者信息",-1)),a("div",E,[a("div",G,i(((m=t.apt)==null?void 0:m.patient_name)||"—"),1),a("div",H,[a("div",null,i(e(x)((r=t.apt)==null?void 0:r.patient_phone))+" · "+i(e(y)((n=t.diag)==null?void 0:n.gender))+" · "+i(((d=t.diag)==null?void 0:d.age)!=null?t.diag.age+"岁":"—"),1),a("div",null,i((p=t.diag)!=null&&p.height?t.diag.height+"cm":"—")+" / "+i((s=t.diag)!=null&&s.weight?t.diag.weight+"kg":"—")+" · "+i(((c=t.diag)==null?void 0:c.region)||"—"),1),a("div",null," 预约:"+i((l=t.apt)==null?void 0:l.appointment_date)+" "+i((g=t.apt)==null?void 0:g.appointment_time)+" · "+i(e(B)((f=t.apt)==null?void 0:f.period)),1),a("div",null,"医生:"+i(((u=t.apt)==null?void 0:u.doctor_name)||"—")+" 医助:"+i(((h=t.apt)==null?void 0:h.assistant_name)||"—"),1),a("div",null," 状态:"+i(((v=t.apt)==null?void 0:v.status_desc)||"—")+" · "+i((k=t.apt)!=null&&k.has_prescription?"已开方":"未开方"),1),(C=t.apt)!=null&&C.remark?(I(),P("div",J,"备注:"+i(t.apt.remark),1)):N("",!0)])])])}}}),Ct=V(Q,[["__scopeId","data-v-e3476da5"]]);export{Ct as default};
diff --git a/server/public/admin/assets/PatientOrderList-DQ7QxnQw.js b/server/public/admin/assets/PatientOrderList-Vzhj0FzC.js
similarity index 83%
rename from server/public/admin/assets/PatientOrderList-DQ7QxnQw.js
rename to server/public/admin/assets/PatientOrderList-Vzhj0FzC.js
index 3faeedfa..e4db3146 100644
--- a/server/public/admin/assets/PatientOrderList-DQ7QxnQw.js
+++ b/server/public/admin/assets/PatientOrderList-Vzhj0FzC.js
@@ -1 +1 @@
-import{R as Ae,M as Be,N as Fe,T as $e,i as Re,L as Me,a8 as Ue,a3 as He,a4 as Je,J as Ke,a9 as Qe,aa as qe,k as Ge,j as Ye,C as We,P as Xe,Q as Ze,ab as et,ac as tt,e as at}from"./element-plus-0wC3naml.js";import{_ as st}from"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import{w as lt}from"./@vue/runtime-dom-DDAG46FW.js";import{u as rt}from"./usePaging-VsbTxSU0.js";import{j as it,o as nt,s as ot,p as dt,F as ut}from"./tcm-SLIwsL8z.js";import{u as pt,i as ct,_ as mt}from"./index-E47--KT7.js";import{f as _t,w as ft,as as vt,ak as n,I as f,a as s,F as w,aP as P,G as v,aN as a,J as i,O as d,H as g,ap as M,A as h}from"./@vue/runtime-core-C6bnekPw.js";import{y as U,a as gt,n as k,r as yt}from"./@vue/reactivity-DiY1c2vO.js";import{Q as l,o as j}from"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const bt={class:"patient-order-list"},xt={key:0,class:"po-empty-tip"},ht={class:"text-red-500 font-semibold"},kt={class:"flex justify-end mt-3"},wt={class:"flex items-center"},Tt={key:1,class:"px-6 pb-6 overflow-y-auto"},Nt={class:"text-red-500 font-bold text-xl"},zt={class:"text-green-600 font-bold text-xl"},Et={class:"text-primary font-bold text-xl"},Ot={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},St={key:0,class:"audit-stamp stamp-pass"},Lt={key:1,class:"audit-stamp stamp-reject"},Dt={class:"flex items-center justify-between"},Pt={class:"flex items-center gap-3"},jt={key:0,class:"text-xs text-gray-500"},Ct={class:"text-primary font-medium"},It={class:"text-xs text-gray-400"},Vt={class:"text-red-500 font-medium"},At={key:1,class:"ml-2 text-gray-500"},Bt={class:"flex flex-col gap-1.5 text-sm leading-relaxed"},Ft={class:"flex flex-col gap-4 h-full"},$t={class:"text-red-500"},Rt={key:0,class:"audit-stamp stamp-pass"},Mt={key:1,class:"audit-stamp stamp-reject"},Ut={class:"flex items-center gap-3"},Ht={key:0,class:"text-xs text-gray-500"},Jt={class:"text-primary font-medium"},Kt={class:"text-red-500"},Qt={class:"font-mono"},qt={key:0,class:"text-[13px] space-y-1"},Gt={class:"font-medium text-gray-900"},Yt={key:0,class:"text-gray-600 text-xs"},Wt={key:1,class:"text-gray-400"},Xt={key:0,class:"space-y-1.5"},Zt={class:"text-gray-800"},ea={key:1,class:"text-gray-400"},ta={class:"flex flex-wrap items-center gap-3 mb-4"},aa={key:0,class:"py-6 text-center text-sm text-gray-500"},sa={key:1,class:"bg-gray-50/50 p-4 rounded-md"},la={key:0,class:"text-sm mb-4 font-medium flex items-center gap-2"},ra={class:"text-gray-800"},ia={class:"flex items-center gap-2 mb-1"},na={class:"font-medium text-[13px]"},oa=_t({__name:"PatientOrderList",props:{diagnosisId:{},patientId:{}},setup(oe,{expose:de}){const ue=pt(),C=oe,H=h(()=>{const t=Number(C.patientId);return Number.isFinite(t)&&t>0?t:0}),J=h(()=>H.value>0),N=yt({}),{pager:T,getLists:Y,resetPage:pe}=rt({fetchFun:it,params:N,size:10}),ce=()=>{Object.keys(N).forEach(t=>delete N[t]),C.diagnosisId>0&&(N.context_diagnosis_id=C.diagnosisId),J.value&&(N.patient_id=H.value),N.scene="diagnosis_edit"},I=k(!1),K=k(!1),o=k(null),z=k([]),E=k([]),c=h(()=>{var e;const t=(e=o.value)==null?void 0:e.prescription;return t&&typeof t=="object"?t:null}),Q=h(()=>{var e;const t=(e=o.value)==null?void 0:e.linked_pay_orders;return Array.isArray(t)?t:[]}),W=h(()=>{const t=o.value;if(!t)return 0;const e=Number(t.amount)||0,p=Number(t.linked_pay_paid_total)||0;return Math.round((e-p)*100)/100}),V=h(()=>{var p,u;const t=te((p=c.value)==null?void 0:p.phone),e=te((u=o.value)==null?void 0:u.recipient_phone);return!t||!e?!1:t!==e}),me=h(()=>{const t=o.value;if(!t)return"—";const e=[];return t.shipping_province&&e.push(t.shipping_province),t.shipping_city&&e.push(t.shipping_city),t.shipping_district&&e.push(t.shipping_district),t.shipping_address&&e.push(t.shipping_address),e.length>0?e.join(" "):"—"}),X=h(()=>{const t=o.value;if(!t)return"";const e=String(t.creator_account??"").trim(),p=String(t.creator_mobile??"").trim(),u=[];return e&&u.push(`登录账号:${e}`),p&&u.push(`手机:${p}`),u.join(" · ")}),Z=h(()=>{var e,p;const t=String(((e=o.value)==null?void 0:e.order_creator_dept_path)??((p=o.value)==null?void 0:p.diagnosis_creator_dept_path)??"").trim();return t?t.split(";").map(u=>u.trim()).filter(Boolean).map(u=>u.includes(" / ")?u.split(" / ").map(_=>_.trim()).filter(Boolean):u.split("/").map(_=>_.trim()).filter(Boolean)).filter(u=>u.length>0):[]}),O=k("auto"),A=k(!1),b=k(null),S=k(""),ee=h(()=>{const t=b.value;return!t||!Array.isArray(t.traces)?[]:t.traces});async function q(){var e;const t=Number((e=o.value)==null?void 0:e.id);if(t){A.value=!0;try{const p=String(S.value||"").replace(/\D/g,""),u={id:t,express_company:O.value};p.length>=4&&(u.phone_tail=p);const _=await nt(u);b.value=(_==null?void 0:_.data)??_}catch{b.value=null}finally{A.value=!1}}}async function _e(t){o.value=null,E.value=[],b.value=null,O.value="auto",S.value="",z.value=[],I.value=!0,K.value=!0;try{const e=await ot({id:t}),p=(e==null?void 0:e.data)??e??null;if(o.value=p,p){O.value=String(p.express_company||"auto")||"auto";const u=String(p.recipient_phone||"").replace(/\D/g,"");S.value=u.length>=4?u:"",String(p.tracking_number||"").trim()&&q(),ge(t),p.diagnosis_id&&fe(p.diagnosis_id,t,p.pay_order_ids||[])}}catch(e){ct.msgError((e==null?void 0:e.message)||"加载详情失败"),I.value=!1}finally{K.value=!1}}async function fe(t,e,p){var u;if(!t){E.value=[];return}try{const _=await dt({diagnosis_id:t,prescription_order_id:e}),L=(_==null?void 0:_.lists)??((u=_==null?void 0:_.data)==null?void 0:u.lists)??[];E.value=Array.isArray(L)?L.filter(D=>!p.includes(D.id)):[]}catch{E.value=[]}}function ve(){const t=ue.perms||[];return t.includes("*")||t.includes("tcm.prescriptionOrder/logs")}async function ge(t){if(!ve()){z.value=[];return}try{const e=await ut({id:t});z.value=(e==null?void 0:e.data)??e??[]}catch{z.value=[]}}function te(t){return t==null?"":String(t).replace(/\s/g,"").trim()}const ye=t=>{const e=Number(t);return Number.isFinite(e)?e.toFixed(2):"0.00"};function be(t){const e=Number(t);return Number.isFinite(e)?e.toFixed(2):"0.00"}const B=t=>{if(t==null||t==="")return"—";if(typeof t=="number"&&t>1e9&&t<1e11){const e=new Date(t*1e3),p=u=>String(u).padStart(2,"0");return`${e.getFullYear()}-${p(e.getMonth()+1)}-${p(e.getDate())} ${p(e.getHours())}:${p(e.getMinutes())}:${p(e.getSeconds())}`}return String(t)};function ae(t){return t==null||t===""?"—":typeof t=="string"&&String(t).includes("-")?String(t):B(t)}function G(t){return{1:"药费",2:"诊费",3:"药费+诊费",4:"其他"}[Number(t)]??"—"}function xe(t){const e=String(t||"").toLowerCase();return e==="sf"?"顺丰速运":e==="jd"?"京东快递":e==="jt"||e==="jtexpress"?"极兔速递":"自动识别"}function he(t){const e=Number(t);return e===1?"已通过":e===2?"已驳回":"待审核"}function ke(t){const e=Number(t);return e===1?"success":e===2?"danger":"warning"}function se(t){const e=Number(t);return e===2?"success":e===1?"warning":"info"}function le(t){return{0:"待支付",1:"待支付",2:"已支付",3:"已取消"}[Number(t)]??"—"}const we=t=>({1:"待双审通过",2:"待发货",3:"已完成",4:"已取消",5:"已发货",6:"已签收",7:"进行中",8:"暂不制药",9:"拒收",10:"退款",11:"保留药方",12:"制药缓发"})[Number(t)]??"—",Te=t=>{const e=Number(t);return e===3||e===6?"success":e===5?"primary":e===4||e===9||e===10?"danger":e===2||e===7?"warning":"info"};function Ne(t){return{create:"创建",edit:"编辑",audit_rx_approve:"处方审核",audit_rx_reject:"处方审核",audit_pay_approve:"支付审核",audit_pay_reject:"支付审核",fill_tracking:"填快递单",ship:"确认发货",withdraw:"撤销",link_pay_order:"关联支付单",revoke_rx_audit:"撤回处方审核",revoke_pay_audit:"撤回支付审核",gancao_submit:"甘草下单",patch_rx_patient:"处方患者信息",update_amount:"修改订单金额",complete:"完成订单"}[t]||t}return ft(()=>[C.diagnosisId,H.value],()=>{if(!J.value){T.lists=[],T.count=0;return}ce(),pe()},{immediate:!0}),de({refresh:()=>Y()}),(t,e)=>{const p=Ae,u=Fe,_=$e,L=Re,D=Be,ze=st,Ee=Ue,x=Ke,F=Je,Oe=He,m=qe,re=Qe,Se=Ye,Le=Ge,De=We,$=Ze,Pe=Xe,ie=tt,ne=et,je=at,R=vt("perms"),Ce=Me;return n(),f("div",bt,[J.value?(n(),f(w,{key:1},[P((n(),v(D,{data:U(T).lists,border:"",stripe:"","empty-text":"暂无业务订单"},{default:a(()=>[s(u,{label:"订单编号",prop:"order_no","min-width":"200","show-overflow-tooltip":""}),s(u,{label:"金额",width:"120",align:"right"},{default:a(({row:r})=>[i("span",ht,"¥"+l(ye(r.amount)),1)]),_:1}),s(u,{label:"医生",prop:"doctor_name",width:"110","show-overflow-tooltip":""},{default:a(({row:r})=>[d(l(r.doctor_name||"—"),1)]),_:1}),s(u,{label:"医助",prop:"assistant_name",width:"110","show-overflow-tooltip":""},{default:a(({row:r})=>[d(l(r.assistant_name||"—"),1)]),_:1}),s(u,{label:"履约状态",width:"110"},{default:a(({row:r})=>[s(_,{type:Te(r.fulfillment_status),size:"small",effect:"light"},{default:a(()=>[d(l(we(r.fulfillment_status)),1)]),_:2},1032,["type"])]),_:1}),s(u,{label:"创建时间","min-width":"170"},{default:a(({row:r})=>[d(l(B(r.create_time)),1)]),_:1}),s(u,{label:"操作",width:"100",fixed:"right"},{default:a(({row:r})=>[P((n(),v(L,{type:"primary",link:"",onClick:y=>_e(r.id)},{default:a(()=>[...e[4]||(e[4]=[d("查看详情",-1)])]),_:1},8,["onClick"])),[[R,["tcm.prescriptionOrder/detail"]]])]),_:1})]),_:1},8,["data"])),[[Ce,U(T).loading]]),i("div",kt,[s(ze,{modelValue:U(T),"onUpdate:modelValue":e[0]||(e[0]=r=>gt(T)?T.value=r:null),onChange:U(Y)},null,8,["modelValue","onChange"])])],64)):(n(),f("div",xt,[s(p,{description:"当前诊单未携带患者ID,无法列出业务订单"})])),s(je,{modelValue:I.value,"onUpdate:modelValue":e[3]||(e[3]=r=>I.value=r),size:"80%","destroy-on-close":"","close-on-click-modal":!1,"append-to-body":""},{header:a(()=>{var r,y;return[i("div",wt,[e[5]||(e[5]=i("span",{class:"font-semibold text-lg"},"业务订单详情",-1)),(r=o.value)!=null&&r.order_no?(n(),v(_,{key:0,type:"primary",effect:"plain",round:"",class:"ml-3"},{default:a(()=>[d(l(o.value.order_no),1)]),_:1})):g("",!0),(y=o.value)!=null&&y.gancao_reciperl_order_no?(n(),v(_,{key:1,type:"success",effect:"plain",round:"",class:"ml-2"},{default:a(()=>[d("甘草 "+l(o.value.gancao_reciperl_order_no),1)]),_:1})):g("",!0)])]}),default:a(()=>[K.value?(n(),v(Ee,{key:0,rows:12,animated:"",class:"px-6 py-4"})):o.value?(n(),f("div",Tt,[s(Oe,{gutter:16,class:"mb-5"},{default:a(()=>[s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[6]||(e[6]=i("div",{class:"text-gray-500 text-xs mb-1"},"总金额",-1)),i("div",Nt,"¥"+l(o.value.amount),1)]),_:1})]),_:1}),s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[7]||(e[7]=i("div",{class:"text-gray-500 text-xs mb-1"},"已付总额",-1)),i("div",zt,"¥"+l(o.value.linked_pay_paid_total||0),1)]),_:1})]),_:1}),s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[8]||(e[8]=i("div",{class:"text-gray-500 text-xs mb-1"},"需代收",-1)),i("div",{class:j(["font-bold text-xl",W.value>0?"text-amber-600":"text-gray-500"])},"¥"+l(be(W.value)),3)]),_:1})]),_:1}),s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[9]||(e[9]=i("div",{class:"text-gray-500 text-xs mb-1"},"已付笔数",-1)),i("div",Et,l(Q.value.length)+" 笔",1)]),_:1})]),_:1})]),_:1}),i("div",Ot,[s(x,{shadow:"never",class:"border-gray-100 h-full relative overflow-hidden"},{header:a(()=>[i("div",Dt,[i("div",Pt,[e[13]||(e[13]=i("span",{class:"font-medium text-[15px]"},"处方详情",-1)),o.value.doctor_name?(n(),f("span",jt,[e[12]||(e[12]=d(" 开方人:",-1)),i("span",Ct,l(o.value.doctor_name),1)])):g("",!0)]),i("span",It,"ID: "+l(o.value.prescription_id||"—"),1)])]),default:a(()=>[o.value.prescription_audit_status===1?(n(),f("div",St,[...e[10]||(e[10]=[i("div",{class:"stamp-inner"},"审核通过",-1)])])):g("",!0),o.value.prescription_audit_status===2?(n(),f("div",Lt,[...e[11]||(e[11]=[i("div",{class:"stamp-inner"},"已驳回",-1)])])):g("",!0),c.value?(n(),v(re,{key:2,column:2,border:"",size:"small",class:"bg-white"},{default:a(()=>[s(m,{label:"处方编号",span:2},{default:a(()=>[d(l(c.value.sn||"—"),1)]),_:1}),s(m,{label:"患者"},{default:a(()=>[d(l(c.value.patient_name||"—"),1)]),_:1}),s(m,{label:"性别 / 年龄"},{default:a(()=>[d(l(c.value.gender_desc||"—")+" · "+l(c.value.age??"—")+"岁",1)]),_:1}),s(m,{label:"手机"},{default:a(()=>[i("span",{class:j(V.value?"text-red-600 font-bold":"")},l(c.value.phone||"—"),3),V.value?(n(),v(_,{key:0,type:"danger",size:"small",effect:"dark",class:"ml-2"},{default:a(()=>[...e[14]||(e[14]=[d("与订单手机不一致",-1)])]),_:1})):g("",!0)]),_:1}),s(m,{label:"处方日期"},{default:a(()=>[d(l(c.value.prescription_date||"—"),1)]),_:1}),s(m,{label:"医师"},{default:a(()=>[d(l(c.value.doctor_name||"—"),1)]),_:1}),s(m,{label:"类型"},{default:a(()=>[d(l(c.value.prescription_type||"—"),1)]),_:1}),s(m,{label:"临床诊断",span:2},{default:a(()=>[d(l(c.value.clinical_diagnosis||"—"),1)]),_:1}),s(m,{label:"剂数 / 用法",span:2},{default:a(()=>[d(l(o.value.dose_count??c.value.dose_count??"—")+" "+l(o.value.dose_unit||"剂")+" · "+l(c.value.usage_instruction||c.value.usage_method||"—"),1)]),_:1}),s(m,{label:"处方金额"},{default:a(()=>[i("span",Vt,"¥"+l(c.value.amount??"—"),1)]),_:1}),s(m,{label:"消费者审核"},{default:a(()=>[s(_,{type:ke(c.value.audit_status),size:"small"},{default:a(()=>[d(l(he(c.value.audit_status)),1)]),_:1},8,["type"])]),_:1}),s(m,{label:"用量"},{default:a(()=>[c.value.dosage_amount?(n(),f(w,{key:0},[d(l(c.value.dosage_amount)+l(c.value.dosage_unit||"g")+" ",1),c.value.prescription_type==="浓缩水丸"?(n(),f(w,{key:0},[d(" · "+l(Number(c.value.dosage_bag_count)>0?Number(c.value.dosage_bag_count):1)+"袋 ",1)],64)):g("",!0),c.value.prescription_type==="饮片"&&c.value.need_decoction!==null?(n(),f("span",At," ("+l(c.value.need_decoction?"代煎":"不代煎")+") ",1)):g("",!0)],64)):(n(),f(w,{key:1},[d("—")],64))]),_:1}),s(m,{label:"服用方式"},{default:a(()=>[i("div",Bt,[i("div",null,[e[15]||(e[15]=i("span",{class:"text-gray-500"},"每天次数:",-1)),d(" "+l(c.value.times_per_day?c.value.times_per_day+" 次":"—"),1)]),i("div",null,[e[16]||(e[16]=i("span",{class:"text-gray-500"},"处方开立:",-1)),d(" "+l(c.value.usage_days!=null&&c.value.usage_days!==""?c.value.usage_days+" 天":"—"),1)]),i("div",null,[e[17]||(e[17]=i("span",{class:"text-gray-500"},"订单设置:",-1)),d(" "+l(o.value.medication_days!=null&&String(o.value.medication_days).trim()!==""?o.value.medication_days+" 天":"—"),1)])])]),_:1}),s(m,{label:"状态",span:2},{default:a(()=>[s(_,{type:Number(c.value.void_status)===1?"danger":"success",size:"small"},{default:a(()=>[d(l(Number(c.value.void_status)===1?"已作废":"正常"),1)]),_:1},8,["type"])]),_:1})]),_:1})):(n(),v(p,{key:3,description:"无处方数据","image-size":72}))]),_:1}),i("div",Ft,[s(x,{shadow:"never",class:"border-gray-100"},{header:a(()=>[...e[18]||(e[18]=[i("div",{class:"flex items-center justify-between"},[i("span",{class:"font-medium text-[15px]"},"未关联的收款记录"),i("span",{class:"text-xs text-gray-400"},"本诊单下未被占用的支付单")],-1)])]),default:a(()=>[E.value.length?(n(),v(D,{key:0,data:E.value,size:"small",border:"",stripe:"","max-height":"280"},{default:a(()=>[s(u,{prop:"id",label:"ID",width:"70"}),s(u,{prop:"order_no",label:"单号","min-width":"135","show-overflow-tooltip":""}),s(u,{label:"类型",width:"90"},{default:a(({row:r})=>[d(l(r.order_type_desc||G(r.order_type)),1)]),_:1}),s(u,{label:"金额",width:"86",align:"right"},{default:a(({row:r})=>[i("span",$t,"¥"+l(r.amount),1)]),_:1}),s(u,{label:"状态",width:"82",align:"center"},{default:a(({row:r})=>[s(_,{type:se(r.status),size:"small"},{default:a(()=>[d(l(r.status_desc||le(r.status)),1)]),_:2},1032,["type"])]),_:1}),s(u,{prop:"creator_name",label:"创建人",width:"80","show-overflow-tooltip":""}),s(u,{label:"创建时间","min-width":"136"},{default:a(({row:r})=>[d(l(ae(r.create_time)),1)]),_:1})]),_:1},8,["data"])):(n(),v(p,{key:1,description:"无未关联的收款单","image-size":60}))]),_:1}),s(x,{shadow:"never",class:"border-gray-100 relative overflow-hidden"},{header:a(()=>[i("div",Ut,[e[22]||(e[22]=i("span",{class:"font-medium text-[15px]"},"关联收款记录",-1)),o.value.creator_name?(n(),f("span",Ht,[e[21]||(e[21]=d("创建人:",-1)),i("span",Jt,l(o.value.creator_name),1)])):g("",!0)])]),default:a(()=>[o.value.payment_slip_audit_status===1?(n(),f("div",Rt,[...e[19]||(e[19]=[i("div",{class:"stamp-inner"},"审核通过",-1)])])):g("",!0),o.value.payment_slip_audit_status===2?(n(),f("div",Mt,[...e[20]||(e[20]=[i("div",{class:"stamp-inner"},"已驳回",-1)])])):g("",!0),Q.value.length?(n(),v(D,{key:2,data:Q.value,size:"small",border:"",stripe:"","max-height":"280"},{default:a(()=>[s(u,{prop:"id",label:"ID",width:"70"}),s(u,{prop:"order_no",label:"单号","min-width":"135","show-overflow-tooltip":""}),s(u,{label:"类型",width:"90"},{default:a(({row:r})=>[d(l(r.order_type_desc||G(r.order_type)),1)]),_:1}),s(u,{label:"金额",width:"86",align:"right"},{default:a(({row:r})=>[i("span",Kt,"¥"+l(r.amount),1)]),_:1}),s(u,{label:"状态",width:"82",align:"center"},{default:a(({row:r})=>[s(_,{type:se(r.status),size:"small"},{default:a(()=>[d(l(r.status_desc||le(r.status)),1)]),_:2},1032,["type"])]),_:1}),s(u,{prop:"creator_name",label:"创建人",width:"80","show-overflow-tooltip":""}),s(u,{label:"创建时间","min-width":"136"},{default:a(({row:r})=>[d(l(ae(r.create_time)),1)]),_:1})]),_:1},8,["data"])):(n(),v(p,{key:3,description:"未关联收款单","image-size":60}))]),_:1})])]),s(x,{shadow:"never",class:"border-gray-100 mb-4"},{header:a(()=>[...e[23]||(e[23]=[i("span",{class:"font-medium text-[15px]"},"履约与收货信息",-1)])]),default:a(()=>[s(re,{column:3,border:"",size:"small"},{default:a(()=>[s(m,{label:"诊单ID",span:3},{default:a(()=>[i("span",Qt,l(o.value.diagnosis_id),1)]),_:1}),s(m,{label:"创建时间"},{default:a(()=>[d(l(B(o.value.create_time)),1)]),_:1}),s(m,{label:"业务订单创建人",span:2},{default:a(()=>[o.value.creator_name?(n(),f("div",qt,[i("div",null,[i("span",Gt,l(o.value.creator_name||"—"),1)]),X.value?(n(),f("div",Yt,l(X.value),1)):g("",!0)])):(n(),f("span",Wt,"—"))]),_:1}),s(m,{label:"创建人所属部门",span:3},{default:a(()=>[Z.value.length?(n(),f("div",Xt,[(n(!0),f(w,null,M(Z.value,(r,y)=>(n(),f("div",{key:y},[r.length?(n(),v(Le,{key:0,class:"text-[13px]",separator:"/"},{default:a(()=>[(n(!0),f(w,null,M(r,(Ie,Ve)=>(n(),v(Se,{key:Ve},{default:a(()=>[i("span",Zt,l(Ie),1)]),_:2},1024))),128))]),_:2},1024)):g("",!0)]))),128))])):(n(),f("span",ea,"—"))]),_:1}),s(m,{label:"收货人"},{default:a(()=>[d(l(o.value.recipient_name),1)]),_:1}),s(m,{label:"收货手机"},{default:a(()=>[i("span",{class:j(V.value?"text-red-600 font-bold font-mono":"font-mono")},l(o.value.recipient_phone||"—"),3),V.value?(n(),v(_,{key:0,type:"danger",size:"small",effect:"dark",class:"ml-2"},{default:a(()=>[...e[24]||(e[24]=[d("与处方手机不一致",-1)])]),_:1})):g("",!0)]),_:1}),s(m,{label:"收货地址"},{default:a(()=>[d(l(me.value),1)]),_:1}),s(m,{label:"复诊"},{default:a(()=>[d(l(o.value.is_follow_up?"是":"否"),1)]),_:1}),s(m,{label:"用药疗程"},{default:a(()=>[d(l(o.value.medication_days?o.value.medication_days+" 天":"—"),1)]),_:1}),s(m,{label:"上次医护"},{default:a(()=>[d(l(o.value.prev_staff||"—"),1)]),_:1}),s(m,{label:"服务渠道"},{default:a(()=>[d(l(o.value.service_channel||"—"),1)]),_:1}),s(m,{label:"费用类别"},{default:a(()=>[d(l(G(o.value.fee_type)),1)]),_:1}),s(m,{label:"快递单号"},{default:a(()=>[d(l(o.value.tracking_number||"—"),1)]),_:1}),s(m,{label:"快递公司"},{default:a(()=>[d(l(xe(o.value.express_company)),1)]),_:1}),P((n(),v(m,{label:"药房备注",span:3},{default:a(()=>[d(l(o.value.remark_extra||"—"),1)]),_:1})),[[R,["tcm.prescriptionOrder/editRemarkExtra"]]]),s(m,{label:"医助备注",span:3},{default:a(()=>[d(l(o.value.remark_assistant||"—"),1)]),_:1}),s(m,{label:"处方审核意见",span:3},{default:a(()=>[d(l(o.value.prescription_audit_remark||"—"),1)]),_:1}),s(m,{label:"支付审核意见",span:3},{default:a(()=>[d(l(o.value.payment_slip_audit_remark||"—"),1)]),_:1})]),_:1})]),_:1}),String(o.value.tracking_number||"").trim()?(n(),v(x,{key:0,shadow:"never",class:"border-gray-100 mb-4"},{header:a(()=>[...e[25]||(e[25]=[i("span",{class:"font-medium text-[15px]"},"物流轨迹",-1)])]),default:a(()=>[i("div",ta,[s(De,{modelValue:S.value,"onUpdate:modelValue":e[1]||(e[1]=r=>S.value=r),clearable:"",maxlength:"20",placeholder:"收件手机",class:"w-[180px]",onKeyup:lt(q,["enter"])},null,8,["modelValue"]),s(Pe,{modelValue:O.value,"onUpdate:modelValue":e[2]||(e[2]=r=>O.value=r),placeholder:"承运商",style:{width:"140px"}},{default:a(()=>[s($,{label:"自动识别",value:"auto"}),s($,{label:"顺丰速运",value:"sf"}),s($,{label:"京东快递",value:"jd"}),s($,{label:"极兔速递",value:"jt"})]),_:1},8,["modelValue"]),P((n(),v(L,{type:"primary",plain:"",size:"default",loading:A.value,onClick:q},{default:a(()=>[...e[26]||(e[26]=[d("刷新轨迹",-1)])]),_:1},8,["loading"])),[[R,["tcm.prescriptionOrder/logisticsTrace"]]])]),A.value&&!b.value?(n(),f("div",aa,"正在加载物流轨迹...")):b.value?(n(),f("div",sa,[b.value.state_text?(n(),f("div",la,[i("span",ra,"状态:"+l(b.value.state_text),1),b.value.carrier_label?(n(),v(_,{key:0,size:"small",type:"info"},{default:a(()=>[d(l(b.value.carrier_label),1)]),_:1})):g("",!0)])):g("",!0),ee.value.length?(n(),v(ne,{key:1,class:"mt-2 pl-2"},{default:a(()=>[(n(!0),f(w,null,M(ee.value,(r,y)=>(n(),v(ie,{key:y,type:y===0?"primary":"info",hollow:y!==0,timestamp:r.time,placement:"top"},{default:a(()=>[i("span",{class:j(y===0?"text-gray-800 font-medium":"text-gray-500")},l(r.context),3)]),_:2},1032,["type","hollow","timestamp"]))),128))]),_:1})):(n(),v(p,{key:2,description:"暂无轨迹节点记录","image-size":64}))])):g("",!0)]),_:1})):g("",!0),P((n(),v(x,{shadow:"never",class:"border-gray-100"},{header:a(()=>[...e[27]||(e[27]=[i("span",{class:"font-medium text-[15px]"},"操作日志",-1)])]),default:a(()=>[z.value.length?(n(),v(ne,{key:0,class:"mt-2 pl-2"},{default:a(()=>[(n(!0),f(w,null,M(z.value,(r,y)=>(n(),v(ie,{key:r.id,type:y===0?"primary":"info",hollow:y!==0,timestamp:B(r.create_time),placement:"top"},{default:a(()=>[i("div",ia,[i("span",na,l(r.admin_name),1),s(_,{size:"small",type:"info"},{default:a(()=>[d(l(Ne(r.action)),1)]),_:2},1024)]),i("span",{class:j(y===0?"text-gray-800 font-medium":"text-gray-500")},l(r.summary),3)]),_:2},1032,["type","hollow","timestamp"]))),128))]),_:1})):(n(),v(p,{key:1,description:"暂无操作日志","image-size":64}))]),_:1})),[[R,["tcm.prescriptionOrder/logs"]]])])):g("",!0)]),_:1},8,["modelValue"])])}}}),Ga=mt(oa,[["__scopeId","data-v-b8d83d0c"]]);export{Ga as default};
+import{R as Ae,M as Be,N as Fe,T as $e,i as Re,L as Me,a9 as Ue,a4 as qe,a5 as Ge,J as He,aa as Je,ab as Ke,k as Qe,j as Ye,C as We,P as Xe,Q as Ze,ac as et,ad as tt,e as at}from"./element-plus-DFTWCWyi.js";import{_ as st}from"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import{w as lt}from"./@vue/runtime-dom-DDAG46FW.js";import{u as rt}from"./usePaging-VsbTxSU0.js";import{k as it,q as nt,t as ot,p as dt,G as ut}from"./tcm-BcqaE0lo.js";import{u as pt,i as ct,_ as mt}from"./index-DBREMm_z.js";import{f as _t,w as ft,as as vt,ak as n,I as f,a as s,F as w,aP as P,G as v,aN as a,J as i,O as d,H as g,ap as M,A as h}from"./@vue/runtime-core-C6bnekPw.js";import{y as U,a as gt,n as k,r as yt}from"./@vue/reactivity-DiY1c2vO.js";import{Q as l,o as C}from"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const bt={class:"patient-order-list"},xt={key:0,class:"po-empty-tip"},ht={class:"text-red-500 font-semibold"},kt={class:"flex justify-end mt-3"},wt={class:"flex items-center"},Tt={key:1,class:"px-6 pb-6 overflow-y-auto"},Nt={class:"text-red-500 font-bold text-xl"},zt={class:"text-green-600 font-bold text-xl"},Et={class:"text-primary font-bold text-xl"},Ot={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},St={key:0,class:"audit-stamp stamp-pass"},Lt={key:1,class:"audit-stamp stamp-reject"},Dt={class:"flex items-center justify-between"},Pt={class:"flex items-center gap-3"},Ct={key:0,class:"text-xs text-gray-500"},It={class:"text-primary font-medium"},Vt={class:"text-xs text-gray-400"},jt={class:"text-red-500 font-medium"},At={key:1,class:"ml-2 text-gray-500"},Bt={class:"flex flex-col gap-1.5 text-sm leading-relaxed"},Ft={class:"flex flex-col gap-4 h-full"},$t={class:"text-red-500"},Rt={key:0,class:"audit-stamp stamp-pass"},Mt={key:1,class:"audit-stamp stamp-reject"},Ut={class:"flex items-center gap-3"},qt={key:0,class:"text-xs text-gray-500"},Gt={class:"text-primary font-medium"},Ht={class:"text-red-500"},Jt={class:"font-mono"},Kt={key:0,class:"text-[13px] space-y-1"},Qt={class:"font-medium text-gray-900"},Yt={key:0,class:"text-gray-600 text-xs"},Wt={key:1,class:"text-gray-400"},Xt={key:0,class:"space-y-1.5"},Zt={class:"text-gray-800"},ea={key:1,class:"text-gray-400"},ta={class:"flex flex-wrap items-center gap-3 mb-4"},aa={key:0,class:"py-6 text-center text-sm text-gray-500"},sa={key:1,class:"bg-gray-50/50 p-4 rounded-md"},la={key:0,class:"text-sm mb-4 font-medium flex items-center gap-2"},ra={class:"text-gray-800"},ia={class:"flex items-center gap-2 mb-1"},na={class:"font-medium text-[13px]"},oa=_t({__name:"PatientOrderList",props:{diagnosisId:{},patientId:{}},setup(oe,{expose:de}){const ue=pt(),I=oe,q=h(()=>{const t=Number(I.patientId);return Number.isFinite(t)&&t>0?t:0}),G=h(()=>q.value>0),N=yt({}),{pager:T,getLists:Y,resetPage:pe}=rt({fetchFun:it,params:N,size:10}),ce=()=>{Object.keys(N).forEach(t=>delete N[t]),I.diagnosisId>0&&(N.context_diagnosis_id=I.diagnosisId),G.value&&(N.patient_id=q.value),N.scene="diagnosis_edit"},V=k(!1),H=k(!1),o=k(null),z=k([]),E=k([]),c=h(()=>{var e;const t=(e=o.value)==null?void 0:e.prescription;return t&&typeof t=="object"?t:null}),J=h(()=>{var e;const t=(e=o.value)==null?void 0:e.linked_pay_orders;return Array.isArray(t)?t:[]}),W=h(()=>{const t=o.value;if(!t)return 0;const e=Number(t.amount)||0,p=Number(t.linked_pay_paid_total)||0;return Math.round((e-p)*100)/100}),j=h(()=>{var p,u;const t=te((p=c.value)==null?void 0:p.phone),e=te((u=o.value)==null?void 0:u.recipient_phone);return!t||!e?!1:t!==e}),me=h(()=>{const t=o.value;if(!t)return"—";const e=[];return t.shipping_province&&e.push(t.shipping_province),t.shipping_city&&e.push(t.shipping_city),t.shipping_district&&e.push(t.shipping_district),t.shipping_address&&e.push(t.shipping_address),e.length>0?e.join(" "):"—"}),X=h(()=>{const t=o.value;if(!t)return"";const e=String(t.creator_account??"").trim(),p=String(t.creator_mobile??"").trim(),u=[];return e&&u.push(`登录账号:${e}`),p&&u.push(`手机:${p}`),u.join(" · ")}),Z=h(()=>{var e,p;const t=String(((e=o.value)==null?void 0:e.order_creator_dept_path)??((p=o.value)==null?void 0:p.diagnosis_creator_dept_path)??"").trim();return t?t.split(";").map(u=>u.trim()).filter(Boolean).map(u=>u.includes(" / ")?u.split(" / ").map(_=>_.trim()).filter(Boolean):u.split("/").map(_=>_.trim()).filter(Boolean)).filter(u=>u.length>0):[]}),O=k("auto"),A=k(!1),b=k(null),S=k(""),ee=h(()=>{const t=b.value;return!t||!Array.isArray(t.traces)?[]:t.traces});async function K(){var e;const t=Number((e=o.value)==null?void 0:e.id);if(t){A.value=!0;try{const p=String(S.value||"").replace(/\D/g,""),u={id:t,express_company:O.value};p.length>=4&&(u.phone_tail=p);const _=await nt(u);b.value=(_==null?void 0:_.data)??_}catch{b.value=null}finally{A.value=!1}}}async function _e(t){o.value=null,E.value=[],b.value=null,O.value="auto",S.value="",z.value=[],V.value=!0,H.value=!0;try{const e=await ot({id:t}),p=(e==null?void 0:e.data)??e??null;if(o.value=p,p){O.value=String(p.express_company||"auto")||"auto";const u=String(p.recipient_phone||"").replace(/\D/g,"");S.value=u.length>=4?u:"",String(p.tracking_number||"").trim()&&K(),ge(t),p.diagnosis_id&&fe(p.diagnosis_id,t,p.pay_order_ids||[])}}catch(e){ct.msgError((e==null?void 0:e.message)||"加载详情失败"),V.value=!1}finally{H.value=!1}}async function fe(t,e,p){var u;if(!t){E.value=[];return}try{const _=await dt({diagnosis_id:t,prescription_order_id:e}),L=(_==null?void 0:_.lists)??((u=_==null?void 0:_.data)==null?void 0:u.lists)??[];E.value=Array.isArray(L)?L.filter(D=>!p.includes(D.id)):[]}catch{E.value=[]}}function ve(){const t=ue.perms||[];return t.includes("*")||t.includes("tcm.prescriptionOrder/logs")}async function ge(t){if(!ve()){z.value=[];return}try{const e=await ut({id:t});z.value=(e==null?void 0:e.data)??e??[]}catch{z.value=[]}}function te(t){return t==null?"":String(t).replace(/\s/g,"").trim()}const ye=t=>{const e=Number(t);return Number.isFinite(e)?e.toFixed(2):"0.00"};function be(t){const e=Number(t);return Number.isFinite(e)?e.toFixed(2):"0.00"}const B=t=>{if(t==null||t==="")return"—";if(typeof t=="number"&&t>1e9&&t<1e11){const e=new Date(t*1e3),p=u=>String(u).padStart(2,"0");return`${e.getFullYear()}-${p(e.getMonth()+1)}-${p(e.getDate())} ${p(e.getHours())}:${p(e.getMinutes())}:${p(e.getSeconds())}`}return String(t)};function ae(t){return t==null||t===""?"—":typeof t=="string"&&String(t).includes("-")?String(t):B(t)}function Q(t){return{1:"药费",2:"诊费",3:"药费+诊费",4:"其他"}[Number(t)]??"—"}function xe(t){const e=String(t||"").toLowerCase();return e==="sf"?"顺丰速运":e==="jd"?"京东快递":e==="jt"||e==="jtexpress"?"极兔速递":"自动识别"}function he(t){const e=Number(t);return e===1?"已通过":e===2?"已驳回":"待审核"}function ke(t){const e=Number(t);return e===1?"success":e===2?"danger":"warning"}function se(t){const e=Number(t);return e===2?"success":e===1?"warning":"info"}function le(t){return{0:"待支付",1:"待支付",2:"已支付",3:"已取消"}[Number(t)]??"—"}const we=t=>({1:"待双审通过",2:"待发货",3:"已完成",4:"已取消",5:"已发货",6:"已签收",7:"进行中",8:"暂不制药",9:"拒收",10:"退款",11:"保留药方",12:"制药缓发"})[Number(t)]??"—",Te=t=>{const e=Number(t);return e===3||e===6?"success":e===5?"primary":e===4||e===9||e===10?"danger":e===2||e===7?"warning":"info"};function Ne(t){return{create:"创建",edit:"编辑",audit_rx_approve:"处方审核",audit_rx_reject:"处方审核",audit_pay_approve:"支付审核",audit_pay_reject:"支付审核",fill_tracking:"填快递单",ship:"确认发货",withdraw:"撤销",link_pay_order:"关联支付单",revoke_rx_audit:"撤回处方审核",revoke_pay_audit:"撤回支付审核",gancao_submit:"甘草下单",patch_rx_patient:"处方患者信息",update_amount:"修改订单金额",complete:"完成订单"}[t]||t}return ft(()=>[I.diagnosisId,q.value],()=>{if(!G.value){T.lists=[],T.count=0;return}ce(),pe()},{immediate:!0}),de({refresh:()=>Y()}),(t,e)=>{const p=Ae,u=Fe,_=$e,L=Re,D=Be,ze=st,Ee=Ue,x=He,F=Ge,Oe=qe,m=Ke,re=Je,Se=Ye,Le=Qe,De=We,$=Ze,Pe=Xe,ie=tt,ne=et,Ce=at,R=vt("perms"),Ie=Me;return n(),f("div",bt,[G.value?(n(),f(w,{key:1},[P((n(),v(D,{data:U(T).lists,border:"",stripe:"","empty-text":"暂无业务订单"},{default:a(()=>[s(u,{label:"订单编号",prop:"order_no","min-width":"200","show-overflow-tooltip":""}),s(u,{label:"金额",width:"120",align:"right"},{default:a(({row:r})=>[i("span",ht,"¥"+l(ye(r.amount)),1)]),_:1}),s(u,{label:"医生",prop:"doctor_name",width:"110","show-overflow-tooltip":""},{default:a(({row:r})=>[d(l(r.doctor_name||"—"),1)]),_:1}),s(u,{label:"医助",prop:"assistant_name",width:"110","show-overflow-tooltip":""},{default:a(({row:r})=>[d(l(r.assistant_name||"—"),1)]),_:1}),s(u,{label:"履约状态",width:"110"},{default:a(({row:r})=>[s(_,{type:Te(r.fulfillment_status),size:"small",effect:"light"},{default:a(()=>[d(l(we(r.fulfillment_status)),1)]),_:2},1032,["type"])]),_:1}),s(u,{label:"创建时间","min-width":"170"},{default:a(({row:r})=>[d(l(B(r.create_time)),1)]),_:1}),s(u,{label:"操作",width:"100",fixed:"right"},{default:a(({row:r})=>[P((n(),v(L,{type:"primary",link:"",onClick:y=>_e(r.id)},{default:a(()=>[...e[4]||(e[4]=[d("查看详情",-1)])]),_:1},8,["onClick"])),[[R,["tcm.prescriptionOrder/detail"]]])]),_:1})]),_:1},8,["data"])),[[Ie,U(T).loading]]),i("div",kt,[s(ze,{modelValue:U(T),"onUpdate:modelValue":e[0]||(e[0]=r=>gt(T)?T.value=r:null),onChange:U(Y)},null,8,["modelValue","onChange"])])],64)):(n(),f("div",xt,[s(p,{description:"当前诊单未携带患者ID,无法列出业务订单"})])),s(Ce,{modelValue:V.value,"onUpdate:modelValue":e[3]||(e[3]=r=>V.value=r),size:"80%","destroy-on-close":"","close-on-click-modal":!1,"append-to-body":""},{header:a(()=>{var r,y;return[i("div",wt,[e[5]||(e[5]=i("span",{class:"font-semibold text-lg"},"业务订单详情",-1)),(r=o.value)!=null&&r.order_no?(n(),v(_,{key:0,type:"primary",effect:"plain",round:"",class:"ml-3"},{default:a(()=>[d(l(o.value.order_no),1)]),_:1})):g("",!0),(y=o.value)!=null&&y.gancao_reciperl_order_no?(n(),v(_,{key:1,type:"success",effect:"plain",round:"",class:"ml-2"},{default:a(()=>[d("甘草 "+l(o.value.gancao_reciperl_order_no),1)]),_:1})):g("",!0)])]}),default:a(()=>[H.value?(n(),v(Ee,{key:0,rows:12,animated:"",class:"px-6 py-4"})):o.value?(n(),f("div",Tt,[s(Oe,{gutter:16,class:"mb-5"},{default:a(()=>[s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[6]||(e[6]=i("div",{class:"text-gray-500 text-xs mb-1"},"总金额",-1)),i("div",Nt,"¥"+l(o.value.amount),1)]),_:1})]),_:1}),s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[7]||(e[7]=i("div",{class:"text-gray-500 text-xs mb-1"},"已付总额",-1)),i("div",zt,"¥"+l(o.value.linked_pay_paid_total||0),1)]),_:1})]),_:1}),s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[8]||(e[8]=i("div",{class:"text-gray-500 text-xs mb-1"},"需代收",-1)),i("div",{class:C(["font-bold text-xl",W.value>0?"text-amber-600":"text-gray-500"])},"¥"+l(be(W.value)),3)]),_:1})]),_:1}),s(F,{xs:12,sm:6},{default:a(()=>[s(x,{shadow:"never",class:"border border-gray-100 bg-gray-50/50"},{default:a(()=>[e[9]||(e[9]=i("div",{class:"text-gray-500 text-xs mb-1"},"已付笔数",-1)),i("div",Et,l(J.value.length)+" 笔",1)]),_:1})]),_:1})]),_:1}),i("div",Ot,[s(x,{shadow:"never",class:"border-gray-100 h-full relative overflow-hidden"},{header:a(()=>[i("div",Dt,[i("div",Pt,[e[13]||(e[13]=i("span",{class:"font-medium text-[15px]"},"处方详情",-1)),o.value.doctor_name?(n(),f("span",Ct,[e[12]||(e[12]=d(" 开方人:",-1)),i("span",It,l(o.value.doctor_name),1)])):g("",!0)]),i("span",Vt,"ID: "+l(o.value.prescription_id||"—"),1)])]),default:a(()=>[o.value.prescription_audit_status===1?(n(),f("div",St,[...e[10]||(e[10]=[i("div",{class:"stamp-inner"},"审核通过",-1)])])):g("",!0),o.value.prescription_audit_status===2?(n(),f("div",Lt,[...e[11]||(e[11]=[i("div",{class:"stamp-inner"},"已驳回",-1)])])):g("",!0),c.value?(n(),v(re,{key:2,column:2,border:"",size:"small",class:"bg-white"},{default:a(()=>[s(m,{label:"处方编号",span:2},{default:a(()=>[d(l(c.value.sn||"—"),1)]),_:1}),s(m,{label:"患者"},{default:a(()=>[d(l(c.value.patient_name||"—"),1)]),_:1}),s(m,{label:"性别 / 年龄"},{default:a(()=>[d(l(c.value.gender_desc||"—")+" · "+l(c.value.age??"—")+"岁",1)]),_:1}),s(m,{label:"手机"},{default:a(()=>[i("span",{class:C(j.value?"text-red-600 font-bold":"")},l(c.value.phone||"—"),3),j.value?(n(),v(_,{key:0,type:"danger",size:"small",effect:"dark",class:"ml-2"},{default:a(()=>[...e[14]||(e[14]=[d("与订单手机不一致",-1)])]),_:1})):g("",!0)]),_:1}),s(m,{label:"处方日期"},{default:a(()=>[d(l(c.value.prescription_date||"—"),1)]),_:1}),s(m,{label:"医师"},{default:a(()=>[d(l(c.value.doctor_name||"—"),1)]),_:1}),s(m,{label:"类型"},{default:a(()=>[d(l(c.value.prescription_type||"—"),1)]),_:1}),s(m,{label:"临床诊断",span:2},{default:a(()=>[d(l(c.value.clinical_diagnosis||"—"),1)]),_:1}),s(m,{label:"剂数 / 用法",span:2},{default:a(()=>[d(l(o.value.dose_count??c.value.dose_count??"—")+" "+l(o.value.dose_unit||"剂")+" · "+l(c.value.usage_instruction||c.value.usage_method||"—"),1)]),_:1}),s(m,{label:"处方金额"},{default:a(()=>[i("span",jt,"¥"+l(c.value.amount??"—"),1)]),_:1}),s(m,{label:"消费者审核"},{default:a(()=>[s(_,{type:ke(c.value.audit_status),size:"small"},{default:a(()=>[d(l(he(c.value.audit_status)),1)]),_:1},8,["type"])]),_:1}),s(m,{label:"用量"},{default:a(()=>[c.value.dosage_amount?(n(),f(w,{key:0},[d(l(c.value.dosage_amount)+l(c.value.dosage_unit||"g")+" ",1),c.value.prescription_type==="浓缩水丸"?(n(),f(w,{key:0},[d(" · "+l(Number(c.value.dosage_bag_count)>0?Number(c.value.dosage_bag_count):1)+"袋 ",1)],64)):g("",!0),c.value.prescription_type==="饮片"&&c.value.need_decoction!==null?(n(),f("span",At," ("+l(c.value.need_decoction?"代煎":"不代煎")+") ",1)):g("",!0)],64)):(n(),f(w,{key:1},[d("—")],64))]),_:1}),s(m,{label:"服用方式"},{default:a(()=>[i("div",Bt,[i("div",null,[e[15]||(e[15]=i("span",{class:"text-gray-500"},"每天次数:",-1)),d(" "+l(c.value.times_per_day?c.value.times_per_day+" 次":"—"),1)]),i("div",null,[e[16]||(e[16]=i("span",{class:"text-gray-500"},"处方开立:",-1)),d(" "+l(c.value.usage_days!=null&&c.value.usage_days!==""?c.value.usage_days+" 天":"—"),1)]),i("div",null,[e[17]||(e[17]=i("span",{class:"text-gray-500"},"订单设置:",-1)),d(" "+l(o.value.medication_days!=null&&String(o.value.medication_days).trim()!==""?o.value.medication_days+" 天":"—"),1)])])]),_:1}),s(m,{label:"状态",span:2},{default:a(()=>[s(_,{type:Number(c.value.void_status)===1?"danger":"success",size:"small"},{default:a(()=>[d(l(Number(c.value.void_status)===1?"已作废":"正常"),1)]),_:1},8,["type"])]),_:1})]),_:1})):(n(),v(p,{key:3,description:"无处方数据","image-size":72}))]),_:1}),i("div",Ft,[s(x,{shadow:"never",class:"border-gray-100"},{header:a(()=>[...e[18]||(e[18]=[i("div",{class:"flex items-center justify-between"},[i("span",{class:"font-medium text-[15px]"},"未关联的收款记录"),i("span",{class:"text-xs text-gray-400"},"本诊单下未被占用的支付单")],-1)])]),default:a(()=>[E.value.length?(n(),v(D,{key:0,data:E.value,size:"small",border:"",stripe:"","max-height":"280"},{default:a(()=>[s(u,{prop:"id",label:"ID",width:"70"}),s(u,{prop:"order_no",label:"单号","min-width":"135","show-overflow-tooltip":""}),s(u,{label:"类型",width:"90"},{default:a(({row:r})=>[d(l(r.order_type_desc||Q(r.order_type)),1)]),_:1}),s(u,{label:"金额",width:"86",align:"right"},{default:a(({row:r})=>[i("span",$t,"¥"+l(r.amount),1)]),_:1}),s(u,{label:"状态",width:"82",align:"center"},{default:a(({row:r})=>[s(_,{type:se(r.status),size:"small"},{default:a(()=>[d(l(r.status_desc||le(r.status)),1)]),_:2},1032,["type"])]),_:1}),s(u,{prop:"creator_name",label:"创建人",width:"80","show-overflow-tooltip":""}),s(u,{label:"创建时间","min-width":"136"},{default:a(({row:r})=>[d(l(ae(r.create_time)),1)]),_:1})]),_:1},8,["data"])):(n(),v(p,{key:1,description:"无未关联的收款单","image-size":60}))]),_:1}),s(x,{shadow:"never",class:"border-gray-100 relative overflow-hidden"},{header:a(()=>[i("div",Ut,[e[22]||(e[22]=i("span",{class:"font-medium text-[15px]"},"关联收款记录",-1)),o.value.creator_name?(n(),f("span",qt,[e[21]||(e[21]=d("创建人:",-1)),i("span",Gt,l(o.value.creator_name),1)])):g("",!0)])]),default:a(()=>[o.value.payment_slip_audit_status===1?(n(),f("div",Rt,[...e[19]||(e[19]=[i("div",{class:"stamp-inner"},"审核通过",-1)])])):g("",!0),o.value.payment_slip_audit_status===2?(n(),f("div",Mt,[...e[20]||(e[20]=[i("div",{class:"stamp-inner"},"已驳回",-1)])])):g("",!0),J.value.length?(n(),v(D,{key:2,data:J.value,size:"small",border:"",stripe:"","max-height":"280"},{default:a(()=>[s(u,{prop:"id",label:"ID",width:"70"}),s(u,{prop:"order_no",label:"单号","min-width":"135","show-overflow-tooltip":""}),s(u,{label:"类型",width:"90"},{default:a(({row:r})=>[d(l(r.order_type_desc||Q(r.order_type)),1)]),_:1}),s(u,{label:"金额",width:"86",align:"right"},{default:a(({row:r})=>[i("span",Ht,"¥"+l(r.amount),1)]),_:1}),s(u,{label:"状态",width:"82",align:"center"},{default:a(({row:r})=>[s(_,{type:se(r.status),size:"small"},{default:a(()=>[d(l(r.status_desc||le(r.status)),1)]),_:2},1032,["type"])]),_:1}),s(u,{prop:"creator_name",label:"创建人",width:"80","show-overflow-tooltip":""}),s(u,{label:"创建时间","min-width":"136"},{default:a(({row:r})=>[d(l(ae(r.create_time)),1)]),_:1})]),_:1},8,["data"])):(n(),v(p,{key:3,description:"未关联收款单","image-size":60}))]),_:1})])]),s(x,{shadow:"never",class:"border-gray-100 mb-4"},{header:a(()=>[...e[23]||(e[23]=[i("span",{class:"font-medium text-[15px]"},"履约与收货信息",-1)])]),default:a(()=>[s(re,{column:3,border:"",size:"small"},{default:a(()=>[s(m,{label:"诊单ID",span:3},{default:a(()=>[i("span",Jt,l(o.value.diagnosis_id),1)]),_:1}),s(m,{label:"创建时间"},{default:a(()=>[d(l(B(o.value.create_time)),1)]),_:1}),s(m,{label:"业务订单创建人",span:2},{default:a(()=>[o.value.creator_name?(n(),f("div",Kt,[i("div",null,[i("span",Qt,l(o.value.creator_name||"—"),1)]),X.value?(n(),f("div",Yt,l(X.value),1)):g("",!0)])):(n(),f("span",Wt,"—"))]),_:1}),s(m,{label:"创建人所属部门",span:3},{default:a(()=>[Z.value.length?(n(),f("div",Xt,[(n(!0),f(w,null,M(Z.value,(r,y)=>(n(),f("div",{key:y},[r.length?(n(),v(Le,{key:0,class:"text-[13px]",separator:"/"},{default:a(()=>[(n(!0),f(w,null,M(r,(Ve,je)=>(n(),v(Se,{key:je},{default:a(()=>[i("span",Zt,l(Ve),1)]),_:2},1024))),128))]),_:2},1024)):g("",!0)]))),128))])):(n(),f("span",ea,"—"))]),_:1}),s(m,{label:"收货人"},{default:a(()=>[d(l(o.value.recipient_name),1)]),_:1}),s(m,{label:"收货手机"},{default:a(()=>[i("span",{class:C(j.value?"text-red-600 font-bold font-mono":"font-mono")},l(o.value.recipient_phone||"—"),3),j.value?(n(),v(_,{key:0,type:"danger",size:"small",effect:"dark",class:"ml-2"},{default:a(()=>[...e[24]||(e[24]=[d("与处方手机不一致",-1)])]),_:1})):g("",!0)]),_:1}),s(m,{label:"收货地址"},{default:a(()=>[d(l(me.value),1)]),_:1}),s(m,{label:"复诊"},{default:a(()=>[d(l(o.value.is_follow_up?"是":"否"),1)]),_:1}),s(m,{label:"用药疗程"},{default:a(()=>[d(l(o.value.medication_days?o.value.medication_days+" 天":"—"),1)]),_:1}),s(m,{label:"上次医护"},{default:a(()=>[d(l(o.value.prev_staff||"—"),1)]),_:1}),s(m,{label:"服务渠道"},{default:a(()=>[d(l(o.value.service_channel||"—"),1)]),_:1}),s(m,{label:"费用类别"},{default:a(()=>[d(l(Q(o.value.fee_type)),1)]),_:1}),s(m,{label:"快递单号"},{default:a(()=>[d(l(o.value.tracking_number||"—"),1)]),_:1}),s(m,{label:"快递公司"},{default:a(()=>[d(l(xe(o.value.express_company)),1)]),_:1}),P((n(),v(m,{label:"药房备注",span:3},{default:a(()=>[d(l(o.value.remark_extra||"—"),1)]),_:1})),[[R,["tcm.prescriptionOrder/editRemarkExtra"]]]),s(m,{label:"医助备注",span:3},{default:a(()=>[d(l(o.value.remark_assistant||"—"),1)]),_:1}),s(m,{label:"处方审核意见",span:3},{default:a(()=>[d(l(o.value.prescription_audit_remark||"—"),1)]),_:1}),s(m,{label:"支付审核意见",span:3},{default:a(()=>[d(l(o.value.payment_slip_audit_remark||"—"),1)]),_:1})]),_:1})]),_:1}),String(o.value.tracking_number||"").trim()?(n(),v(x,{key:0,shadow:"never",class:"border-gray-100 mb-4"},{header:a(()=>[...e[25]||(e[25]=[i("span",{class:"font-medium text-[15px]"},"物流轨迹",-1)])]),default:a(()=>[i("div",ta,[s(De,{modelValue:S.value,"onUpdate:modelValue":e[1]||(e[1]=r=>S.value=r),clearable:"",maxlength:"20",placeholder:"收件手机",class:"w-[180px]",onKeyup:lt(K,["enter"])},null,8,["modelValue"]),s(Pe,{modelValue:O.value,"onUpdate:modelValue":e[2]||(e[2]=r=>O.value=r),placeholder:"承运商",style:{width:"140px"}},{default:a(()=>[s($,{label:"自动识别",value:"auto"}),s($,{label:"顺丰速运",value:"sf"}),s($,{label:"京东快递",value:"jd"}),s($,{label:"极兔速递",value:"jt"})]),_:1},8,["modelValue"]),P((n(),v(L,{type:"primary",plain:"",size:"default",loading:A.value,onClick:K},{default:a(()=>[...e[26]||(e[26]=[d("刷新轨迹",-1)])]),_:1},8,["loading"])),[[R,["tcm.prescriptionOrder/logisticsTrace"]]])]),A.value&&!b.value?(n(),f("div",aa,"正在加载物流轨迹...")):b.value?(n(),f("div",sa,[b.value.state_text?(n(),f("div",la,[i("span",ra,"状态:"+l(b.value.state_text),1),b.value.carrier_label?(n(),v(_,{key:0,size:"small",type:"info"},{default:a(()=>[d(l(b.value.carrier_label),1)]),_:1})):g("",!0)])):g("",!0),ee.value.length?(n(),v(ne,{key:1,class:"mt-2 pl-2"},{default:a(()=>[(n(!0),f(w,null,M(ee.value,(r,y)=>(n(),v(ie,{key:y,type:y===0?"primary":"info",hollow:y!==0,timestamp:r.time,placement:"top"},{default:a(()=>[i("span",{class:C(y===0?"text-gray-800 font-medium":"text-gray-500")},l(r.context),3)]),_:2},1032,["type","hollow","timestamp"]))),128))]),_:1})):(n(),v(p,{key:2,description:"暂无轨迹节点记录","image-size":64}))])):g("",!0)]),_:1})):g("",!0),P((n(),v(x,{shadow:"never",class:"border-gray-100"},{header:a(()=>[...e[27]||(e[27]=[i("span",{class:"font-medium text-[15px]"},"操作日志",-1)])]),default:a(()=>[z.value.length?(n(),v(ne,{key:0,class:"mt-2 pl-2"},{default:a(()=>[(n(!0),f(w,null,M(z.value,(r,y)=>(n(),v(ie,{key:r.id,type:y===0?"primary":"info",hollow:y!==0,timestamp:B(r.create_time),placement:"top"},{default:a(()=>[i("div",ia,[i("span",na,l(r.admin_name),1),s(_,{size:"small",type:"info"},{default:a(()=>[d(l(Ne(r.action)),1)]),_:2},1024)]),i("span",{class:C(y===0?"text-gray-800 font-medium":"text-gray-500")},l(r.summary),3)]),_:2},1032,["type","hollow","timestamp"]))),128))]),_:1})):(n(),v(p,{key:1,description:"暂无操作日志","image-size":64}))]),_:1})),[[R,["tcm.prescriptionOrder/logs"]]])])):g("",!0)]),_:1},8,["modelValue"])])}}}),Qa=mt(oa,[["__scopeId","data-v-b8d83d0c"]]);export{Qa as default};
diff --git a/server/public/admin/assets/RecordingPlaybackBlock-z0PPBYke.js b/server/public/admin/assets/RecordingPlaybackBlock-COxLgEiR.js
similarity index 94%
rename from server/public/admin/assets/RecordingPlaybackBlock-z0PPBYke.js
rename to server/public/admin/assets/RecordingPlaybackBlock-COxLgEiR.js
index ec884e13..02a12a5f 100644
--- a/server/public/admin/assets/RecordingPlaybackBlock-z0PPBYke.js
+++ b/server/public/admin/assets/RecordingPlaybackBlock-COxLgEiR.js
@@ -1 +1 @@
-import{_ as L}from"./element-plus-0wC3naml.js";import B from"./RecordingVideoPlayer-DWV7klHs.js";import{e as H,_ as I}from"./index-E47--KT7.js";import{f as w,ak as n,I as m,J as p,F as _,G as u,aN as v,O as k,H as y,ap as R,A as d}from"./@vue/runtime-core-C6bnekPw.js";import{Q as q}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const C={key:0,class:"recording-list"},N={class:"recording-item"},P={key:1,class:"recording-alternates"},V={class:"recording-alternates__links"},A={key:1,class:"text-gray-400"},E=w({__name:"RecordingPlaybackBlock",props:{recordId:{},urls:{}},setup(c){const $=c,h=H(),l=d(()=>{const e=$.urls||[],t=new Set,r=[];for(const s of e){const o=String(s??"").trim();!o||t.has(o)||(t.add(o),r.push(o))}return r}),a=d(()=>{const e=l.value;if(!e.length)return null;const t=e.find(i=>/\.mp4(\?|#|$)/i.test(i));if(t)return t;const r=e.find(i=>/\.m3u8(\?|#|$)/i.test(i)&&/vod-qcloud\.com/i.test(i));if(r)return r;const s=e.find(i=>/\.m3u8(\?|#|$)/i.test(i)&&/\.cos\.[^/]+\.myqcloud\.com/i.test(i));if(s)return s;const o=e.find(i=>/\.m3u8(\?|#|$)/i.test(i));return o||e[0]}),f=d(()=>{const e=l.value,t=a.value;return t?e.filter(r=>r!==t):e.slice(1)});function b(e){if(!e||typeof e!="string")return!1;const t=e.trim();return/^https?:\/\//i.test(t)?/\.(mp4|webm|ogg|mov|mkv|m4v|m3u8)(\?|#|$)/i.test(t):/\.(mp4|webm|ogg|mov|mkv|m4v|m3u8)(\?|#|$)/i.test(t)||t.startsWith("/uploads/")}function g(e){return h.getImageUrl(String(e||"").trim())}function S(e,t){const r=e.trim();return/\.mp4(\?|#|$)/i.test(r)?`MP4 ${t+1}`:/vod-qcloud\.com/i.test(r)&&/\.m3u8/i.test(r)?`点播 ${t+1}`:/\.cos\.[^/]+\.myqcloud\.com/i.test(r)&&/\.m3u8/i.test(r)?`COS HLS ${t+1}`:/\.m3u8/i.test(r)?`HLS ${t+1}`:`链接 ${t+1}`}return(e,t)=>{const r=L;return l.value.length?(n(),m("div",C,[p("div",N,[a.value?(n(),m(_,{key:0},[b(a.value)?(n(),u(B,{key:`${c.recordId}-${a.value}`,src:a.value},null,8,["src"])):(n(),u(r,{key:1,href:g(a.value),target:"_blank",type:"primary"},{default:v(()=>[...t[0]||(t[0]=[k(" 打开回放 ",-1)])]),_:1},8,["href"]))],64)):y("",!0),f.value.length?(n(),m("div",P,[t[1]||(t[1]=p("span",{class:"recording-alternates__label"},"备用地址",-1)),p("div",V,[(n(!0),m(_,null,R(f.value,(s,o)=>(n(),u(r,{key:`${c.recordId}-alt-${o}-${s.slice(-32)}`,href:g(s),target:"_blank",type:"primary",class:"recording-alternates__link"},{default:v(()=>[k(q(S(s,o)),1)]),_:2},1032,["href"]))),128))])])):y("",!0)])])):(n(),m("span",A,"暂无"))}}}),ht=I(E,[["__scopeId","data-v-d67b2e91"]]);export{ht as default};
+import{_ as L}from"./element-plus-DFTWCWyi.js";import B from"./RecordingVideoPlayer-DJ_BP9x7.js";import{e as H,_ as I}from"./index-DBREMm_z.js";import{f as w,ak as n,I as m,J as p,F as _,G as u,aN as v,O as k,H as y,ap as R,A as d}from"./@vue/runtime-core-C6bnekPw.js";import{Q as q}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const C={key:0,class:"recording-list"},N={class:"recording-item"},P={key:1,class:"recording-alternates"},V={class:"recording-alternates__links"},A={key:1,class:"text-gray-400"},E=w({__name:"RecordingPlaybackBlock",props:{recordId:{},urls:{}},setup(c){const $=c,h=H(),l=d(()=>{const e=$.urls||[],t=new Set,r=[];for(const s of e){const o=String(s??"").trim();!o||t.has(o)||(t.add(o),r.push(o))}return r}),a=d(()=>{const e=l.value;if(!e.length)return null;const t=e.find(i=>/\.mp4(\?|#|$)/i.test(i));if(t)return t;const r=e.find(i=>/\.m3u8(\?|#|$)/i.test(i)&&/vod-qcloud\.com/i.test(i));if(r)return r;const s=e.find(i=>/\.m3u8(\?|#|$)/i.test(i)&&/\.cos\.[^/]+\.myqcloud\.com/i.test(i));if(s)return s;const o=e.find(i=>/\.m3u8(\?|#|$)/i.test(i));return o||e[0]}),f=d(()=>{const e=l.value,t=a.value;return t?e.filter(r=>r!==t):e.slice(1)});function b(e){if(!e||typeof e!="string")return!1;const t=e.trim();return/^https?:\/\//i.test(t)?/\.(mp4|webm|ogg|mov|mkv|m4v|m3u8)(\?|#|$)/i.test(t):/\.(mp4|webm|ogg|mov|mkv|m4v|m3u8)(\?|#|$)/i.test(t)||t.startsWith("/uploads/")}function g(e){return h.getImageUrl(String(e||"").trim())}function S(e,t){const r=e.trim();return/\.mp4(\?|#|$)/i.test(r)?`MP4 ${t+1}`:/vod-qcloud\.com/i.test(r)&&/\.m3u8/i.test(r)?`点播 ${t+1}`:/\.cos\.[^/]+\.myqcloud\.com/i.test(r)&&/\.m3u8/i.test(r)?`COS HLS ${t+1}`:/\.m3u8/i.test(r)?`HLS ${t+1}`:`链接 ${t+1}`}return(e,t)=>{const r=L;return l.value.length?(n(),m("div",C,[p("div",N,[a.value?(n(),m(_,{key:0},[b(a.value)?(n(),u(B,{key:`${c.recordId}-${a.value}`,src:a.value},null,8,["src"])):(n(),u(r,{key:1,href:g(a.value),target:"_blank",type:"primary"},{default:v(()=>[...t[0]||(t[0]=[k(" 打开回放 ",-1)])]),_:1},8,["href"]))],64)):y("",!0),f.value.length?(n(),m("div",P,[t[1]||(t[1]=p("span",{class:"recording-alternates__label"},"备用地址",-1)),p("div",V,[(n(!0),m(_,null,R(f.value,(s,o)=>(n(),u(r,{key:`${c.recordId}-alt-${o}-${s.slice(-32)}`,href:g(s),target:"_blank",type:"primary",class:"recording-alternates__link"},{default:v(()=>[k(q(S(s,o)),1)]),_:2},1032,["href"]))),128))])])):y("",!0)])])):(n(),m("span",A,"暂无"))}}}),ht=I(E,[["__scopeId","data-v-d67b2e91"]]);export{ht as default};
diff --git a/server/public/admin/assets/RecordingVideoPlayer-DWV7klHs.js b/server/public/admin/assets/RecordingVideoPlayer-DJ_BP9x7.js
similarity index 96%
rename from server/public/admin/assets/RecordingVideoPlayer-DWV7klHs.js
rename to server/public/admin/assets/RecordingVideoPlayer-DJ_BP9x7.js
index ab202a6d..9f4b9999 100644
--- a/server/public/admin/assets/RecordingVideoPlayer-DWV7klHs.js
+++ b/server/public/admin/assets/RecordingVideoPlayer-DJ_BP9x7.js
@@ -1 +1 @@
-import{_ as F}from"./jspdf-BsthCvR5.js";import{d as H,_ as K}from"./element-plus-0wC3naml.js";import{q as z,w as O,s as G}from"./@vue/runtime-dom-DDAG46FW.js";import{l as J}from"./@element-plus/icons-vue-HOEUG8sr.js";import{e as W,_ as $}from"./index-E47--KT7.js";import{f as j,b as Q,n as I,w as X,d as Y,ak as p,I as m,J as f,aP as Z,F as w,a as h,aN as S,H as M,O as ee,A as E}from"./@vue/runtime-core-C6bnekPw.js";import{y as te,n as v}from"./@vue/reactivity-DiY1c2vO.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const re={class:"recording-playback__shell"},oe=["preload"],ae=["onKeydown"],ne=j({__name:"RecordingVideoPlayer",props:{src:{}},setup(P){const A=P,B=W(),b=v(null),_=v(null),c=v(!1),i=v(!1),o=v(!1);let d=null,a=null,l=0,s=null;function u(){s!==null&&(clearTimeout(s),s=null)}const y=E(()=>{const e=String(A.src||"").trim();return e?N(B.getImageUrl(e)):""}),V=E(()=>{if(!i.value)return"none";const e=y.value;return e&&!L(e)?"metadata":"none"}),D=E(()=>!i.value||o.value);function N(e){if(!e||!/^https?:\/\//i.test(e))return e;try{const t=new URL(e),r=t.hostname.toLowerCase();if(r.includes("myqcloud.com")||r.includes("vod-qcloud.com")||r.includes("vod-qcloud"))return t.pathname.includes("+")&&(t.pathname=t.pathname.replace(/\+/g,"%2B")),t.href}catch{}return e}function L(e){return/\.m3u8(\?|#|$)/i.test(e)}function U(){var r;o.value=!1,u();const e=_.value,t=(r=e==null?void 0:e.error)==null?void 0:r.code;t===MediaError.MEDIA_ERR_ABORTED||t===1||(c.value=!0)}function k(){d&&(d.destroy(),d=null);const e=_.value;e&&(e.pause(),e.removeAttribute("src"),e.load())}function R(e,t){let r=!1;const n=()=>{r||t!==l||(r=!0,u(),o.value=!1)};e.addEventListener("loadedmetadata",()=>n(),{once:!0}),e.addEventListener("loadeddata",()=>n(),{once:!0}),e.addEventListener("canplay",()=>n(),{once:!0}),e.addEventListener("playing",()=>n(),{once:!0}),e.addEventListener("progress",()=>{try{e.buffered.length>0&&e.buffered.end(0)>0&&n("progress-buffered")}catch{}},{passive:!0})}async function g(){if(!i.value)return;await I();const e=_.value,t=y.value;if(!e)return;if(!t){o.value=!1,u();return}const r=++l;if(o.value=!0,u(),k(),c.value=!1,L(t)){try{const n=await F(()=>import("./hls.js-Cxumxs-1.js"),[]),x=n.default;if(x.isSupported()){d=new x({enableWorker:!0,lowLatencyMode:!1,maxBufferLength:20,maxMaxBufferLength:120}),d.on(n.Events.MANIFEST_PARSED,()=>{r===l&&(o.value=!1,u())}),d.on(n.Events.ERROR,(le,q)=>{if(q.fatal){if(r!==l)return;o.value=!1,u(),c.value=!0,k()}}),d.loadSource(t),d.attachMedia(e),s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},45e3);return}if(e.canPlayType("application/vnd.apple.mpegurl")){R(e,r),e.src=t,s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},45e3);return}}catch{if(r!==l)return;o.value=!1,u(),c.value=!0;return}if(r!==l)return;o.value=!1,u(),c.value=!0;return}R(e,r),e.src=t,s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},25e3)}function C(){const e=b.value;if(!e||typeof IntersectionObserver>"u"){i.value=!0,g();return}a=new IntersectionObserver(t=>{for(const r of t)if(r.isIntersecting){a==null||a.disconnect(),a=null,i.value=!0,g();break}},{root:null,rootMargin:"240px 0px",threshold:0}),a.observe(e)}function T(){a==null||a.disconnect(),a=null,i.value||(i.value=!0),g()}return Q(()=>{I(()=>{C()})}),X(y,()=>{i.value&&g()}),Y(()=>{a==null||a.disconnect(),a=null,u(),l++,k()}),(e,t)=>{const r=H,n=K;return p(),m("div",{ref_key:"wrapRef",ref:b,class:"recording-playback"},[f("div",re,[Z(f("video",{ref_key:"videoRef",ref:_,class:"recording-video",controls:"",playsinline:"","webkit-playsinline":"",preload:V.value,onError:U},null,40,oe),[[z,!c.value]]),!c.value&&D.value?(p(),m("div",{key:0,class:"recording-playback__overlay",role:"button",tabindex:"0",onClick:T,onKeydown:O(G(T,["prevent"]),["enter"])},[i.value?(p(),m(w,{key:1},[h(r,{class:"recording-playback__spin"},{default:S(()=>[h(te(J))]),_:1}),t[2]||(t[2]=f("span",null,"正在加载…",-1))],64)):(p(),m(w,{key:0},[t[0]||(t[0]=f("span",{class:"recording-playback__overlay-title"},"预览待加载",-1)),t[1]||(t[1]=f("span",{class:"recording-playback__overlay-desc"},"滚动至此处将自动加载(减轻并发卡顿),也可点击立即加载",-1))],64))],40,ae)):M("",!0)]),c.value?(p(),m(w,{key:0},[h(n,{href:y.value||"#",target:"_blank",type:"primary"},{default:S(()=>[...t[3]||(t[3]=[ee("在新窗口打开",-1)])]),_:1},8,["href"]),t[4]||(t[4]=f("div",{class:"recording-playback__hint"}," 内嵌播放失败(编码不支持、跨域或私有存储等)时可尝试在新窗口打开。 ",-1))],64)):M("",!0)],512)}}}),Oe=$(ne,[["__scopeId","data-v-749b0199"]]);export{Oe as default};
+import{_ as F}from"./jspdf-BsthCvR5.js";import{d as H,_ as K}from"./element-plus-DFTWCWyi.js";import{q as z,w as O,s as G}from"./@vue/runtime-dom-DDAG46FW.js";import{l as J}from"./@element-plus/icons-vue-HOEUG8sr.js";import{e as W,_ as $}from"./index-DBREMm_z.js";import{f as j,b as Q,n as I,w as X,d as Y,ak as p,I as m,J as f,aP as Z,F as w,a as h,aN as S,H as M,O as ee,A as E}from"./@vue/runtime-core-C6bnekPw.js";import{y as te,n as v}from"./@vue/reactivity-DiY1c2vO.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const re={class:"recording-playback__shell"},oe=["preload"],ae=["onKeydown"],ne=j({__name:"RecordingVideoPlayer",props:{src:{}},setup(P){const A=P,B=W(),b=v(null),_=v(null),c=v(!1),i=v(!1),o=v(!1);let d=null,a=null,l=0,s=null;function u(){s!==null&&(clearTimeout(s),s=null)}const y=E(()=>{const e=String(A.src||"").trim();return e?N(B.getImageUrl(e)):""}),V=E(()=>{if(!i.value)return"none";const e=y.value;return e&&!L(e)?"metadata":"none"}),D=E(()=>!i.value||o.value);function N(e){if(!e||!/^https?:\/\//i.test(e))return e;try{const t=new URL(e),r=t.hostname.toLowerCase();if(r.includes("myqcloud.com")||r.includes("vod-qcloud.com")||r.includes("vod-qcloud"))return t.pathname.includes("+")&&(t.pathname=t.pathname.replace(/\+/g,"%2B")),t.href}catch{}return e}function L(e){return/\.m3u8(\?|#|$)/i.test(e)}function U(){var r;o.value=!1,u();const e=_.value,t=(r=e==null?void 0:e.error)==null?void 0:r.code;t===MediaError.MEDIA_ERR_ABORTED||t===1||(c.value=!0)}function k(){d&&(d.destroy(),d=null);const e=_.value;e&&(e.pause(),e.removeAttribute("src"),e.load())}function R(e,t){let r=!1;const n=()=>{r||t!==l||(r=!0,u(),o.value=!1)};e.addEventListener("loadedmetadata",()=>n(),{once:!0}),e.addEventListener("loadeddata",()=>n(),{once:!0}),e.addEventListener("canplay",()=>n(),{once:!0}),e.addEventListener("playing",()=>n(),{once:!0}),e.addEventListener("progress",()=>{try{e.buffered.length>0&&e.buffered.end(0)>0&&n("progress-buffered")}catch{}},{passive:!0})}async function g(){if(!i.value)return;await I();const e=_.value,t=y.value;if(!e)return;if(!t){o.value=!1,u();return}const r=++l;if(o.value=!0,u(),k(),c.value=!1,L(t)){try{const n=await F(()=>import("./hls.js-Cxumxs-1.js"),[]),x=n.default;if(x.isSupported()){d=new x({enableWorker:!0,lowLatencyMode:!1,maxBufferLength:20,maxMaxBufferLength:120}),d.on(n.Events.MANIFEST_PARSED,()=>{r===l&&(o.value=!1,u())}),d.on(n.Events.ERROR,(le,q)=>{if(q.fatal){if(r!==l)return;o.value=!1,u(),c.value=!0,k()}}),d.loadSource(t),d.attachMedia(e),s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},45e3);return}if(e.canPlayType("application/vnd.apple.mpegurl")){R(e,r),e.src=t,s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},45e3);return}}catch{if(r!==l)return;o.value=!1,u(),c.value=!0;return}if(r!==l)return;o.value=!1,u(),c.value=!0;return}R(e,r),e.src=t,s=setTimeout(()=>{s=null,r===l&&o.value&&(o.value=!1)},25e3)}function C(){const e=b.value;if(!e||typeof IntersectionObserver>"u"){i.value=!0,g();return}a=new IntersectionObserver(t=>{for(const r of t)if(r.isIntersecting){a==null||a.disconnect(),a=null,i.value=!0,g();break}},{root:null,rootMargin:"240px 0px",threshold:0}),a.observe(e)}function T(){a==null||a.disconnect(),a=null,i.value||(i.value=!0),g()}return Q(()=>{I(()=>{C()})}),X(y,()=>{i.value&&g()}),Y(()=>{a==null||a.disconnect(),a=null,u(),l++,k()}),(e,t)=>{const r=H,n=K;return p(),m("div",{ref_key:"wrapRef",ref:b,class:"recording-playback"},[f("div",re,[Z(f("video",{ref_key:"videoRef",ref:_,class:"recording-video",controls:"",playsinline:"","webkit-playsinline":"",preload:V.value,onError:U},null,40,oe),[[z,!c.value]]),!c.value&&D.value?(p(),m("div",{key:0,class:"recording-playback__overlay",role:"button",tabindex:"0",onClick:T,onKeydown:O(G(T,["prevent"]),["enter"])},[i.value?(p(),m(w,{key:1},[h(r,{class:"recording-playback__spin"},{default:S(()=>[h(te(J))]),_:1}),t[2]||(t[2]=f("span",null,"正在加载…",-1))],64)):(p(),m(w,{key:0},[t[0]||(t[0]=f("span",{class:"recording-playback__overlay-title"},"预览待加载",-1)),t[1]||(t[1]=f("span",{class:"recording-playback__overlay-desc"},"滚动至此处将自动加载(减轻并发卡顿),也可点击立即加载",-1))],64))],40,ae)):M("",!0)]),c.value?(p(),m(w,{key:0},[h(n,{href:y.value||"#",target:"_blank",type:"primary"},{default:S(()=>[...t[3]||(t[3]=[ee("在新窗口打开",-1)])]),_:1},8,["href"]),t[4]||(t[4]=f("div",{class:"recording-playback__hint"}," 内嵌播放失败(编码不支持、跨域或私有存储等)时可尝试在新窗口打开。 ",-1))],64)):M("",!0)],512)}}}),Oe=$(ne,[["__scopeId","data-v-749b0199"]]);export{Oe as default};
diff --git a/server/public/admin/assets/SendPanel-2lfWsLed.js b/server/public/admin/assets/SendPanel-CSQRMLER.js
similarity index 98%
rename from server/public/admin/assets/SendPanel-2lfWsLed.js
rename to server/public/admin/assets/SendPanel-CSQRMLER.js
index 876193bb..bc926fd9 100644
--- a/server/public/admin/assets/SendPanel-2lfWsLed.js
+++ b/server/public/admin/assets/SendPanel-CSQRMLER.js
@@ -1 +1 @@
-import{v as te,d as ae,i as ie,C as ne,r as se,V as oe,D as ue,B as re}from"./element-plus-0wC3naml.js";import{w as de,s as me}from"./@vue/runtime-dom-DDAG46FW.js";import{G as j,R as N,S as K,c as pe,O as fe,P as ce}from"./@element-plus/icons-vue-HOEUG8sr.js";import{r as y,i as _,_ as ve}from"./index-E47--KT7.js";import{u as G}from"./file-DoYUJmkp.js";import{f as ge,ak as v,I as w,F as I,ap as _e,G as $,a as l,aN as t,J as x,H as B,O as q,A as ye}from"./@vue/runtime-core-C6bnekPw.js";import{o as ke,Q as R}from"./@vue/shared-mAAVTE9n.js";import{y as V,n as b}from"./@vue/reactivity-DiY1c2vO.js";function We(r){return y.get({url:"/qywx.message/session_list",params:r})}function Pe(r){return y.get({url:"/qywx.message/archive_list",params:r})}function je(r){return y.post({url:"/qywx.message/mark_read",params:{session_id:r}})}function Ne(r){return y.post({url:"/qywx.message/send",params:r})}function Ke(r){return y.get({url:"/qywx.message/send_task_list",params:r})}function Ge(r,h=""){return y.get({url:"/qywx.message/send_task_detail",params:{task_id:r,cursor:h}})}function He(r=""){return y.get({url:"/qywx.message/staff_list",params:{keyword:r}})}function Je(){return y.get({url:"/qywx.message/archive_status"})}function Qe(r=5,h=!1){return y.post({url:"/qywx.message/pull_archive",params:{max_batches:r,download:h}})}async function H(r,h){const S=new FormData;return S.append("file",r),S.append("type",h),y.post({url:"/qywx.message/upload_to_qywx",data:S,headers:{"Content-Type":"multipart/form-data"}})}const we={class:"send-panel"},xe={key:0,class:"attachment-list"},Ve=["src"],be={class:"attachment-filename"},he={class:"attachment-filename"},Ce={class:"attachment-filename"},qe={class:"send-toolbar"},Se={class:"toolbar-left"},Me={class:"toolbar-right"},Ue={class:"link-picurl-row"},Ee={key:0,class:"mini-preview"},Le=ge({__name:"SendPanel",props:{canSendMessage:{type:Boolean}},emits:["send"],setup(r,{emit:h}){const S=r,J=h,M=b(""),d=b([]),L=b(!1),f=b(null),z=b("image"),U=b(!1),c=b({title:"",url:"",picurl:"",desc:""}),E=b(!1),m=b({title:"",appid:"",page:"",pic_media_id:"",preview:""}),T=ye(()=>{if(!S.canSendMessage||L.value)return!1;const o=M.value.trim().length>0,e=d.value.some(s=>!s.uploading);return o||e});function F(o){if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}z.value=o;const e=o==="image"?"image/*":o==="video"?"video/*":"*/*";f.value&&(f.value.accept=e,f.value.value="",f.value.click())}function Q(){z.value="link-cover",f.value&&(f.value.accept="image/*",f.value.value="",f.value.click())}function X(){z.value="mini-cover",f.value&&(f.value.accept="image/*",f.value.value="",f.value.click())}async function Y(o){var g;const s=(g=o.target.files)==null?void 0:g[0];if(!s)return;const i=z.value;if(i==="link-cover"){try{const u=await G(s,s.name);c.value.picurl=u.uri||u.url,_.msgSuccess("封面上传成功")}catch(u){_.msgError((u==null?void 0:u.message)||"封面上传失败")}return}if(i==="mini-cover"){try{const u=await H(s,"image");m.value.pic_media_id=u.media_id;const k=await G(s,s.name);m.value.preview=k.uri||k.url,_.msgSuccess("小程序封面上传成功")}catch(u){_.msgError((u==null?void 0:u.message)||"封面上传失败")}return}const n=i==="file"?"":URL.createObjectURL(s),p={msgtype:i,uploading:!0,preview:n,file_name:s.name};d.value.push(p);const C=d.value.length-1;try{const k=(await H(s,i)).media_id;i==="image"?p.image={media_id:k}:i==="video"?p.video={media_id:k}:p.file={media_id:k},p.uploading=!1}catch(u){_.msgError((u==null?void 0:u.message)||"上传失败"),d.value.splice(C,1)}}function Z(o){const e=d.value[o];e!=null&&e.preview&&e.preview.startsWith("blob:")&&URL.revokeObjectURL(e.preview),d.value.splice(o,1)}function ee(){const{title:o,url:e,picurl:s,desc:i}=c.value;if(!o.trim()||!e.trim()||!s.trim()){_.msgWarning("请完整填写标题、链接地址与封面图");return}if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}d.value.push({msgtype:"link",link:{title:o,url:e,picurl:s,desc:i}}),U.value=!1,c.value={title:"",url:"",picurl:"",desc:""}}function le(){const{title:o,appid:e,page:s,pic_media_id:i}=m.value;if(!o.trim()||!e.trim()||!s.trim()||!i){_.msgWarning("请完整填写小程序信息");return}if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}d.value.push({msgtype:"miniprogram",miniprogram:{title:o,appid:e,page:s,pic_media_id:i}}),E.value=!1,m.value={title:"",appid:"",page:"",pic_media_id:"",preview:""}}async function A(){if(!T.value)return;const o=d.value.filter(i=>!i.uploading).map(i=>{const n={msgtype:i.msgtype};return i.image&&(n.image=i.image),i.video&&(n.video=i.video),i.file&&(n.file=i.file),i.link&&(n.link=i.link),i.miniprogram&&(n.miniprogram=i.miniprogram),n}),e={},s=M.value.trim();s&&(e.text={content:s}),o.length&&(e.attachments=o),L.value=!0;try{await J("send",e),M.value="",d.value.forEach(i=>{var n;(n=i.preview)!=null&&n.startsWith("blob:")&&URL.revokeObjectURL(i.preview)}),d.value=[]}finally{L.value=!1}}return(o,e)=>{const s=te,i=ae,n=ie,p=ne,C=se,g=re,u=ue,k=oe;return v(),w("div",we,[d.value.length?(v(),w("div",xe,[(v(!0),w(I,null,_e(d.value,(a,D)=>{var O,W,P;return v(),w("div",{key:D,class:ke(["attachment-item","attachment-"+a.msgtype])},[a.msgtype==="image"?(v(),$(s,{key:0,src:a.preview||"",fit:"cover",class:"attachment-preview"},null,8,["src"])):a.msgtype==="video"?(v(),w("video",{key:1,src:a.preview||"",class:"attachment-preview",muted:""},null,8,Ve)):a.msgtype==="file"?(v(),w(I,{key:2},[l(i,{size:20},{default:t(()=>[l(V(j))]),_:1}),x("span",be,R(a.file_name),1)],64)):a.msgtype==="link"?(v(),w(I,{key:3},[l(i,{size:20},{default:t(()=>[l(V(N))]),_:1}),x("span",he,R(((O=a.link)==null?void 0:O.title)||((W=a.link)==null?void 0:W.url)),1)],64)):a.msgtype==="miniprogram"?(v(),w(I,{key:4},[l(i,{size:20},{default:t(()=>[l(V(K))]),_:1}),x("span",Ce,R((P=a.miniprogram)==null?void 0:P.title),1)],64)):B("",!0),a.uploading?(v(),$(n,{key:5,type:"primary",link:"",loading:"",size:"small"})):(v(),$(n,{key:6,class:"attachment-remove",type:"danger",link:"",onClick:Ie=>Z(D)},{default:t(()=>[l(i,null,{default:t(()=>[l(V(pe))]),_:1})]),_:1},8,["onClick"]))],2)}),128))])):B("",!0),l(p,{modelValue:M.value,"onUpdate:modelValue":e[0]||(e[0]=a=>M.value=a),type:"textarea",rows:3,placeholder:"在此输入消息,Ctrl+Enter 发送。该消息以代发员工身份发给客户,员工手机端确认后送达。",resize:"none",onKeydown:de(me(A,["ctrl"]),["enter"])},null,8,["modelValue","onKeydown"]),x("div",qe,[x("div",Se,[l(C,{content:"图片",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[1]||(e[1]=a=>F("image"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(fe))]),_:1})]),_:1})]),_:1}),l(C,{content:"视频",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[2]||(e[2]=a=>F("video"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(ce))]),_:1})]),_:1})]),_:1}),l(C,{content:"文件",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[3]||(e[3]=a=>F("file"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(j))]),_:1})]),_:1})]),_:1}),l(C,{content:"链接",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[4]||(e[4]=a=>U.value=!0)},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(N))]),_:1})]),_:1})]),_:1}),l(C,{content:"小程序",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[5]||(e[5]=a=>E.value=!0)},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(K))]),_:1})]),_:1})]),_:1})]),x("div",Me,[e[18]||(e[18]=x("span",{class:"send-hint"}," 员工手机端确认后送达客户 · Ctrl+Enter 快速发送 ",-1)),l(n,{type:"primary",disabled:!T.value,loading:L.value,onClick:A},{default:t(()=>[...e[17]||(e[17]=[q(" 发送 ",-1)])]),_:1},8,["disabled","loading"])])]),x("input",{ref_key:"fileInputRef",ref:f,type:"file",hidden:"",onChange:Y},null,544),l(k,{modelValue:U.value,"onUpdate:modelValue":e[11]||(e[11]=a=>U.value=a),title:"添加链接",width:"480px"},{footer:t(()=>[l(n,{onClick:e[10]||(e[10]=a=>U.value=!1)},{default:t(()=>[...e[20]||(e[20]=[q("取消",-1)])]),_:1}),l(n,{type:"primary",onClick:ee},{default:t(()=>[...e[21]||(e[21]=[q("确定",-1)])]),_:1})]),default:t(()=>[l(u,{"label-width":"80px",model:c.value},{default:t(()=>[l(g,{label:"标题"},{default:t(()=>[l(p,{modelValue:c.value.title,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.title=a),maxlength:"128"},null,8,["modelValue"])]),_:1}),l(g,{label:"链接地址"},{default:t(()=>[l(p,{modelValue:c.value.url,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.url=a),placeholder:"https://..."},null,8,["modelValue"])]),_:1}),l(g,{label:"封面图"},{default:t(()=>[x("div",Ue,[l(p,{modelValue:c.value.picurl,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.picurl=a),placeholder:"https://..."},null,8,["modelValue"]),l(n,{onClick:Q},{default:t(()=>[...e[19]||(e[19]=[q("本地上传",-1)])]),_:1})])]),_:1}),l(g,{label:"描述"},{default:t(()=>[l(p,{modelValue:c.value.desc,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.desc=a),type:"textarea",rows:2,maxlength:"512"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(k,{modelValue:E.value,"onUpdate:modelValue":e[16]||(e[16]=a=>E.value=a),title:"添加小程序",width:"480px"},{footer:t(()=>[l(n,{onClick:e[15]||(e[15]=a=>E.value=!1)},{default:t(()=>[...e[22]||(e[22]=[q("取消",-1)])]),_:1}),l(n,{type:"primary",disabled:!m.value.pic_media_id||!m.value.appid,onClick:le},{default:t(()=>[...e[23]||(e[23]=[q(" 确定 ",-1)])]),_:1},8,["disabled"])]),default:t(()=>[l(u,{"label-width":"100px",model:m.value},{default:t(()=>[l(g,{label:"标题"},{default:t(()=>[l(p,{modelValue:m.value.title,"onUpdate:modelValue":e[12]||(e[12]=a=>m.value.title=a)},null,8,["modelValue"])]),_:1}),l(g,{label:"appid"},{default:t(()=>[l(p,{modelValue:m.value.appid,"onUpdate:modelValue":e[13]||(e[13]=a=>m.value.appid=a),placeholder:"wx..."},null,8,["modelValue"])]),_:1}),l(g,{label:"页面路径"},{default:t(()=>[l(p,{modelValue:m.value.page,"onUpdate:modelValue":e[14]||(e[14]=a=>m.value.page=a),placeholder:"/pages/index/index"},null,8,["modelValue"])]),_:1}),l(g,{label:"封面图"},{default:t(()=>[l(n,{onClick:X},{default:t(()=>[q(R(m.value.pic_media_id?"已选择 · 重新选择":"上传封面(必填)"),1)]),_:1}),m.value.preview?(v(),w("div",Ee,[l(s,{src:m.value.preview,fit:"cover"},null,8,["src"])])):B("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),ze=ve(Le,[["__scopeId","data-v-afee3bd0"]]),Xe=Object.freeze(Object.defineProperty({__proto__:null,default:ze},Symbol.toStringTag,{value:"Module"}));export{ze as S,Je as a,Qe as b,He as c,je as d,Pe as e,Ne as f,Ke as g,Ge as h,Xe as i,We as q};
+import{v as te,d as ae,i as ie,C as ne,r as se,V as oe,D as ue,B as re}from"./element-plus-DFTWCWyi.js";import{w as de,s as me}from"./@vue/runtime-dom-DDAG46FW.js";import{G as j,R as N,S as K,c as pe,O as fe,P as ce}from"./@element-plus/icons-vue-HOEUG8sr.js";import{r as y,i as _,_ as ve}from"./index-DBREMm_z.js";import{u as G}from"./file-BimpIRb_.js";import{f as ge,ak as v,I as w,F as I,ap as _e,G as $,a as l,aN as t,J as x,H as B,O as q,A as ye}from"./@vue/runtime-core-C6bnekPw.js";import{o as ke,Q as R}from"./@vue/shared-mAAVTE9n.js";import{y as V,n as b}from"./@vue/reactivity-DiY1c2vO.js";function We(r){return y.get({url:"/qywx.message/session_list",params:r})}function Pe(r){return y.get({url:"/qywx.message/archive_list",params:r})}function je(r){return y.post({url:"/qywx.message/mark_read",params:{session_id:r}})}function Ne(r){return y.post({url:"/qywx.message/send",params:r})}function Ke(r){return y.get({url:"/qywx.message/send_task_list",params:r})}function Ge(r,h=""){return y.get({url:"/qywx.message/send_task_detail",params:{task_id:r,cursor:h}})}function He(r=""){return y.get({url:"/qywx.message/staff_list",params:{keyword:r}})}function Je(){return y.get({url:"/qywx.message/archive_status"})}function Qe(r=5,h=!1){return y.post({url:"/qywx.message/pull_archive",params:{max_batches:r,download:h}})}async function H(r,h){const S=new FormData;return S.append("file",r),S.append("type",h),y.post({url:"/qywx.message/upload_to_qywx",data:S,headers:{"Content-Type":"multipart/form-data"}})}const we={class:"send-panel"},xe={key:0,class:"attachment-list"},Ve=["src"],be={class:"attachment-filename"},he={class:"attachment-filename"},Ce={class:"attachment-filename"},qe={class:"send-toolbar"},Se={class:"toolbar-left"},Me={class:"toolbar-right"},Ue={class:"link-picurl-row"},Ee={key:0,class:"mini-preview"},Le=ge({__name:"SendPanel",props:{canSendMessage:{type:Boolean}},emits:["send"],setup(r,{emit:h}){const S=r,J=h,M=b(""),d=b([]),L=b(!1),f=b(null),z=b("image"),U=b(!1),c=b({title:"",url:"",picurl:"",desc:""}),E=b(!1),m=b({title:"",appid:"",page:"",pic_media_id:"",preview:""}),T=ye(()=>{if(!S.canSendMessage||L.value)return!1;const o=M.value.trim().length>0,e=d.value.some(s=>!s.uploading);return o||e});function F(o){if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}z.value=o;const e=o==="image"?"image/*":o==="video"?"video/*":"*/*";f.value&&(f.value.accept=e,f.value.value="",f.value.click())}function Q(){z.value="link-cover",f.value&&(f.value.accept="image/*",f.value.value="",f.value.click())}function X(){z.value="mini-cover",f.value&&(f.value.accept="image/*",f.value.value="",f.value.click())}async function Y(o){var g;const s=(g=o.target.files)==null?void 0:g[0];if(!s)return;const i=z.value;if(i==="link-cover"){try{const u=await G(s,s.name);c.value.picurl=u.uri||u.url,_.msgSuccess("封面上传成功")}catch(u){_.msgError((u==null?void 0:u.message)||"封面上传失败")}return}if(i==="mini-cover"){try{const u=await H(s,"image");m.value.pic_media_id=u.media_id;const k=await G(s,s.name);m.value.preview=k.uri||k.url,_.msgSuccess("小程序封面上传成功")}catch(u){_.msgError((u==null?void 0:u.message)||"封面上传失败")}return}const n=i==="file"?"":URL.createObjectURL(s),p={msgtype:i,uploading:!0,preview:n,file_name:s.name};d.value.push(p);const C=d.value.length-1;try{const k=(await H(s,i)).media_id;i==="image"?p.image={media_id:k}:i==="video"?p.video={media_id:k}:p.file={media_id:k},p.uploading=!1}catch(u){_.msgError((u==null?void 0:u.message)||"上传失败"),d.value.splice(C,1)}}function Z(o){const e=d.value[o];e!=null&&e.preview&&e.preview.startsWith("blob:")&&URL.revokeObjectURL(e.preview),d.value.splice(o,1)}function ee(){const{title:o,url:e,picurl:s,desc:i}=c.value;if(!o.trim()||!e.trim()||!s.trim()){_.msgWarning("请完整填写标题、链接地址与封面图");return}if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}d.value.push({msgtype:"link",link:{title:o,url:e,picurl:s,desc:i}}),U.value=!1,c.value={title:"",url:"",picurl:"",desc:""}}function le(){const{title:o,appid:e,page:s,pic_media_id:i}=m.value;if(!o.trim()||!e.trim()||!s.trim()||!i){_.msgWarning("请完整填写小程序信息");return}if(d.value.length>=9){_.msgWarning("最多添加 9 个附件");return}d.value.push({msgtype:"miniprogram",miniprogram:{title:o,appid:e,page:s,pic_media_id:i}}),E.value=!1,m.value={title:"",appid:"",page:"",pic_media_id:"",preview:""}}async function A(){if(!T.value)return;const o=d.value.filter(i=>!i.uploading).map(i=>{const n={msgtype:i.msgtype};return i.image&&(n.image=i.image),i.video&&(n.video=i.video),i.file&&(n.file=i.file),i.link&&(n.link=i.link),i.miniprogram&&(n.miniprogram=i.miniprogram),n}),e={},s=M.value.trim();s&&(e.text={content:s}),o.length&&(e.attachments=o),L.value=!0;try{await J("send",e),M.value="",d.value.forEach(i=>{var n;(n=i.preview)!=null&&n.startsWith("blob:")&&URL.revokeObjectURL(i.preview)}),d.value=[]}finally{L.value=!1}}return(o,e)=>{const s=te,i=ae,n=ie,p=ne,C=se,g=re,u=ue,k=oe;return v(),w("div",we,[d.value.length?(v(),w("div",xe,[(v(!0),w(I,null,_e(d.value,(a,D)=>{var O,W,P;return v(),w("div",{key:D,class:ke(["attachment-item","attachment-"+a.msgtype])},[a.msgtype==="image"?(v(),$(s,{key:0,src:a.preview||"",fit:"cover",class:"attachment-preview"},null,8,["src"])):a.msgtype==="video"?(v(),w("video",{key:1,src:a.preview||"",class:"attachment-preview",muted:""},null,8,Ve)):a.msgtype==="file"?(v(),w(I,{key:2},[l(i,{size:20},{default:t(()=>[l(V(j))]),_:1}),x("span",be,R(a.file_name),1)],64)):a.msgtype==="link"?(v(),w(I,{key:3},[l(i,{size:20},{default:t(()=>[l(V(N))]),_:1}),x("span",he,R(((O=a.link)==null?void 0:O.title)||((W=a.link)==null?void 0:W.url)),1)],64)):a.msgtype==="miniprogram"?(v(),w(I,{key:4},[l(i,{size:20},{default:t(()=>[l(V(K))]),_:1}),x("span",Ce,R((P=a.miniprogram)==null?void 0:P.title),1)],64)):B("",!0),a.uploading?(v(),$(n,{key:5,type:"primary",link:"",loading:"",size:"small"})):(v(),$(n,{key:6,class:"attachment-remove",type:"danger",link:"",onClick:Ie=>Z(D)},{default:t(()=>[l(i,null,{default:t(()=>[l(V(pe))]),_:1})]),_:1},8,["onClick"]))],2)}),128))])):B("",!0),l(p,{modelValue:M.value,"onUpdate:modelValue":e[0]||(e[0]=a=>M.value=a),type:"textarea",rows:3,placeholder:"在此输入消息,Ctrl+Enter 发送。该消息以代发员工身份发给客户,员工手机端确认后送达。",resize:"none",onKeydown:de(me(A,["ctrl"]),["enter"])},null,8,["modelValue","onKeydown"]),x("div",qe,[x("div",Se,[l(C,{content:"图片",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[1]||(e[1]=a=>F("image"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(fe))]),_:1})]),_:1})]),_:1}),l(C,{content:"视频",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[2]||(e[2]=a=>F("video"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(ce))]),_:1})]),_:1})]),_:1}),l(C,{content:"文件",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[3]||(e[3]=a=>F("file"))},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(j))]),_:1})]),_:1})]),_:1}),l(C,{content:"链接",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[4]||(e[4]=a=>U.value=!0)},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(N))]),_:1})]),_:1})]),_:1}),l(C,{content:"小程序",placement:"top"},{default:t(()=>[l(n,{link:"",onClick:e[5]||(e[5]=a=>E.value=!0)},{default:t(()=>[l(i,{size:18},{default:t(()=>[l(V(K))]),_:1})]),_:1})]),_:1})]),x("div",Me,[e[18]||(e[18]=x("span",{class:"send-hint"}," 员工手机端确认后送达客户 · Ctrl+Enter 快速发送 ",-1)),l(n,{type:"primary",disabled:!T.value,loading:L.value,onClick:A},{default:t(()=>[...e[17]||(e[17]=[q(" 发送 ",-1)])]),_:1},8,["disabled","loading"])])]),x("input",{ref_key:"fileInputRef",ref:f,type:"file",hidden:"",onChange:Y},null,544),l(k,{modelValue:U.value,"onUpdate:modelValue":e[11]||(e[11]=a=>U.value=a),title:"添加链接",width:"480px"},{footer:t(()=>[l(n,{onClick:e[10]||(e[10]=a=>U.value=!1)},{default:t(()=>[...e[20]||(e[20]=[q("取消",-1)])]),_:1}),l(n,{type:"primary",onClick:ee},{default:t(()=>[...e[21]||(e[21]=[q("确定",-1)])]),_:1})]),default:t(()=>[l(u,{"label-width":"80px",model:c.value},{default:t(()=>[l(g,{label:"标题"},{default:t(()=>[l(p,{modelValue:c.value.title,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.title=a),maxlength:"128"},null,8,["modelValue"])]),_:1}),l(g,{label:"链接地址"},{default:t(()=>[l(p,{modelValue:c.value.url,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.url=a),placeholder:"https://..."},null,8,["modelValue"])]),_:1}),l(g,{label:"封面图"},{default:t(()=>[x("div",Ue,[l(p,{modelValue:c.value.picurl,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.picurl=a),placeholder:"https://..."},null,8,["modelValue"]),l(n,{onClick:Q},{default:t(()=>[...e[19]||(e[19]=[q("本地上传",-1)])]),_:1})])]),_:1}),l(g,{label:"描述"},{default:t(()=>[l(p,{modelValue:c.value.desc,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.desc=a),type:"textarea",rows:2,maxlength:"512"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(k,{modelValue:E.value,"onUpdate:modelValue":e[16]||(e[16]=a=>E.value=a),title:"添加小程序",width:"480px"},{footer:t(()=>[l(n,{onClick:e[15]||(e[15]=a=>E.value=!1)},{default:t(()=>[...e[22]||(e[22]=[q("取消",-1)])]),_:1}),l(n,{type:"primary",disabled:!m.value.pic_media_id||!m.value.appid,onClick:le},{default:t(()=>[...e[23]||(e[23]=[q(" 确定 ",-1)])]),_:1},8,["disabled"])]),default:t(()=>[l(u,{"label-width":"100px",model:m.value},{default:t(()=>[l(g,{label:"标题"},{default:t(()=>[l(p,{modelValue:m.value.title,"onUpdate:modelValue":e[12]||(e[12]=a=>m.value.title=a)},null,8,["modelValue"])]),_:1}),l(g,{label:"appid"},{default:t(()=>[l(p,{modelValue:m.value.appid,"onUpdate:modelValue":e[13]||(e[13]=a=>m.value.appid=a),placeholder:"wx..."},null,8,["modelValue"])]),_:1}),l(g,{label:"页面路径"},{default:t(()=>[l(p,{modelValue:m.value.page,"onUpdate:modelValue":e[14]||(e[14]=a=>m.value.page=a),placeholder:"/pages/index/index"},null,8,["modelValue"])]),_:1}),l(g,{label:"封面图"},{default:t(()=>[l(n,{onClick:X},{default:t(()=>[q(R(m.value.pic_media_id?"已选择 · 重新选择":"上传封面(必填)"),1)]),_:1}),m.value.preview?(v(),w("div",Ee,[l(s,{src:m.value.preview,fit:"cover"},null,8,["src"])])):B("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),ze=ve(Le,[["__scopeId","data-v-afee3bd0"]]),Xe=Object.freeze(Object.defineProperty({__proto__:null,default:ze},Symbol.toStringTag,{value:"Module"}));export{ze as S,Je as a,Qe as b,He as c,je as d,Pe as e,Ne as f,Ke as g,Ge as h,Xe as i,We as q};
diff --git a/server/public/admin/assets/TrackingMatrix-6AXA1QSn.js b/server/public/admin/assets/TrackingMatrix-DXSAP7vt.js
similarity index 82%
rename from server/public/admin/assets/TrackingMatrix-6AXA1QSn.js
rename to server/public/admin/assets/TrackingMatrix-DXSAP7vt.js
index bcf4d2f5..b6339480 100644
--- a/server/public/admin/assets/TrackingMatrix-6AXA1QSn.js
+++ b/server/public/admin/assets/TrackingMatrix-DXSAP7vt.js
@@ -1 +1 @@
-import{L as G,F as O,G as U,a2 as J,R as Q,N as W,r as j,M as K}from"./element-plus-0wC3naml.js";import{f as X,c as Z,d as ee,e as te,b as se}from"./blood-thresholds-CJ1fqMjh.js";import{I as ae}from"./tcm-SLIwsL8z.js";import{f as ne,w as oe,b as ie,aP as le,ak as n,I as i,J as r,a as p,aN as d,O as g,G as M,H as f,A as B}from"./@vue/runtime-core-C6bnekPw.js";import{o as I,Q as c}from"./@vue/shared-mAAVTE9n.js";import{n as y}from"./@vue/reactivity-DiY1c2vO.js";import{_ as re}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const de={class:"tracking-matrix"},ce={class:"toolbar"},ue={key:0,class:"cell-blood"},pe={class:"value"},me={key:0,class:"cell-up"},_e={class:"value"},ge={key:0,class:"cell-up"},fe={class:"value"},he={key:0,class:"cell-up"},ve={key:1,class:"cell-empty"},ye={key:0,class:"cell-up"},ke={key:1,class:"cell-empty"},xe={key:0},be={key:1,class:"cell-empty"},He={key:0},De={key:1,class:"cell-empty"},Se={class:"diet-tip"},Me={key:1,class:"cell-empty"},Be={class:"exercise-tip"},Te={key:0},Ce={class:"cell-checked"},Ie={key:0,class:"meta"},Re={key:1,class:"meta"},Ve={key:1,class:"cell-empty"},Ee=ne({__name:"TrackingMatrix",props:{diagnosisId:{},age:{default:null}},setup(L,{expose:Y}){const _=L,h=y("30"),k=y(null),T=y(!1),x=y([]),b=y([]),H=y([]);let C=0;const V=s=>`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`,E=s=>{if(s==="custom"){const[m,l]=k.value||["",""];return{start:m||"",end:l||""}}const e=s==="7"?7:30,t=new Date;t.setHours(0,0,0,0);const o=new Date(t);return o.setDate(o.getDate()-(e-1)),{start:V(o),end:V(t)}},w=s=>s.getTime()>Date.now(),D=async()=>{if(!_.diagnosisId||_.diagnosisId<=0){x.value=[],b.value=[],H.value=[];return}const s=E(h.value);if(h.value==="custom"&&(!s.start||!s.end))return;const e=++C;T.value=!0;try{const t=await ae({id:_.diagnosisId,start_date:s.start,end_date:s.end});if(e!==C)return;x.value=(t==null?void 0:t.blood_records)||[],b.value=(t==null?void 0:t.diet_records)||[],H.value=(t==null?void 0:t.exercise_records)||[]}catch{e===C&&(x.value=[],b.value=[],H.value=[])}finally{e===C&&(T.value=!1)}},A=()=>{if(h.value==="custom"&&!k.value){const s=E("30");k.value=[s.start,s.end]}D()},F=()=>{h.value==="custom"&&D()};oe(()=>_.diagnosisId,s=>{s&&s>0&&D()}),ie(()=>{_.diagnosisId&&_.diagnosisId>0&&D()});const P=B(()=>{const s=new Map;for(const e of x.value){const t=String(e.record_date||"");if(!t)continue;s.has(t)||s.set(t,{record_date:t,record_date_ts:e.record_date_ts});const o=s.get(t),m=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin"];for(const l of m)(o[l]===void 0||o[l]===null||o[l]==="")&&e[l]!==void 0&&e[l]!==null&&e[l]!==""&&(o[l]=e[l])}return s}),$=B(()=>{const s=new Map;for(const e of b.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),q=B(()=>{const s=new Map;for(const e of H.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),N=B(()=>{const s=new Set;for(const t of x.value)t.record_date&&s.add(String(t.record_date));for(const t of b.value)t.record_date&&s.add(String(t.record_date));for(const t of H.value)t.record_date&&s.add(String(t.record_date));const e=Array.from(s).filter(t=>t.length===10);return e.sort((t,o)=>to?-1:0),e}),z=B(()=>N.value.map(s=>{const e=P.value.get(s),t=$.value.get(s),o=q.value.get(s),m=(e==null?void 0:e.fasting_blood_sugar)??null,l=(e==null?void 0:e.postprandial_blood_sugar)??null,u=(e==null?void 0:e.other_blood_sugar)??null,v=(e==null?void 0:e.systolic_pressure)??null,S=(e==null?void 0:e.diastolic_pressure)??null,R=m!==null&&m!==""||l!==null&&l!==""||u!==null&&u!=="",a=v||S?X({systolic_pressure:v,diastolic_pressure:S}):"";return{date:s,dateLabel:`${s}`,bloodAny:R,fasting:m??"—",postprandial:l??"—",other:u??"—",fastingHigh:se(m,_.age),postprandialHigh:te(l,_.age),otherHigh:ee(u,_.age),bp:a,bpHigh:Z({systolic_pressure:v,diastolic_pressure:S}),westernMedicine:(e==null?void 0:e.western_medicine)||"",insulin:(e==null?void 0:e.insulin)||"",diet:t?{breakfast:t.breakfast||"",lunch:t.lunch||"",dinner:t.dinner||""}:null,exercise:o?{duration:o.duration||0,intensityText:o.intensity_text||"",remark:o.remark||""}:null}}));return Y({refresh:D}),(s,e)=>{const t=O,o=U,m=J,l=Q,u=W,v=j,S=K,R=G;return le((n(),i("div",de,[r("div",ce,[p(o,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),onChange:A},{default:d(()=>[p(t,{value:"7"},{default:d(()=>[...e[2]||(e[2]=[g("最近 7 天",-1)])]),_:1}),p(t,{value:"30"},{default:d(()=>[...e[3]||(e[3]=[g("最近 30 天",-1)])]),_:1}),p(t,{value:"custom"},{default:d(()=>[...e[4]||(e[4]=[g("自定义",-1)])]),_:1})]),_:1},8,["modelValue"]),h.value==="custom"?(n(),M(m,{key:0,modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=a=>k.value=a),type:"daterange","value-format":"YYYY-MM-DD","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",clearable:!1,size:"default","disabled-date":w,onChange:F},null,8,["modelValue"])):f("",!0),e[5]||(e[5]=r("span",{class:"hint"}," 超阈值红字↑(年龄分段:<50:空7/餐9,≥50:空8/餐10) ",-1))]),!T.value&&N.value.length===0?(n(),M(l,{key:0,description:"所选区间内无任何打卡记录","image-size":80})):(n(),M(S,{key:1,data:z.value,border:"",stripe:"",class:"matrix-table","empty-text":"暂无数据","row-key":"date","max-height":"640"},{default:d(()=>[p(u,{prop:"dateLabel",label:"日期",width:"120",fixed:"left"}),p(u,{label:"血糖 (mmol/L)","min-width":"180"},{default:d(({row:a})=>[a.bloodAny?(n(),i("div",ue,[r("span",{class:I({"cell-high":a.fastingHigh})},[e[6]||(e[6]=g(" 空 ",-1)),r("span",pe,c(a.fasting??"—"),1),a.fastingHigh?(n(),i("span",me,"↑")):f("",!0)],2),r("span",{class:I({"cell-high":a.postprandialHigh})},[e[7]||(e[7]=g(" 餐 ",-1)),r("span",_e,c(a.postprandial??"—"),1),a.postprandialHigh?(n(),i("span",ge,"↑")):f("",!0)],2),r("span",{class:I({"cell-high":a.otherHigh})},[e[8]||(e[8]=g(" 其他 ",-1)),r("span",fe,c(a.other??"—"),1),a.otherHigh?(n(),i("span",he,"↑")):f("",!0)],2)])):(n(),i("span",ve,"—"))]),_:1}),p(u,{label:"血压 (mmHg)",width:"120",align:"center"},{default:d(({row:a})=>[a.bp?(n(),i("span",{key:0,class:I({"cell-high":a.bpHigh})},[g(c(a.bp)+" ",1),a.bpHigh?(n(),i("span",ye,"↑")):f("",!0)],2)):(n(),i("span",ke,"—"))]),_:1}),p(u,{label:"西药","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.westernMedicine?(n(),i("span",xe,c(a.westernMedicine),1)):(n(),i("span",be,"—"))]),_:1}),p(u,{label:"胰岛素","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.insulin?(n(),i("span",He,c(a.insulin),1)):(n(),i("span",De,"—"))]),_:1}),p(u,{label:"饮食打卡",width:"110",align:"center"},{default:d(({row:a})=>[a.diet?(n(),M(v,{key:0,placement:"top",disabled:!a.diet,effect:"light"},{content:d(()=>[r("div",Se,[r("div",null,"早:"+c(a.diet.breakfast||"—"),1),r("div",null,"午:"+c(a.diet.lunch||"—"),1),r("div",null,"晚:"+c(a.diet.dinner||"—"),1)])]),default:d(()=>[e[9]||(e[9]=r("span",{class:"cell-checked"},"已打卡",-1))]),_:2},1032,["disabled"])):(n(),i("span",Me,"—"))]),_:1}),p(u,{label:"运动打卡","min-width":"160",align:"center"},{default:d(({row:a})=>[a.exercise?(n(),M(v,{key:0,placement:"top",effect:"light"},{content:d(()=>[r("div",Be,[r("div",null,"强度:"+c(a.exercise.intensityText||"—"),1),r("div",null,"时长:"+c(a.exercise.duration?a.exercise.duration+" min":"—"),1),a.exercise.remark?(n(),i("div",Te,"备注:"+c(a.exercise.remark),1)):f("",!0)])]),default:d(()=>[r("span",Ce,[e[10]||(e[10]=g(" 已打卡 ",-1)),a.exercise.duration?(n(),i("span",Ie,"· "+c(a.exercise.duration)+"min",1)):f("",!0),a.exercise.intensityText?(n(),i("span",Re,"· "+c(a.exercise.intensityText),1)):f("",!0)])]),_:2},1024)):(n(),i("span",Ve,"—"))]),_:1})]),_:1},8,["data"]))])),[[R,T.value]])}}}),yt=re(Ee,[["__scopeId","data-v-87978983"]]);export{yt as default};
+import{L as G,F as J,G as O,a2 as U,R as Q,N as W,r as j,M as K}from"./element-plus-DFTWCWyi.js";import{f as X,c as Z,d as ee,e as te,b as se}from"./blood-thresholds-CJ1fqMjh.js";import{J as ae}from"./tcm-BcqaE0lo.js";import{f as ne,w as oe,b as ie,aP as le,ak as n,I as i,J as r,a as p,aN as d,O as g,G as M,H as f,A as B}from"./@vue/runtime-core-C6bnekPw.js";import{o as R,Q as c}from"./@vue/shared-mAAVTE9n.js";import{n as y}from"./@vue/reactivity-DiY1c2vO.js";import{_ as re}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const de={class:"tracking-matrix"},ce={class:"toolbar"},ue={key:0,class:"cell-blood"},pe={class:"value"},me={key:0,class:"cell-up"},_e={class:"value"},ge={key:0,class:"cell-up"},fe={class:"value"},he={key:0,class:"cell-up"},ve={key:1,class:"cell-empty"},ye={key:0,class:"cell-up"},ke={key:1,class:"cell-empty"},xe={key:0},be={key:1,class:"cell-empty"},He={key:0},De={key:1,class:"cell-empty"},Se={class:"diet-tip"},Me={key:1,class:"cell-empty"},Be={class:"exercise-tip"},Te={key:0},Ce={class:"cell-checked"},Re={key:0,class:"meta"},Ve={key:1,class:"meta"},Ee={key:1,class:"cell-empty"},Ie=ne({__name:"TrackingMatrix",props:{diagnosisId:{},age:{default:null}},setup(L,{expose:Y}){const _=L,h=y("30"),k=y(null),T=y(!1),x=y([]),b=y([]),H=y([]);let C=0;const E=s=>`${s.getFullYear()}-${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`,I=s=>{if(s==="custom"){const[m,l]=k.value||["",""];return{start:m||"",end:l||""}}const e=s==="7"?7:30,t=new Date;t.setHours(0,0,0,0);const o=new Date(t);return o.setDate(o.getDate()-(e-1)),{start:E(o),end:E(t)}},w=s=>s.getTime()>Date.now(),D=async()=>{if(!_.diagnosisId||_.diagnosisId<=0){x.value=[],b.value=[],H.value=[];return}const s=I(h.value);if(h.value==="custom"&&(!s.start||!s.end))return;const e=++C;T.value=!0;try{const t=await ae({id:_.diagnosisId,start_date:s.start,end_date:s.end});if(e!==C)return;x.value=(t==null?void 0:t.blood_records)||[],b.value=(t==null?void 0:t.diet_records)||[],H.value=(t==null?void 0:t.exercise_records)||[]}catch{e===C&&(x.value=[],b.value=[],H.value=[])}finally{e===C&&(T.value=!1)}},A=()=>{if(h.value==="custom"&&!k.value){const s=I("30");k.value=[s.start,s.end]}D()},F=()=>{h.value==="custom"&&D()};oe(()=>_.diagnosisId,s=>{s&&s>0&&D()}),ie(()=>{_.diagnosisId&&_.diagnosisId>0&&D()});const P=B(()=>{const s=new Map;for(const e of x.value){const t=String(e.record_date||"");if(!t)continue;s.has(t)||s.set(t,{record_date:t,record_date_ts:e.record_date_ts});const o=s.get(t),m=["fasting_blood_sugar","postprandial_blood_sugar","other_blood_sugar","systolic_pressure","diastolic_pressure","western_medicine","insulin"];for(const l of m)(o[l]===void 0||o[l]===null||o[l]==="")&&e[l]!==void 0&&e[l]!==null&&e[l]!==""&&(o[l]=e[l])}return s}),$=B(()=>{const s=new Map;for(const e of b.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),q=B(()=>{const s=new Map;for(const e of H.value){const t=String(e.record_date||"");t&&(s.has(t)||s.set(t,e))}return s}),N=B(()=>{const s=new Set;for(const t of x.value)t.record_date&&s.add(String(t.record_date));for(const t of b.value)t.record_date&&s.add(String(t.record_date));for(const t of H.value)t.record_date&&s.add(String(t.record_date));const e=Array.from(s).filter(t=>t.length===10);return e.sort((t,o)=>to?-1:0),e}),z=B(()=>N.value.map(s=>{const e=P.value.get(s),t=$.value.get(s),o=q.value.get(s),m=(e==null?void 0:e.fasting_blood_sugar)??null,l=(e==null?void 0:e.postprandial_blood_sugar)??null,u=(e==null?void 0:e.other_blood_sugar)??null,v=(e==null?void 0:e.systolic_pressure)??null,S=(e==null?void 0:e.diastolic_pressure)??null,V=m!==null&&m!==""||l!==null&&l!==""||u!==null&&u!=="",a=v||S?X({systolic_pressure:v,diastolic_pressure:S}):"";return{date:s,dateLabel:`${s}`,bloodAny:V,fasting:m??"—",postprandial:l??"—",other:u??"—",fastingHigh:se(m,_.age),postprandialHigh:te(l,_.age),otherHigh:ee(u,_.age),bp:a,bpHigh:Z({systolic_pressure:v,diastolic_pressure:S}),westernMedicine:(e==null?void 0:e.western_medicine)||"",insulin:(e==null?void 0:e.insulin)||"",diet:t?{breakfast:t.breakfast||"",lunch:t.lunch||"",dinner:t.dinner||""}:null,exercise:o?{duration:o.duration||0,intensityText:o.intensity_text||"",remark:o.remark||""}:null}}));return Y({refresh:D}),(s,e)=>{const t=J,o=O,m=U,l=Q,u=W,v=j,S=K,V=G;return le((n(),i("div",de,[r("div",ce,[p(o,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),onChange:A},{default:d(()=>[p(t,{value:"7"},{default:d(()=>[...e[2]||(e[2]=[g("最近 7 天",-1)])]),_:1}),p(t,{value:"30"},{default:d(()=>[...e[3]||(e[3]=[g("最近 30 天",-1)])]),_:1}),p(t,{value:"custom"},{default:d(()=>[...e[4]||(e[4]=[g("自定义",-1)])]),_:1})]),_:1},8,["modelValue"]),h.value==="custom"?(n(),M(m,{key:0,modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=a=>k.value=a),type:"daterange","value-format":"YYYY-MM-DD","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",clearable:!1,size:"default","disabled-date":w,onChange:F},null,8,["modelValue"])):f("",!0),e[5]||(e[5]=r("span",{class:"hint"}," 超阈值红字↑(年龄分段:<50:空7/餐9,≥50:空8/餐10) ",-1))]),!T.value&&N.value.length===0?(n(),M(l,{key:0,description:"所选区间内无任何打卡记录","image-size":80})):(n(),M(S,{key:1,data:z.value,border:"",stripe:"",class:"matrix-table","empty-text":"暂无数据","row-key":"date","max-height":"640"},{default:d(()=>[p(u,{prop:"dateLabel",label:"日期",width:"120",fixed:"left"}),p(u,{label:"血糖 (mmol/L)","min-width":"180"},{default:d(({row:a})=>[a.bloodAny?(n(),i("div",ue,[r("span",{class:R({"cell-high":a.fastingHigh})},[e[6]||(e[6]=g(" 空 ",-1)),r("span",pe,c(a.fasting??"—"),1),a.fastingHigh?(n(),i("span",me,"↑")):f("",!0)],2),r("span",{class:R({"cell-high":a.postprandialHigh})},[e[7]||(e[7]=g(" 餐 ",-1)),r("span",_e,c(a.postprandial??"—"),1),a.postprandialHigh?(n(),i("span",ge,"↑")):f("",!0)],2),r("span",{class:R({"cell-high":a.otherHigh})},[e[8]||(e[8]=g(" 其他 ",-1)),r("span",fe,c(a.other??"—"),1),a.otherHigh?(n(),i("span",he,"↑")):f("",!0)],2)])):(n(),i("span",ve,"—"))]),_:1}),p(u,{label:"血压 (mmHg)",width:"120",align:"center"},{default:d(({row:a})=>[a.bp?(n(),i("span",{key:0,class:R({"cell-high":a.bpHigh})},[g(c(a.bp)+" ",1),a.bpHigh?(n(),i("span",ye,"↑")):f("",!0)],2)):(n(),i("span",ke,"—"))]),_:1}),p(u,{label:"西药","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.westernMedicine?(n(),i("span",xe,c(a.westernMedicine),1)):(n(),i("span",be,"—"))]),_:1}),p(u,{label:"胰岛素","min-width":"120","show-overflow-tooltip":""},{default:d(({row:a})=>[a.insulin?(n(),i("span",He,c(a.insulin),1)):(n(),i("span",De,"—"))]),_:1}),p(u,{label:"饮食打卡",width:"110",align:"center"},{default:d(({row:a})=>[a.diet?(n(),M(v,{key:0,placement:"top",disabled:!a.diet,effect:"light"},{content:d(()=>[r("div",Se,[r("div",null,"早:"+c(a.diet.breakfast||"—"),1),r("div",null,"午:"+c(a.diet.lunch||"—"),1),r("div",null,"晚:"+c(a.diet.dinner||"—"),1)])]),default:d(()=>[e[9]||(e[9]=r("span",{class:"cell-checked"},"已打卡",-1))]),_:2},1032,["disabled"])):(n(),i("span",Me,"—"))]),_:1}),p(u,{label:"运动打卡","min-width":"160",align:"center"},{default:d(({row:a})=>[a.exercise?(n(),M(v,{key:0,placement:"top",effect:"light"},{content:d(()=>[r("div",Be,[r("div",null,"强度:"+c(a.exercise.intensityText||"—"),1),r("div",null,"时长:"+c(a.exercise.duration?a.exercise.duration+" min":"—"),1),a.exercise.remark?(n(),i("div",Te,"备注:"+c(a.exercise.remark),1)):f("",!0)])]),default:d(()=>[r("span",Ce,[e[10]||(e[10]=g(" 已打卡 ",-1)),a.exercise.duration?(n(),i("span",Re,"· "+c(a.exercise.duration)+"min",1)):f("",!0),a.exercise.intensityText?(n(),i("span",Ve,"· "+c(a.exercise.intensityText),1)):f("",!0)])]),_:2},1024)):(n(),i("span",Ee,"—"))]),_:1})]),_:1},8,["data"]))])),[[V,T.value]])}}}),yt=re(Ie,[["__scopeId","data-v-87978983"]]);export{yt as default};
diff --git a/server/public/admin/assets/TrackingNoteTimeline-qSUYMPQm.js b/server/public/admin/assets/TrackingNoteTimeline-DmUVTWFb.js
similarity index 90%
rename from server/public/admin/assets/TrackingNoteTimeline-qSUYMPQm.js
rename to server/public/admin/assets/TrackingNoteTimeline-DmUVTWFb.js
index 9b379dba..832dbb9e 100644
--- a/server/public/admin/assets/TrackingNoteTimeline-qSUYMPQm.js
+++ b/server/public/admin/assets/TrackingNoteTimeline-DmUVTWFb.js
@@ -1,2 +1,2 @@
-import{C as I,i as V,R as w}from"./element-plus-0wC3naml.js";import{Q as T}from"./tcm-SLIwsL8z.js";import{i as C,_ as E}from"./index-E47--KT7.js";import{f as z,ak as t,I as e,a as p,J as l,aN as H,O as S,H as m,F as c,ap as u,G as F}from"./@vue/runtime-core-C6bnekPw.js";import{Q as f}from"./@vue/shared-mAAVTE9n.js";import{n as g}from"./@vue/reactivity-DiY1c2vO.js";/* empty css */import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const L={class:"tracking-timeline-wrap"},M={key:0,class:"timeline-input"},Q={class:"input-actions"},A={key:1,class:"tracking-timeline"},D={class:"timeline-date"},G={class:"timeline-body"},J={key:0,class:"timeline-content"},O=z({__name:"TrackingNoteTimeline",props:{notes:{},diagnosisId:{},readonly:{type:Boolean}},emits:["refresh"],setup(i,{emit:v}){const d=i,y=v,r=g(""),a=g(!1),_=o=>o?o.split(`
-`).filter(Boolean):[],k=async()=>{if(!d.diagnosisId)return;const o=r.value.trim();if(o){a.value=!0;try{await T({diagnosis_id:d.diagnosisId,tracking_content:o}),C.msgSuccess("已添加"),r.value="",y("refresh")}finally{a.value=!1}}};return(o,n)=>{const h=I,b=V,N=w;return t(),e("div",L,[!i.readonly&&i.diagnosisId?(t(),e("div",M,[p(h,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=s=>r.value=s),type:"textarea",rows:2,placeholder:"输入跟踪备注,回车换行;保存后将以「[HH:MM] 内容」追加到当天记录",maxlength:"1000","show-word-limit":"",resize:"none",disabled:a.value},null,8,["modelValue","disabled"]),l("div",Q,[p(b,{type:"primary",size:"small",loading:a.value,disabled:!r.value.trim(),onClick:k},{default:H(()=>[...n[1]||(n[1]=[S(" 添加 ",-1)])]),_:1},8,["loading","disabled"])])])):m("",!0),i.notes.length?(t(),e("div",A,[(t(!0),e(c,null,u(i.notes,s=>(t(),e("div",{key:s.id,class:"timeline-node"},[n[2]||(n[2]=l("div",{class:"timeline-dot"},null,-1)),l("div",D,f(s.note_date),1),l("div",G,[s.content?(t(),e("div",J,[(t(!0),e(c,null,u(_(s.content),(x,B)=>(t(),e("div",{key:B,class:"content-line"},f(x),1))),128))])):m("",!0)])]))),128))])):m("",!0),!i.notes.length&&i.readonly?(t(),F(N,{key:2,description:"暂无跟踪备注","image-size":48})):m("",!0)])}}}),Tt=E(O,[["__scopeId","data-v-82b635bd"]]);export{Tt as default};
+import{C as I,i as V,R as w}from"./element-plus-DFTWCWyi.js";import{R as T}from"./tcm-BcqaE0lo.js";import{i as C,_ as E}from"./index-DBREMm_z.js";import{f as z,ak as t,I as e,a as p,J as l,aN as H,O as S,H as m,F as c,ap as u,G as F}from"./@vue/runtime-core-C6bnekPw.js";import{Q as f}from"./@vue/shared-mAAVTE9n.js";import{n as g}from"./@vue/reactivity-DiY1c2vO.js";/* empty css */import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const L={class:"tracking-timeline-wrap"},M={key:0,class:"timeline-input"},R={class:"input-actions"},A={key:1,class:"tracking-timeline"},D={class:"timeline-date"},G={class:"timeline-body"},J={key:0,class:"timeline-content"},O=z({__name:"TrackingNoteTimeline",props:{notes:{},diagnosisId:{},readonly:{type:Boolean}},emits:["refresh"],setup(i,{emit:v}){const d=i,y=v,r=g(""),a=g(!1),_=o=>o?o.split(`
+`).filter(Boolean):[],k=async()=>{if(!d.diagnosisId)return;const o=r.value.trim();if(o){a.value=!0;try{await T({diagnosis_id:d.diagnosisId,tracking_content:o}),C.msgSuccess("已添加"),r.value="",y("refresh")}finally{a.value=!1}}};return(o,n)=>{const h=I,b=V,N=w;return t(),e("div",L,[!i.readonly&&i.diagnosisId?(t(),e("div",M,[p(h,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=s=>r.value=s),type:"textarea",rows:2,placeholder:"输入跟踪备注,回车换行;保存后将以「[HH:MM] 内容」追加到当天记录",maxlength:"1000","show-word-limit":"",resize:"none",disabled:a.value},null,8,["modelValue","disabled"]),l("div",R,[p(b,{type:"primary",size:"small",loading:a.value,disabled:!r.value.trim(),onClick:k},{default:H(()=>[...n[1]||(n[1]=[S(" 添加 ",-1)])]),_:1},8,["loading","disabled"])])])):m("",!0),i.notes.length?(t(),e("div",A,[(t(!0),e(c,null,u(i.notes,s=>(t(),e("div",{key:s.id,class:"timeline-node"},[n[2]||(n[2]=l("div",{class:"timeline-dot"},null,-1)),l("div",D,f(s.note_date),1),l("div",G,[s.content?(t(),e("div",J,[(t(!0),e(c,null,u(_(s.content),(x,B)=>(t(),e("div",{key:B,class:"content-line"},f(x),1))),128))])):m("",!0)])]))),128))])):m("",!0),!i.notes.length&&i.readonly?(t(),F(N,{key:2,description:"暂无跟踪备注","image-size":48})):m("",!0)])}}}),Tt=E(O,[["__scopeId","data-v-82b635bd"]]);export{Tt as default};
diff --git a/server/public/admin/assets/account-adjust-Dqh1AEa3.js b/server/public/admin/assets/account-adjust-fW1njHts.js
similarity index 86%
rename from server/public/admin/assets/account-adjust-Dqh1AEa3.js
rename to server/public/admin/assets/account-adjust-fW1njHts.js
index 652419e0..335d1dce 100644
--- a/server/public/admin/assets/account-adjust-Dqh1AEa3.js
+++ b/server/public/admin/assets/account-adjust-fW1njHts.js
@@ -1 +1 @@
-import{_ as o}from"./account-adjust.vue_vue_type_script_setup_true_lang-Bsqxx3M3.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
+import{_ as o}from"./account-adjust.vue_vue_type_script_setup_true_lang-DxyP7JSE.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
diff --git a/server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-Bsqxx3M3.js b/server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-DxyP7JSE.js
similarity index 91%
rename from server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-Bsqxx3M3.js
rename to server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-DxyP7JSE.js
index eaa55ab0..3c20b1c3 100644
--- a/server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-Bsqxx3M3.js
+++ b/server/public/admin/assets/account-adjust.vue_vue_type_script_setup_true_lang-DxyP7JSE.js
@@ -1 +1 @@
-import{D as h,B as q,G as B,I,C as D}from"./element-plus-0wC3naml.js";import{_ as F}from"./index-nymJKQXP.js";import{i as b}from"./index-E47--KT7.js";import{f as G,w,ak as j,G as S,aN as r,J as U,a,O as u,A}from"./@vue/runtime-core-C6bnekPw.js";import{y as n,q as y,r as J}from"./@vue/reactivity-DiY1c2vO.js";import{Q as k}from"./@vue/shared-mAAVTE9n.js";const M={class:"pr-8"},L=G({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:V}){const s=y(),i=d,f=V,o=J({action:1,num:"",remark:""}),m=y(),c=A(()=>Number(i.value)+Number(o.num)*(o.action==1?1:-1)),R={num:[{required:!0,message:"请输入调整的金额"}]},g=e=>{if(e.includes("-"))return b.msgError("请输入正整数");o.num=e},x=async()=>{var e;await((e=s.value)==null?void 0:e.validate()),f("confirm",o)},C=()=>{var e;f("update:show",!1),(e=s.value)==null||e.resetFields()};return w(()=>i.show,e=>{var t,l;e?(t=m.value)==null||t.open():(l=m.value)==null||l.close()}),w(c,e=>{e<0&&(b.msgError("调整后余额需大于0"),o.num="")}),(e,t)=>{const l=q,_=I,E=B,v=D,N=h;return j(),S(F,{ref_key:"popupRef",ref:m,title:"余额调整",width:"500px",onConfirm:x,async:!0,onClose:C},{default:r(()=>[U("div",M,[a(N,{ref_key:"formRef",ref:s,model:n(o),"label-width":"120px",rules:R},{default:r(()=>[a(l,{label:"当前余额"},{default:r(()=>[u("¥ "+k(d.value),1)]),_:1}),a(l,{label:"余额增减",required:"",prop:"action"},{default:r(()=>[a(E,{modelValue:n(o).action,"onUpdate:modelValue":t[0]||(t[0]=p=>n(o).action=p)},{default:r(()=>[a(_,{value:1},{default:r(()=>[...t[2]||(t[2]=[u("增加余额",-1)])]),_:1}),a(_,{value:2},{default:r(()=>[...t[3]||(t[3]=[u("扣减余额",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(l,{label:"调整余额",prop:"num"},{default:r(()=>[a(v,{"model-value":n(o).num,placeholder:"请输入调整的金额",type:"number",onInput:g},null,8,["model-value"])]),_:1}),a(l,{label:"调整后余额"},{default:r(()=>[u(" ¥ "+k(n(c)),1)]),_:1}),a(l,{label:"备注",prop:"remark"},{default:r(()=>[a(v,{modelValue:n(o).remark,"onUpdate:modelValue":t[1]||(t[1]=p=>n(o).remark=p),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{L as _};
+import{D as h,B as q,G as B,I,C as D}from"./element-plus-DFTWCWyi.js";import{_ as F}from"./index-BwF7vczx.js";import{i as b}from"./index-DBREMm_z.js";import{f as G,w,ak as j,G as S,aN as r,J as U,a,O as u,A}from"./@vue/runtime-core-C6bnekPw.js";import{y as n,q as y,r as J}from"./@vue/reactivity-DiY1c2vO.js";import{Q as k}from"./@vue/shared-mAAVTE9n.js";const M={class:"pr-8"},L=G({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:V}){const s=y(),i=d,f=V,o=J({action:1,num:"",remark:""}),m=y(),c=A(()=>Number(i.value)+Number(o.num)*(o.action==1?1:-1)),R={num:[{required:!0,message:"请输入调整的金额"}]},g=e=>{if(e.includes("-"))return b.msgError("请输入正整数");o.num=e},x=async()=>{var e;await((e=s.value)==null?void 0:e.validate()),f("confirm",o)},C=()=>{var e;f("update:show",!1),(e=s.value)==null||e.resetFields()};return w(()=>i.show,e=>{var t,l;e?(t=m.value)==null||t.open():(l=m.value)==null||l.close()}),w(c,e=>{e<0&&(b.msgError("调整后余额需大于0"),o.num="")}),(e,t)=>{const l=q,_=I,E=B,v=D,N=h;return j(),S(F,{ref_key:"popupRef",ref:m,title:"余额调整",width:"500px",onConfirm:x,async:!0,onClose:C},{default:r(()=>[U("div",M,[a(N,{ref_key:"formRef",ref:s,model:n(o),"label-width":"120px",rules:R},{default:r(()=>[a(l,{label:"当前余额"},{default:r(()=>[u("¥ "+k(d.value),1)]),_:1}),a(l,{label:"余额增减",required:"",prop:"action"},{default:r(()=>[a(E,{modelValue:n(o).action,"onUpdate:modelValue":t[0]||(t[0]=p=>n(o).action=p)},{default:r(()=>[a(_,{value:1},{default:r(()=>[...t[2]||(t[2]=[u("增加余额",-1)])]),_:1}),a(_,{value:2},{default:r(()=>[...t[3]||(t[3]=[u("扣减余额",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(l,{label:"调整余额",prop:"num"},{default:r(()=>[a(v,{"model-value":n(o).num,placeholder:"请输入调整的金额",type:"number",onInput:g},null,8,["model-value"])]),_:1}),a(l,{label:"调整后余额"},{default:r(()=>[u(" ¥ "+k(n(c)),1)]),_:1}),a(l,{label:"备注",prop:"remark"},{default:r(()=>[a(v,{modelValue:n(o).remark,"onUpdate:modelValue":t[1]||(t[1]=p=>n(o).remark=p),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{L as _};
diff --git a/server/public/admin/assets/add-DDFfGjpS.js b/server/public/admin/assets/add-BbPxW38e.js
similarity index 90%
rename from server/public/admin/assets/add-DDFfGjpS.js
rename to server/public/admin/assets/add-BbPxW38e.js
index c87ffb08..62961f6a 100644
--- a/server/public/admin/assets/add-DDFfGjpS.js
+++ b/server/public/admin/assets/add-BbPxW38e.js
@@ -1 +1 @@
-import{d as pe,i as me,B as _e,C as fe,G as ye,I as ge,h as be,a2 as Ve,P as ve,Q as ce,ae as ke,al as we,F as Ue,D as xe,E as le}from"./element-plus-0wC3naml.js";import{W as ae,X as Ee,Y as Oe,Z as qe,_ as Be}from"./tcm-SLIwsL8z.js";import{m as b,i as oe,_ as De}from"./index-E47--KT7.js";import{a as Ce,u as Ie}from"./vue-router-QlpZ4wdW.js";import{o as Se}from"./@element-plus/icons-vue-HOEUG8sr.js";import{f as Re,b as Pe,ae as Ne,ak as u,I as f,J as _,a,aN as t,O as s,F as V,ap as v,G as c,A as Fe}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,n as p}from"./@vue/reactivity-DiY1c2vO.js";import{Q as w}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ye={class:"diagnosis-page"},Ge={class:"page-header"},Le={class:"page-title"},Me={class:"page-content"},$e={class:"form-section"},Te={class:"form-section"},Xe={class:"form-section"},Ae={class:"form-section"},He={class:"form-section"},Qe={class:"form-section"},Je={class:"form-section"},We={class:"form-section"},Ze={class:"page-footer"},he=Re({__name:"add",setup(je){const P=Ce(),te=Ie(),N=p(),I=p("add"),S=p(!1),de=Fe(()=>I.value==="add"?"新增诊单":"编辑诊单"),d=p({id:"",patient_id:"",patient_name:"",id_card:"",phone:"",gender:1,age:void 0,diagnosis_date:"",diagnosis_type:"",syndrome_type:"",diabetes_type:"",diabetes_discovery_year:"",local_hospital_diagnosis:[],local_hospital_name:"",marital_status:void 0,height:void 0,weight:void 0,region:"",systolic_pressure:void 0,diastolic_pressure:void 0,fasting_blood_sugar:"",appetite:"",water_intake:"",diet_condition:[],weight_change:"",body_feeling:[],sleep_condition:[],eye_condition:[],head_feeling:[],sweat_condition:[],skin_condition:[],urine_condition:[],stool_condition:[],kidney_condition:[],fatty_liver_degree:"",past_history:[],trauma_history:0,surgery_history:0,allergy_history:0,family_history:0,pregnancy_history:0,symptoms:"",tongue_coating:"",pulse:"",treatment_principle:"",prescription:"",doctor_advice:"",remark:"",current_medications:"",status:1}),ne={patient_name:[{required:!0,message:"请输入患者姓名",trigger:"blur"}],id_card:[{validator:(r,e,i)=>{if(e&&!/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(e)){i(new Error("身份证号格式不正确"));return}i()},trigger:"blur"}],phone:[{required:!0,validator:(r,e,i)=>{if(!e){i(new Error("请输入手机号"));return}if(!/^1[3-9]\d{9}$/.test(e)){i(new Error("手机号格式不正确"));return}i()},trigger:"blur"}],gender:[{required:!0,message:"请选择性别",trigger:"change"}],age:[{required:!0,message:"请输入年龄",trigger:"blur"}],diagnosis_type:[{required:!0,message:"请选择诊断类型",trigger:"change"}],syndrome_type:[{required:!0,message:"请选择证型",trigger:"change"}],diabetes_type:[{required:!0,message:"请选择糖尿病期数",trigger:"change"}],diabetes_discovery_year:[{max:50,message:"最多50个字符",trigger:"blur"}]},F=p([]),Y=p([]),G=p([]),L=p([]),M=p([]),$=p([]),T=p([]),X=p([]),A=p([]),H=p([]),Q=p([]),J=p([]),W=p([]),Z=p([]),h=p([]),j=p([]),z=p([]),K=p([]),ue=async()=>{try{const[r,e,i,x,m,n,y,U,O,D,E,q,g,k,B,C,l,R]=await Promise.all([b({type:"diagnosis_type"}),b({type:"syndrome_type"}),b({type:"diabetes_type"}),b({type:"past_history"}),b({type:"appetite"}),b({type:"water_intake"}),b({type:"diet_condition"}),b({type:"weight_change"}),b({type:"body_feeling"}),b({type:"sleep_condition"}),b({type:"eye_condition"}),b({type:"head_feeling"}),b({type:"sweat_condition"}),b({type:"skin_condition"}),b({type:"urine_condition"}),b({type:"stool_condition"}),b({type:"kidney_condition"}),b({type:"fatty_liver_degree"})]);F.value=(r==null?void 0:r.diagnosis_type)||[],Y.value=(e==null?void 0:e.syndrome_type)||[],G.value=(i==null?void 0:i.diabetes_type)||[],L.value=(x==null?void 0:x.past_history)||[],M.value=(m==null?void 0:m.appetite)||[],$.value=(n==null?void 0:n.water_intake)||[],T.value=(y==null?void 0:y.diet_condition)||[],X.value=(U==null?void 0:U.weight_change)||[],A.value=(O==null?void 0:O.body_feeling)||[],H.value=(D==null?void 0:D.sleep_condition)||[],Q.value=(E==null?void 0:E.eye_condition)||[],J.value=(q==null?void 0:q.head_feeling)||[],W.value=(g==null?void 0:g.sweat_condition)||[],Z.value=(k==null?void 0:k.skin_condition)||[],h.value=(B==null?void 0:B.urine_condition)||[],j.value=(C==null?void 0:C.stool_condition)||[],z.value=(l==null?void 0:l.kidney_condition)||[],K.value=(R==null?void 0:R.fatty_liver_degree)||[]}catch(r){console.error("获取字典数据失败:",r)}},se=async()=>{if(!(!d.value.phone||!/^1[3-9]\d{9}$/.test(d.value.phone)))try{const r=await Ee({phone:d.value.phone,id:d.value.id||""});r.exists&&le.warning(r.message)}catch(r){console.error("检查手机号失败:",r)}},re=async()=>{if(!(!d.value.id_card||!/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(d.value.id_card)))try{const r=await Oe({id_card:d.value.id_card,id:d.value.id||""});r.exists&&le.warning(r.message)}catch(r){console.error("检查身份证号失败:",r)}},ie=async()=>{var r;await((r=N.value)==null?void 0:r.validate()),S.value=!0;try{if(I.value==="add"){const e=await qe(d.value);if(oe.msgSuccess("新增成功"),e&&e.id){I.value="edit",d.value.id=e.id;try{const i=await ae({id:e.id});d.value.patient_id=i.patient_id}catch(i){console.error("获取详情失败:",i)}P.replace({query:{id:e.id}})}}else await Be(d.value),oe.msgSuccess("编辑成功")}catch(e){console.error("提交失败:",e)}finally{S.value=!1}},ee=()=>{P.back()};return Pe(async()=>{await ue(),setTimeout(()=>{const e=document.querySelector(".el-aside");e&&(e.style.display="none");const i=document.querySelector(".el-main");i&&(i.style.width="100%"(i).style.marginLeft="0");const x=document.querySelector(".el-container");x&&(x.style.width="100%")},100);const r=te.query.id;if(r){I.value="edit";const e=await ae({id:Number(r)});d.value=e}}),Ne(()=>{const r=document.querySelector(".el-aside");r&&(r.style.display="");const e=document.querySelector(".el-main");e&&(e.style.width=""(e).style.marginLeft="");const i=document.querySelector(".el-container");i&&(i.style.width="")}),(r,e)=>{const i=pe,x=me,m=fe,n=_e,y=ge,U=ye,O=be,D=Ve,E=ce,q=ve,g=we,k=ke,B=Ue,C=xe;return u(),f("div",Ye,[_("div",Ge,[a(x,{link:"",onClick:ee,class:"back-btn"},{default:t(()=>[a(i,null,{default:t(()=>[a(o(Se))]),_:1}),e[49]||(e[49]=s(" 返回 ",-1))]),_:1}),_("h1",Le,w(o(de)),1)]),_("div",Me,[a(C,{ref_key:"formRef",ref:N,model:o(d),rules:ne,"label-width":"auto",class:"diagnosis-form"},{default:t(()=>[_("div",$e,[e[52]||(e[52]=_("div",{class:"section-title"},"基本信息",-1)),a(n,{label:"患者ID"},{default:t(()=>[a(m,{modelValue:o(d).patient_id,"onUpdate:modelValue":e[0]||(e[0]=l=>o(d).patient_id=l),disabled:"",placeholder:"系统自动生成"},null,8,["modelValue"])]),_:1}),a(n,{label:"患者姓名",prop:"patient_name"},{default:t(()=>[a(m,{modelValue:o(d).patient_name,"onUpdate:modelValue":e[1]||(e[1]=l=>o(d).patient_name=l),placeholder:"请输入患者姓名"},null,8,["modelValue"])]),_:1}),a(n,{label:"身份证号",prop:"id_card"},{default:t(()=>[a(m,{modelValue:o(d).id_card,"onUpdate:modelValue":e[2]||(e[2]=l=>o(d).id_card=l),placeholder:"请输入身份证号",maxlength:"18",onBlur:re},null,8,["modelValue"])]),_:1}),a(n,{label:"手机号",prop:"phone"},{default:t(()=>[a(m,{modelValue:o(d).phone,"onUpdate:modelValue":e[3]||(e[3]=l=>o(d).phone=l),placeholder:"请输入手机号",maxlength:"11",onBlur:se},null,8,["modelValue"])]),_:1}),a(n,{label:"性别",prop:"gender"},{default:t(()=>[a(U,{modelValue:o(d).gender,"onUpdate:modelValue":e[4]||(e[4]=l=>o(d).gender=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[50]||(e[50]=[s("男",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[51]||(e[51]=[s("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"年龄",prop:"age"},{default:t(()=>[a(O,{modelValue:o(d).age,"onUpdate:modelValue":e[5]||(e[5]=l=>o(d).age=l),min:0,max:150,placeholder:"请输入年龄",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"诊断日期",prop:"diagnosis_date"},{default:t(()=>[a(D,{modelValue:o(d).diagnosis_date,"onUpdate:modelValue":e[6]||(e[6]=l=>o(d).diagnosis_date=l),type:"date",placeholder:"请选择诊断日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1})]),_("div",Te,[e[53]||(e[53]=_("div",{class:"section-title"},"生命体征",-1)),a(n,{label:"婚姻状态",prop:"marital_status"},{default:t(()=>[a(q,{modelValue:o(d).marital_status,"onUpdate:modelValue":e[7]||(e[7]=l=>o(d).marital_status=l),placeholder:"请选择婚姻状态",class:"w-full"},{default:t(()=>[a(E,{label:"未婚",value:0}),a(E,{label:"已婚",value:1}),a(E,{label:"离异",value:2})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"身高(cm)",prop:"height"},{default:t(()=>[a(O,{modelValue:o(d).height,"onUpdate:modelValue":e[8]||(e[8]=l=>o(d).height=l),min:0,max:300,placeholder:"请输入身高",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"体重(kg)",prop:"weight"},{default:t(()=>[a(O,{modelValue:o(d).weight,"onUpdate:modelValue":e[9]||(e[9]=l=>o(d).weight=l),min:0,max:500,step:.1,placeholder:"请输入体重",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"地区",prop:"region"},{default:t(()=>[a(m,{modelValue:o(d).region,"onUpdate:modelValue":e[10]||(e[10]=l=>o(d).region=l),placeholder:"请输入地区"},null,8,["modelValue"])]),_:1}),a(n,{label:"收缩压(mmHg)",prop:"systolic_pressure"},{default:t(()=>[a(O,{modelValue:o(d).systolic_pressure,"onUpdate:modelValue":e[11]||(e[11]=l=>o(d).systolic_pressure=l),min:0,max:250,placeholder:"请输入收缩压",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"舒张压(mmHg)",prop:"diastolic_pressure"},{default:t(()=>[a(O,{modelValue:o(d).diastolic_pressure,"onUpdate:modelValue":e[12]||(e[12]=l=>o(d).diastolic_pressure=l),min:0,max:150,placeholder:"请输入舒张压",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"空腹血糖(mmol/L)",prop:"fasting_blood_sugar"},{default:t(()=>[a(m,{modelValue:o(d).fasting_blood_sugar,"onUpdate:modelValue":e[13]||(e[13]=l=>o(d).fasting_blood_sugar=l),placeholder:"请输入空腹血糖,如:8.5 或 8-9",maxlength:"20",class:"w-full"},null,8,["modelValue"])]),_:1})]),_("div",Xe,[e[56]||(e[56]=_("div",{class:"section-title"},"诊断信息",-1)),a(n,{label:"诊断类型",prop:"diagnosis_type"},{default:t(()=>[a(q,{modelValue:o(d).diagnosis_type,"onUpdate:modelValue":e[14]||(e[14]=l=>o(d).diagnosis_type=l),placeholder:"请选择诊断类型",class:"w-full"},{default:t(()=>[(u(!0),f(V,null,v(o(F),l=>(u(),c(E,{key:l.value,label:l.name,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"证型",prop:"syndrome_type"},{default:t(()=>[a(q,{modelValue:o(d).syndrome_type,"onUpdate:modelValue":e[15]||(e[15]=l=>o(d).syndrome_type=l),placeholder:"请选择证型",class:"w-full"},{default:t(()=>[(u(!0),f(V,null,v(o(Y),l=>(u(),c(E,{key:l.value,label:l.name,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"糖尿病期数",prop:"diabetes_type"},{default:t(()=>[a(q,{modelValue:o(d).diabetes_type,"onUpdate:modelValue":e[16]||(e[16]=l=>o(d).diabetes_type=l),placeholder:"请选择糖尿病期数",class:"w-full"},{default:t(()=>[(u(!0),f(V,null,v(o(G),l=>(u(),c(E,{key:l.value,label:l.name+(l.remark?" ("+l.remark+")":""),value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"状态",prop:"status"},{default:t(()=>[a(U,{modelValue:o(d).status,"onUpdate:modelValue":e[17]||(e[17]=l=>o(d).status=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[54]||(e[54]=[s("启用",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[55]||(e[55]=[s("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"在用药物",prop:"current_medications"},{default:t(()=>[a(m,{modelValue:o(d).current_medications,"onUpdate:modelValue":e[18]||(e[18]=l=>o(d).current_medications=l),type:"textarea",rows:3,placeholder:"请填写患者当前正在使用的药物(如降压药、降糖药等),多种请换行或顿号分隔",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_("div",Ae,[e[60]||(e[60]=_("div",{class:"section-title"},"主诉",-1)),a(n,{label:"发现糖尿病就患病史",prop:"diabetes_discovery_year"},{default:t(()=>[a(m,{modelValue:o(d).diabetes_discovery_year,"onUpdate:modelValue":e[19]||(e[19]=l=>o(d).diabetes_discovery_year=l),clearable:"",maxlength:"50","show-word-limit":"",placeholder:"可填数字或文字,如:5、1年、半年",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"当地医院诊断结果"},{default:t(()=>[a(k,{modelValue:o(d).local_hospital_diagnosis,"onUpdate:modelValue":e[20]||(e[20]=l=>o(d).local_hospital_diagnosis=l),class:"checkbox-group"},{default:t(()=>[a(g,{label:"糖尿病"},{default:t(()=>[...e[57]||(e[57]=[s("糖尿病",-1)])]),_:1}),a(g,{label:"高血压"},{default:t(()=>[...e[58]||(e[58]=[s("高血压",-1)])]),_:1}),a(g,{label:"糖尿病高血压"},{default:t(()=>[...e[59]||(e[59]=[s("糖尿病高血压",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"当地就诊医院名称",prop:"local_hospital_name"},{default:t(()=>[a(m,{modelValue:o(d).local_hospital_name,"onUpdate:modelValue":e[21]||(e[21]=l=>o(d).local_hospital_name=l),placeholder:"请输入当地就诊医院名称(不能填写当地、本地、互联网等关键词)"},null,8,["modelValue"])]),_:1})]),_("div",He,[e[61]||(e[61]=_("div",{class:"section-title"},"现病史",-1)),a(n,{label:"口腔感觉"},{default:t(()=>[a(U,{modelValue:o(d).appetite,"onUpdate:modelValue":e[22]||(e[22]=l=>o(d).appetite=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(M),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"每日饮水量"},{default:t(()=>[a(U,{modelValue:o(d).water_intake,"onUpdate:modelValue":e[23]||(e[23]=l=>o(d).water_intake=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o($),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"近一个月体重变化"},{default:t(()=>[a(U,{modelValue:o(d).weight_change,"onUpdate:modelValue":e[24]||(e[24]=l=>o(d).weight_change=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(X),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"脂肪肝程度"},{default:t(()=>[a(U,{modelValue:o(d).fatty_liver_degree,"onUpdate:modelValue":e[25]||(e[25]=l=>o(d).fatty_liver_degree=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(K),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"饮食情况"},{default:t(()=>[a(k,{modelValue:o(d).diet_condition,"onUpdate:modelValue":e[26]||(e[26]=l=>o(d).diet_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(T),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"肢体感觉"},{default:t(()=>[a(k,{modelValue:o(d).body_feeling,"onUpdate:modelValue":e[27]||(e[27]=l=>o(d).body_feeling=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(A),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"睡眠情况"},{default:t(()=>[a(k,{modelValue:o(d).sleep_condition,"onUpdate:modelValue":e[28]||(e[28]=l=>o(d).sleep_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(H),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"眼睛情况"},{default:t(()=>[a(k,{modelValue:o(d).eye_condition,"onUpdate:modelValue":e[29]||(e[29]=l=>o(d).eye_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(Q),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"头部感觉"},{default:t(()=>[a(k,{modelValue:o(d).head_feeling,"onUpdate:modelValue":e[30]||(e[30]=l=>o(d).head_feeling=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(J),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"出汗情况"},{default:t(()=>[a(k,{modelValue:o(d).sweat_condition,"onUpdate:modelValue":e[31]||(e[31]=l=>o(d).sweat_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(W),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"皮肤情况"},{default:t(()=>[a(k,{modelValue:o(d).skin_condition,"onUpdate:modelValue":e[32]||(e[32]=l=>o(d).skin_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(Z),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"小便情况"},{default:t(()=>[a(k,{modelValue:o(d).urine_condition,"onUpdate:modelValue":e[33]||(e[33]=l=>o(d).urine_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(h),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"大便情况"},{default:t(()=>[a(k,{modelValue:o(d).stool_condition,"onUpdate:modelValue":e[34]||(e[34]=l=>o(d).stool_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(j),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"腰肾情况"},{default:t(()=>[a(k,{modelValue:o(d).kidney_condition,"onUpdate:modelValue":e[35]||(e[35]=l=>o(d).kidney_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(z),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"病情补充",prop:"symptoms"},{default:t(()=>[a(m,{modelValue:o(d).symptoms,"onUpdate:modelValue":e[36]||(e[36]=l=>o(d).symptoms=l),type:"textarea",rows:3,placeholder:"请输入症状"},null,8,["modelValue"])]),_:1})]),_("div",Qe,[e[62]||(e[62]=_("div",{class:"section-title"},"既往史",-1)),a(n,{label:""},{default:t(()=>[a(k,{modelValue:o(d).past_history,"onUpdate:modelValue":e[37]||(e[37]=l=>o(d).past_history=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(L),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_("div",Je,[e[73]||(e[73]=_("div",{class:"section-title"},"其他病史",-1)),a(n,{label:"外伤史"},{default:t(()=>[a(U,{modelValue:o(d).trauma_history,"onUpdate:modelValue":e[38]||(e[38]=l=>o(d).trauma_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[63]||(e[63]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[64]||(e[64]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"手术史"},{default:t(()=>[a(U,{modelValue:o(d).surgery_history,"onUpdate:modelValue":e[39]||(e[39]=l=>o(d).surgery_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[65]||(e[65]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[66]||(e[66]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"过敏史"},{default:t(()=>[a(U,{modelValue:o(d).allergy_history,"onUpdate:modelValue":e[40]||(e[40]=l=>o(d).allergy_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[67]||(e[67]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[68]||(e[68]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"家族病史"},{default:t(()=>[a(U,{modelValue:o(d).family_history,"onUpdate:modelValue":e[41]||(e[41]=l=>o(d).family_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[69]||(e[69]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[70]||(e[70]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"妊娠哺乳史"},{default:t(()=>[a(U,{modelValue:o(d).pregnancy_history,"onUpdate:modelValue":e[42]||(e[42]=l=>o(d).pregnancy_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[71]||(e[71]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[72]||(e[72]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_("div",We,[e[74]||(e[74]=_("div",{class:"section-title"},"诊断详情",-1)),a(n,{label:"舌苔",prop:"tongue_coating"},{default:t(()=>[a(m,{modelValue:o(d).tongue_coating,"onUpdate:modelValue":e[43]||(e[43]=l=>o(d).tongue_coating=l),placeholder:"请输入舌苔情况"},null,8,["modelValue"])]),_:1}),a(n,{label:"脉象",prop:"pulse"},{default:t(()=>[a(m,{modelValue:o(d).pulse,"onUpdate:modelValue":e[44]||(e[44]=l=>o(d).pulse=l),placeholder:"请输入脉象"},null,8,["modelValue"])]),_:1}),a(n,{label:"治则",prop:"treatment_principle"},{default:t(()=>[a(m,{modelValue:o(d).treatment_principle,"onUpdate:modelValue":e[45]||(e[45]=l=>o(d).treatment_principle=l),type:"textarea",rows:3,placeholder:"请输入治则"},null,8,["modelValue"])]),_:1}),a(n,{label:"处方",prop:"prescription"},{default:t(()=>[a(m,{modelValue:o(d).prescription,"onUpdate:modelValue":e[46]||(e[46]=l=>o(d).prescription=l),type:"textarea",rows:3,placeholder:"请输入处方"},null,8,["modelValue"])]),_:1}),a(n,{label:"医嘱",prop:"doctor_advice"},{default:t(()=>[a(m,{modelValue:o(d).doctor_advice,"onUpdate:modelValue":e[47]||(e[47]=l=>o(d).doctor_advice=l),type:"textarea",rows:3,placeholder:"请输入医嘱"},null,8,["modelValue"])]),_:1}),a(n,{label:"备注",prop:"remark"},{default:t(()=>[a(m,{modelValue:o(d).remark,"onUpdate:modelValue":e[48]||(e[48]=l=>o(d).remark=l),type:"textarea",rows:2,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})])]),_:1},8,["model"])]),_("div",Ze,[a(x,{onClick:ee,class:"btn-cancel"},{default:t(()=>[...e[75]||(e[75]=[s("取消",-1)])]),_:1}),a(x,{type:"primary",onClick:ie,loading:o(S),class:"btn-submit"},{default:t(()=>[...e[76]||(e[76]=[s(" 保存 ",-1)])]),_:1},8,["loading"])])])}}}),Gl=De(he,[["__scopeId","data-v-6538749f"]]);export{Gl as default};
+import{d as pe,i as me,B as _e,C as fe,G as ye,I as ge,h as be,a2 as Ve,P as ve,Q as ce,af as ke,al as we,F as Ue,D as xe,E as le}from"./element-plus-DFTWCWyi.js";import{X as ae,Y as Ee,Z as Oe,_ as qe,$ as Be}from"./tcm-BcqaE0lo.js";import{m as b,i as oe,_ as De}from"./index-DBREMm_z.js";import{a as Ce,u as Ie}from"./vue-router-QlpZ4wdW.js";import{o as Se}from"./@element-plus/icons-vue-HOEUG8sr.js";import{f as Re,b as Pe,ae as Ne,ak as u,I as f,J as _,a,aN as t,O as s,F as V,ap as v,G as c,A as Fe}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,n as p}from"./@vue/reactivity-DiY1c2vO.js";import{Q as w}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ye={class:"diagnosis-page"},$e={class:"page-header"},Ge={class:"page-title"},Le={class:"page-content"},Me={class:"form-section"},Te={class:"form-section"},Xe={class:"form-section"},Ae={class:"form-section"},He={class:"form-section"},Qe={class:"form-section"},Je={class:"form-section"},Ze={class:"form-section"},he={class:"page-footer"},je=Re({__name:"add",setup(ze){const P=Ce(),te=Ie(),N=p(),I=p("add"),S=p(!1),de=Fe(()=>I.value==="add"?"新增诊单":"编辑诊单"),d=p({id:"",patient_id:"",patient_name:"",id_card:"",phone:"",gender:1,age:void 0,diagnosis_date:"",diagnosis_type:"",syndrome_type:"",diabetes_type:"",diabetes_discovery_year:"",local_hospital_diagnosis:[],local_hospital_name:"",marital_status:void 0,height:void 0,weight:void 0,region:"",systolic_pressure:void 0,diastolic_pressure:void 0,fasting_blood_sugar:"",appetite:"",water_intake:"",diet_condition:[],weight_change:"",body_feeling:[],sleep_condition:[],eye_condition:[],head_feeling:[],sweat_condition:[],skin_condition:[],urine_condition:[],stool_condition:[],kidney_condition:[],fatty_liver_degree:"",past_history:[],trauma_history:0,surgery_history:0,allergy_history:0,family_history:0,pregnancy_history:0,symptoms:"",tongue_coating:"",pulse:"",treatment_principle:"",prescription:"",doctor_advice:"",remark:"",current_medications:"",status:1}),ne={patient_name:[{required:!0,message:"请输入患者姓名",trigger:"blur"}],id_card:[{validator:(r,e,i)=>{if(e&&!/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(e)){i(new Error("身份证号格式不正确"));return}i()},trigger:"blur"}],phone:[{required:!0,validator:(r,e,i)=>{if(!e){i(new Error("请输入手机号"));return}if(!/^1[3-9]\d{9}$/.test(e)){i(new Error("手机号格式不正确"));return}i()},trigger:"blur"}],gender:[{required:!0,message:"请选择性别",trigger:"change"}],age:[{required:!0,message:"请输入年龄",trigger:"blur"}],diagnosis_type:[{required:!0,message:"请选择诊断类型",trigger:"change"}],syndrome_type:[{required:!0,message:"请选择证型",trigger:"change"}],diabetes_type:[{required:!0,message:"请选择糖尿病期数",trigger:"change"}],diabetes_discovery_year:[{max:50,message:"最多50个字符",trigger:"blur"}]},F=p([]),Y=p([]),$=p([]),G=p([]),L=p([]),M=p([]),T=p([]),X=p([]),A=p([]),H=p([]),Q=p([]),J=p([]),Z=p([]),h=p([]),j=p([]),z=p([]),K=p([]),W=p([]),ue=async()=>{try{const[r,e,i,x,m,n,y,U,O,D,E,q,g,k,B,C,l,R]=await Promise.all([b({type:"diagnosis_type"}),b({type:"syndrome_type"}),b({type:"diabetes_type"}),b({type:"past_history"}),b({type:"appetite"}),b({type:"water_intake"}),b({type:"diet_condition"}),b({type:"weight_change"}),b({type:"body_feeling"}),b({type:"sleep_condition"}),b({type:"eye_condition"}),b({type:"head_feeling"}),b({type:"sweat_condition"}),b({type:"skin_condition"}),b({type:"urine_condition"}),b({type:"stool_condition"}),b({type:"kidney_condition"}),b({type:"fatty_liver_degree"})]);F.value=(r==null?void 0:r.diagnosis_type)||[],Y.value=(e==null?void 0:e.syndrome_type)||[],$.value=(i==null?void 0:i.diabetes_type)||[],G.value=(x==null?void 0:x.past_history)||[],L.value=(m==null?void 0:m.appetite)||[],M.value=(n==null?void 0:n.water_intake)||[],T.value=(y==null?void 0:y.diet_condition)||[],X.value=(U==null?void 0:U.weight_change)||[],A.value=(O==null?void 0:O.body_feeling)||[],H.value=(D==null?void 0:D.sleep_condition)||[],Q.value=(E==null?void 0:E.eye_condition)||[],J.value=(q==null?void 0:q.head_feeling)||[],Z.value=(g==null?void 0:g.sweat_condition)||[],h.value=(k==null?void 0:k.skin_condition)||[],j.value=(B==null?void 0:B.urine_condition)||[],z.value=(C==null?void 0:C.stool_condition)||[],K.value=(l==null?void 0:l.kidney_condition)||[],W.value=(R==null?void 0:R.fatty_liver_degree)||[]}catch(r){console.error("获取字典数据失败:",r)}},se=async()=>{if(!(!d.value.phone||!/^1[3-9]\d{9}$/.test(d.value.phone)))try{const r=await Ee({phone:d.value.phone,id:d.value.id||""});r.exists&&le.warning(r.message)}catch(r){console.error("检查手机号失败:",r)}},re=async()=>{if(!(!d.value.id_card||!/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(d.value.id_card)))try{const r=await Oe({id_card:d.value.id_card,id:d.value.id||""});r.exists&&le.warning(r.message)}catch(r){console.error("检查身份证号失败:",r)}},ie=async()=>{var r;await((r=N.value)==null?void 0:r.validate()),S.value=!0;try{if(I.value==="add"){const e=await qe(d.value);if(oe.msgSuccess("新增成功"),e&&e.id){I.value="edit",d.value.id=e.id;try{const i=await ae({id:e.id});d.value.patient_id=i.patient_id}catch(i){console.error("获取详情失败:",i)}P.replace({query:{id:e.id}})}}else await Be(d.value),oe.msgSuccess("编辑成功")}catch(e){console.error("提交失败:",e)}finally{S.value=!1}},ee=()=>{P.back()};return Pe(async()=>{await ue(),setTimeout(()=>{const e=document.querySelector(".el-aside");e&&(e.style.display="none");const i=document.querySelector(".el-main");i&&(i.style.width="100%"(i).style.marginLeft="0");const x=document.querySelector(".el-container");x&&(x.style.width="100%")},100);const r=te.query.id;if(r){I.value="edit";const e=await ae({id:Number(r)});d.value=e}}),Ne(()=>{const r=document.querySelector(".el-aside");r&&(r.style.display="");const e=document.querySelector(".el-main");e&&(e.style.width=""(e).style.marginLeft="");const i=document.querySelector(".el-container");i&&(i.style.width="")}),(r,e)=>{const i=pe,x=me,m=fe,n=_e,y=ge,U=ye,O=be,D=Ve,E=ce,q=ve,g=we,k=ke,B=Ue,C=xe;return u(),f("div",Ye,[_("div",$e,[a(x,{link:"",onClick:ee,class:"back-btn"},{default:t(()=>[a(i,null,{default:t(()=>[a(o(Se))]),_:1}),e[49]||(e[49]=s(" 返回 ",-1))]),_:1}),_("h1",Ge,w(o(de)),1)]),_("div",Le,[a(C,{ref_key:"formRef",ref:N,model:o(d),rules:ne,"label-width":"auto",class:"diagnosis-form"},{default:t(()=>[_("div",Me,[e[52]||(e[52]=_("div",{class:"section-title"},"基本信息",-1)),a(n,{label:"患者ID"},{default:t(()=>[a(m,{modelValue:o(d).patient_id,"onUpdate:modelValue":e[0]||(e[0]=l=>o(d).patient_id=l),disabled:"",placeholder:"系统自动生成"},null,8,["modelValue"])]),_:1}),a(n,{label:"患者姓名",prop:"patient_name"},{default:t(()=>[a(m,{modelValue:o(d).patient_name,"onUpdate:modelValue":e[1]||(e[1]=l=>o(d).patient_name=l),placeholder:"请输入患者姓名"},null,8,["modelValue"])]),_:1}),a(n,{label:"身份证号",prop:"id_card"},{default:t(()=>[a(m,{modelValue:o(d).id_card,"onUpdate:modelValue":e[2]||(e[2]=l=>o(d).id_card=l),placeholder:"请输入身份证号",maxlength:"18",onBlur:re},null,8,["modelValue"])]),_:1}),a(n,{label:"手机号",prop:"phone"},{default:t(()=>[a(m,{modelValue:o(d).phone,"onUpdate:modelValue":e[3]||(e[3]=l=>o(d).phone=l),placeholder:"请输入手机号",maxlength:"11",onBlur:se},null,8,["modelValue"])]),_:1}),a(n,{label:"性别",prop:"gender"},{default:t(()=>[a(U,{modelValue:o(d).gender,"onUpdate:modelValue":e[4]||(e[4]=l=>o(d).gender=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[50]||(e[50]=[s("男",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[51]||(e[51]=[s("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"年龄",prop:"age"},{default:t(()=>[a(O,{modelValue:o(d).age,"onUpdate:modelValue":e[5]||(e[5]=l=>o(d).age=l),min:0,max:150,placeholder:"请输入年龄",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"诊断日期",prop:"diagnosis_date"},{default:t(()=>[a(D,{modelValue:o(d).diagnosis_date,"onUpdate:modelValue":e[6]||(e[6]=l=>o(d).diagnosis_date=l),type:"date",placeholder:"请选择诊断日期","value-format":"YYYY-MM-DD",class:"w-full"},null,8,["modelValue"])]),_:1})]),_("div",Te,[e[53]||(e[53]=_("div",{class:"section-title"},"生命体征",-1)),a(n,{label:"婚姻状态",prop:"marital_status"},{default:t(()=>[a(q,{modelValue:o(d).marital_status,"onUpdate:modelValue":e[7]||(e[7]=l=>o(d).marital_status=l),placeholder:"请选择婚姻状态",class:"w-full"},{default:t(()=>[a(E,{label:"未婚",value:0}),a(E,{label:"已婚",value:1}),a(E,{label:"离异",value:2})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"身高(cm)",prop:"height"},{default:t(()=>[a(O,{modelValue:o(d).height,"onUpdate:modelValue":e[8]||(e[8]=l=>o(d).height=l),min:0,max:300,placeholder:"请输入身高",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"体重(kg)",prop:"weight"},{default:t(()=>[a(O,{modelValue:o(d).weight,"onUpdate:modelValue":e[9]||(e[9]=l=>o(d).weight=l),min:0,max:500,step:.1,placeholder:"请输入体重",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"地区",prop:"region"},{default:t(()=>[a(m,{modelValue:o(d).region,"onUpdate:modelValue":e[10]||(e[10]=l=>o(d).region=l),placeholder:"请输入地区"},null,8,["modelValue"])]),_:1}),a(n,{label:"收缩压(mmHg)",prop:"systolic_pressure"},{default:t(()=>[a(O,{modelValue:o(d).systolic_pressure,"onUpdate:modelValue":e[11]||(e[11]=l=>o(d).systolic_pressure=l),min:0,max:250,placeholder:"请输入收缩压",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"舒张压(mmHg)",prop:"diastolic_pressure"},{default:t(()=>[a(O,{modelValue:o(d).diastolic_pressure,"onUpdate:modelValue":e[12]||(e[12]=l=>o(d).diastolic_pressure=l),min:0,max:150,placeholder:"请输入舒张压",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"空腹血糖(mmol/L)",prop:"fasting_blood_sugar"},{default:t(()=>[a(m,{modelValue:o(d).fasting_blood_sugar,"onUpdate:modelValue":e[13]||(e[13]=l=>o(d).fasting_blood_sugar=l),placeholder:"请输入空腹血糖,如:8.5 或 8-9",maxlength:"20",class:"w-full"},null,8,["modelValue"])]),_:1})]),_("div",Xe,[e[56]||(e[56]=_("div",{class:"section-title"},"诊断信息",-1)),a(n,{label:"诊断类型",prop:"diagnosis_type"},{default:t(()=>[a(q,{modelValue:o(d).diagnosis_type,"onUpdate:modelValue":e[14]||(e[14]=l=>o(d).diagnosis_type=l),placeholder:"请选择诊断类型",class:"w-full"},{default:t(()=>[(u(!0),f(V,null,v(o(F),l=>(u(),c(E,{key:l.value,label:l.name,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"证型",prop:"syndrome_type"},{default:t(()=>[a(q,{modelValue:o(d).syndrome_type,"onUpdate:modelValue":e[15]||(e[15]=l=>o(d).syndrome_type=l),placeholder:"请选择证型",class:"w-full"},{default:t(()=>[(u(!0),f(V,null,v(o(Y),l=>(u(),c(E,{key:l.value,label:l.name,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"糖尿病期数",prop:"diabetes_type"},{default:t(()=>[a(q,{modelValue:o(d).diabetes_type,"onUpdate:modelValue":e[16]||(e[16]=l=>o(d).diabetes_type=l),placeholder:"请选择糖尿病期数",class:"w-full"},{default:t(()=>[(u(!0),f(V,null,v(o($),l=>(u(),c(E,{key:l.value,label:l.name+(l.remark?" ("+l.remark+")":""),value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"状态",prop:"status"},{default:t(()=>[a(U,{modelValue:o(d).status,"onUpdate:modelValue":e[17]||(e[17]=l=>o(d).status=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[54]||(e[54]=[s("启用",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[55]||(e[55]=[s("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"在用药物",prop:"current_medications"},{default:t(()=>[a(m,{modelValue:o(d).current_medications,"onUpdate:modelValue":e[18]||(e[18]=l=>o(d).current_medications=l),type:"textarea",rows:3,placeholder:"请填写患者当前正在使用的药物(如降压药、降糖药等),多种请换行或顿号分隔",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_("div",Ae,[e[60]||(e[60]=_("div",{class:"section-title"},"主诉",-1)),a(n,{label:"发现糖尿病就患病史",prop:"diabetes_discovery_year"},{default:t(()=>[a(m,{modelValue:o(d).diabetes_discovery_year,"onUpdate:modelValue":e[19]||(e[19]=l=>o(d).diabetes_discovery_year=l),clearable:"",maxlength:"50","show-word-limit":"",placeholder:"可填数字或文字,如:5、1年、半年",class:"w-full"},null,8,["modelValue"])]),_:1}),a(n,{label:"当地医院诊断结果"},{default:t(()=>[a(k,{modelValue:o(d).local_hospital_diagnosis,"onUpdate:modelValue":e[20]||(e[20]=l=>o(d).local_hospital_diagnosis=l),class:"checkbox-group"},{default:t(()=>[a(g,{label:"糖尿病"},{default:t(()=>[...e[57]||(e[57]=[s("糖尿病",-1)])]),_:1}),a(g,{label:"高血压"},{default:t(()=>[...e[58]||(e[58]=[s("高血压",-1)])]),_:1}),a(g,{label:"糖尿病高血压"},{default:t(()=>[...e[59]||(e[59]=[s("糖尿病高血压",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"当地就诊医院名称",prop:"local_hospital_name"},{default:t(()=>[a(m,{modelValue:o(d).local_hospital_name,"onUpdate:modelValue":e[21]||(e[21]=l=>o(d).local_hospital_name=l),placeholder:"请输入当地就诊医院名称(不能填写当地、本地、互联网等关键词)"},null,8,["modelValue"])]),_:1})]),_("div",He,[e[61]||(e[61]=_("div",{class:"section-title"},"现病史",-1)),a(n,{label:"口腔感觉"},{default:t(()=>[a(U,{modelValue:o(d).appetite,"onUpdate:modelValue":e[22]||(e[22]=l=>o(d).appetite=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(L),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"每日饮水量"},{default:t(()=>[a(U,{modelValue:o(d).water_intake,"onUpdate:modelValue":e[23]||(e[23]=l=>o(d).water_intake=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(M),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"近一个月体重变化"},{default:t(()=>[a(U,{modelValue:o(d).weight_change,"onUpdate:modelValue":e[24]||(e[24]=l=>o(d).weight_change=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(X),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"脂肪肝程度"},{default:t(()=>[a(U,{modelValue:o(d).fatty_liver_degree,"onUpdate:modelValue":e[25]||(e[25]=l=>o(d).fatty_liver_degree=l),class:"radio-group"},{default:t(()=>[(u(!0),f(V,null,v(o(W),l=>(u(),c(B,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"饮食情况"},{default:t(()=>[a(k,{modelValue:o(d).diet_condition,"onUpdate:modelValue":e[26]||(e[26]=l=>o(d).diet_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(T),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"肢体感觉"},{default:t(()=>[a(k,{modelValue:o(d).body_feeling,"onUpdate:modelValue":e[27]||(e[27]=l=>o(d).body_feeling=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(A),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"睡眠情况"},{default:t(()=>[a(k,{modelValue:o(d).sleep_condition,"onUpdate:modelValue":e[28]||(e[28]=l=>o(d).sleep_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(H),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"眼睛情况"},{default:t(()=>[a(k,{modelValue:o(d).eye_condition,"onUpdate:modelValue":e[29]||(e[29]=l=>o(d).eye_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(Q),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"头部感觉"},{default:t(()=>[a(k,{modelValue:o(d).head_feeling,"onUpdate:modelValue":e[30]||(e[30]=l=>o(d).head_feeling=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(J),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"出汗情况"},{default:t(()=>[a(k,{modelValue:o(d).sweat_condition,"onUpdate:modelValue":e[31]||(e[31]=l=>o(d).sweat_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(Z),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"皮肤情况"},{default:t(()=>[a(k,{modelValue:o(d).skin_condition,"onUpdate:modelValue":e[32]||(e[32]=l=>o(d).skin_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(h),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"小便情况"},{default:t(()=>[a(k,{modelValue:o(d).urine_condition,"onUpdate:modelValue":e[33]||(e[33]=l=>o(d).urine_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(j),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"大便情况"},{default:t(()=>[a(k,{modelValue:o(d).stool_condition,"onUpdate:modelValue":e[34]||(e[34]=l=>o(d).stool_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(z),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"腰肾情况"},{default:t(()=>[a(k,{modelValue:o(d).kidney_condition,"onUpdate:modelValue":e[35]||(e[35]=l=>o(d).kidney_condition=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(K),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"病情补充",prop:"symptoms"},{default:t(()=>[a(m,{modelValue:o(d).symptoms,"onUpdate:modelValue":e[36]||(e[36]=l=>o(d).symptoms=l),type:"textarea",rows:3,placeholder:"请输入症状"},null,8,["modelValue"])]),_:1})]),_("div",Qe,[e[62]||(e[62]=_("div",{class:"section-title"},"既往史",-1)),a(n,{label:""},{default:t(()=>[a(k,{modelValue:o(d).past_history,"onUpdate:modelValue":e[37]||(e[37]=l=>o(d).past_history=l),class:"checkbox-group"},{default:t(()=>[(u(!0),f(V,null,v(o(G),l=>(u(),c(g,{key:l.value,label:l.value},{default:t(()=>[s(w(l.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_("div",Je,[e[73]||(e[73]=_("div",{class:"section-title"},"其他病史",-1)),a(n,{label:"外伤史"},{default:t(()=>[a(U,{modelValue:o(d).trauma_history,"onUpdate:modelValue":e[38]||(e[38]=l=>o(d).trauma_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[63]||(e[63]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[64]||(e[64]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"手术史"},{default:t(()=>[a(U,{modelValue:o(d).surgery_history,"onUpdate:modelValue":e[39]||(e[39]=l=>o(d).surgery_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[65]||(e[65]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[66]||(e[66]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"过敏史"},{default:t(()=>[a(U,{modelValue:o(d).allergy_history,"onUpdate:modelValue":e[40]||(e[40]=l=>o(d).allergy_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[67]||(e[67]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[68]||(e[68]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"家族病史"},{default:t(()=>[a(U,{modelValue:o(d).family_history,"onUpdate:modelValue":e[41]||(e[41]=l=>o(d).family_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[69]||(e[69]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[70]||(e[70]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"妊娠哺乳史"},{default:t(()=>[a(U,{modelValue:o(d).pregnancy_history,"onUpdate:modelValue":e[42]||(e[42]=l=>o(d).pregnancy_history=l)},{default:t(()=>[a(y,{label:1},{default:t(()=>[...e[71]||(e[71]=[s("有",-1)])]),_:1}),a(y,{label:0},{default:t(()=>[...e[72]||(e[72]=[s("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_("div",Ze,[e[74]||(e[74]=_("div",{class:"section-title"},"诊断详情",-1)),a(n,{label:"舌苔",prop:"tongue_coating"},{default:t(()=>[a(m,{modelValue:o(d).tongue_coating,"onUpdate:modelValue":e[43]||(e[43]=l=>o(d).tongue_coating=l),placeholder:"请输入舌苔情况"},null,8,["modelValue"])]),_:1}),a(n,{label:"脉象",prop:"pulse"},{default:t(()=>[a(m,{modelValue:o(d).pulse,"onUpdate:modelValue":e[44]||(e[44]=l=>o(d).pulse=l),placeholder:"请输入脉象"},null,8,["modelValue"])]),_:1}),a(n,{label:"治则",prop:"treatment_principle"},{default:t(()=>[a(m,{modelValue:o(d).treatment_principle,"onUpdate:modelValue":e[45]||(e[45]=l=>o(d).treatment_principle=l),type:"textarea",rows:3,placeholder:"请输入治则"},null,8,["modelValue"])]),_:1}),a(n,{label:"处方",prop:"prescription"},{default:t(()=>[a(m,{modelValue:o(d).prescription,"onUpdate:modelValue":e[46]||(e[46]=l=>o(d).prescription=l),type:"textarea",rows:3,placeholder:"请输入处方"},null,8,["modelValue"])]),_:1}),a(n,{label:"医嘱",prop:"doctor_advice"},{default:t(()=>[a(m,{modelValue:o(d).doctor_advice,"onUpdate:modelValue":e[47]||(e[47]=l=>o(d).doctor_advice=l),type:"textarea",rows:3,placeholder:"请输入医嘱"},null,8,["modelValue"])]),_:1}),a(n,{label:"备注",prop:"remark"},{default:t(()=>[a(m,{modelValue:o(d).remark,"onUpdate:modelValue":e[48]||(e[48]=l=>o(d).remark=l),type:"textarea",rows:2,placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})])]),_:1},8,["model"])]),_("div",he,[a(x,{onClick:ee,class:"btn-cancel"},{default:t(()=>[...e[75]||(e[75]=[s("取消",-1)])]),_:1}),a(x,{type:"primary",onClick:ie,loading:o(S),class:"btn-submit"},{default:t(()=>[...e[76]||(e[76]=[s(" 保存 ",-1)])]),_:1},8,["loading"])])])}}}),$l=De(je,[["__scopeId","data-v-6538749f"]]);export{$l as default};
diff --git a/server/public/admin/assets/add-nav-BP84JTbJ.js b/server/public/admin/assets/add-nav-DLGX-0mX.js
similarity index 67%
rename from server/public/admin/assets/add-nav-BP84JTbJ.js
rename to server/public/admin/assets/add-nav-DLGX-0mX.js
index 831acc3b..0851f3e2 100644
--- a/server/public/admin/assets/add-nav-BP84JTbJ.js
+++ b/server/public/admin/assets/add-nav-DLGX-0mX.js
@@ -1 +1 @@
-import{_ as o}from"./add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js b/server/public/admin/assets/add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js
similarity index 90%
rename from server/public/admin/assets/add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js
rename to server/public/admin/assets/add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js
index f564bd94..469244e9 100644
--- a/server/public/admin/assets/add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js
+++ b/server/public/admin/assets/add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js
@@ -1 +1 @@
-import{C as E,B,g as C,i as N}from"./element-plus-0wC3naml.js";import{_ as $}from"./index-BHTgr4Ka.js";import{_ as z}from"./picker-B9b8bj5N.js";import{_ as A}from"./picker-DlbAZkDm.js";import{c as D,i as r}from"./index-E47--KT7.js";import{D as I}from"./vuedraggable-5bKFmC7X.js";import{f as R,ak as p,I as F,J as l,a,aN as d,G,O as J,A as L}from"./@vue/runtime-core-C6bnekPw.js";import{y as c,a as O}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"bg-fill-light flex items-center w-full p-4 mb-4"},S={class:"upload-btn w-[60px] h-[60px]"},T={class:"ml-3 flex-1"},j={class:"flex items-center"},q={class:"flex items-center mt-[18px]"},H={class:"flex-1 flex items-center"},K={class:"drag-move cursor-move ml-auto"},oe=R({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:100},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:f}){const t=_,V=f,m=L({get(){return t.modelValue},set(s){V("update:modelValue",s)}}),x=()=>{var s;((s=t.modelValue)==null?void 0:s.length){var e;if(((e=t.modelValue)==null?void 0:e.length)<=t.min)return r.msgError(`最少保留${t.min}个`);m.value.splice(s,1)};return(s,e)=>{const i=D,v=A,h=E,k=z,b=C,w=B,y=$,U=N;return p(),F("div",null,[l("div",null,[a(c(I),{class:"draggable",modelValue:c(m),"onUpdate:modelValue":e[0]||(e[0]=o=>O(m)?m.value=o:null),animation:"300",handle:".drag-move","item-key":"index"},{item:d(({element:o,index:u})=>[(p(),G(y,{class:"w-[467px]",key:u,onClose:n=>g(u)},{default:d(()=>[l("div",P,[a(v,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:d(()=>[l("div",S,[a(i,{name:"el-icon-Plus",size:20})])]),_:1},8,["modelValue","onUpdate:modelValue"]),l("div",T,[l("div",j,[e[1]||(e[1]=l("span",{class:"text-tx-regular flex-none mr-3"},"名称",-1)),a(h,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),l("div",q,[e[2]||(e[2]=l("span",{class:"text-tx-regular flex-none mr-3"},"链接",-1)),a(k,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),a(w,{label:"是否显示",class:"mt-[18px]"},{default:d(()=>[l("div",H,[a(b,{modelValue:o.is_show,"onUpdate:modelValue":n=>o.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),l("div",K,[a(i,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),l("div",null,[a(U,{type:"primary",onClick:x},{default:d(()=>[...e[3]||(e[3]=[J("添加",-1)])]),_:1})])])}}});export{oe as _};
+import{C as E,B,g as C,i as N}from"./element-plus-DFTWCWyi.js";import{_ as $}from"./index-CbfZXeGu.js";import{_ as z}from"./picker-DPnqJ8Gk.js";import{_ as A}from"./picker-BCRrEZaA.js";import{c as D,i as r}from"./index-DBREMm_z.js";import{D as I}from"./vuedraggable-5bKFmC7X.js";import{f as R,ak as p,I as F,J as l,a,aN as d,G,O as J,A as L}from"./@vue/runtime-core-C6bnekPw.js";import{y as c,a as O}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"bg-fill-light flex items-center w-full p-4 mb-4"},S={class:"upload-btn w-[60px] h-[60px]"},T={class:"ml-3 flex-1"},j={class:"flex items-center"},q={class:"flex items-center mt-[18px]"},H={class:"flex-1 flex items-center"},K={class:"drag-move cursor-move ml-auto"},oe=R({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:100},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:f}){const t=_,V=f,m=L({get(){return t.modelValue},set(s){V("update:modelValue",s)}}),x=()=>{var s;((s=t.modelValue)==null?void 0:s.length){var e;if(((e=t.modelValue)==null?void 0:e.length)<=t.min)return r.msgError(`最少保留${t.min}个`);m.value.splice(s,1)};return(s,e)=>{const i=D,v=A,h=E,k=z,b=C,w=B,y=$,U=N;return p(),F("div",null,[l("div",null,[a(c(I),{class:"draggable",modelValue:c(m),"onUpdate:modelValue":e[0]||(e[0]=o=>O(m)?m.value=o:null),animation:"300",handle:".drag-move","item-key":"index"},{item:d(({element:o,index:u})=>[(p(),G(y,{class:"w-[467px]",key:u,onClose:n=>g(u)},{default:d(()=>[l("div",P,[a(v,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:d(()=>[l("div",S,[a(i,{name:"el-icon-Plus",size:20})])]),_:1},8,["modelValue","onUpdate:modelValue"]),l("div",T,[l("div",j,[e[1]||(e[1]=l("span",{class:"text-tx-regular flex-none mr-3"},"名称",-1)),a(h,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),l("div",q,[e[2]||(e[2]=l("span",{class:"text-tx-regular flex-none mr-3"},"链接",-1)),a(k,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),a(w,{label:"是否显示",class:"mt-[18px]"},{default:d(()=>[l("div",H,[a(b,{modelValue:o.is_show,"onUpdate:modelValue":n=>o.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),l("div",K,[a(i,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),l("div",null,[a(U,{type:"primary",onClick:x},{default:d(()=>[...e[3]||(e[3]=[J("添加",-1)])]),_:1})])])}}});export{oe as _};
diff --git a/server/public/admin/assets/admin-DO1zWq80.js b/server/public/admin/assets/admin-DVVxI3fN.js
similarity index 84%
rename from server/public/admin/assets/admin-DO1zWq80.js
rename to server/public/admin/assets/admin-DVVxI3fN.js
index 6bf1405c..68c13fa9 100644
--- a/server/public/admin/assets/admin-DO1zWq80.js
+++ b/server/public/admin/assets/admin-DVVxI3fN.js
@@ -1 +1 @@
-import{r as n}from"./index-E47--KT7.js";function e(t){return n.get({url:"/auth.admin/lists",params:t},{ignoreCancelToken:!0})}function i(t){return n.post({url:"/auth.admin/add",params:t})}function r(t){return n.post({url:"/auth.admin/edit",params:t})}function u(t){return n.post({url:"/auth.admin/delete",params:t})}function d(t){return n.get({url:"/auth.admin/detail",params:t})}export{e as a,r as b,u as c,i as d,d as e};
+import{r as n}from"./index-DBREMm_z.js";function e(t){return n.get({url:"/auth.admin/lists",params:t},{ignoreCancelToken:!0})}function i(t){return n.post({url:"/auth.admin/add",params:t})}function r(t){return n.post({url:"/auth.admin/edit",params:t})}function u(t){return n.post({url:"/auth.admin/delete",params:t})}function d(t){return n.get({url:"/auth.admin/detail",params:t})}export{e as a,r as b,u as c,i as d,d as e};
diff --git a/server/public/admin/assets/appointment-C9G6EGwx.css b/server/public/admin/assets/appointment-C9G6EGwx.css
deleted file mode 100644
index 195bcf4f..00000000
--- a/server/public/admin/assets/appointment-C9G6EGwx.css
+++ /dev/null
@@ -1 +0,0 @@
-.today-block-alert[data-v-0586cc07]{margin-bottom:16px}.appointment-form[data-v-0586cc07] .el-form-item__label{font-weight:500}.appointment-form .channel-source-select[data-v-0586cc07]{width:100%;max-width:360px}.doctor-list[data-v-0586cc07]{display:flex;flex-wrap:wrap;gap:12px}.doctor-list .doctor-radio[data-v-0586cc07]{margin-right:0}.doctor-list .doctor-radio[data-v-0586cc07] .el-radio__label{display:flex;align-items:center}.appointment-time-container[data-v-0586cc07]{width:100%}.date-selector[data-v-0586cc07]{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.date-selector .date-button[data-v-0586cc07]{min-width:130px;height:40px;font-size:14px;border-radius:8px;transition:all .2s}.date-selector .date-button[data-v-0586cc07]:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.time-slots-container[data-v-0586cc07]{background-color:#f8f9fa;border-radius:8px;padding:16px}.time-slots-header[data-v-0586cc07]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.time-slots-header .header-title[data-v-0586cc07]{font-size:15px;font-weight:600;color:#303133}.time-slots-grid[data-v-0586cc07]{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;max-height:450px;overflow-y:auto;padding:2px}.time-slots-grid[data-v-0586cc07]::-webkit-scrollbar{width:6px}.time-slots-grid[data-v-0586cc07]::-webkit-scrollbar-thumb{background-color:#dcdfe6;border-radius:3px}.time-slots-grid[data-v-0586cc07]::-webkit-scrollbar-thumb:hover{background-color:#c0c4cc}.time-slots-grid .time-slot-item[data-v-0586cc07]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 8px;border:2px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .2s;background-color:#fff;min-height:70px}.time-slots-grid .time-slot-item .slot-time[data-v-0586cc07]{font-size:15px;font-weight:600;color:#303133;margin-bottom:6px}.time-slots-grid .time-slot-item .slot-status[data-v-0586cc07]{font-size:12px;color:#909399;padding:0 8px;border-radius:4px;background-color:#f4f4f5}.time-slots-grid .time-slot-item .slot-status.status-available[data-v-0586cc07]{color:#67c23a;background-color:#f0f9ff}.time-slots-grid .time-slot-item.available[data-v-0586cc07]{border-color:#e4e7ed}.time-slots-grid .time-slot-item.available[data-v-0586cc07]:hover{border-color:#409eff;background-color:#ecf5ff;transform:translateY(-2px);box-shadow:0 4px 12px #409eff26}.time-slots-grid .time-slot-item.unavailable[data-v-0586cc07]{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed;opacity:.6}.time-slots-grid .time-slot-item.unavailable .slot-time[data-v-0586cc07]{color:#c0c4cc}.time-slots-grid .time-slot-item.unavailable .slot-status[data-v-0586cc07]{color:#c0c4cc;background-color:#f5f7fa}.time-slots-grid .time-slot-item.unavailable[data-v-0586cc07]:hover{transform:none;box-shadow:none}.time-slots-grid .time-slot-item.selected[data-v-0586cc07]{border-color:#409eff;background:linear-gradient(135deg,#409eff,#66b1ff);box-shadow:0 4px 12px #409eff4d}.time-slots-grid .time-slot-item.selected .slot-time[data-v-0586cc07]{color:#fff}.time-slots-grid .time-slot-item.selected .slot-status[data-v-0586cc07]{color:#fff;background-color:#fff3}[data-v-0586cc07] .el-radio-group{display:flex;flex-wrap:wrap;gap:12px}[data-v-0586cc07] .el-radio{margin-right:0}.drawer-footer[data-v-0586cc07]{display:flex;justify-content:flex-end;gap:12px;padding:12px 0}
diff --git a/server/public/admin/assets/appointment-CgztbjDp.js b/server/public/admin/assets/appointment-CgztbjDp.js
new file mode 100644
index 00000000..bf9e4722
--- /dev/null
+++ b/server/public/admin/assets/appointment-CgztbjDp.js
@@ -0,0 +1 @@
+import{K as ke,D as De,B as Se,G as Te,I as Ve,P as we,Q as Ye,C as Ce,R as Ee,i as Me,L as Ne,e as xe}from"./element-plus-DFTWCWyi.js";import{L as Ie}from"./@element-plus/icons-vue-HOEUG8sr.js";import{d as p,g as Be}from"./dayjs-DG77mNTn.js";import{g as Ae}from"./tcm-BcqaE0lo.js";import{m as Le,i as m,_ as Re}from"./index-DBREMm_z.js";import{a as q,r as Ue,g as We,m as $e}from"./doctor-ul0r578d.js";import{f as ze,ak as d,G as b,aN as s,aP as He,I as k,H as R,a as i,J as y,O as D,F as N,ap as x,A as S,n as Fe}from"./@vue/runtime-core-C6bnekPw.js";import{Q as w,o as G}from"./@vue/shared-mAAVTE9n.js";import{y as Qe,n as v,r as O}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const qe={class:"text-gray-500"},Ge={class:"doctor-list"},Oe={key:2,class:"appointment-time-container"},Pe={class:"date-selector"},je={key:0,class:"time-slots-container"},Je={class:"time-slots-header"},Ke={class:"time-slots-grid"},Xe=["onClick"],Ze={class:"slot-time"},et={class:"drawer-footer"},tt=ze({__name:"appointment",emits:["success"],setup(at,{expose:P,emit:j}){p.extend(Be);const Y=v(!1),T=v(!1),I=v(!1),B=v(!1),U=v([]),f=v([]),E=v(""),u=v(0),c=v([]),C=v([]),V=v(!1),_=O({id:0,name:"",gender:"",age:0}),a=O({appointmentMethod:"time",appointmentType:"video",patientId:0,date:"",appointmentTime:"",remark:"",channel_source:"",channel_source_detail:""}),J=new Set(["自媒体4H","自媒体3Q","自媒体3H","自媒体2H","自媒体2Q"]);function W(e){return J.has(String(e??"").trim())}const K=S(()=>{const e=a.channel_source;if(e===""||e==null)return"";const t=C.value.find(l=>String(l.value)===String(e));return t?String(t.name??"").trim():""}),A=S(()=>W(K.value)),X=e=>{const t=C.value.find(o=>String(o.value)===String(e)),l=t?String(t.name??"").trim():"";W(l)||(a.channel_source_detail="")},Z=S(()=>{if(!u.value||c.value.length===0)return[];const e=[],t=["日","一","二","三","四","五","六"],l=p().startOf("day");for(const o of c.value){const r=p(o);if(r.isBefore(l))continue;const g=`${r.format("MM月DD日")} (${t[r.day()]})`;e.push({date:o,label:g})}return e}),ee=S(()=>{if(!a.date||f.value.length===0)return[];const e=p().format("YYYY-MM-DD");if(!(a.date===e))return f.value;const l=p();return f.value.map(o=>{const r=p(`${a.date} ${o.time}`);return r.isBefore(l)||r.isSame(l,"minute")?{...o,available:!1}:o})}),te=()=>p().format("YYYY-MM-DD"),L=S(()=>a.date===te()),ae=S(()=>V.value?L.value?"该患者今日已有挂号(已预约或已过号),不能重复预约今天,请改选其他日期。":"该患者今日已有挂号记录;可为患者预约其他日期的时段。":""),$=S(()=>V.value&&L.value),le=S(()=>!$.value&&u.value&&a.date&&a.appointmentTime&&!!a.channel_source&&(!A.value||a.channel_source_detail.trim()!=="")),ne=j,oe=async e=>{Y.value=!0,_.id=e.patient_id||e.id,_.name=e.patient_name||e.name,_.gender=e.gender_desc||e.gender,_.age=e.age||0,a.appointmentMethod="time",a.appointmentType="video",a.patientId=_.id,u.value=0,a.date="",a.appointmentTime="",a.remark="",a.channel_source="",a.channel_source_detail="",f.value=[],c.value=[],E.value="",V.value=!1,await re(),await ue(),await ie(),await se()},se=async()=>{V.value=!1;const e=_.id;if(!e)return;const t=p().format("YYYY-MM-DD");try{const l=await q({patient_id:e,start_date:t,end_date:t,page_no:1,page_size:50}),r=((l==null?void 0:l.lists)||[]).find(g=>{const h=Number(g.status);return h===1||h===4});V.value=!!r}catch(l){console.error("检查今日挂号状态失败:",l)}},ie=async()=>{try{const e=await q({patient_id:_.id,status:3,page_no:1,page_size:1});if(e!=null&&e.lists&&e.lists.length>0){const t=e.lists[0];t.appointment_date&&t.appointment_time?E.value=`${t.appointment_date} ${t.appointment_time}`:t.appointment_date&&(E.value=t.appointment_date)}}catch(e){console.error("加载就诊记录失败:",e)}},re=async()=>{try{const e=await Le({type:"channels"}),t=((e==null?void 0:e.channels)||[]).filter(l=>l.status!==0);t.sort((l,o)=>{const r=Number((o==null?void 0:o.sort)??0)-Number((l==null?void 0:l.sort)??0);return r!==0?r:Number((o==null?void 0:o.id)??0)-Number((l==null?void 0:l.id)??0)}),C.value=t.map(l=>({...l,value:(l==null?void 0:l.value)!=null&&l.value!==""?String(l.value):""}))}catch(e){console.error("加载渠道来源失败:",e),C.value=[]}},ue=async()=>{try{T.value=!0;const e=await Ae();U.value=e||[]}catch(e){console.error("加载医生列表失败:",e),m.msgError("加载医生列表失败")}finally{T.value=!1}},de=()=>{u.value=0,a.date="",a.appointmentTime="",f.value=[]},me=async()=>{a.appointmentTime="",a.date="",f.value=[],c.value=[],u.value&&await ce()},ce=async()=>{if(u.value)try{T.value=!0;const e=p().format("YYYY-MM-DD"),t=p().add(6,"day").format("YYYY-MM-DD"),l=await Ue({doctor_id:u.value,start_date:e,end_date:t,status:1});if(l!=null&&l.lists&&l.lists.length>0){if(c.value=[...new Set(l.lists.map(o=>o.date))],c.value.sort(),await Fe(),c.value.length>0){const o=p().format("YYYY-MM-DD");let r=c.value.includes(o)?o:c.value[0];V.value&&r===o&&(r=c.value.find(h=>h>o)??c.value.find(h=>h!==o)??r),z(r)}}else c.value=[],m.msgWarning("该医生暂无排班")}catch(e){console.error("加载医生排班失败:",e),m.msgError("加载医生排班失败"),c.value=[]}finally{T.value=!1}},z=e=>{a.date=e,a.appointmentTime="",u.value&&H()},H=async()=>{if(!(!u.value||!a.date))try{T.value=!0;const e=await We({doctor_id:u.value,appointment_date:a.date,period:"all"});console.log("时间段数据:",e),f.value=((e==null?void 0:e.slots)||[]).map(t=>({time:t.time,available:t.available,quota:t.available?1:0})),console.log("处理后的时间段:",f.value)}catch(e){console.error("加载时间段失败:",e),m.msgError("加载时间段失败"),f.value=[]}finally{T.value=!1}},pe=e=>{if(!e.available){m.msgWarning("该时间段不可预约");return}a.appointmentTime=e.time},ve=async()=>{if(!(!u.value||!a.date))try{B.value=!0;const e=a.appointmentTime;if(a.appointmentTime="",await H(),e){const t=f.value.find(l=>l.time===e);t&&t.available&&(a.appointmentTime=e)}m.msgSuccess("刷新成功")}catch(e){console.error("刷新失败:",e),m.msgError("刷新失败,请重试")}finally{B.value=!1}},fe=async()=>{if(!u.value){m.msgWarning("请选择医生");return}if(!a.date){m.msgWarning("请选择日期");return}if(!a.appointmentTime){m.msgWarning("请选择预约时间");return}if(!a.channel_source){m.msgWarning("请选择渠道来源");return}if(A.value&&!a.channel_source_detail.trim()){m.msgWarning("请填写自媒体渠道补充信息");return}if($.value){m.msgWarning("该患者今日已有挂号(已预约或已过号),不能重复预约今天,请改选其他日期。");return}try{I.value=!0;const e={patient_id:_.id,doctor_id:u.value,appointment_date:a.date,period:"all",appointment_time:a.appointmentTime,appointment_type:a.appointmentType,remark:a.remark,channel_source:String(a.channel_source??""),channel_source_detail:a.channel_source_detail.trim()};console.log("提交预约参数:",e),await $e(e),m.msgSuccess("预约成功"),Y.value=!1,ne("success")}catch(e){console.error("预约失败:",e),m.msgError("预约失败")}finally{I.value=!1}};return P({open:oe}),(e,t)=>{const l=ke,o=Se,r=Ve,g=Te,h=Ye,_e=we,F=Ce,Q=Ee,M=Me,ge=De,ye=xe,he=Ne;return d(),b(ye,{modelValue:Y.value,"onUpdate:modelValue":t[8]||(t[8]=n=>Y.value=n),title:"预约问诊",direction:"rtl",size:"60%","close-on-click-modal":!1,"z-index":2e3},{footer:s(()=>[y("div",et,[i(M,{onClick:t[7]||(t[7]=n=>Y.value=!1)},{default:s(()=>[...t[13]||(t[13]=[D("取消",-1)])]),_:1}),i(M,{type:"primary",onClick:fe,loading:I.value,disabled:!le.value},{default:s(()=>[...t[14]||(t[14]=[D(" 确定 ",-1)])]),_:1},8,["loading","disabled"])])]),default:s(()=>[He((d(),k("div",null,[V.value?(d(),b(l,{key:0,type:L.value?"warning":"info",closable:!1,"show-icon":"",class:"today-block-alert",title:ae.value},null,8,["type","title"])):R("",!0),i(ge,{model:a,"label-width":"100px",class:"appointment-form"},{default:s(()=>[i(o,{label:"上次就诊:"},{default:s(()=>[y("span",qe,w(E.value||"无就诊记录"),1)]),_:1}),i(o,{label:"预约方式:"},{default:s(()=>[i(g,{modelValue:a.appointmentMethod,"onUpdate:modelValue":t[0]||(t[0]=n=>a.appointmentMethod=n),onChange:de},{default:s(()=>[i(r,{value:"time"},{default:s(()=>[...t[9]||(t[9]=[D("选择时段预约有专医生",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),i(o,{label:"预约类型:"},{default:s(()=>[i(g,{modelValue:a.appointmentType,"onUpdate:modelValue":t[1]||(t[1]=n=>a.appointmentType=n)},{default:s(()=>[i(r,{value:"video"},{default:s(()=>[...t[10]||(t[10]=[D("视频问诊",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),i(o,{label:"选择患者:"},{default:s(()=>[i(g,{modelValue:a.patientId,"onUpdate:modelValue":t[2]||(t[2]=n=>a.patientId=n)},{default:s(()=>[i(r,{value:_.id},{default:s(()=>[D(w(_.name),1)]),_:1},8,["value"])]),_:1},8,["modelValue"])]),_:1}),i(o,{label:"渠道来源:",required:""},{default:s(()=>[i(_e,{modelValue:a.channel_source,"onUpdate:modelValue":t[3]||(t[3]=n=>a.channel_source=n),placeholder:"请选择渠道来源",class:"channel-source-select",onChange:X},{default:s(()=>[(d(!0),k(N,null,x(C.value,n=>(d(),b(h,{key:String(n.value),label:n.name,value:n.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),A.value?(d(),b(o,{key:0,label:"自媒体补充:",required:""},{default:s(()=>[i(F,{modelValue:a.channel_source_detail,"onUpdate:modelValue":t[4]||(t[4]=n=>a.channel_source_detail=n),clearable:"",maxlength:"128","show-word-limit":"",placeholder:"请输入自媒体相关补充内容",class:"channel-source-select"},null,8,["modelValue"])]),_:1})):R("",!0),i(o,{label:"预约医生:"},{default:s(()=>[y("div",Ge,[i(g,{modelValue:u.value,"onUpdate:modelValue":t[5]||(t[5]=n=>u.value=n),onChange:me},{default:s(()=>[(d(!0),k(N,null,x(U.value,n=>(d(),b(r,{key:n.id,value:n.id,class:"doctor-radio"},{default:s(()=>[D(w(n.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])])]),_:1}),i(o,{label:"预约时间:"},{default:s(()=>[u.value?u.value&&c.value.length===0?(d(),b(Q,{key:1,description:"该医生暂无排班","image-size":80})):(d(),k("div",Oe,[y("div",Pe,[(d(!0),k(N,null,x(Z.value,n=>(d(),b(M,{key:n.date,type:a.date===n.date?"primary":"",onClick:be=>z(n.date),class:"date-button"},{default:s(()=>[D(w(n.label),1)]),_:2},1032,["type","onClick"]))),128))]),a.date?(d(),k("div",je,[y("div",Je,[t[12]||(t[12]=y("span",{class:"header-title"},"可预约时段",-1)),i(M,{text:"",type:"primary",size:"small",loading:B.value,onClick:ve},{icon:s(()=>[i(Qe(Ie))]),default:s(()=>[t[11]||(t[11]=D(" 刷新 ",-1))]),_:1},8,["loading"])]),y("div",Ke,[(d(!0),k(N,null,x(ee.value,n=>(d(),k("div",{key:n.time,class:G(["time-slot-item",{available:n.available,unavailable:!n.available,selected:a.appointmentTime===n.time}]),onClick:be=>pe(n)},[y("div",Ze,w(n.time),1),y("div",{class:G(["slot-status",{"status-available":n.available}])},w(n.available?"可约":"已约"),3)],10,Xe))),128))])])):R("",!0)])):(d(),b(Q,{key:0,description:"请先选择医生","image-size":80}))]),_:1}),i(o,{label:"备注:"},{default:s(()=>[i(F,{modelValue:a.remark,"onUpdate:modelValue":t[6]||(t[6]=n=>a.remark=n),type:"textarea",rows:2,placeholder:"请输入备注信息"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])),[[he,T.value]])]),_:1},8,["modelValue"])}}}),Ht=Re(tt,[["__scopeId","data-v-8ad36a51"]]);export{Ht as default};
diff --git a/server/public/admin/assets/appointment-D0hEffVf.js b/server/public/admin/assets/appointment-D0hEffVf.js
deleted file mode 100644
index 77b4d72c..00000000
--- a/server/public/admin/assets/appointment-D0hEffVf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{K as ke,D as De,B as we,G as Te,I as Ve,P as Se,Q as Ye,C as Ce,R as Ee,i as Me,L as Ne,e as xe}from"./element-plus-0wC3naml.js";import{L as Ie}from"./@element-plus/icons-vue-HOEUG8sr.js";import{d as p,g as Be}from"./dayjs-DG77mNTn.js";import{g as Ae}from"./tcm-SLIwsL8z.js";import{m as Le,i as m,_ as Re}from"./index-E47--KT7.js";import{c as q,r as Ue,g as We,l as $e}from"./doctor-6V0qM7Ks.js";import{f as ze,ak as d,G as b,aN as s,aP as He,I as k,H as R,a as i,J as y,O as D,F as N,ap as x,A as w,n as Fe}from"./@vue/runtime-core-C6bnekPw.js";import{Q as S,o as G}from"./@vue/shared-mAAVTE9n.js";import{y as Qe,n as v,r as O}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const qe={class:"text-gray-500"},Ge={class:"doctor-list"},Oe={key:2,class:"appointment-time-container"},Pe={class:"date-selector"},je={key:0,class:"time-slots-container"},Je={class:"time-slots-header"},Ke={class:"time-slots-grid"},Xe=["onClick"],Ze={class:"slot-time"},et={class:"drawer-footer"},tt=ze({__name:"appointment",emits:["success"],setup(at,{expose:P,emit:j}){p.extend(Be);const Y=v(!1),T=v(!1),I=v(!1),B=v(!1),U=v([]),f=v([]),E=v(""),u=v(0),c=v([]),C=v([]),V=v(!1),_=O({id:0,name:"",gender:"",age:0}),a=O({appointmentMethod:"time",appointmentType:"video",patientId:0,date:"",appointmentTime:"",remark:"",channel_source:"",channel_source_detail:""}),J=new Set(["自媒体4H","自媒体3Q","自媒体3H","自媒体2H","自媒体2Q"]);function W(e){return J.has(String(e??"").trim())}const K=w(()=>{const e=a.channel_source;if(e===""||e==null)return"";const t=C.value.find(n=>String(n.value)===String(e));return t?String(t.name??"").trim():""}),A=w(()=>W(K.value)),X=e=>{const t=C.value.find(l=>String(l.value)===String(e)),n=t?String(t.name??"").trim():"";W(n)||(a.channel_source_detail="")},Z=w(()=>{if(!u.value||c.value.length===0)return[];const e=[],t=["日","一","二","三","四","五","六"],n=p().startOf("day");for(const l of c.value){const r=p(l);if(r.isBefore(n))continue;const g=`${r.format("MM月DD日")} (${t[r.day()]})`;e.push({date:l,label:g})}return e}),ee=w(()=>{if(!a.date||f.value.length===0)return[];const e=p().format("YYYY-MM-DD");if(!(a.date===e))return f.value;const n=p();return f.value.map(l=>{const r=p(`${a.date} ${l.time}`);return r.isBefore(n)||r.isSame(n,"minute")?{...l,available:!1}:l})}),te=()=>p().format("YYYY-MM-DD"),L=w(()=>a.date===te()),ae=w(()=>V.value?L.value?"该患者今日已有挂号(已预约或已过号),不能重复预约今天,请改选其他日期。":"该患者今日已有挂号记录;可为患者预约其他日期的时段。":""),$=w(()=>V.value&&L.value),oe=w(()=>!$.value&&u.value&&a.date&&a.appointmentTime&&!!a.channel_source&&(!A.value||a.channel_source_detail.trim()!=="")),le=j,ne=async e=>{Y.value=!0,_.id=e.patient_id||e.id,_.name=e.patient_name||e.name,_.gender=e.gender_desc||e.gender,_.age=e.age||0,a.appointmentMethod="time",a.appointmentType="video",a.patientId=_.id,u.value=0,a.date="",a.appointmentTime="",a.remark="",a.channel_source="",a.channel_source_detail="",f.value=[],c.value=[],E.value="",V.value=!1,await re(),await ue(),await ie(),await se()},se=async()=>{V.value=!1;const e=_.id;if(!e)return;const t=p().format("YYYY-MM-DD");try{const n=await q({patient_id:e,start_date:t,end_date:t,page_no:1,page_size:50}),r=((n==null?void 0:n.lists)||[]).find(g=>{const h=Number(g.status);return h===1||h===4});V.value=!!r}catch(n){console.error("检查今日挂号状态失败:",n)}},ie=async()=>{try{const e=await q({patient_id:_.id,status:3,page_no:1,page_size:1});if(e!=null&&e.lists&&e.lists.length>0){const t=e.lists[0];t.appointment_date&&t.appointment_time?E.value=`${t.appointment_date} ${t.appointment_time}`:t.appointment_date&&(E.value=t.appointment_date)}}catch(e){console.error("加载就诊记录失败:",e)}},re=async()=>{try{const e=await Le({type:"channels"}),t=((e==null?void 0:e.channels)||[]).filter(n=>n.status!==0);t.sort((n,l)=>{const r=Number((l==null?void 0:l.sort)??0)-Number((n==null?void 0:n.sort)??0);return r!==0?r:Number((l==null?void 0:l.id)??0)-Number((n==null?void 0:n.id)??0)}),C.value=t}catch(e){console.error("加载渠道来源失败:",e),C.value=[]}},ue=async()=>{try{T.value=!0;const e=await Ae();U.value=e||[]}catch(e){console.error("加载医生列表失败:",e),m.msgError("加载医生列表失败")}finally{T.value=!1}},de=()=>{u.value=0,a.date="",a.appointmentTime="",f.value=[]},me=async()=>{a.appointmentTime="",a.date="",f.value=[],c.value=[],u.value&&await ce()},ce=async()=>{if(u.value)try{T.value=!0;const e=p().format("YYYY-MM-DD"),t=p().add(6,"day").format("YYYY-MM-DD"),n=await Ue({doctor_id:u.value,start_date:e,end_date:t,status:1});if(n!=null&&n.lists&&n.lists.length>0){if(c.value=[...new Set(n.lists.map(l=>l.date))],c.value.sort(),await Fe(),c.value.length>0){const l=p().format("YYYY-MM-DD");let r=c.value.includes(l)?l:c.value[0];V.value&&r===l&&(r=c.value.find(h=>h>l)??c.value.find(h=>h!==l)??r),z(r)}}else c.value=[],m.msgWarning("该医生暂无排班")}catch(e){console.error("加载医生排班失败:",e),m.msgError("加载医生排班失败"),c.value=[]}finally{T.value=!1}},z=e=>{a.date=e,a.appointmentTime="",u.value&&H()},H=async()=>{if(!(!u.value||!a.date))try{T.value=!0;const e=await We({doctor_id:u.value,appointment_date:a.date,period:"all"});console.log("时间段数据:",e),f.value=((e==null?void 0:e.slots)||[]).map(t=>({time:t.time,available:t.available,quota:t.available?1:0})),console.log("处理后的时间段:",f.value)}catch(e){console.error("加载时间段失败:",e),m.msgError("加载时间段失败"),f.value=[]}finally{T.value=!1}},pe=e=>{if(!e.available){m.msgWarning("该时间段不可预约");return}a.appointmentTime=e.time},ve=async()=>{if(!(!u.value||!a.date))try{B.value=!0;const e=a.appointmentTime;if(a.appointmentTime="",await H(),e){const t=f.value.find(n=>n.time===e);t&&t.available&&(a.appointmentTime=e)}m.msgSuccess("刷新成功")}catch(e){console.error("刷新失败:",e),m.msgError("刷新失败,请重试")}finally{B.value=!1}},fe=async()=>{if(!u.value){m.msgWarning("请选择医生");return}if(!a.date){m.msgWarning("请选择日期");return}if(!a.appointmentTime){m.msgWarning("请选择预约时间");return}if(!a.channel_source){m.msgWarning("请选择渠道来源");return}if(A.value&&!a.channel_source_detail.trim()){m.msgWarning("请填写自媒体渠道补充信息");return}if($.value){m.msgWarning("该患者今日已有挂号(已预约或已过号),不能重复预约今天,请改选其他日期。");return}try{I.value=!0;const e={patient_id:_.id,doctor_id:u.value,appointment_date:a.date,period:"all",appointment_time:a.appointmentTime,appointment_type:a.appointmentType,remark:a.remark,channel_source:a.channel_source,channel_source_detail:a.channel_source_detail.trim()};console.log("提交预约参数:",e),await $e(e),m.msgSuccess("预约成功"),Y.value=!1,le("success")}catch(e){console.error("预约失败:",e),m.msgError("预约失败")}finally{I.value=!1}};return P({open:ne}),(e,t)=>{const n=ke,l=we,r=Ve,g=Te,h=Ye,_e=Se,F=Ce,Q=Ee,M=Me,ge=De,ye=xe,he=Ne;return d(),b(ye,{modelValue:Y.value,"onUpdate:modelValue":t[8]||(t[8]=o=>Y.value=o),title:"预约问诊",direction:"rtl",size:"60%","close-on-click-modal":!1,"z-index":2e3},{footer:s(()=>[y("div",et,[i(M,{onClick:t[7]||(t[7]=o=>Y.value=!1)},{default:s(()=>[...t[13]||(t[13]=[D("取消",-1)])]),_:1}),i(M,{type:"primary",onClick:fe,loading:I.value,disabled:!oe.value},{default:s(()=>[...t[14]||(t[14]=[D(" 确定 ",-1)])]),_:1},8,["loading","disabled"])])]),default:s(()=>[He((d(),k("div",null,[V.value?(d(),b(n,{key:0,type:L.value?"warning":"info",closable:!1,"show-icon":"",class:"today-block-alert",title:ae.value},null,8,["type","title"])):R("",!0),i(ge,{model:a,"label-width":"100px",class:"appointment-form"},{default:s(()=>[i(l,{label:"上次就诊:"},{default:s(()=>[y("span",qe,S(E.value||"无就诊记录"),1)]),_:1}),i(l,{label:"预约方式:"},{default:s(()=>[i(g,{modelValue:a.appointmentMethod,"onUpdate:modelValue":t[0]||(t[0]=o=>a.appointmentMethod=o),onChange:de},{default:s(()=>[i(r,{value:"time"},{default:s(()=>[...t[9]||(t[9]=[D("选择时段预约有专医生",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),i(l,{label:"预约类型:"},{default:s(()=>[i(g,{modelValue:a.appointmentType,"onUpdate:modelValue":t[1]||(t[1]=o=>a.appointmentType=o)},{default:s(()=>[i(r,{value:"video"},{default:s(()=>[...t[10]||(t[10]=[D("视频问诊",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),i(l,{label:"选择患者:"},{default:s(()=>[i(g,{modelValue:a.patientId,"onUpdate:modelValue":t[2]||(t[2]=o=>a.patientId=o)},{default:s(()=>[i(r,{value:_.id},{default:s(()=>[D(S(_.name),1)]),_:1},8,["value"])]),_:1},8,["modelValue"])]),_:1}),i(l,{label:"渠道来源:",required:""},{default:s(()=>[i(_e,{modelValue:a.channel_source,"onUpdate:modelValue":t[3]||(t[3]=o=>a.channel_source=o),placeholder:"请选择渠道来源",class:"channel-source-select",onChange:X},{default:s(()=>[(d(!0),k(N,null,x(C.value,o=>(d(),b(h,{key:o.value,label:o.name,value:o.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),A.value?(d(),b(l,{key:0,label:"自媒体补充:",required:""},{default:s(()=>[i(F,{modelValue:a.channel_source_detail,"onUpdate:modelValue":t[4]||(t[4]=o=>a.channel_source_detail=o),clearable:"",maxlength:"128","show-word-limit":"",placeholder:"请输入自媒体相关补充内容",class:"channel-source-select"},null,8,["modelValue"])]),_:1})):R("",!0),i(l,{label:"预约医生:"},{default:s(()=>[y("div",Ge,[i(g,{modelValue:u.value,"onUpdate:modelValue":t[5]||(t[5]=o=>u.value=o),onChange:me},{default:s(()=>[(d(!0),k(N,null,x(U.value,o=>(d(),b(r,{key:o.id,value:o.id,class:"doctor-radio"},{default:s(()=>[D(S(o.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])])]),_:1}),i(l,{label:"预约时间:"},{default:s(()=>[u.value?u.value&&c.value.length===0?(d(),b(Q,{key:1,description:"该医生暂无排班","image-size":80})):(d(),k("div",Oe,[y("div",Pe,[(d(!0),k(N,null,x(Z.value,o=>(d(),b(M,{key:o.date,type:a.date===o.date?"primary":"",onClick:be=>z(o.date),class:"date-button"},{default:s(()=>[D(S(o.label),1)]),_:2},1032,["type","onClick"]))),128))]),a.date?(d(),k("div",je,[y("div",Je,[t[12]||(t[12]=y("span",{class:"header-title"},"可预约时段",-1)),i(M,{text:"",type:"primary",size:"small",loading:B.value,onClick:ve},{icon:s(()=>[i(Qe(Ie))]),default:s(()=>[t[11]||(t[11]=D(" 刷新 ",-1))]),_:1},8,["loading"])]),y("div",Ke,[(d(!0),k(N,null,x(ee.value,o=>(d(),k("div",{key:o.time,class:G(["time-slot-item",{available:o.available,unavailable:!o.available,selected:a.appointmentTime===o.time}]),onClick:be=>pe(o)},[y("div",Ze,S(o.time),1),y("div",{class:G(["slot-status",{"status-available":o.available}])},S(o.available?"可约":"已约"),3)],10,Xe))),128))])])):R("",!0)])):(d(),b(Q,{key:0,description:"请先选择医生","image-size":80}))]),_:1}),i(l,{label:"备注:"},{default:s(()=>[i(F,{modelValue:a.remark,"onUpdate:modelValue":t[6]||(t[6]=o=>a.remark=o),type:"textarea",rows:2,placeholder:"请输入备注信息"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])),[[he,T.value]])]),_:1},8,["modelValue"])}}}),Ht=Re(tt,[["__scopeId","data-v-0586cc07"]]);export{Ht as default};
diff --git a/server/public/admin/assets/appointment-DHf6UVnR.css b/server/public/admin/assets/appointment-DHf6UVnR.css
new file mode 100644
index 00000000..156d4a98
--- /dev/null
+++ b/server/public/admin/assets/appointment-DHf6UVnR.css
@@ -0,0 +1 @@
+.today-block-alert[data-v-8ad36a51]{margin-bottom:16px}.appointment-form[data-v-8ad36a51] .el-form-item__label{font-weight:500}.appointment-form .channel-source-select[data-v-8ad36a51]{width:100%;max-width:360px}.doctor-list[data-v-8ad36a51]{display:flex;flex-wrap:wrap;gap:12px}.doctor-list .doctor-radio[data-v-8ad36a51]{margin-right:0}.doctor-list .doctor-radio[data-v-8ad36a51] .el-radio__label{display:flex;align-items:center}.appointment-time-container[data-v-8ad36a51]{width:100%}.date-selector[data-v-8ad36a51]{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.date-selector .date-button[data-v-8ad36a51]{min-width:130px;height:40px;font-size:14px;border-radius:8px;transition:all .2s}.date-selector .date-button[data-v-8ad36a51]:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.time-slots-container[data-v-8ad36a51]{background-color:#f8f9fa;border-radius:8px;padding:16px}.time-slots-header[data-v-8ad36a51]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.time-slots-header .header-title[data-v-8ad36a51]{font-size:15px;font-weight:600;color:#303133}.time-slots-grid[data-v-8ad36a51]{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;max-height:450px;overflow-y:auto;padding:2px}.time-slots-grid[data-v-8ad36a51]::-webkit-scrollbar{width:6px}.time-slots-grid[data-v-8ad36a51]::-webkit-scrollbar-thumb{background-color:#dcdfe6;border-radius:3px}.time-slots-grid[data-v-8ad36a51]::-webkit-scrollbar-thumb:hover{background-color:#c0c4cc}.time-slots-grid .time-slot-item[data-v-8ad36a51]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 8px;border:2px solid #e4e7ed;border-radius:8px;cursor:pointer;transition:all .2s;background-color:#fff;min-height:70px}.time-slots-grid .time-slot-item .slot-time[data-v-8ad36a51]{font-size:15px;font-weight:600;color:#303133;margin-bottom:6px}.time-slots-grid .time-slot-item .slot-status[data-v-8ad36a51]{font-size:12px;color:#909399;padding:0 8px;border-radius:4px;background-color:#f4f4f5}.time-slots-grid .time-slot-item .slot-status.status-available[data-v-8ad36a51]{color:#67c23a;background-color:#f0f9ff}.time-slots-grid .time-slot-item.available[data-v-8ad36a51]{border-color:#e4e7ed}.time-slots-grid .time-slot-item.available[data-v-8ad36a51]:hover{border-color:#409eff;background-color:#ecf5ff;transform:translateY(-2px);box-shadow:0 4px 12px #409eff26}.time-slots-grid .time-slot-item.unavailable[data-v-8ad36a51]{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed;opacity:.6}.time-slots-grid .time-slot-item.unavailable .slot-time[data-v-8ad36a51]{color:#c0c4cc}.time-slots-grid .time-slot-item.unavailable .slot-status[data-v-8ad36a51]{color:#c0c4cc;background-color:#f5f7fa}.time-slots-grid .time-slot-item.unavailable[data-v-8ad36a51]:hover{transform:none;box-shadow:none}.time-slots-grid .time-slot-item.selected[data-v-8ad36a51]{border-color:#409eff;background:linear-gradient(135deg,#409eff,#66b1ff);box-shadow:0 4px 12px #409eff4d}.time-slots-grid .time-slot-item.selected .slot-time[data-v-8ad36a51]{color:#fff}.time-slots-grid .time-slot-item.selected .slot-status[data-v-8ad36a51]{color:#fff;background-color:#fff3}[data-v-8ad36a51] .el-radio-group{display:flex;flex-wrap:wrap;gap:12px}[data-v-8ad36a51] .el-radio{margin-right:0}.drawer-footer[data-v-8ad36a51]{display:flex;justify-content:flex-end;gap:12px;padding:12px 0}
diff --git a/server/public/admin/assets/article-DJnP6RZd.js b/server/public/admin/assets/article-BnVIxFkr.js
similarity index 93%
rename from server/public/admin/assets/article-DJnP6RZd.js
rename to server/public/admin/assets/article-BnVIxFkr.js
index 02bd037f..aeed1305 100644
--- a/server/public/admin/assets/article-DJnP6RZd.js
+++ b/server/public/admin/assets/article-BnVIxFkr.js
@@ -1 +1 @@
-import{r as e}from"./index-E47--KT7.js";function a(t){return e.get({url:"/article.articleCate/lists",params:t})}function l(t){return e.get({url:"/article.articleCate/all",params:t})}function i(t){return e.post({url:"/article.articleCate/add",params:t})}function c(t){return e.post({url:"/article.articleCate/edit",params:t})}function u(t){return e.post({url:"/article.articleCate/delete",params:t})}function n(t){return e.get({url:"/article.articleCate/detail",params:t})}function s(t){return e.post({url:"/article.articleCate/updateStatus",params:t})}function o(t){return e.get({url:"/article.article/lists",params:t})}function d(t){return e.post({url:"/article.article/add",params:t})}function f(t){return e.post({url:"/article.article/edit",params:t})}function C(t){return e.post({url:"/article.article/delete",params:t})}function p(t){return e.get({url:"/article.article/detail",params:t})}function g(t){return e.post({url:"/article.article/updateStatus",params:t})}export{a,u as b,s as c,c as d,i as e,n as f,p as g,f as h,d as i,l as j,o as k,g as l,C as m};
+import{r as e}from"./index-DBREMm_z.js";function a(t){return e.get({url:"/article.articleCate/lists",params:t})}function l(t){return e.get({url:"/article.articleCate/all",params:t})}function i(t){return e.post({url:"/article.articleCate/add",params:t})}function c(t){return e.post({url:"/article.articleCate/edit",params:t})}function u(t){return e.post({url:"/article.articleCate/delete",params:t})}function n(t){return e.get({url:"/article.articleCate/detail",params:t})}function s(t){return e.post({url:"/article.articleCate/updateStatus",params:t})}function o(t){return e.get({url:"/article.article/lists",params:t})}function d(t){return e.post({url:"/article.article/add",params:t})}function f(t){return e.post({url:"/article.article/edit",params:t})}function C(t){return e.post({url:"/article.article/delete",params:t})}function p(t){return e.get({url:"/article.article/detail",params:t})}function g(t){return e.post({url:"/article.article/updateStatus",params:t})}export{a,u as b,s as c,c as d,i as e,n as f,p as g,f as h,d as i,l as j,o as k,g as l,C as m};
diff --git a/server/public/admin/assets/attr-DPrxRs4q.js b/server/public/admin/assets/attr-BGQKZVLO.js
similarity index 63%
rename from server/public/admin/assets/attr-DPrxRs4q.js
rename to server/public/admin/assets/attr-BGQKZVLO.js
index 1bbeb855..9e24c9b5 100644
--- a/server/public/admin/assets/attr-DPrxRs4q.js
+++ b/server/public/admin/assets/attr-BGQKZVLO.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-A0LOU1hn.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-mOGAGDW2.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/attr-Dta0v7QA.js b/server/public/admin/assets/attr-BPRvWNmc.js
similarity index 73%
rename from server/public/admin/assets/attr-Dta0v7QA.js
rename to server/public/admin/assets/attr-BPRvWNmc.js
index 485804eb..28d6ddd3 100644
--- a/server/public/admin/assets/attr-Dta0v7QA.js
+++ b/server/public/admin/assets/attr-BPRvWNmc.js
@@ -1 +1 @@
-import{m as b,l as c,D as V}from"./element-plus-0wC3naml.js";import{_ as l}from"./menu-set.vue_vue_type_script_setup_true_lang-ZzWuHRXB.js";import{f as v,ak as x,I as k,J as E,a as o,aN as e,F as g,A as w}from"./@vue/runtime-core-C6bnekPw.js";import{y as r}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";const Bt=v({__name:"attr",props:{modelValue:{type:Object,default:()=>({nav:[],menu:{}})}},emits:["update:modelValue"],setup(n,{emit:s}){const u=n,d=s,m=w({get(){return u.modelValue},set(i){d("update:modelValue",i)}});return(i,t)=>{const a=c,f=b,_=V;return x(),k(g,null,[t[2]||(t[2]=E("div",{class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"}," pc导航设置 ",-1)),o(_,{class:"mt-4","label-width":"70px"},{default:e(()=>[o(f,{"model-value":"nav"},{default:e(()=>[o(a,{label:"主导航设置",name:"nav"},{default:e(()=>[o(l,{modelValue:r(m).nav,"onUpdate:modelValue":t[0]||(t[0]=p=>r(m).nav=p)},null,8,["modelValue"])]),_:1}),o(a,{label:"菜单设置",name:"menu"},{default:e(()=>[o(l,{modelValue:r(m).menu,"onUpdate:modelValue":t[1]||(t[1]=p=>r(m).menu=p)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})],64)}}});export{Bt as default};
+import{m as b,l as c,D as V}from"./element-plus-DFTWCWyi.js";import{_ as l}from"./menu-set.vue_vue_type_script_setup_true_lang-DE6tDAas.js";import{f as v,ak as x,I as k,J as E,a as o,aN as e,F as g,A as w}from"./@vue/runtime-core-C6bnekPw.js";import{y as r}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";const Bt=v({__name:"attr",props:{modelValue:{type:Object,default:()=>({nav:[],menu:{}})}},emits:["update:modelValue"],setup(n,{emit:s}){const u=n,d=s,m=w({get(){return u.modelValue},set(i){d("update:modelValue",i)}});return(i,t)=>{const a=c,f=b,_=V;return x(),k(g,null,[t[2]||(t[2]=E("div",{class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"}," pc导航设置 ",-1)),o(_,{class:"mt-4","label-width":"70px"},{default:e(()=>[o(f,{"model-value":"nav"},{default:e(()=>[o(a,{label:"主导航设置",name:"nav"},{default:e(()=>[o(l,{modelValue:r(m).nav,"onUpdate:modelValue":t[0]||(t[0]=p=>r(m).nav=p)},null,8,["modelValue"])]),_:1}),o(a,{label:"菜单设置",name:"menu"},{default:e(()=>[o(l,{modelValue:r(m).menu,"onUpdate:modelValue":t[1]||(t[1]=p=>r(m).menu=p)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})],64)}}});export{Bt as default};
diff --git a/server/public/admin/assets/attr-8ElsMl3U.js b/server/public/admin/assets/attr-BjTmZ7w3.js
similarity index 69%
rename from server/public/admin/assets/attr-8ElsMl3U.js
rename to server/public/admin/assets/attr-BjTmZ7w3.js
index eca75a6c..963e9790 100644
--- a/server/public/admin/assets/attr-8ElsMl3U.js
+++ b/server/public/admin/assets/attr-BjTmZ7w3.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-BN--zfly.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./picker-DlbAZkDm.js";import"./index-nymJKQXP.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-c_YeWJqI.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./picker-BCRrEZaA.js";import"./index-BwF7vczx.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/attr-CLlbMhxO.js b/server/public/admin/assets/attr-BsXOKCNj.js
similarity index 90%
rename from server/public/admin/assets/attr-CLlbMhxO.js
rename to server/public/admin/assets/attr-BsXOKCNj.js
index c18e2125..73ad0caf 100644
--- a/server/public/admin/assets/attr-CLlbMhxO.js
+++ b/server/public/admin/assets/attr-BsXOKCNj.js
@@ -1 +1 @@
-import{J as O,G as R,I as A,B as J,C as S,g as H,i as T,D as q}from"./element-plus-0wC3naml.js";import{_ as K}from"./index-BHTgr4Ka.js";import{c as L,i as E,_ as M}from"./index-E47--KT7.js";import{_ as P}from"./picker-B9b8bj5N.js";import{_ as Q}from"./picker-DlbAZkDm.js";import{D as W}from"./vuedraggable-5bKFmC7X.js";import{k as h}from"./lodash-es-C2A-Pj28.js";import{f as X,ak as s,G as p,aN as t,a as o,J as l,O as _,H as x,I as b,F as Y,A as Z}from"./@vue/runtime-core-C6bnekPw.js";import{y as r}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";const ee={class:"flex items-end"},te={key:0,class:"text-xs text-tx-secondary ml-2"},oe={key:1,class:"text-xs text-tx-secondary ml-2"},le={class:"flex-1"},ae={class:"bg-fill-light w-full p-4 mt-4"},ne={class:"flex justify-center w-[467px]"},se={class:"flex-1"},de={class:"flex-1 flex items-center"},me={class:"drag-move cursor-move ml-auto"},ie={key:0,class:"mt-4"},v=5,pe=X({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(d,{emit:C}){const g=C,f=d,u=Z({get:()=>f.content,set:m=>{g("update:content",m)}}),B=()=>{var m;if(((m=f.content.data)==null?void 0:m.length){var i;if(((i=f.content.data)==null?void 0:i.length)<=1)return E.msgError("最少保留一张图片");const e=h(f.content);e.data.splice(m,1),g("update:content",e)};return(m,e)=>{const i=A,k=R,V=O,y=Q,I=P,N=S,w=J,F=H,$=L,j=K,z=T,G=q;return s(),p(G,{"label-width":"70px"},{default:t(()=>[o(V,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[e[5]||(e[5]=l("div",{class:"flex items-end mb-4"},[l("div",{class:"text-base dark:text-[#ffffff] text-[#101010] font-medium"},"展示样式")],-1)),o(k,{modelValue:r(u).style,"onUpdate:modelValue":e[0]||(e[0]=c=>r(u).style=c)},{default:t(()=>[o(i,{value:1},{default:t(()=>[...e[3]||(e[3]=[_("常规",-1)])]),_:1}),o(i,{value:2},{default:t(()=>[...e[4]||(e[4]=[_("大屏",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),d.content.style==1?(s(),p(V,{key:0,shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[e[8]||(e[8]=l("div",{class:"flex items-end mb-4"},[l("div",{class:"text-base text-[#101010] dark:text-[#ffffff] font-medium"},"背景联动")],-1)),o(k,{modelValue:r(u).bg_style,"onUpdate:modelValue":e[1]||(e[1]=c=>r(u).bg_style=c)},{default:t(()=>[o(i,{value:1},{default:t(()=>[...e[6]||(e[6]=[_("开启",-1)])]),_:1}),o(i,{value:0},{default:t(()=>[...e[7]||(e[7]=[_("关闭",-1)])]),_:1})]),_:1},8,["modelValue"]),e[9]||(e[9]=l("div",{class:"p-[15px] rounded-[8px] bg-[#f3f8ff] text-[#136bdf] mt-2"}," 开启背景联动后,需为轮播图设置背景图,轮播图切换时,背景图也跟随切换,此时该页面自身的“页面背景“设置将失效。 ",-1))]),_:1})):x("",!0),o(V,{shadow:"never",class:"!border-none flex-1 mt-2"},{default:t(()=>{var c;return[l("div",ee,[e[10]||(e[10]=l("div",{class:"text-base text-[#101010] dark:text-[#ffffff] font-medium"},"轮播图片",-1)),d.content.style==1?(s(),b("div",te," 最多添加5张,建议图片尺寸:750px*340px ")):(s(),b("div",oe," 最多添加5张,建议图片尺寸:750px*1100px "))]),l("div",le,[o(r(W),{class:"draggable",modelValue:r(u).data,"onUpdate:modelValue":e[2]||(e[2]=a=>r(u).data=a),animation:"300",handle:".drag-move","item-key":"index"},{item:t(({element:a,index:U})=>[(s(),p(j,{key:U,onClose:n=>D(U),class:"w-full"},{default:t(()=>[l("div",ae,[l("div",ne,[d.content.style==1?(s(),b(Y,{key:0},[o(y,{size:"122px",modelValue:a.image,"onUpdate:modelValue":n=>a.image=n,"upload-class":"bg-body","exclude-domain":""},{upload:t(()=>[...e[11]||(e[11]=[l("div",{class:"w-[122px] h-[122px] banner-upload-btn"}," 轮播图 ",-1)])]),_:1},8,["modelValue","onUpdate:modelValue"]),d.content.style==1||d.content.bg_style==1?(s(),p(y,{key:0,class:"ml-[40px]",size:"122px",modelValue:a.bg,"onUpdate:modelValue":n=>a.bg=n,"upload-class":"bg-body","exclude-domain":""},{upload:t(()=>[...e[12]||(e[12]=[l("div",{class:"w-[122px] h-[122px] banner-upload-btn"}," 背景图 ",-1)])]),_:1},8,["modelValue","onUpdate:modelValue"])):x("",!0)],64)):(s(),p(y,{key:1,width:"396px",height:"196px",modelValue:a.image,"onUpdate:modelValue":n=>a.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]))]),l("div",se,[o(w,{class:"mt-[18px]",label:"图片链接"},{default:t(()=>[d.type=="mobile"?(s(),p(I,{key:0,modelValue:a.link,"onUpdate:modelValue":n=>a.link=n},null,8,["modelValue","onUpdate:modelValue"])):x("",!0),d.type=="pc"?(s(),p(N,{key:1,placeholder:"请输入链接",modelValue:a.link.path,"onUpdate:modelValue":n=>a.link.path=n},null,8,["modelValue","onUpdate:modelValue"])):x("",!0)]),_:2},1024),o(w,{label:"是否显示",class:"mt-[18px] !mb-0"},{default:t(()=>[l("div",de,[o(F,{modelValue:a.is_show,"onUpdate:modelValue":n=>a.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),l("div",me,[o($,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),((c=d.content.data)==null?void 0:c.length)[...e[13]||(e[13]=[_("添加图片",-1)])]),_:1})])):x("",!0)]}),_:1})]),_:1})}}}),rt=M(pe,[["__scopeId","data-v-f10c74d9"]]);export{rt as default};
+import{J as O,G as R,I as A,B as J,C as S,g as H,i as T,D as q}from"./element-plus-DFTWCWyi.js";import{_ as K}from"./index-CbfZXeGu.js";import{c as L,i as E,_ as M}from"./index-DBREMm_z.js";import{_ as P}from"./picker-DPnqJ8Gk.js";import{_ as Q}from"./picker-BCRrEZaA.js";import{D as W}from"./vuedraggable-5bKFmC7X.js";import{k as h}from"./lodash-es-C2A-Pj28.js";import{f as X,ak as s,G as p,aN as t,a as o,J as l,O as _,H as x,I as b,F as Y,A as Z}from"./@vue/runtime-core-C6bnekPw.js";import{y as r}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";const ee={class:"flex items-end"},te={key:0,class:"text-xs text-tx-secondary ml-2"},oe={key:1,class:"text-xs text-tx-secondary ml-2"},le={class:"flex-1"},ae={class:"bg-fill-light w-full p-4 mt-4"},ne={class:"flex justify-center w-[467px]"},se={class:"flex-1"},de={class:"flex-1 flex items-center"},me={class:"drag-move cursor-move ml-auto"},ie={key:0,class:"mt-4"},v=5,pe=X({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(d,{emit:C}){const g=C,f=d,u=Z({get:()=>f.content,set:m=>{g("update:content",m)}}),B=()=>{var m;if(((m=f.content.data)==null?void 0:m.length){var i;if(((i=f.content.data)==null?void 0:i.length)<=1)return E.msgError("最少保留一张图片");const e=h(f.content);e.data.splice(m,1),g("update:content",e)};return(m,e)=>{const i=A,k=R,V=O,y=Q,I=P,N=S,w=J,F=H,$=L,j=K,z=T,G=q;return s(),p(G,{"label-width":"70px"},{default:t(()=>[o(V,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[e[5]||(e[5]=l("div",{class:"flex items-end mb-4"},[l("div",{class:"text-base dark:text-[#ffffff] text-[#101010] font-medium"},"展示样式")],-1)),o(k,{modelValue:r(u).style,"onUpdate:modelValue":e[0]||(e[0]=c=>r(u).style=c)},{default:t(()=>[o(i,{value:1},{default:t(()=>[...e[3]||(e[3]=[_("常规",-1)])]),_:1}),o(i,{value:2},{default:t(()=>[...e[4]||(e[4]=[_("大屏",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),d.content.style==1?(s(),p(V,{key:0,shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[e[8]||(e[8]=l("div",{class:"flex items-end mb-4"},[l("div",{class:"text-base text-[#101010] dark:text-[#ffffff] font-medium"},"背景联动")],-1)),o(k,{modelValue:r(u).bg_style,"onUpdate:modelValue":e[1]||(e[1]=c=>r(u).bg_style=c)},{default:t(()=>[o(i,{value:1},{default:t(()=>[...e[6]||(e[6]=[_("开启",-1)])]),_:1}),o(i,{value:0},{default:t(()=>[...e[7]||(e[7]=[_("关闭",-1)])]),_:1})]),_:1},8,["modelValue"]),e[9]||(e[9]=l("div",{class:"p-[15px] rounded-[8px] bg-[#f3f8ff] text-[#136bdf] mt-2"}," 开启背景联动后,需为轮播图设置背景图,轮播图切换时,背景图也跟随切换,此时该页面自身的“页面背景“设置将失效。 ",-1))]),_:1})):x("",!0),o(V,{shadow:"never",class:"!border-none flex-1 mt-2"},{default:t(()=>{var c;return[l("div",ee,[e[10]||(e[10]=l("div",{class:"text-base text-[#101010] dark:text-[#ffffff] font-medium"},"轮播图片",-1)),d.content.style==1?(s(),b("div",te," 最多添加5张,建议图片尺寸:750px*340px ")):(s(),b("div",oe," 最多添加5张,建议图片尺寸:750px*1100px "))]),l("div",le,[o(r(W),{class:"draggable",modelValue:r(u).data,"onUpdate:modelValue":e[2]||(e[2]=a=>r(u).data=a),animation:"300",handle:".drag-move","item-key":"index"},{item:t(({element:a,index:U})=>[(s(),p(j,{key:U,onClose:n=>D(U),class:"w-full"},{default:t(()=>[l("div",ae,[l("div",ne,[d.content.style==1?(s(),b(Y,{key:0},[o(y,{size:"122px",modelValue:a.image,"onUpdate:modelValue":n=>a.image=n,"upload-class":"bg-body","exclude-domain":""},{upload:t(()=>[...e[11]||(e[11]=[l("div",{class:"w-[122px] h-[122px] banner-upload-btn"}," 轮播图 ",-1)])]),_:1},8,["modelValue","onUpdate:modelValue"]),d.content.style==1||d.content.bg_style==1?(s(),p(y,{key:0,class:"ml-[40px]",size:"122px",modelValue:a.bg,"onUpdate:modelValue":n=>a.bg=n,"upload-class":"bg-body","exclude-domain":""},{upload:t(()=>[...e[12]||(e[12]=[l("div",{class:"w-[122px] h-[122px] banner-upload-btn"}," 背景图 ",-1)])]),_:1},8,["modelValue","onUpdate:modelValue"])):x("",!0)],64)):(s(),p(y,{key:1,width:"396px",height:"196px",modelValue:a.image,"onUpdate:modelValue":n=>a.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]))]),l("div",se,[o(w,{class:"mt-[18px]",label:"图片链接"},{default:t(()=>[d.type=="mobile"?(s(),p(I,{key:0,modelValue:a.link,"onUpdate:modelValue":n=>a.link=n},null,8,["modelValue","onUpdate:modelValue"])):x("",!0),d.type=="pc"?(s(),p(N,{key:1,placeholder:"请输入链接",modelValue:a.link.path,"onUpdate:modelValue":n=>a.link.path=n},null,8,["modelValue","onUpdate:modelValue"])):x("",!0)]),_:2},1024),o(w,{label:"是否显示",class:"mt-[18px] !mb-0"},{default:t(()=>[l("div",de,[o(F,{modelValue:a.is_show,"onUpdate:modelValue":n=>a.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),l("div",me,[o($,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),((c=d.content.data)==null?void 0:c.length)[...e[13]||(e[13]=[_("添加图片",-1)])]),_:1})])):x("",!0)]}),_:1})]),_:1})}}}),rt=M(pe,[["__scopeId","data-v-f10c74d9"]]);export{rt as default};
diff --git a/server/public/admin/assets/attr-CtBO5Z_O.js b/server/public/admin/assets/attr-CNNqdFK4.js
similarity index 63%
rename from server/public/admin/assets/attr-CtBO5Z_O.js
rename to server/public/admin/assets/attr-CNNqdFK4.js
index 1a2ca620..27c5ec70 100644
--- a/server/public/admin/assets/attr-CtBO5Z_O.js
+++ b/server/public/admin/assets/attr-CNNqdFK4.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-BIDjj2ZQ.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-Dy891kIt.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/attr-B35dGV5K.js b/server/public/admin/assets/attr-CSIKeGUb.js
similarity index 65%
rename from server/public/admin/assets/attr-B35dGV5K.js
rename to server/public/admin/assets/attr-CSIKeGUb.js
index 1a371894..a67594a3 100644
--- a/server/public/admin/assets/attr-B35dGV5K.js
+++ b/server/public/admin/assets/attr-CSIKeGUb.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-CVwolQf4.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-6A60mJbu.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/attr-BH86F3a-.js b/server/public/admin/assets/attr-DCpF99zs.js
similarity index 60%
rename from server/public/admin/assets/attr-BH86F3a-.js
rename to server/public/admin/assets/attr-DCpF99zs.js
index 89c113ca..e0365260 100644
--- a/server/public/admin/assets/attr-BH86F3a-.js
+++ b/server/public/admin/assets/attr-DCpF99zs.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-BO_riRgF.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./index.vue_vue_type_script_setup_true_lang-C384XBPz.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-MNr7rU8G.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./index.vue_vue_type_script_setup_true_lang-3vCdLVB9.js";export{o as default};
diff --git a/server/public/admin/assets/attr-BkmkxePz.js b/server/public/admin/assets/attr-DbcwTpUD.js
similarity index 65%
rename from server/public/admin/assets/attr-BkmkxePz.js
rename to server/public/admin/assets/attr-DbcwTpUD.js
index e1a1ee64..8d4d65f8 100644
--- a/server/public/admin/assets/attr-BkmkxePz.js
+++ b/server/public/admin/assets/attr-DbcwTpUD.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-BVV-rQuy.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-Ca7p7CQy.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/attr-CNph-R0s.js b/server/public/admin/assets/attr-Vhqry8Wo.js
similarity index 67%
rename from server/public/admin/assets/attr-CNph-R0s.js
rename to server/public/admin/assets/attr-Vhqry8Wo.js
index c625c282..0b4cb4b3 100644
--- a/server/public/admin/assets/attr-CNph-R0s.js
+++ b/server/public/admin/assets/attr-Vhqry8Wo.js
@@ -1 +1 @@
-import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-CTVcHVd7.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index.vue_vue_type_script_setup_true_lang-C384XBPz.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./picker-DlbAZkDm.js";import"./index-nymJKQXP.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./attr.vue_vue_type_script_setup_true_lang-BnCnHgo6.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index.vue_vue_type_script_setup_true_lang-3vCdLVB9.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./picker-BCRrEZaA.js";import"./index-BwF7vczx.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/attr-setting-BQ-x4ArE.js b/server/public/admin/assets/attr-setting-BQ-x4ArE.js
deleted file mode 100644
index 3cab5a74..00000000
--- a/server/public/admin/assets/attr-setting-BQ-x4ArE.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as o}from"./attr-setting.vue_vue_type_script_setup_true_lang-Rx2Z7krO.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-OPSjrJvJ.js";import"./attr-CLlbMhxO.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./content.vue_vue_type_script_setup_true_lang-B9VzIZnv.js";import"./decoration-img-CZl9mrsf.js";import"./attr.vue_vue_type_script_setup_true_lang-BN--zfly.js";import"./content-B6YfxEbd.js";import"./attr.vue_vue_type_script_setup_true_lang-BIDjj2ZQ.js";import"./content.vue_vue_type_script_setup_true_lang-C4EWc4Ny.js";import"./attr.vue_vue_type_script_setup_true_lang-CVwolQf4.js";import"./add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js";import"./content-Cj4lK4l8.js";import"./attr.vue_vue_type_script_setup_true_lang-BVV-rQuy.js";import"./content.vue_vue_type_script_setup_true_lang-CuEc-gLQ.js";import"./attr.vue_vue_type_script_setup_true_lang-DnkDutJb.js";import"./content-Dyh_0iwA.js";import"./decoration-ChND9qat.js";import"./attr.vue_vue_type_script_setup_true_lang-CTVcHVd7.js";import"./index.vue_vue_type_script_setup_true_lang-C384XBPz.js";import"./content-B1b0mSAw.js";import"./content.vue_vue_type_script_setup_true_lang-hItYL1wr.js";import"./attr.vue_vue_type_script_setup_true_lang-ChKJn1wI.js";import"./content-B7VEJItb.js";import"./attr.vue_vue_type_script_setup_true_lang-A0LOU1hn.js";import"./content.vue_vue_type_script_setup_true_lang-zA2x9af7.js";import"./attr.vue_vue_type_script_setup_true_lang-9MDVGbdQ.js";import"./content-CgQTA2IB.js";export{o as default};
diff --git a/server/public/admin/assets/attr-setting-D8C9Ndmf.js b/server/public/admin/assets/attr-setting-D8C9Ndmf.js
new file mode 100644
index 00000000..7e9c9e01
--- /dev/null
+++ b/server/public/admin/assets/attr-setting-D8C9Ndmf.js
@@ -0,0 +1 @@
+import{_ as o}from"./attr-setting.vue_vue_type_script_setup_true_lang-fvUxwXKi.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHHQOM-n.js";import"./attr-BsXOKCNj.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./content.vue_vue_type_script_setup_true_lang-u1kTovEN.js";import"./decoration-img-CZLpkXPN.js";import"./attr.vue_vue_type_script_setup_true_lang-c_YeWJqI.js";import"./content-Dyki4H78.js";import"./attr.vue_vue_type_script_setup_true_lang-Dy891kIt.js";import"./content.vue_vue_type_script_setup_true_lang-uukcy-Ti.js";import"./attr.vue_vue_type_script_setup_true_lang-6A60mJbu.js";import"./add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js";import"./content-Sf3nxxVG.js";import"./attr.vue_vue_type_script_setup_true_lang-Ca7p7CQy.js";import"./content.vue_vue_type_script_setup_true_lang-B-SEL-YW.js";import"./attr.vue_vue_type_script_setup_true_lang-DnkDutJb.js";import"./content-DblaaeJD.js";import"./decoration-C799ML-U.js";import"./attr.vue_vue_type_script_setup_true_lang-BnCnHgo6.js";import"./index.vue_vue_type_script_setup_true_lang-3vCdLVB9.js";import"./content-PkioGtTh.js";import"./content.vue_vue_type_script_setup_true_lang-BK6uSq1e.js";import"./attr.vue_vue_type_script_setup_true_lang-ChKJn1wI.js";import"./content-BeOu4XYf.js";import"./attr.vue_vue_type_script_setup_true_lang-mOGAGDW2.js";import"./content.vue_vue_type_script_setup_true_lang-DtEQqPIi.js";import"./attr.vue_vue_type_script_setup_true_lang-9MDVGbdQ.js";import"./content-C_MRybMI.js";export{o as default};
diff --git a/server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-Rx2Z7krO.js b/server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-fvUxwXKi.js
similarity index 89%
rename from server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-Rx2Z7krO.js
rename to server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-fvUxwXKi.js
index b7f91d1a..d7764002 100644
--- a/server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-Rx2Z7krO.js
+++ b/server/public/admin/assets/attr-setting.vue_vue_type_script_setup_true_lang-fvUxwXKi.js
@@ -1 +1 @@
-import{J as y,s as g}from"./element-plus-0wC3naml.js";import{e as b}from"./index-OPSjrJvJ.js";import{f as x,ak as o,I as _,a as r,aN as c,J as h,G as i,K as w,at as k}from"./@vue/runtime-core-C6bnekPw.js";import{Q as v}from"./@vue/shared-mAAVTE9n.js";import{y as C}from"./@vue/reactivity-DiY1c2vO.js";const B={class:"pages-setting"},E={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2 text-xl font-medium"},V=x({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(e,{emit:m}){const d=m,p=a=>{d("update:content",a)};return(a,N)=>{const f=y,u=g;return o(),_("div",B,[r(f,{shadow:"never",class:"!border-none flex"},{default:c(()=>{var t;return[h("div",E,v((t=e.widget)==null?void 0:t.title),1)]}),_:1}),r(u,{class:"w-full",style:{height:"calc(100% - 60px)"}},{default:c(()=>{var t,n,s,l;return[(o(),i(w,null,[(o(),i(k((n=C(b)[(t=e.widget)==null?void 0:t.name])==null?void 0:n.attr),{content:(s=e.widget)==null?void 0:s.content,styles:(l=e.widget)==null?void 0:l.styles,type:e.type,"onUpdate:content":p},null,40,["content","styles","type"]))],1024))]}),_:1})])}}});export{V as _};
+import{J as y,s as g}from"./element-plus-DFTWCWyi.js";import{e as b}from"./index-BHHQOM-n.js";import{f as x,ak as o,I as _,a as r,aN as c,J as h,G as i,K as w,at as k}from"./@vue/runtime-core-C6bnekPw.js";import{Q as v}from"./@vue/shared-mAAVTE9n.js";import{y as C}from"./@vue/reactivity-DiY1c2vO.js";const B={class:"pages-setting"},E={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2 text-xl font-medium"},V=x({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(e,{emit:m}){const d=m,p=a=>{d("update:content",a)};return(a,N)=>{const f=y,u=g;return o(),_("div",B,[r(f,{shadow:"never",class:"!border-none flex"},{default:c(()=>{var t;return[h("div",E,v((t=e.widget)==null?void 0:t.title),1)]}),_:1}),r(u,{class:"w-full",style:{height:"calc(100% - 60px)"}},{default:c(()=>{var t,n,s,l;return[(o(),i(w,null,[(o(),i(k((n=C(b)[(t=e.widget)==null?void 0:t.name])==null?void 0:n.attr),{content:(s=e.widget)==null?void 0:s.content,styles:(l=e.widget)==null?void 0:l.styles,type:e.type,"onUpdate:content":p},null,40,["content","styles","type"]))],1024))]}),_:1})])}}});export{V as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CVwolQf4.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-6A60mJbu.js
similarity index 92%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CVwolQf4.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-6A60mJbu.js
index 61f50b35..022f9713 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CVwolQf4.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-6A60mJbu.js
@@ -1 +1 @@
-import{J as b,B as y,C as E,G as w,I as B,D as C}from"./element-plus-0wC3naml.js";import{_ as I}from"./add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js";import{f as N,ak as k,I as O,a as t,aN as o,J as a,O as u,A as U}from"./@vue/runtime-core-C6bnekPw.js";import{y as s}from"./@vue/reactivity-DiY1c2vO.js";const g={class:"flex-1"},J=N({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(p,{emit:i}){const f=i,_=p,l=U({get:()=>_.content,set:m=>{f("update:content",m)}});return(m,e)=>{const x=E,c=y,d=b,r=B,v=w,V=C;return k(),O("div",null,[t(V,{"label-width":"70px"},{default:o(()=>[t(d,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[t(c,{label:"标题"},{default:o(()=>[t(x,{class:"w-[396px]",modelValue:s(l).title,"onUpdate:modelValue":e[0]||(e[0]=n=>s(l).title=n)},null,8,["modelValue"])]),_:1})]),_:1}),t(d,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[5]||(e[5]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),t(v,{modelValue:s(l).style,"onUpdate:modelValue":e[1]||(e[1]=n=>s(l).style=n)},{default:o(()=>[t(r,{value:1},{default:o(()=>[...e[3]||(e[3]=[u("横排",-1)])]),_:1}),t(r,{value:2},{default:o(()=>[...e[4]||(e[4]=[u("竖排",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(d,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[6]||(e[6]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"菜单"),a("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),a("div",g,[t(I,{modelValue:s(l).data,"onUpdate:modelValue":e[2]||(e[2]=n=>s(l).data=n)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{J as _};
+import{J as b,B as y,C as E,G as w,I as B,D as C}from"./element-plus-DFTWCWyi.js";import{_ as I}from"./add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js";import{f as N,ak as k,I as O,a as t,aN as o,J as a,O as u,A as U}from"./@vue/runtime-core-C6bnekPw.js";import{y as s}from"./@vue/reactivity-DiY1c2vO.js";const g={class:"flex-1"},J=N({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(p,{emit:i}){const f=i,_=p,l=U({get:()=>_.content,set:m=>{f("update:content",m)}});return(m,e)=>{const x=E,c=y,d=b,r=B,v=w,V=C;return k(),O("div",null,[t(V,{"label-width":"70px"},{default:o(()=>[t(d,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[t(c,{label:"标题"},{default:o(()=>[t(x,{class:"w-[396px]",modelValue:s(l).title,"onUpdate:modelValue":e[0]||(e[0]=n=>s(l).title=n)},null,8,["modelValue"])]),_:1})]),_:1}),t(d,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[5]||(e[5]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),t(v,{modelValue:s(l).style,"onUpdate:modelValue":e[1]||(e[1]=n=>s(l).style=n)},{default:o(()=>[t(r,{value:1},{default:o(()=>[...e[3]||(e[3]=[u("横排",-1)])]),_:1}),t(r,{value:2},{default:o(()=>[...e[4]||(e[4]=[u("竖排",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(d,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[6]||(e[6]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"菜单"),a("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),a("div",g,[t(I,{modelValue:s(l).data,"onUpdate:modelValue":e[2]||(e[2]=n=>s(l).data=n)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{J as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CTVcHVd7.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BnCnHgo6.js
similarity index 93%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CTVcHVd7.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BnCnHgo6.js
index d0bdf3d4..33f36237 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-CTVcHVd7.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BnCnHgo6.js
@@ -1 +1 @@
-import{J as E,B as C,G as F,I as N,C as B,D as z}from"./element-plus-0wC3naml.js";import{_ as G}from"./index.vue_vue_type_script_setup_true_lang-C384XBPz.js";import{_ as I}from"./picker-DlbAZkDm.js";import{f as O,ak as r,G as s,aN as t,a as l,O as p,H as i,J as y,A as j}from"./@vue/runtime-core-C6bnekPw.js";import{y as a}from"./@vue/reactivity-DiY1c2vO.js";const T=O({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(m,{emit:g}){const b=g,x=m,o=j({get:()=>x.content,set:_=>{b("update:content",_)}});return(_,e)=>{const u=N,f=F,d=C,k=B,V=I,v=G,U=E,w=z;return r(),s(w,{ref:"form","label-width":"80px",size:"large"},{default:t(()=>[l(U,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l(d,{label:"页面标题"},{default:t(()=>[l(f,{modelValue:a(o).title_type,"onUpdate:modelValue":e[0]||(e[0]=n=>a(o).title_type=n)},{default:t(()=>[l(u,{value:"1"},{default:t(()=>[...e[7]||(e[7]=[p("文字",-1)])]),_:1}),l(u,{value:"2"},{default:t(()=>[...e[8]||(e[8]=[p("图片",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),m.content.title_type==1?(r(),s(d,{key:0},{default:t(()=>[l(k,{modelValue:a(o).title,"onUpdate:modelValue":e[1]||(e[1]=n=>a(o).title=n),maxlength:"8","show-word-limit":"",class:"w-[300px]",placeholder:"请输入页面标题"},null,8,["modelValue"])]),_:1})):i("",!0),m.content.title_type==2?(r(),s(d,{key:1},{default:t(()=>[l(V,{modelValue:a(o).title_img,"onUpdate:modelValue":e[2]||(e[2]=n=>a(o).title_img=n),limit:1,size:"100px"},null,8,["modelValue"]),e[9]||(e[9]=y("div",{class:"form-tips"},"建议图片尺寸:300px*40px",-1))]),_:1})):i("",!0),m.content.title_type==1?(r(),s(d,{key:2,label:"文字颜色"},{default:t(()=>[l(f,{modelValue:a(o).text_color,"onUpdate:modelValue":e[3]||(e[3]=n=>a(o).text_color=n)},{default:t(()=>[l(u,{value:"1"},{default:t(()=>[...e[10]||(e[10]=[p("白色",-1)])]),_:1}),l(u,{value:"2"},{default:t(()=>[...e[11]||(e[11]=[p("黑色",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})):i("",!0),l(d,{label:"页面背景"},{default:t(()=>[l(f,{modelValue:a(o).bg_type,"onUpdate:modelValue":e[4]||(e[4]=n=>a(o).bg_type=n)},{default:t(()=>[l(u,{value:"1"},{default:t(()=>[...e[12]||(e[12]=[p("背景颜色",-1)])]),_:1}),l(u,{value:"2"},{default:t(()=>[...e[13]||(e[13]=[p("背景图片",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),m.content.bg_type==1?(r(),s(d,{key:3},{default:t(()=>[l(v,{modelValue:a(o).bg_color,"onUpdate:modelValue":e[5]||(e[5]=n=>a(o).bg_color=n),"reset-color":"#F5F5F5"},null,8,["modelValue"])]),_:1})):i("",!0),m.content.bg_type==2?(r(),s(d,{key:4},{default:t(()=>[l(V,{modelValue:a(o).bg_image,"onUpdate:modelValue":e[6]||(e[6]=n=>a(o).bg_image=n),limit:1,size:"100px"},null,8,["modelValue"]),e[14]||(e[14]=y("div",{class:"form-tips"},"建议图片尺寸:750px*高度不限",-1))]),_:1})):i("",!0)]),_:1})]),_:1},512)}}});export{T as _};
+import{J as E,B as C,G as F,I as N,C as B,D as z}from"./element-plus-DFTWCWyi.js";import{_ as G}from"./index.vue_vue_type_script_setup_true_lang-3vCdLVB9.js";import{_ as I}from"./picker-BCRrEZaA.js";import{f as O,ak as r,G as s,aN as t,a as l,O as p,H as i,J as y,A as j}from"./@vue/runtime-core-C6bnekPw.js";import{y as a}from"./@vue/reactivity-DiY1c2vO.js";const T=O({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(m,{emit:g}){const b=g,x=m,o=j({get:()=>x.content,set:_=>{b("update:content",_)}});return(_,e)=>{const u=N,f=F,d=C,k=B,V=I,v=G,U=E,w=z;return r(),s(w,{ref:"form","label-width":"80px",size:"large"},{default:t(()=>[l(U,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l(d,{label:"页面标题"},{default:t(()=>[l(f,{modelValue:a(o).title_type,"onUpdate:modelValue":e[0]||(e[0]=n=>a(o).title_type=n)},{default:t(()=>[l(u,{value:"1"},{default:t(()=>[...e[7]||(e[7]=[p("文字",-1)])]),_:1}),l(u,{value:"2"},{default:t(()=>[...e[8]||(e[8]=[p("图片",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),m.content.title_type==1?(r(),s(d,{key:0},{default:t(()=>[l(k,{modelValue:a(o).title,"onUpdate:modelValue":e[1]||(e[1]=n=>a(o).title=n),maxlength:"8","show-word-limit":"",class:"w-[300px]",placeholder:"请输入页面标题"},null,8,["modelValue"])]),_:1})):i("",!0),m.content.title_type==2?(r(),s(d,{key:1},{default:t(()=>[l(V,{modelValue:a(o).title_img,"onUpdate:modelValue":e[2]||(e[2]=n=>a(o).title_img=n),limit:1,size:"100px"},null,8,["modelValue"]),e[9]||(e[9]=y("div",{class:"form-tips"},"建议图片尺寸:300px*40px",-1))]),_:1})):i("",!0),m.content.title_type==1?(r(),s(d,{key:2,label:"文字颜色"},{default:t(()=>[l(f,{modelValue:a(o).text_color,"onUpdate:modelValue":e[3]||(e[3]=n=>a(o).text_color=n)},{default:t(()=>[l(u,{value:"1"},{default:t(()=>[...e[10]||(e[10]=[p("白色",-1)])]),_:1}),l(u,{value:"2"},{default:t(()=>[...e[11]||(e[11]=[p("黑色",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})):i("",!0),l(d,{label:"页面背景"},{default:t(()=>[l(f,{modelValue:a(o).bg_type,"onUpdate:modelValue":e[4]||(e[4]=n=>a(o).bg_type=n)},{default:t(()=>[l(u,{value:"1"},{default:t(()=>[...e[12]||(e[12]=[p("背景颜色",-1)])]),_:1}),l(u,{value:"2"},{default:t(()=>[...e[13]||(e[13]=[p("背景图片",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),m.content.bg_type==1?(r(),s(d,{key:3},{default:t(()=>[l(v,{modelValue:a(o).bg_color,"onUpdate:modelValue":e[5]||(e[5]=n=>a(o).bg_color=n),"reset-color":"#F5F5F5"},null,8,["modelValue"])]),_:1})):i("",!0),m.content.bg_type==2?(r(),s(d,{key:4},{default:t(()=>[l(V,{modelValue:a(o).bg_image,"onUpdate:modelValue":e[6]||(e[6]=n=>a(o).bg_image=n),limit:1,size:"100px"},null,8,["modelValue"]),e[14]||(e[14]=y("div",{class:"form-tips"},"建议图片尺寸:750px*高度不限",-1))]),_:1})):i("",!0)]),_:1})]),_:1},512)}}});export{T as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BVV-rQuy.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-Ca7p7CQy.js
similarity index 94%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BVV-rQuy.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-Ca7p7CQy.js
index 1018b652..57a0de7c 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BVV-rQuy.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-Ca7p7CQy.js
@@ -1 +1 @@
-import{J as B,G as F,I as N,B as O,P as U,Q as g,D as C}from"./element-plus-0wC3naml.js";import{_ as I}from"./add-nav.vue_vue_type_script_setup_true_lang-DqZ_o5sa.js";import{f as j,ak as d,I as m,a as l,aN as o,J as s,O as x,F as c,ap as v,A as D}from"./@vue/runtime-core-C6bnekPw.js";import{y as n}from"./@vue/reactivity-DiY1c2vO.js";const G={class:"flex-1 mt-4"},P=j({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(V,{emit:b}){const y=b,w=V,a=D({get:()=>w.content,set:u=>{y("update:content",u)}});return(u,e)=>{const r=N,E=F,p=g,i=U,_=O,f=B,k=C;return d(),m("div",null,[l(k,{"label-width":"70px"},{default:o(()=>[l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[6]||(e[6]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),l(E,{modelValue:n(a).style,"onUpdate:modelValue":e[0]||(e[0]=t=>n(a).style=t)},{default:o(()=>[l(r,{value:1},{default:o(()=>[...e[4]||(e[4]=[x("固定显示",-1)])]),_:1}),l(r,{value:2},{default:o(()=>[...e[5]||(e[5]=[x("分页滑动",-1)])]),_:1})]),_:1},8,["modelValue"]),l(_,{label:"每行数量",class:"mt-4"},{default:o(()=>[l(i,{modelValue:n(a).per_line,"onUpdate:modelValue":e[1]||(e[1]=t=>n(a).per_line=t),style:{width:"300px"}},{default:o(()=>[(d(),m(c,null,v(5,t=>l(p,{key:t,label:t+"个",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),l(_,{label:"显示行数"},{default:o(()=>[l(i,{modelValue:n(a).show_line,"onUpdate:modelValue":e[2]||(e[2]=t=>n(a).show_line=t),style:{width:"300px"}},{default:o(()=>[(d(),m(c,null,v(2,t=>l(p,{key:t,label:t+"行",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[7]||(e[7]=s("div",{class:"flex items-end"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),s("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),s("div",G,[l(I,{modelValue:n(a).data,"onUpdate:modelValue":e[3]||(e[3]=t=>n(a).data=t)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{P as _};
+import{J as B,G as F,I as N,B as O,P as U,Q as g,D as C}from"./element-plus-DFTWCWyi.js";import{_ as I}from"./add-nav.vue_vue_type_script_setup_true_lang-BN-blUPj.js";import{f as j,ak as d,I as m,a as l,aN as o,J as s,O as x,F as c,ap as v,A as D}from"./@vue/runtime-core-C6bnekPw.js";import{y as n}from"./@vue/reactivity-DiY1c2vO.js";const G={class:"flex-1 mt-4"},P=j({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(V,{emit:b}){const y=b,w=V,a=D({get:()=>w.content,set:u=>{y("update:content",u)}});return(u,e)=>{const r=N,E=F,p=g,i=U,_=O,f=B,k=C;return d(),m("div",null,[l(k,{"label-width":"70px"},{default:o(()=>[l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[6]||(e[6]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),l(E,{modelValue:n(a).style,"onUpdate:modelValue":e[0]||(e[0]=t=>n(a).style=t)},{default:o(()=>[l(r,{value:1},{default:o(()=>[...e[4]||(e[4]=[x("固定显示",-1)])]),_:1}),l(r,{value:2},{default:o(()=>[...e[5]||(e[5]=[x("分页滑动",-1)])]),_:1})]),_:1},8,["modelValue"]),l(_,{label:"每行数量",class:"mt-4"},{default:o(()=>[l(i,{modelValue:n(a).per_line,"onUpdate:modelValue":e[1]||(e[1]=t=>n(a).per_line=t),style:{width:"300px"}},{default:o(()=>[(d(),m(c,null,v(5,t=>l(p,{key:t,label:t+"个",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),l(_,{label:"显示行数"},{default:o(()=>[l(i,{modelValue:n(a).show_line,"onUpdate:modelValue":e[2]||(e[2]=t=>n(a).show_line=t),style:{width:"300px"}},{default:o(()=>[(d(),m(c,null,v(2,t=>l(p,{key:t,label:t+"行",value:t},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),l(f,{shadow:"never",class:"!border-none flex mt-2"},{default:o(()=>[e[7]||(e[7]=s("div",{class:"flex items-end"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),s("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),s("div",G,[l(I,{modelValue:n(a).data,"onUpdate:modelValue":e[3]||(e[3]=t=>n(a).data=t)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{P as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BIDjj2ZQ.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-Dy891kIt.js
similarity index 93%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BIDjj2ZQ.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-Dy891kIt.js
index d6b7555e..af3fb348 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BIDjj2ZQ.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-Dy891kIt.js
@@ -1 +1 @@
-import{J as j,B as A,C as F,g as J,i as S,D as z}from"./element-plus-0wC3naml.js";import{_ as G}from"./index-BHTgr4Ka.js";import{c as H,i as k}from"./index-E47--KT7.js";import{_ as R}from"./picker-B9b8bj5N.js";import{_ as T}from"./picker-DlbAZkDm.js";import{D as q}from"./vuedraggable-5bKFmC7X.js";import{k as v}from"./lodash-es-C2A-Pj28.js";import{f as K,ak as d,I as b,a as o,aN as s,J as n,G as u,H as r,O as L,A as M}from"./@vue/runtime-core-C6bnekPw.js";import{y as _}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"flex-1"},Q={class:"bg-fill-light w-full p-4 mt-4"},W={class:"flex-1"},X={class:"flex-1 flex items-center"},Y={class:"drag-move cursor-move ml-auto"},Z={key:0,class:"mt-4"},f=5,me=K({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(m,{emit:y}){const p=y,c=m,g=M({get:()=>c.content,set:a=>{p("update:content",a)}}),w=()=>{var a;if(((a=c.content.data)==null?void 0:a.length){var i;if(((i=c.content.data)==null?void 0:i.length)<=1)return k.msgError("最少保留一张图片");const e=v(c.content);e.data.splice(a,1),p("update:content",e)};return(a,e)=>{const i=T,U=R,C=F,h=A,B=J,D=H,N=G,$=S,I=j,O=z;return d(),b("div",null,[o(O,{"label-width":"70px"},{default:s(()=>[o(I,{shadow:"never",class:"!border-none flex mt-2"},{default:s(()=>{var x;return[e[2]||(e[2]=n("div",{class:"flex items-end"},[n("div",{class:"text-base text-[#101010] font-medium"},"图片设置"),n("div",{class:"text-xs text-tx-secondary ml-2"}," 最多添加5张,建议图片尺寸:750px*200px ")],-1)),n("div",P,[o(_(q),{class:"draggable",modelValue:_(g).data,"onUpdate:modelValue":e[0]||(e[0]=t=>_(g).data=t),animation:"300",handle:".drag-move"},{item:s(({element:t,index:V})=>[(d(),u(N,{key:V,onClose:l=>E(V),class:"w-full"},{default:s(()=>[n("div",Q,[o(i,{width:"396px",height:"196px",modelValue:t.image,"onUpdate:modelValue":l=>t.image=l,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),n("div",W,[o(h,{class:"mt-[18px]",label:"图片链接"},{default:s(()=>[m.type=="mobile"?(d(),u(U,{key:0,modelValue:t.link,"onUpdate:modelValue":l=>t.link=l},null,8,["modelValue","onUpdate:modelValue"])):r("",!0),m.type=="pc"?(d(),u(C,{key:1,placeholder:"请输入链接",modelValue:t.link.path,"onUpdate:modelValue":l=>t.link.path=l},null,8,["modelValue","onUpdate:modelValue"])):r("",!0)]),_:2},1024),o(h,{label:"是否显示",class:"mt-[18px] !mb-0"},{default:s(()=>[n("div",X,[o(B,{modelValue:t.is_show,"onUpdate:modelValue":l=>t.is_show=l,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),n("div",Y,[o(D,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),((x=m.content.data)==null?void 0:x.length)[...e[1]||(e[1]=[L("添加图片",-1)])]),_:1})])):r("",!0)]}),_:1})]),_:1})])}}});export{me as _};
+import{J as j,B as A,C as F,g as J,i as S,D as z}from"./element-plus-DFTWCWyi.js";import{_ as G}from"./index-CbfZXeGu.js";import{c as H,i as k}from"./index-DBREMm_z.js";import{_ as R}from"./picker-DPnqJ8Gk.js";import{_ as T}from"./picker-BCRrEZaA.js";import{D as q}from"./vuedraggable-5bKFmC7X.js";import{k as v}from"./lodash-es-C2A-Pj28.js";import{f as K,ak as d,I as b,a as o,aN as s,J as n,G as u,H as r,O as L,A as M}from"./@vue/runtime-core-C6bnekPw.js";import{y as _}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"flex-1"},Q={class:"bg-fill-light w-full p-4 mt-4"},W={class:"flex-1"},X={class:"flex-1 flex items-center"},Y={class:"drag-move cursor-move ml-auto"},Z={key:0,class:"mt-4"},f=5,me=K({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},type:{type:String,default:"mobile"}},emits:["update:content"],setup(m,{emit:y}){const p=y,c=m,g=M({get:()=>c.content,set:a=>{p("update:content",a)}}),w=()=>{var a;if(((a=c.content.data)==null?void 0:a.length){var i;if(((i=c.content.data)==null?void 0:i.length)<=1)return k.msgError("最少保留一张图片");const e=v(c.content);e.data.splice(a,1),p("update:content",e)};return(a,e)=>{const i=T,U=R,C=F,h=A,B=J,D=H,N=G,$=S,I=j,O=z;return d(),b("div",null,[o(O,{"label-width":"70px"},{default:s(()=>[o(I,{shadow:"never",class:"!border-none flex mt-2"},{default:s(()=>{var x;return[e[2]||(e[2]=n("div",{class:"flex items-end"},[n("div",{class:"text-base text-[#101010] font-medium"},"图片设置"),n("div",{class:"text-xs text-tx-secondary ml-2"}," 最多添加5张,建议图片尺寸:750px*200px ")],-1)),n("div",P,[o(_(q),{class:"draggable",modelValue:_(g).data,"onUpdate:modelValue":e[0]||(e[0]=t=>_(g).data=t),animation:"300",handle:".drag-move"},{item:s(({element:t,index:V})=>[(d(),u(N,{key:V,onClose:l=>E(V),class:"w-full"},{default:s(()=>[n("div",Q,[o(i,{width:"396px",height:"196px",modelValue:t.image,"onUpdate:modelValue":l=>t.image=l,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),n("div",W,[o(h,{class:"mt-[18px]",label:"图片链接"},{default:s(()=>[m.type=="mobile"?(d(),u(U,{key:0,modelValue:t.link,"onUpdate:modelValue":l=>t.link=l},null,8,["modelValue","onUpdate:modelValue"])):r("",!0),m.type=="pc"?(d(),u(C,{key:1,placeholder:"请输入链接",modelValue:t.link.path,"onUpdate:modelValue":l=>t.link.path=l},null,8,["modelValue","onUpdate:modelValue"])):r("",!0)]),_:2},1024),o(h,{label:"是否显示",class:"mt-[18px] !mb-0"},{default:s(()=>[n("div",X,[o(B,{modelValue:t.is_show,"onUpdate:modelValue":l=>t.is_show=l,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),n("div",Y,[o(D,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),((x=m.content.data)==null?void 0:x.length)[...e[1]||(e[1]=[L("添加图片",-1)])]),_:1})])):r("",!0)]}),_:1})]),_:1})])}}});export{me as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BO_riRgF.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-MNr7rU8G.js
similarity index 93%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BO_riRgF.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-MNr7rU8G.js
index a602fba4..7ceb64b2 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BO_riRgF.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-MNr7rU8G.js
@@ -1 +1 @@
-import{J as P,B as T,C as j,g as H,i as L,D as M}from"./element-plus-0wC3naml.js";import{_ as Q}from"./index-BHTgr4Ka.js";import{_ as R}from"./picker-B9b8bj5N.js";import{_ as q}from"./picker-DlbAZkDm.js";import{c as G,i as x}from"./index-E47--KT7.js";import{_ as K}from"./index.vue_vue_type_script_setup_true_lang-C384XBPz.js";import{D as W}from"./vuedraggable-5bKFmC7X.js";import{f as X,ak as V,I as v,a as e,aN as t,J as a,O as h,H as Y,F as Z,A as w}from"./@vue/runtime-core-C6bnekPw.js";import{y as m}from"./@vue/reactivity-DiY1c2vO.js";import{o as ee,Q as y}from"./@vue/shared-mAAVTE9n.js";const le={class:"mb-[18px] max-w-[400px]"},oe={class:"bg-fill-light w-full p-4 mt-4"},te={class:"upload-btn w-[60px] h-[60px]"},ae={class:"upload-btn w-[60px] h-[60px]"},se={class:"flex-1 flex items-center"},ne={class:"drag-move cursor-move ml-auto"},de={key:0,class:"mt-4"},c=5,p=2,ge=X({__name:"attr",props:{modelValue:{type:Object,default:()=>({list:[],style:{}})}},emits:["update:modelValue"],setup(k,{emit:C}){const U=k,E=C,n=w({get(){return U.modelValue},set(s){E("update:modelValue",s)}}),$=w(()=>{var s;return((s=n.value.list)==null?void 0:s.filter(l=>l.is_show=="1"))||[]}),z=()=>{var s;((s=n.value.list)==null?void 0:s.length){var l;if(((l=n.value.list)==null?void 0:l.length)<=p)return x.msgError(`最少保留${p}个`);n.value.list.splice(s,1)},D=s=>s.relatedContext.index!=0,N=s=>{if($.value.length
{const _=P,b=K,i=T,f=G,g=q,F=j,I=R,S=H,A=Q,J=L,O=M;return V(),v(Z,null,[e(_,{shadow:"never",class:"!border-none flex"},{default:t(()=>[...l[3]||(l[3]=[a("div",{class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2 text-xl font-medium"},[h(" 底部导航设置 "),a("span",{class:"form-tips ml-[10px] !mt-0"}," 至少添加2个导航,最多添加5个导航 ")],-1)])]),_:1}),e(O,{"label-width":"70px"},{default:t(()=>[e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l[4]||(l[4]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),e(i,{label:"默认颜色"},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.default_color,"onUpdate:modelValue":l[0]||(l[0]=r=>m(n).style.default_color=r),"default-color":"#999999"},null,8,["modelValue"])]),_:1}),e(i,{label:"选中颜色",style:{"margin-bottom":"0"}},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.selected_color,"onUpdate:modelValue":l[1]||(l[1]=r=>m(n).style.selected_color=r),"default-color":"#4173ff"},null,8,["modelValue"])]),_:1})]),_:1}),e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>{var r;return[l[7]||(l[7]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),a("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),a("div",le,[e(m(W),{class:"draggable",modelValue:m(n).list,"onUpdate:modelValue":l[2]||(l[2]=o=>m(n).list=o),animation:"300",draggable:".draggable",handle:".drag-move",move:D,"item-key":"index"},{item:t(({element:o,index:u})=>[e(A,{onClose:d=>B(u),class:ee(["max-w-[400px]",{draggable:u!=0}]),"show-close":u!==0},{default:t(()=>[a("div",oe,[e(i,{label:"导航图标"},{default:t(()=>[e(g,{modelValue:o.unselected,"onUpdate:modelValue":d=>o.unselected=d,"upload-class":"bg-body","exclude-domain":"",size:"60px"},{upload:t(()=>[a("div",te,[e(f,{name:"el-icon-Plus",size:16}),l[5]||(l[5]=a("span",{class:"text-xs leading-5"}," 未选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"]),e(g,{modelValue:o.selected,"onUpdate:modelValue":d=>o.selected=d,"exclude-domain":"","upload-class":"bg-body",size:"60px"},{upload:t(()=>[a("div",ae,[e(f,{name:"el-icon-Plus",size:16}),l[6]||(l[6]=a("span",{class:"text-xs leading-5"}," 选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"导航名称"},{default:t(()=>[e(F,{modelValue:o.name,"onUpdate:modelValue":d=>o.name=d,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"链接地址"},{default:t(()=>[e(I,{"is-tab":!0,disabled:u===0,modelValue:o.link,"onUpdate:modelValue":d=>o.link=d},null,8,["disabled","modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"是否显示"},{default:t(()=>[a("div",se,[e(S,{disabled:u==0,modelValue:o.is_show,"onUpdate:modelValue":d=>o.is_show=d,"active-value":1,"inactive-value":0,onChange:d=>N(o)},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"]),a("div",ne,[e(f,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])]),_:2},1032,["onClose","show-close","class"])]),_:1},8,["modelValue"])]),((r=m(n).list)==null?void 0:r.length){var o;return[h(" 添加导航 "+y((o=m(n).list)==null?void 0:o.length)+" / "+y(c),1)]}),_:1})])):Y("",!0)]}),_:1})]),_:1})],64)}}});export{ge as _};
+import{J as P,B as T,C as j,g as H,i as L,D as M}from"./element-plus-DFTWCWyi.js";import{_ as Q}from"./index-CbfZXeGu.js";import{_ as R}from"./picker-DPnqJ8Gk.js";import{_ as q}from"./picker-BCRrEZaA.js";import{c as G,i as x}from"./index-DBREMm_z.js";import{_ as K}from"./index.vue_vue_type_script_setup_true_lang-3vCdLVB9.js";import{D as W}from"./vuedraggable-5bKFmC7X.js";import{f as X,ak as V,I as v,a as e,aN as t,J as a,O as h,H as Y,F as Z,A as w}from"./@vue/runtime-core-C6bnekPw.js";import{y as m}from"./@vue/reactivity-DiY1c2vO.js";import{o as ee,Q as y}from"./@vue/shared-mAAVTE9n.js";const le={class:"mb-[18px] max-w-[400px]"},oe={class:"bg-fill-light w-full p-4 mt-4"},te={class:"upload-btn w-[60px] h-[60px]"},ae={class:"upload-btn w-[60px] h-[60px]"},se={class:"flex-1 flex items-center"},ne={class:"drag-move cursor-move ml-auto"},de={key:0,class:"mt-4"},c=5,p=2,ge=X({__name:"attr",props:{modelValue:{type:Object,default:()=>({list:[],style:{}})}},emits:["update:modelValue"],setup(k,{emit:C}){const U=k,E=C,n=w({get(){return U.modelValue},set(s){E("update:modelValue",s)}}),$=w(()=>{var s;return((s=n.value.list)==null?void 0:s.filter(l=>l.is_show=="1"))||[]}),z=()=>{var s;((s=n.value.list)==null?void 0:s.length){var l;if(((l=n.value.list)==null?void 0:l.length)<=p)return x.msgError(`最少保留${p}个`);n.value.list.splice(s,1)},D=s=>s.relatedContext.index!=0,N=s=>{if($.value.length
{const _=P,b=K,i=T,f=G,g=q,F=j,I=R,S=H,A=Q,J=L,O=M;return V(),v(Z,null,[e(_,{shadow:"never",class:"!border-none flex"},{default:t(()=>[...l[3]||(l[3]=[a("div",{class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2 text-xl font-medium"},[h(" 底部导航设置 "),a("span",{class:"form-tips ml-[10px] !mt-0"}," 至少添加2个导航,最多添加5个导航 ")],-1)])]),_:1}),e(O,{"label-width":"70px"},{default:t(()=>[e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>[l[4]||(l[4]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"展示样式")],-1)),e(i,{label:"默认颜色"},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.default_color,"onUpdate:modelValue":l[0]||(l[0]=r=>m(n).style.default_color=r),"default-color":"#999999"},null,8,["modelValue"])]),_:1}),e(i,{label:"选中颜色",style:{"margin-bottom":"0"}},{default:t(()=>[e(b,{class:"max-w-[400px]",modelValue:m(n).style.selected_color,"onUpdate:modelValue":l[1]||(l[1]=r=>m(n).style.selected_color=r),"default-color":"#4173ff"},null,8,["modelValue"])]),_:1})]),_:1}),e(_,{shadow:"never",class:"!border-none flex mt-2"},{default:t(()=>{var r;return[l[7]||(l[7]=a("div",{class:"flex items-end mb-4"},[a("div",{class:"text-base text-[#101010] font-medium"},"菜单设置"),a("div",{class:"text-xs text-tx-secondary ml-2"},"建议图片尺寸:100px*100px")],-1)),a("div",le,[e(m(W),{class:"draggable",modelValue:m(n).list,"onUpdate:modelValue":l[2]||(l[2]=o=>m(n).list=o),animation:"300",draggable:".draggable",handle:".drag-move",move:D,"item-key":"index"},{item:t(({element:o,index:u})=>[e(A,{onClose:d=>B(u),class:ee(["max-w-[400px]",{draggable:u!=0}]),"show-close":u!==0},{default:t(()=>[a("div",oe,[e(i,{label:"导航图标"},{default:t(()=>[e(g,{modelValue:o.unselected,"onUpdate:modelValue":d=>o.unselected=d,"upload-class":"bg-body","exclude-domain":"",size:"60px"},{upload:t(()=>[a("div",te,[e(f,{name:"el-icon-Plus",size:16}),l[5]||(l[5]=a("span",{class:"text-xs leading-5"}," 未选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"]),e(g,{modelValue:o.selected,"onUpdate:modelValue":d=>o.selected=d,"exclude-domain":"","upload-class":"bg-body",size:"60px"},{upload:t(()=>[a("div",ae,[e(f,{name:"el-icon-Plus",size:16}),l[6]||(l[6]=a("span",{class:"text-xs leading-5"}," 选中 ",-1))])]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"导航名称"},{default:t(()=>[e(F,{modelValue:o.name,"onUpdate:modelValue":d=>o.name=d,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"链接地址"},{default:t(()=>[e(I,{"is-tab":!0,disabled:u===0,modelValue:o.link,"onUpdate:modelValue":d=>o.link=d},null,8,["disabled","modelValue","onUpdate:modelValue"])]),_:2},1024),e(i,{label:"是否显示"},{default:t(()=>[a("div",se,[e(S,{disabled:u==0,modelValue:o.is_show,"onUpdate:modelValue":d=>o.is_show=d,"active-value":1,"inactive-value":0,onChange:d=>N(o)},null,8,["disabled","modelValue","onUpdate:modelValue","onChange"]),a("div",ne,[e(f,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])]),_:2},1032,["onClose","show-close","class"])]),_:1},8,["modelValue"])]),((r=m(n).list)==null?void 0:r.length){var o;return[h(" 添加导航 "+y((o=m(n).list)==null?void 0:o.length)+" / "+y(c),1)]}),_:1})])):Y("",!0)]}),_:1})]),_:1})],64)}}});export{ge as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BN--zfly.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-c_YeWJqI.js
similarity index 92%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BN--zfly.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-c_YeWJqI.js
index dfe246b0..80bed9da 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-BN--zfly.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-c_YeWJqI.js
@@ -1 +1 @@
-import{J as V,B as w,C as x,D as b}from"./element-plus-0wC3naml.js";import{_ as g}from"./picker-DlbAZkDm.js";import{f as k,ak as E,I as U,a as e,aN as n,J as y,A as B}from"./@vue/runtime-core-C6bnekPw.js";import{y as o}from"./@vue/reactivity-DiY1c2vO.js";const j=k({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(u,{emit:r}){const p=r,i=u,l=B({get:()=>i.content,set:d=>{p("update:content",d)}});return(d,t)=>{const s=x,m=w,_=g,c=V,f=b;return E(),U("div",null,[e(f,{"label-width":"90px",size:"large","label-position":"top"},{default:n(()=>[e(c,{shadow:"never",class:"!border-none flex mt-2"},{default:n(()=>[e(m,{label:"平台名称"},{default:n(()=>[e(s,{class:"w-[400px]","show-word-limit":"",maxlength:"20",modelValue:o(l).title,"onUpdate:modelValue":t[0]||(t[0]=a=>o(l).title=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"客服二维码"},{default:n(()=>[y("div",null,[e(_,{modelValue:o(l).qrcode,"onUpdate:modelValue":t[1]||(t[1]=a=>o(l).qrcode=a),"exclude-domain":""},null,8,["modelValue"])])]),_:1}),e(m,{label:"备注"},{default:n(()=>[e(s,{class:"w-[400px]","show-word-limit":"",maxlength:"20",modelValue:o(l).remark,"onUpdate:modelValue":t[2]||(t[2]=a=>o(l).remark=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"联系电话"},{default:n(()=>[e(s,{class:"w-[400px]",modelValue:o(l).mobile,"onUpdate:modelValue":t[3]||(t[3]=a=>o(l).mobile=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"服务时间"},{default:n(()=>[e(s,{class:"w-[400px]","show-word-limit":"",maxlength:"20",modelValue:o(l).time,"onUpdate:modelValue":t[4]||(t[4]=a=>o(l).time=a)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})])}}});export{j as _};
+import{J as V,B as w,C as x,D as b}from"./element-plus-DFTWCWyi.js";import{_ as g}from"./picker-BCRrEZaA.js";import{f as k,ak as E,I as U,a as e,aN as n,J as y,A as B}from"./@vue/runtime-core-C6bnekPw.js";import{y as o}from"./@vue/reactivity-DiY1c2vO.js";const j=k({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(u,{emit:r}){const p=r,i=u,l=B({get:()=>i.content,set:d=>{p("update:content",d)}});return(d,t)=>{const s=x,m=w,_=g,c=V,f=b;return E(),U("div",null,[e(f,{"label-width":"90px",size:"large","label-position":"top"},{default:n(()=>[e(c,{shadow:"never",class:"!border-none flex mt-2"},{default:n(()=>[e(m,{label:"平台名称"},{default:n(()=>[e(s,{class:"w-[400px]","show-word-limit":"",maxlength:"20",modelValue:o(l).title,"onUpdate:modelValue":t[0]||(t[0]=a=>o(l).title=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"客服二维码"},{default:n(()=>[y("div",null,[e(_,{modelValue:o(l).qrcode,"onUpdate:modelValue":t[1]||(t[1]=a=>o(l).qrcode=a),"exclude-domain":""},null,8,["modelValue"])])]),_:1}),e(m,{label:"备注"},{default:n(()=>[e(s,{class:"w-[400px]","show-word-limit":"",maxlength:"20",modelValue:o(l).remark,"onUpdate:modelValue":t[2]||(t[2]=a=>o(l).remark=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"联系电话"},{default:n(()=>[e(s,{class:"w-[400px]",modelValue:o(l).mobile,"onUpdate:modelValue":t[3]||(t[3]=a=>o(l).mobile=a)},null,8,["modelValue"])]),_:1}),e(m,{label:"服务时间"},{default:n(()=>[e(s,{class:"w-[400px]","show-word-limit":"",maxlength:"20",modelValue:o(l).time,"onUpdate:modelValue":t[4]||(t[4]=a=>o(l).time=a)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})])}}});export{j as _};
diff --git a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-A0LOU1hn.js b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-mOGAGDW2.js
similarity index 93%
rename from server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-A0LOU1hn.js
rename to server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-mOGAGDW2.js
index e0008096..1d6a21b6 100644
--- a/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-A0LOU1hn.js
+++ b/server/public/admin/assets/attr.vue_vue_type_script_setup_true_lang-mOGAGDW2.js
@@ -1 +1 @@
-import{J as I,B as O,C as j,g as A,i as F,D as J}from"./element-plus-0wC3naml.js";import{_ as z}from"./index-BHTgr4Ka.js";import{c as G,i as g}from"./index-E47--KT7.js";import{_ as H}from"./picker-B9b8bj5N.js";import{_ as R}from"./picker-DlbAZkDm.js";import{D as S}from"./vuedraggable-5bKFmC7X.js";import{k as v}from"./lodash-es-C2A-Pj28.js";import{f as T,ak as _,I as h,a as t,aN as a,J as s,G as q,O as K,H as L,A as M}from"./@vue/runtime-core-C6bnekPw.js";import{y as p}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"bg-fill-light flex items-center w-full p-4 mt-4"},Q={class:"ml-3 flex-1"},W={class:"flex-1 flex items-center"},X={class:"drag-move cursor-move ml-auto"},Y={key:0,class:"mt-4"},r=5,ce=T({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(u,{emit:k}){const d=k,m=u,f=M({get:()=>m.content,set:l=>{d("update:content",l)}}),b=()=>{var l;if(((l=m.content.data)==null?void 0:l.length){var c;if(((c=m.content.data)==null?void 0:c.length)<=1)return g.msgError("最少保留一张图片");const e=v(m.content);e.data.splice(l,1),d("update:content",e)};return(l,e)=>{const c=R,y=j,i=O,E=H,U=A,C=G,B=z,D=F,N=I,$=J;return _(),h("div",null,[t($,{"label-width":"70px"},{default:a(()=>[t(N,{shadow:"never",class:"!border-none flex mt-2"},{default:a(()=>{var x;return[e[2]||(e[2]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单"),s("div",{class:"text-xs text-tx-secondary ml-2"}," 最多添加5张,建议图片尺寸:750px*200px ")],-1)),t(p(S),{class:"draggable",modelValue:p(f).data,"onUpdate:modelValue":e[0]||(e[0]=o=>p(f).data=o),animation:"300",handle:".drag-move","item-key":"index"},{item:a(({element:o,index:V})=>[(_(),q(B,{key:V,onClose:n=>w(V),class:"w-[467px]"},{default:a(()=>[s("div",P,[t(c,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),s("div",Q,[t(i,{label:"图片名称"},{default:a(()=>[t(y,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(i,{class:"mt-[18px]",label:"图片链接"},{default:a(()=>[t(E,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(i,{label:"是否显示",class:"mt-[18px]"},{default:a(()=>[s("div",W,[t(U,{modelValue:o.is_show,"onUpdate:modelValue":n=>o.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),s("div",X,[t(C,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"]),((x=u.content.data)==null?void 0:x.length)[...e[1]||(e[1]=[K("添加图片",-1)])]),_:1})])):L("",!0)]}),_:1})]),_:1})])}}});export{ce as _};
+import{J as I,B as O,C as j,g as A,i as F,D as J}from"./element-plus-DFTWCWyi.js";import{_ as z}from"./index-CbfZXeGu.js";import{c as G,i as g}from"./index-DBREMm_z.js";import{_ as H}from"./picker-DPnqJ8Gk.js";import{_ as R}from"./picker-BCRrEZaA.js";import{D as S}from"./vuedraggable-5bKFmC7X.js";import{k as v}from"./lodash-es-C2A-Pj28.js";import{f as T,ak as _,I as h,a as t,aN as a,J as s,G as q,O as K,H as L,A as M}from"./@vue/runtime-core-C6bnekPw.js";import{y as p}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"bg-fill-light flex items-center w-full p-4 mt-4"},Q={class:"ml-3 flex-1"},W={class:"flex-1 flex items-center"},X={class:"drag-move cursor-move ml-auto"},Y={key:0,class:"mt-4"},r=5,ce=T({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},emits:["update:content"],setup(u,{emit:k}){const d=k,m=u,f=M({get:()=>m.content,set:l=>{d("update:content",l)}}),b=()=>{var l;if(((l=m.content.data)==null?void 0:l.length){var c;if(((c=m.content.data)==null?void 0:c.length)<=1)return g.msgError("最少保留一张图片");const e=v(m.content);e.data.splice(l,1),d("update:content",e)};return(l,e)=>{const c=R,y=j,i=O,E=H,U=A,C=G,B=z,D=F,N=I,$=J;return _(),h("div",null,[t($,{"label-width":"70px"},{default:a(()=>[t(N,{shadow:"never",class:"!border-none flex mt-2"},{default:a(()=>{var x;return[e[2]||(e[2]=s("div",{class:"flex items-end mb-4"},[s("div",{class:"text-base text-[#101010] font-medium"},"菜单"),s("div",{class:"text-xs text-tx-secondary ml-2"}," 最多添加5张,建议图片尺寸:750px*200px ")],-1)),t(p(S),{class:"draggable",modelValue:p(f).data,"onUpdate:modelValue":e[0]||(e[0]=o=>p(f).data=o),animation:"300",handle:".drag-move","item-key":"index"},{item:a(({element:o,index:V})=>[(_(),q(B,{key:V,onClose:n=>w(V),class:"w-[467px]"},{default:a(()=>[s("div",P,[t(c,{modelValue:o.image,"onUpdate:modelValue":n=>o.image=n,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),s("div",Q,[t(i,{label:"图片名称"},{default:a(()=>[t(y,{modelValue:o.name,"onUpdate:modelValue":n=>o.name=n,placeholder:"请输入名称"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(i,{class:"mt-[18px]",label:"图片链接"},{default:a(()=>[t(E,{modelValue:o.link,"onUpdate:modelValue":n=>o.link=n},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),t(i,{label:"是否显示",class:"mt-[18px]"},{default:a(()=>[s("div",W,[t(U,{modelValue:o.is_show,"onUpdate:modelValue":n=>o.is_show=n,"active-value":"1","inactive-value":"0"},null,8,["modelValue","onUpdate:modelValue"]),s("div",X,[t(C,{name:"el-icon-Rank",size:"18"})])])]),_:2},1024)])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"]),((x=u.content.data)==null?void 0:x.length)[...e[1]||(e[1]=[K("添加图片",-1)])]),_:1})])):L("",!0)]}),_:1})]),_:1})])}}});export{ce as _};
diff --git a/server/public/admin/assets/auth-CnJ8rnDs.js b/server/public/admin/assets/auth-DSRMKMRZ.js
similarity index 75%
rename from server/public/admin/assets/auth-CnJ8rnDs.js
rename to server/public/admin/assets/auth-DSRMKMRZ.js
index fa702a8b..7394c0d0 100644
--- a/server/public/admin/assets/auth-CnJ8rnDs.js
+++ b/server/public/admin/assets/auth-DSRMKMRZ.js
@@ -1 +1 @@
-import{_ as o}from"./auth.vue_vue_type_script_setup_true_lang-Cd0iTg-I.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./menu-CJerAkpY.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./role-DPqAO58h.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./auth.vue_vue_type_script_setup_true_lang-D4rvURhD.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./menu-CvPcniJ1.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./role-DTNlgcHU.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-Cd0iTg-I.js b/server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-D4rvURhD.js
similarity index 92%
rename from server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-Cd0iTg-I.js
rename to server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-D4rvURhD.js
index 8ecfb3b1..b4709e34 100644
--- a/server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-Cd0iTg-I.js
+++ b/server/public/admin/assets/auth.vue_vue_type_script_setup_true_lang-D4rvURhD.js
@@ -1 +1 @@
-import{D as I,s as G,B as J,H as M,Z as O,L as P}from"./element-plus-0wC3naml.js";import{m as U}from"./menu-CJerAkpY.js";import{a as Z}from"./role-DPqAO58h.js";import{_ as j}from"./index-nymJKQXP.js";import{x as z}from"./index-E47--KT7.js";import{f as Q,ak as k,I as W,a as l,aN as d,aP as X,G as Y,J as y,n as x}from"./@vue/runtime-core-C6bnekPw.js";import{y as c,a as $,q as f,n as r,r as ee}from"./@vue/reactivity-DiY1c2vO.js";const te={class:"edit-popup"},de=Q({__name:"auth",emits:["success","close"],setup(ae,{expose:C,emit:g}){const _=g,o=f(),h=f(),u=f(),b=r(!1),i=r(!0),m=r(!1),v=r([]),p=r([]),s=ee({id:"",name:"",desc:"",sort:0,data_scope:1,menu_id:[]}),E={name:[{required:!0,message:"请输入名称",trigger:["blur"]}]},w=()=>{m.value=!0,U().then(e=>{p.value=e,v.value=z(e),x(()=>{A()}),m.value=!1})},R=()=>{var a,n;const e=(a=o.value)==null?void 0:a.getCheckedKeys(),t=(n=o.value)==null?void 0:n.getHalfCheckedKeys();return e==null||e.unshift.apply(e,t),e},A=()=>{s.menu_id.forEach(e=>{x(()=>{var t;(t=o.value)==null||t.setChecked(e,!0,!1)})})},D=e=>{const t=p.value;for(let a=0;a{var t,a;e?(t=o.value)==null||t.setCheckedKeys(v.value.map(n=>n.id)):(a=o.value)==null||a.setCheckedKeys([])},B=async()=>{var e,t;await((e=h.value)==null?void 0:e.validate()),s.menu_id=R(),await Z(s),(t=u.value)==null||t.close(),_("success")},V=()=>{_("close")},S=()=>{var e;(e=u.value)==null||e.open()},T=async e=>{for(const t in s)e[t]!=null&&e[t]!=null&&(s[t]=e[t])};return w(),C({open:S,setFormData:T}),(e,t)=>{const a=M,n=O,F=J,L=G,N=I,q=P;return k(),W("div",te,[l(j,{ref_key:"popupRef",ref:u,title:"分配权限",async:!0,width:"550px",onConfirm:B,onClose:V},{default:d(()=>[X((k(),Y(N,{class:"ls-form",ref_key:"formRef",ref:h,rules:E,model:c(s),"label-width":"60px"},{default:d(()=>[l(L,{class:"h-[400px] sm:h-[600px]"},{default:d(()=>[l(F,{label:"权限",prop:"menu_id"},{default:d(()=>[y("div",null,[l(a,{label:"展开/折叠",onChange:D}),l(a,{label:"全选/不全选",onChange:K}),l(a,{modelValue:c(i),"onUpdate:modelValue":t[0]||(t[0]=H=>$(i)?i.value=H:null),label:"父子联动"},null,8,["modelValue"]),y("div",null,[l(n,{ref_key:"treeRef",ref:o,data:c(p),props:{label:"name",children:"children"},"check-strictly":!c(i),"node-key":"id","default-expand-all":c(b),"show-checkbox":""},null,8,["data","check-strictly","default-expand-all"])])])]),_:1})]),_:1})]),_:1},8,["model"])),[[q,c(m)]])]),_:1},512)])}}});export{de as _};
+import{D as I,s as G,B as J,H as M,Z as O,L as P}from"./element-plus-DFTWCWyi.js";import{m as U}from"./menu-CvPcniJ1.js";import{a as Z}from"./role-DTNlgcHU.js";import{_ as j}from"./index-BwF7vczx.js";import{x as z}from"./index-DBREMm_z.js";import{f as Q,ak as k,I as W,a as l,aN as d,aP as X,G as Y,J as y,n as x}from"./@vue/runtime-core-C6bnekPw.js";import{y as c,a as $,q as f,n as r,r as ee}from"./@vue/reactivity-DiY1c2vO.js";const te={class:"edit-popup"},de=Q({__name:"auth",emits:["success","close"],setup(ae,{expose:C,emit:g}){const _=g,o=f(),h=f(),u=f(),b=r(!1),i=r(!0),m=r(!1),v=r([]),p=r([]),s=ee({id:"",name:"",desc:"",sort:0,data_scope:1,menu_id:[]}),E={name:[{required:!0,message:"请输入名称",trigger:["blur"]}]},w=()=>{m.value=!0,U().then(e=>{p.value=e,v.value=z(e),x(()=>{A()}),m.value=!1})},R=()=>{var a,n;const e=(a=o.value)==null?void 0:a.getCheckedKeys(),t=(n=o.value)==null?void 0:n.getHalfCheckedKeys();return e==null||e.unshift.apply(e,t),e},A=()=>{s.menu_id.forEach(e=>{x(()=>{var t;(t=o.value)==null||t.setChecked(e,!0,!1)})})},D=e=>{const t=p.value;for(let a=0;a{var t,a;e?(t=o.value)==null||t.setCheckedKeys(v.value.map(n=>n.id)):(a=o.value)==null||a.setCheckedKeys([])},B=async()=>{var e,t;await((e=h.value)==null?void 0:e.validate()),s.menu_id=R(),await Z(s),(t=u.value)==null||t.close(),_("success")},V=()=>{_("close")},S=()=>{var e;(e=u.value)==null||e.open()},T=async e=>{for(const t in s)e[t]!=null&&e[t]!=null&&(s[t]=e[t])};return w(),C({open:S,setFormData:T}),(e,t)=>{const a=M,n=O,F=J,L=G,N=I,q=P;return k(),W("div",te,[l(j,{ref_key:"popupRef",ref:u,title:"分配权限",async:!0,width:"550px",onConfirm:B,onClose:V},{default:d(()=>[X((k(),Y(N,{class:"ls-form",ref_key:"formRef",ref:h,rules:E,model:c(s),"label-width":"60px"},{default:d(()=>[l(L,{class:"h-[400px] sm:h-[600px]"},{default:d(()=>[l(F,{label:"权限",prop:"menu_id"},{default:d(()=>[y("div",null,[l(a,{label:"展开/折叠",onChange:D}),l(a,{label:"全选/不全选",onChange:K}),l(a,{modelValue:c(i),"onUpdate:modelValue":t[0]||(t[0]=H=>$(i)?i.value=H:null),label:"父子联动"},null,8,["modelValue"]),y("div",null,[l(n,{ref_key:"treeRef",ref:o,data:c(p),props:{label:"name",children:"children"},"check-strictly":!c(i),"node-key":"id","default-expand-all":c(b),"show-checkbox":""},null,8,["data","check-strictly","default-expand-all"])])])]),_:1})]),_:1})]),_:1},8,["model"])),[[q,c(m)]])]),_:1},512)])}}});export{de as _};
diff --git a/server/public/admin/assets/balance_details-CuLNXHHw.js b/server/public/admin/assets/balance_details-DPuAKDSi.js
similarity index 91%
rename from server/public/admin/assets/balance_details-CuLNXHHw.js
rename to server/public/admin/assets/balance_details-DPuAKDSi.js
index 4b308fd8..a6aa88e0 100644
--- a/server/public/admin/assets/balance_details-CuLNXHHw.js
+++ b/server/public/admin/assets/balance_details-DPuAKDSi.js
@@ -1 +1 @@
-import{K as L,D as N,B as K,C as I,P as O,Q as z,i as J,J as Q,M as R,N as S,L as $}from"./element-plus-0wC3naml.js";import{_ as j}from"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import{h as q}from"./index-E47--KT7.js";import{_ as A}from"./index.vue_vue_type_script_setup_true_lang-DBEwrTRf.js";import{w as G}from"./@vue/runtime-dom-DDAG46FW.js";import{g as M,h as H}from"./finance-C48kuhTG.js";import{u as W}from"./useDictOptions-CypOxw17.js";import{u as X}from"./usePaging-VsbTxSU0.js";import{f as v,ak as s,I as h,a as e,aN as n,F as Y,ap as Z,G as w,O as p,aP as ee,J as _}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,a as te,r as oe}from"./@vue/reactivity-DiY1c2vO.js";import{Q as y,o as ae}from"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const ne={class:"flex items-center"},le={class:"flex justify-end mt-4"},ie=v({name:"balanceDetail"}),Xe=v({...ie,setup(re){const l=oe({user_info:"",change_type:"",start_time:"",end_time:""}),{pager:r,getLists:d,resetPage:c,resetParams:C}=X({fetchFun:M,params:l}),{optionsData:x}=W({change_type:{api:H}});return d(),(me,a)=>{const V=L,E=I,m=K,u=z,T=O,k=A,f=J,B=N,g=Q,i=S,D=q,P=R,U=j,F=$;return s(),h("div",null,[e(g,{class:"!border-none",shadow:"never"},{default:n(()=>[e(V,{type:"warning",title:"温馨提示:用户账户变动记录",closable:!1,"show-icon":""}),e(B,{ref:"formRef",class:"mb-[-16px] mt-[16px]",model:o(l),inline:!0},{default:n(()=>[e(m,{class:"w-[280px]",label:"用户信息"},{default:n(()=>[e(E,{modelValue:o(l).user_info,"onUpdate:modelValue":a[0]||(a[0]=t=>o(l).user_info=t),placeholder:"请输入用户账号/昵称/手机号",clearable:"",onKeyup:G(o(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(m,{class:"w-[280px]",label:"变动类型"},{default:n(()=>[e(T,{modelValue:o(l).change_type,"onUpdate:modelValue":a[1]||(a[1]=t=>o(l).change_type=t)},{default:n(()=>[e(u,{label:"全部",value:""}),(s(!0),h(Y,null,Z(o(x).change_type,(t,b)=>(s(),w(u,{key:b,label:t,value:b},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(m,{label:"记录时间"},{default:n(()=>[e(k,{startTime:o(l).start_time,"onUpdate:startTime":a[2]||(a[2]=t=>o(l).start_time=t),endTime:o(l).end_time,"onUpdate:endTime":a[3]||(a[3]=t=>o(l).end_time=t)},null,8,["startTime","endTime"])]),_:1}),e(m,null,{default:n(()=>[e(f,{type:"primary",onClick:o(c)},{default:n(()=>[...a[5]||(a[5]=[p("查询",-1)])]),_:1},8,["onClick"]),e(f,{onClick:o(C)},{default:n(()=>[...a[6]||(a[6]=[p("重置",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"])]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:n(()=>[ee((s(),w(P,{size:"large",data:o(r).lists},{default:n(()=>[e(i,{label:"用户账号",prop:"account","min-width":"100"}),e(i,{label:"用户昵称","min-width":"160"},{default:n(({row:t})=>[_("div",ne,[e(D,{class:"flex-none mr-2",src:t.avatar,width:40,height:40,"preview-teleported":"",fit:"contain"},null,8,["src"]),p(" "+y(t.nickname),1)])]),_:1}),e(i,{label:"手机号码",prop:"mobile","min-width":"100"}),e(i,{label:"变动金额",prop:"change_amount","min-width":"100"},{default:n(({row:t})=>[_("span",{class:ae({"text-error":t.action==2})},y(t.change_amount),3)]),_:1}),e(i,{label:"剩余金额",prop:"left_amount","min-width":"100"}),e(i,{label:"变动类型",prop:"change_type_desc","min-width":"120"}),e(i,{label:"来源单号",prop:"source_sn","min-width":"100"}),e(i,{label:"记录时间",prop:"create_time","min-width":"120"})]),_:1},8,["data"])),[[F,o(r).loading]]),_("div",le,[e(U,{modelValue:o(r),"onUpdate:modelValue":a[4]||(a[4]=t=>te(r)?r.value=t:null),onChange:o(d)},null,8,["modelValue","onChange"])])]),_:1})])}}});export{Xe as default};
+import{K as L,D as N,B as K,C as I,P as O,Q as z,i as J,J as Q,M as R,N as S,L as $}from"./element-plus-DFTWCWyi.js";import{_ as j}from"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import{h as q}from"./index-DBREMm_z.js";import{_ as A}from"./index.vue_vue_type_script_setup_true_lang-DPC_NOWM.js";import{w as G}from"./@vue/runtime-dom-DDAG46FW.js";import{g as M,h as H}from"./finance-YaEgIEMc.js";import{u as W}from"./useDictOptions-Dl6xXBty.js";import{u as X}from"./usePaging-VsbTxSU0.js";import{f as v,ak as s,I as h,a as e,aN as n,F as Y,ap as Z,G as w,O as p,aP as ee,J as _}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,a as te,r as oe}from"./@vue/reactivity-DiY1c2vO.js";import{Q as y,o as ae}from"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const ne={class:"flex items-center"},le={class:"flex justify-end mt-4"},ie=v({name:"balanceDetail"}),Xe=v({...ie,setup(re){const l=oe({user_info:"",change_type:"",start_time:"",end_time:""}),{pager:r,getLists:d,resetPage:c,resetParams:C}=X({fetchFun:M,params:l}),{optionsData:x}=W({change_type:{api:H}});return d(),(me,a)=>{const V=L,E=I,m=K,u=z,T=O,k=A,f=J,B=N,g=Q,i=S,D=q,P=R,U=j,F=$;return s(),h("div",null,[e(g,{class:"!border-none",shadow:"never"},{default:n(()=>[e(V,{type:"warning",title:"温馨提示:用户账户变动记录",closable:!1,"show-icon":""}),e(B,{ref:"formRef",class:"mb-[-16px] mt-[16px]",model:o(l),inline:!0},{default:n(()=>[e(m,{class:"w-[280px]",label:"用户信息"},{default:n(()=>[e(E,{modelValue:o(l).user_info,"onUpdate:modelValue":a[0]||(a[0]=t=>o(l).user_info=t),placeholder:"请输入用户账号/昵称/手机号",clearable:"",onKeyup:G(o(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(m,{class:"w-[280px]",label:"变动类型"},{default:n(()=>[e(T,{modelValue:o(l).change_type,"onUpdate:modelValue":a[1]||(a[1]=t=>o(l).change_type=t)},{default:n(()=>[e(u,{label:"全部",value:""}),(s(!0),h(Y,null,Z(o(x).change_type,(t,b)=>(s(),w(u,{key:b,label:t,value:b},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(m,{label:"记录时间"},{default:n(()=>[e(k,{startTime:o(l).start_time,"onUpdate:startTime":a[2]||(a[2]=t=>o(l).start_time=t),endTime:o(l).end_time,"onUpdate:endTime":a[3]||(a[3]=t=>o(l).end_time=t)},null,8,["startTime","endTime"])]),_:1}),e(m,null,{default:n(()=>[e(f,{type:"primary",onClick:o(c)},{default:n(()=>[...a[5]||(a[5]=[p("查询",-1)])]),_:1},8,["onClick"]),e(f,{onClick:o(C)},{default:n(()=>[...a[6]||(a[6]=[p("重置",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"])]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:n(()=>[ee((s(),w(P,{size:"large",data:o(r).lists},{default:n(()=>[e(i,{label:"用户账号",prop:"account","min-width":"100"}),e(i,{label:"用户昵称","min-width":"160"},{default:n(({row:t})=>[_("div",ne,[e(D,{class:"flex-none mr-2",src:t.avatar,width:40,height:40,"preview-teleported":"",fit:"contain"},null,8,["src"]),p(" "+y(t.nickname),1)])]),_:1}),e(i,{label:"手机号码",prop:"mobile","min-width":"100"}),e(i,{label:"变动金额",prop:"change_amount","min-width":"100"},{default:n(({row:t})=>[_("span",{class:ae({"text-error":t.action==2})},y(t.change_amount),3)]),_:1}),e(i,{label:"剩余金额",prop:"left_amount","min-width":"100"}),e(i,{label:"变动类型",prop:"change_type_desc","min-width":"120"}),e(i,{label:"来源单号",prop:"source_sn","min-width":"100"}),e(i,{label:"记录时间",prop:"create_time","min-width":"120"})]),_:1},8,["data"])),[[F,o(r).loading]]),_("div",le,[e(U,{modelValue:o(r),"onUpdate:modelValue":a[4]||(a[4]=t=>te(r)?r.value=t:null),onChange:o(d)},null,8,["modelValue","onChange"])])]),_:1})])}}});export{Xe as default};
diff --git a/server/public/admin/assets/bind-work-wechat-srD3ph6p.js b/server/public/admin/assets/bind-work-wechat-CWkTPdoN.js
similarity index 96%
rename from server/public/admin/assets/bind-work-wechat-srD3ph6p.js
rename to server/public/admin/assets/bind-work-wechat-CWkTPdoN.js
index 9a20e0c8..53ebd1bf 100644
--- a/server/public/admin/assets/bind-work-wechat-srD3ph6p.js
+++ b/server/public/admin/assets/bind-work-wechat-CWkTPdoN.js
@@ -1 +1 @@
-import{E as _,d as T,i as $}from"./element-plus-0wC3naml.js";import{l as S}from"./@element-plus/icons-vue-HOEUG8sr.js";import{_ as j}from"./footer.vue_vue_type_script_setup_true_lang-DHdwl9ND.js";import{u as z,g as A,P as I,a as D,b as F,_ as M}from"./index-E47--KT7.js";import{a as Q}from"./wecomOauthPostMessage-C_e6VGrO.js";import{a as V}from"./vue-router-QlpZ4wdW.js";import{f as X,b as J,d as K,ak as d,I as l,J as a,a as c,aN as y,F as G,O as H,n as C}from"./@vue/runtime-core-C6bnekPw.js";import{y as U,n as k}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Y={class:"bind-wx flex flex-col"},Z={class:"flex-1 flex items-center justify-center"},tt={class:"bind-wx-card bg-body rounded-md px-10 py-10 w-[480px]"},et={key:0,class:"text-center py-10"},ot={key:0,class:"text-center py-10"},rt={key:1,id:"wxwork_bind_qrcode_container",class:"wxwork-qrcode mx-auto"},it={class:"mt-8 flex justify-center gap-4"},m="bind_wxwork",g="like_admin_wx_bind_oauth",nt=X({__name:"bind-work-wechat",setup(at){const p=V(),f=z(),x=k(!1),w=k(!1),u=k({corp_id:"",agent_id:""}),L=()=>/wxwork/i.test(navigator.userAgent),v=()=>window.location.origin+window.location.pathname+"?bind_wxwork=1";function W(){const o=new URLSearchParams(window.location.search),t=window.location.hash||"",e=t.includes("?")?t.split("?").slice(1).join("?"):"";return e&&new URLSearchParams(e).forEach((r,s)=>{o.has(s)||o.set(s,r)}),o}const E=()=>{f.logout()},B=async()=>{try{await f.getUserInfo()}catch{}if(f.isPaw===0){p.replace("/change-password");return}p.replace(I.INDEX)},b=async o=>{w.value=!0;try{await F({code:o}),window.history.replaceState({},"",window.location.pathname),await B()}catch(t){console.error(t),_.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"绑定失败"),w.value=!1}};let n=null;const P=async()=>{if(!u.value.corp_id)return;x.value=!0,window.WwLogin||await new Promise((t,e)=>{const r=document.createElement("script");r.src="https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.7.js",r.onload=()=>t(),r.onerror=()=>e(new Error("加载企业微信 JS 失败")),document.head.appendChild(r)}),await C(),x.value=!1,await C();const o=encodeURIComponent(v());new window.WwLogin({id:"wxwork_bind_qrcode_container",appid:u.value.corp_id,agentid:u.value.agent_id,redirect_uri:o,lang:"zh",state:m,href:"",self_redirect:!1})};return J(async()=>{let o="";try{o=(new URLSearchParams(window.location.search).get("code")||"").trim()}catch{o=""}if(!A()){_.error("请先登录"),p.push(I.LOGIN);return}const t=W(),e=o||(t.get("code")||"").trim(),r=t.get("state"),s=r!=null?String(r).trim():"",R=s===m||s==="admin_bind_wx"||s.toLowerCase()===m.toLowerCase(),N=t.get("bind_wxwork")==="1",O=!!e&&s===""&&p.currentRoute.value.path==="/bind-work-wechat";if(e&&(R||N||O)){if(sessionStorage.getItem(g)===e)return;sessionStorage.setItem(g,e);try{await b(e)}finally{sessionStorage.removeItem(g)}return}try{const i=await D();if(!(i!=null&&i.enabled)||!i.corp_id){_.error("企业微信未配置,请联系管理员");return}if(u.value={corp_id:i.corp_id,agent_id:i.agent_id},L()){w.value=!0;const h=encodeURIComponent(v()),q=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${i.corp_id}&redirect_uri=${h}&response_type=code&scope=snsapi_privateinfo&agentid=${i.agent_id}&state=${m}#wechat_redirect`;window.location.href=q;return}n==null||n(),n=Q({pathIncludes:"bind-work-wechat",lockKey:g,wxBindState:m,onCode:h=>b(h)}),await P()}catch(i){console.error(i),_.error("获取企业微信配置失败")}}),K(()=>{n==null||n(),n=null}),(o,t)=>{const e=T,r=$;return d(),l("div",Y,[a("div",Z,[a("div",tt,[t[4]||(t[4]=a("div",{class:"text-center text-2xl font-medium mb-2"},"绑定企业微信",-1)),t[5]||(t[5]=a("div",{class:"text-center text-gray-500 text-sm mb-8"}," 根据安全策略,需绑定企业微信账号后方可使用管理后台 ",-1)),w.value?(d(),l("div",et,[c(e,{class:"is-loading mb-4",size:40,color:"var(--el-color-primary)"},{default:y(()=>[c(U(S))]),_:1}),t[0]||(t[0]=a("div",{class:"text-gray-500"},"企业微信授权中...",-1))])):(d(),l(G,{key:1},[x.value?(d(),l("div",ot,[c(e,{class:"is-loading",size:32,color:"var(--el-color-primary)"},{default:y(()=>[c(U(S))]),_:1}),t[1]||(t[1]=a("div",{class:"mt-2 text-gray-400 text-sm"},"加载扫码...",-1))])):(d(),l("div",rt)),t[2]||(t[2]=a("div",{class:"text-center text-sm text-gray-400 mt-4"}," 请使用企业微信扫描二维码完成绑定 ",-1))],64)),a("div",it,[c(r,{onClick:E},{default:y(()=>[...t[3]||(t[3]=[H("退出登录",-1)])]),_:1})])])]),c(j)])}}}),Xt=M(nt,[["__scopeId","data-v-d4a61522"]]);export{Xt as default};
+import{E as _,d as T,i as $}from"./element-plus-DFTWCWyi.js";import{l as S}from"./@element-plus/icons-vue-HOEUG8sr.js";import{_ as j}from"./footer.vue_vue_type_script_setup_true_lang-CGxuEXz5.js";import{u as z,g as A,P as I,a as D,b as F,_ as M}from"./index-DBREMm_z.js";import{a as Q}from"./wecomOauthPostMessage-C_e6VGrO.js";import{a as V}from"./vue-router-QlpZ4wdW.js";import{f as X,b as J,d as K,ak as d,I as l,J as a,a as c,aN as y,F as G,O as H,n as C}from"./@vue/runtime-core-C6bnekPw.js";import{y as U,n as k}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Y={class:"bind-wx flex flex-col"},Z={class:"flex-1 flex items-center justify-center"},tt={class:"bind-wx-card bg-body rounded-md px-10 py-10 w-[480px]"},et={key:0,class:"text-center py-10"},ot={key:0,class:"text-center py-10"},rt={key:1,id:"wxwork_bind_qrcode_container",class:"wxwork-qrcode mx-auto"},it={class:"mt-8 flex justify-center gap-4"},m="bind_wxwork",g="like_admin_wx_bind_oauth",nt=X({__name:"bind-work-wechat",setup(at){const p=V(),f=z(),x=k(!1),w=k(!1),u=k({corp_id:"",agent_id:""}),L=()=>/wxwork/i.test(navigator.userAgent),v=()=>window.location.origin+window.location.pathname+"?bind_wxwork=1";function W(){const o=new URLSearchParams(window.location.search),t=window.location.hash||"",e=t.includes("?")?t.split("?").slice(1).join("?"):"";return e&&new URLSearchParams(e).forEach((r,s)=>{o.has(s)||o.set(s,r)}),o}const E=()=>{f.logout()},B=async()=>{try{await f.getUserInfo()}catch{}if(f.isPaw===0){p.replace("/change-password");return}p.replace(I.INDEX)},b=async o=>{w.value=!0;try{await F({code:o}),window.history.replaceState({},"",window.location.pathname),await B()}catch(t){console.error(t),_.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"绑定失败"),w.value=!1}};let n=null;const P=async()=>{if(!u.value.corp_id)return;x.value=!0,window.WwLogin||await new Promise((t,e)=>{const r=document.createElement("script");r.src="https://wwcdn.weixin.qq.com/node/wework/wwopen/js/wwLogin-1.2.7.js",r.onload=()=>t(),r.onerror=()=>e(new Error("加载企业微信 JS 失败")),document.head.appendChild(r)}),await C(),x.value=!1,await C();const o=encodeURIComponent(v());new window.WwLogin({id:"wxwork_bind_qrcode_container",appid:u.value.corp_id,agentid:u.value.agent_id,redirect_uri:o,lang:"zh",state:m,href:"",self_redirect:!1})};return J(async()=>{let o="";try{o=(new URLSearchParams(window.location.search).get("code")||"").trim()}catch{o=""}if(!A()){_.error("请先登录"),p.push(I.LOGIN);return}const t=W(),e=o||(t.get("code")||"").trim(),r=t.get("state"),s=r!=null?String(r).trim():"",R=s===m||s==="admin_bind_wx"||s.toLowerCase()===m.toLowerCase(),N=t.get("bind_wxwork")==="1",O=!!e&&s===""&&p.currentRoute.value.path==="/bind-work-wechat";if(e&&(R||N||O)){if(sessionStorage.getItem(g)===e)return;sessionStorage.setItem(g,e);try{await b(e)}finally{sessionStorage.removeItem(g)}return}try{const i=await D();if(!(i!=null&&i.enabled)||!i.corp_id){_.error("企业微信未配置,请联系管理员");return}if(u.value={corp_id:i.corp_id,agent_id:i.agent_id},L()){w.value=!0;const h=encodeURIComponent(v()),q=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${i.corp_id}&redirect_uri=${h}&response_type=code&scope=snsapi_privateinfo&agentid=${i.agent_id}&state=${m}#wechat_redirect`;window.location.href=q;return}n==null||n(),n=Q({pathIncludes:"bind-work-wechat",lockKey:g,wxBindState:m,onCode:h=>b(h)}),await P()}catch(i){console.error(i),_.error("获取企业微信配置失败")}}),K(()=>{n==null||n(),n=null}),(o,t)=>{const e=T,r=$;return d(),l("div",Y,[a("div",Z,[a("div",tt,[t[4]||(t[4]=a("div",{class:"text-center text-2xl font-medium mb-2"},"绑定企业微信",-1)),t[5]||(t[5]=a("div",{class:"text-center text-gray-500 text-sm mb-8"}," 根据安全策略,需绑定企业微信账号后方可使用管理后台 ",-1)),w.value?(d(),l("div",et,[c(e,{class:"is-loading mb-4",size:40,color:"var(--el-color-primary)"},{default:y(()=>[c(U(S))]),_:1}),t[0]||(t[0]=a("div",{class:"text-gray-500"},"企业微信授权中...",-1))])):(d(),l(G,{key:1},[x.value?(d(),l("div",ot,[c(e,{class:"is-loading",size:32,color:"var(--el-color-primary)"},{default:y(()=>[c(U(S))]),_:1}),t[1]||(t[1]=a("div",{class:"mt-2 text-gray-400 text-sm"},"加载扫码...",-1))])):(d(),l("div",rt)),t[2]||(t[2]=a("div",{class:"text-center text-sm text-gray-400 mt-4"}," 请使用企业微信扫描二维码完成绑定 ",-1))],64)),a("div",it,[c(r,{onClick:E},{default:y(()=>[...t[3]||(t[3]=[H("退出登录",-1)])]),_:1})])])]),c(j)])}}}),Xt=M(nt,[["__scopeId","data-v-d4a61522"]]);export{Xt as default};
diff --git a/server/public/admin/assets/cache-k4QSZNlp.js b/server/public/admin/assets/cache-DxTWDONP.js
similarity index 94%
rename from server/public/admin/assets/cache-k4QSZNlp.js
rename to server/public/admin/assets/cache-DxTWDONP.js
index 8678dd83..6bd05a65 100644
--- a/server/public/admin/assets/cache-k4QSZNlp.js
+++ b/server/public/admin/assets/cache-DxTWDONP.js
@@ -1 +1 @@
-import{K as c,J as _,M as d,N as f,i as u}from"./element-plus-0wC3naml.js";import{i as h,B as b}from"./index-E47--KT7.js";import{f as i,ak as w,I as C,a as t,aN as o,O as k}from"./@vue/runtime-core-C6bnekPw.js";import{y,n as E}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const x={class:"cache"},B=i({name:"cache"}),st=i({...B,setup(N){const m=E([{content:"系统缓存",desc:"系统运行过程中产生的各类缓存数据"}]),n=async()=>{await h.confirm("确认清除系统缓存?"),await b(),window.location.reload()};return(g,r)=>{const p=c,a=_,e=f,l=u,s=d;return w(),C("div",x,[t(a,{class:"!border-none",shadow:"never"},{default:o(()=>[t(p,{type:"warning",title:"温馨提示:管理系统运行过程中产生的缓存",closable:!1,"show-icon":""})]),_:1}),t(a,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[t(s,{data:y(m),size:"large"},{default:o(()=>[t(e,{label:"管理内容",prop:"content","min-width":"130"}),t(e,{label:"内容说明",prop:"desc","min-width":"180"}),t(e,{label:"操作",width:"130",fixed:"right"},{default:o(()=>[t(l,{type:"primary",link:"",onClick:n},{default:o(()=>[...r[0]||(r[0]=[k("清除系统缓存",-1)])]),_:1})]),_:1})]),_:1},8,["data"])]),_:1})])}}});export{st as default};
+import{K as c,J as _,M as d,N as f,i as u}from"./element-plus-DFTWCWyi.js";import{i as h,B as b}from"./index-DBREMm_z.js";import{f as i,ak as w,I as C,a as t,aN as o,O as k}from"./@vue/runtime-core-C6bnekPw.js";import{y,n as E}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const x={class:"cache"},B=i({name:"cache"}),st=i({...B,setup(N){const m=E([{content:"系统缓存",desc:"系统运行过程中产生的各类缓存数据"}]),n=async()=>{await h.confirm("确认清除系统缓存?"),await b(),window.location.reload()};return(g,r)=>{const p=c,a=_,e=f,l=u,s=d;return w(),C("div",x,[t(a,{class:"!border-none",shadow:"never"},{default:o(()=>[t(p,{type:"warning",title:"温馨提示:管理系统运行过程中产生的缓存",closable:!1,"show-icon":""})]),_:1}),t(a,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[t(s,{data:y(m),size:"large"},{default:o(()=>[t(e,{label:"管理内容",prop:"content","min-width":"130"}),t(e,{label:"内容说明",prop:"desc","min-width":"180"}),t(e,{label:"操作",width:"130",fixed:"right"},{default:o(()=>[t(l,{type:"primary",link:"",onClick:n},{default:o(()=>[...r[0]||(r[0]=[k("清除系统缓存",-1)])]),_:1})]),_:1})]),_:1},8,["data"])]),_:1})])}}});export{st as default};
diff --git a/server/public/admin/assets/change-password-CX-eiL2A.js b/server/public/admin/assets/change-password-CSbxsbOa.js
similarity index 93%
rename from server/public/admin/assets/change-password-CX-eiL2A.js
rename to server/public/admin/assets/change-password-CSbxsbOa.js
index 82cdcc6e..a9f99c36 100644
--- a/server/public/admin/assets/change-password-CX-eiL2A.js
+++ b/server/public/admin/assets/change-password-CSbxsbOa.js
@@ -1 +1 @@
-import{E as p,B as b,C as v,D as E,i as h}from"./element-plus-0wC3naml.js";import{u as V,g as C,P,c as B,d as F,_ as I}from"./index-E47--KT7.js";import{w as L}from"./@vue/runtime-dom-DDAG46FW.js";import{u as N}from"./useLockFn-X4Qce5KO.js";import{_ as z}from"./footer.vue_vue_type_script_setup_true_lang-DHdwl9ND.js";import{a as R}from"./vue-router-QlpZ4wdW.js";import{f as S,b as q,ak as U,I as D,J as i,a as s,aN as t,O as K}from"./@vue/runtime-core-C6bnekPw.js";import{y as u,q as M,r as O}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const T={class:"change-password flex flex-col"},$={class:"flex-1 flex items-center justify-center"},j={class:"change-password-card bg-body rounded-md px-10 py-10 w-[480px]"},G=S({__name:"change-password",setup(J){const n=M(),_=R(),d=V();q(()=>{C()||(p.error("请先登录"),_.push(P.LOGIN))});const e=O({password:"",password_confirm:""}),w={password:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"密码长度不能少于6位",trigger:"blur"}],password_confirm:[{required:!0,validator:(a,o,r)=>{o===""?r(new Error("请再次输入密码")):o!==e.password?r(new Error("两次输入的密码不一致")):r()},trigger:"blur"}]},l=async()=>{var a;await((a=n.value)==null?void 0:a.validate());try{await F({password:e.password,password_confirm:e.password_confirm}),p.success("密码修改成功,请重新登录"),d.isPaw=1,await d.logout()}catch(o){p.error((o==null?void 0:o.msg)||(o==null?void 0:o.message)||"密码修改失败")}},{isLock:g,lockFn:x}=N(l);return(a,o)=>{const r=B,c=v,f=b,y=E,k=h;return U(),D("div",T,[i("div",$,[i("div",j,[o[3]||(o[3]=i("div",{class:"text-center text-2xl font-medium mb-2"},"首次登录",-1)),o[4]||(o[4]=i("div",{class:"text-center text-gray-500 text-sm mb-8"},"为了您的账号安全,请修改初始密码",-1)),s(y,{ref_key:"formRef",ref:n,model:e,size:"large",rules:w},{default:t(()=>[s(f,{prop:"password"},{default:t(()=>[s(c,{modelValue:e.password,"onUpdate:modelValue":o[0]||(o[0]=m=>e.password=m),type:"password","show-password":"",placeholder:"请输入新密码"},{prepend:t(()=>[s(r,{name:"el-icon-Lock",size:"16"})]),_:1},8,["modelValue"])]),_:1}),s(f,{prop:"password_confirm"},{default:t(()=>[s(c,{modelValue:e.password_confirm,"onUpdate:modelValue":o[1]||(o[1]=m=>e.password_confirm=m),type:"password","show-password":"",placeholder:"请再次输入新密码",onKeyup:L(l,["enter"])},{prepend:t(()=>[s(r,{name:"el-icon-Lock",size:"16"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"]),s(k,{type:"primary",size:"large",loading:u(g),onClick:u(x),class:"w-full"},{default:t(()=>[...o[2]||(o[2]=[K(" 确认修改 ",-1)])]),_:1},8,["loading","onClick"])])]),s(z)])}}}),Ro=I(G,[["__scopeId","data-v-bbd4ab41"]]);export{Ro as default};
+import{E as p,B as b,C as v,D as E,i as h}from"./element-plus-DFTWCWyi.js";import{u as V,g as C,P,c as B,d as F,_ as I}from"./index-DBREMm_z.js";import{w as L}from"./@vue/runtime-dom-DDAG46FW.js";import{u as N}from"./useLockFn-X4Qce5KO.js";import{_ as z}from"./footer.vue_vue_type_script_setup_true_lang-CGxuEXz5.js";import{a as R}from"./vue-router-QlpZ4wdW.js";import{f as S,b as q,ak as U,I as D,J as i,a as s,aN as t,O as K}from"./@vue/runtime-core-C6bnekPw.js";import{y as u,q as M,r as O}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const T={class:"change-password flex flex-col"},$={class:"flex-1 flex items-center justify-center"},j={class:"change-password-card bg-body rounded-md px-10 py-10 w-[480px]"},G=S({__name:"change-password",setup(J){const n=M(),_=R(),d=V();q(()=>{C()||(p.error("请先登录"),_.push(P.LOGIN))});const e=O({password:"",password_confirm:""}),w={password:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"密码长度不能少于6位",trigger:"blur"}],password_confirm:[{required:!0,validator:(a,o,r)=>{o===""?r(new Error("请再次输入密码")):o!==e.password?r(new Error("两次输入的密码不一致")):r()},trigger:"blur"}]},l=async()=>{var a;await((a=n.value)==null?void 0:a.validate());try{await F({password:e.password,password_confirm:e.password_confirm}),p.success("密码修改成功,请重新登录"),d.isPaw=1,await d.logout()}catch(o){p.error((o==null?void 0:o.msg)||(o==null?void 0:o.message)||"密码修改失败")}},{isLock:g,lockFn:x}=N(l);return(a,o)=>{const r=B,c=v,f=b,y=E,k=h;return U(),D("div",T,[i("div",$,[i("div",j,[o[3]||(o[3]=i("div",{class:"text-center text-2xl font-medium mb-2"},"首次登录",-1)),o[4]||(o[4]=i("div",{class:"text-center text-gray-500 text-sm mb-8"},"为了您的账号安全,请修改初始密码",-1)),s(y,{ref_key:"formRef",ref:n,model:e,size:"large",rules:w},{default:t(()=>[s(f,{prop:"password"},{default:t(()=>[s(c,{modelValue:e.password,"onUpdate:modelValue":o[0]||(o[0]=m=>e.password=m),type:"password","show-password":"",placeholder:"请输入新密码"},{prepend:t(()=>[s(r,{name:"el-icon-Lock",size:"16"})]),_:1},8,["modelValue"])]),_:1}),s(f,{prop:"password_confirm"},{default:t(()=>[s(c,{modelValue:e.password_confirm,"onUpdate:modelValue":o[1]||(o[1]=m=>e.password_confirm=m),type:"password","show-password":"",placeholder:"请再次输入新密码",onKeyup:L(l,["enter"])},{prepend:t(()=>[s(r,{name:"el-icon-Lock",size:"16"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"]),s(k,{type:"primary",size:"large",loading:u(g),onClick:u(x),class:"w-full"},{default:t(()=>[...o[2]||(o[2]=[K(" 确认修改 ",-1)])]),_:1},8,["loading","onClick"])])]),s(z)])}}}),Ro=I(G,[["__scopeId","data-v-bbd4ab41"]]);export{Ro as default};
diff --git a/server/public/admin/assets/code-DY1HVNqE.js b/server/public/admin/assets/code-UKo2HpQE.js
similarity index 92%
rename from server/public/admin/assets/code-DY1HVNqE.js
rename to server/public/admin/assets/code-UKo2HpQE.js
index c1c068dc..b10f81a1 100644
--- a/server/public/admin/assets/code-DY1HVNqE.js
+++ b/server/public/admin/assets/code-UKo2HpQE.js
@@ -1 +1 @@
-import{r as t}from"./index-E47--KT7.js";function o(e){return t.get({url:"/tools.generator/generateTable",params:e})}function n(e){return t.get({url:"/tools.generator/dataTable",params:e})}function a(e){return t.post({url:"/tools.generator/selectTable",params:e})}function l(e){return t.get({url:"/tools.generator/detail",params:e})}function s(e){return t.post({url:"/tools.generator/syncColumn",params:e})}function u(e){return t.post({url:"/tools.generator/delete",params:e})}function g(e){return t.post({url:"/tools.generator/edit",params:e})}function i(e){return t.post({url:"/tools.generator/preview",params:e})}function c(e){return t.post({url:"/tools.generator/generate",params:e})}function f(){return t.get({url:"/tools.generator/getModels"})}export{f as a,o as b,u as c,i as d,c as e,n as f,g,a as h,s,l as t};
+import{r as t}from"./index-DBREMm_z.js";function o(e){return t.get({url:"/tools.generator/generateTable",params:e})}function n(e){return t.get({url:"/tools.generator/dataTable",params:e})}function a(e){return t.post({url:"/tools.generator/selectTable",params:e})}function l(e){return t.get({url:"/tools.generator/detail",params:e})}function s(e){return t.post({url:"/tools.generator/syncColumn",params:e})}function u(e){return t.post({url:"/tools.generator/delete",params:e})}function g(e){return t.post({url:"/tools.generator/edit",params:e})}function i(e){return t.post({url:"/tools.generator/preview",params:e})}function c(e){return t.post({url:"/tools.generator/generate",params:e})}function f(){return t.get({url:"/tools.generator/getModels"})}export{f as a,o as b,u as c,i as d,c as e,n as f,g,a as h,s,l as t};
diff --git a/server/public/admin/assets/code-preview-C6qDIvgm.js b/server/public/admin/assets/code-preview-K7YJDJFP.js
similarity index 85%
rename from server/public/admin/assets/code-preview-C6qDIvgm.js
rename to server/public/admin/assets/code-preview-K7YJDJFP.js
index 1763b2a8..8ce36d68 100644
--- a/server/public/admin/assets/code-preview-C6qDIvgm.js
+++ b/server/public/admin/assets/code-preview-K7YJDJFP.js
@@ -1 +1 @@
-import{_ as o}from"./code-preview.vue_vue_type_script_setup_true_lang-C8dEJDd2.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
+import{_ as o}from"./code-preview.vue_vue_type_script_setup_true_lang-BZ5QuyM7.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
diff --git a/server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-C8dEJDd2.js b/server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-BZ5QuyM7.js
similarity index 91%
rename from server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-C8dEJDd2.js
rename to server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-BZ5QuyM7.js
index 3fbb9248..685d01f1 100644
--- a/server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-C8dEJDd2.js
+++ b/server/public/admin/assets/code-preview.vue_vue_type_script_setup_true_lang-BZ5QuyM7.js
@@ -1 +1 @@
-import{m as B,l as N,s as T,i as $,V as j}from"./element-plus-0wC3naml.js";import{c as D,i as d}from"./index-E47--KT7.js";import{u as F}from"./vue-clipboard3-DByT_rEQ.js";import{f as S,ar as U,ak as c,I as i,a as t,aN as a,F as A,ap as G,G as I,J as u,O as J,A as L}from"./@vue/runtime-core-C6bnekPw.js";import{a as p,y as _,n as O}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"code-preview"},R={class:"flex",style:{height:"50vh"}},W=S({__name:"code-preview",props:{modelValue:{type:Boolean},code:{}},emits:["update:modelValue"],setup(r,{emit:f}){const V=r,b=f,{toClipboard:g}=F(),n=O("index0"),h=async l=>{try{await g(l),d.msgSuccess("复制成功")}catch{d.msgError("复制失败")}},s=L({get(){return V.modelValue},set(l){b("update:modelValue",l)}});return(l,e)=>{const v=U("highlightjs"),y=T,k=D,C=$,x=N,E=B,w=j;return c(),i("div",P,[t(w,{modelValue:_(s),"onUpdate:modelValue":e[1]||(e[1]=o=>p(s)?s.value=o:null),width:"900px",title:"代码预览"},{default:a(()=>[t(E,{modelValue:_(n),"onUpdate:modelValue":e[0]||(e[0]=o=>p(n)?n.value=o:null)},{default:a(()=>[(c(!0),i(A,null,G(r.code,(o,m)=>(c(),I(x,{label:o.name,name:`index${m}`,key:m},{default:a(()=>[u("div",R,[t(y,{class:"flex-1"},{default:a(()=>[t(v,{autodetect:"",code:o.content},null,8,["code"])]),_:2},1024),u("div",null,[t(C,{onClick:q=>h(o.content),type:"primary",link:""},{icon:a(()=>[t(k,{name:"el-icon-CopyDocument"})]),default:a(()=>[e[2]||(e[2]=J(" 复制 ",-1))]),_:1},8,["onClick"])])])]),_:2},1032,["label","name"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])])}}});export{W as _};
+import{m as B,l as N,s as T,i as $,V as j}from"./element-plus-DFTWCWyi.js";import{c as D,i as d}from"./index-DBREMm_z.js";import{u as F}from"./vue-clipboard3-DByT_rEQ.js";import{f as S,ar as U,ak as c,I as i,a as t,aN as a,F as A,ap as G,G as I,J as u,O as J,A as L}from"./@vue/runtime-core-C6bnekPw.js";import{a as p,y as _,n as O}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"code-preview"},R={class:"flex",style:{height:"50vh"}},W=S({__name:"code-preview",props:{modelValue:{type:Boolean},code:{}},emits:["update:modelValue"],setup(r,{emit:f}){const V=r,b=f,{toClipboard:g}=F(),n=O("index0"),h=async l=>{try{await g(l),d.msgSuccess("复制成功")}catch{d.msgError("复制失败")}},s=L({get(){return V.modelValue},set(l){b("update:modelValue",l)}});return(l,e)=>{const v=U("highlightjs"),y=T,k=D,C=$,x=N,E=B,w=j;return c(),i("div",P,[t(w,{modelValue:_(s),"onUpdate:modelValue":e[1]||(e[1]=o=>p(s)?s.value=o:null),width:"900px",title:"代码预览"},{default:a(()=>[t(E,{modelValue:_(n),"onUpdate:modelValue":e[0]||(e[0]=o=>p(n)?n.value=o:null)},{default:a(()=>[(c(!0),i(A,null,G(r.code,(o,m)=>(c(),I(x,{label:o.name,name:`index${m}`,key:m},{default:a(()=>[u("div",R,[t(y,{class:"flex-1"},{default:a(()=>[t(v,{autodetect:"",code:o.content},null,8,["code"])]),_:2},1024),u("div",null,[t(C,{onClick:q=>h(o.content),type:"primary",link:""},{icon:a(()=>[t(k,{name:"el-icon-CopyDocument"})]),default:a(()=>[e[2]||(e[2]=J(" 复制 ",-1))]),_:1},8,["onClick"])])])]),_:2},1032,["label","name"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])])}}});export{W as _};
diff --git a/server/public/admin/assets/commission-settlement-B3R3uSwd.js b/server/public/admin/assets/commission-settlement-Cjunto85.js
similarity index 99%
rename from server/public/admin/assets/commission-settlement-B3R3uSwd.js
rename to server/public/admin/assets/commission-settlement-Cjunto85.js
index d1081582..bd94530c 100644
--- a/server/public/admin/assets/commission-settlement-B3R3uSwd.js
+++ b/server/public/admin/assets/commission-settlement-Cjunto85.js
@@ -1 +1 @@
-import{a2 as gt,H as ht,P as bt,Q as wt,af as yt,W as kt,L as xt,i as Ct,d as St,J as Vt,K as Ot,T as Nt,C as Et,m as Dt,l as zt,M as Mt,N as $t,_ as Tt,G as Rt,F as Ft,X as Lt,V as Bt,E as b,a as Ie}from"./element-plus-0wC3naml.js";import{s as Ue}from"./@vue/runtime-dom-DDAG46FW.js";import{N as It,x as Ut,m as Pt,g as Yt,a0 as qt}from"./@element-plus/icons-vue-HOEUG8sr.js";import{c as Pe,a as Gt,b as Ht,d as At,e as Wt,f as Qt,g as jt}from"./stats-DxFb49QX.js";import{f as Jt,w as Xt,b as Zt,ak as u,I as f,J as r,N as Kt,H as x,a as n,aN as o,O as s,F as L,ap as Ye,G as h,aP as Q,A as $}from"./@vue/runtime-core-C6bnekPw.js";import{n as p,y as B,r as el}from"./@vue/reactivity-DiY1c2vO.js";import{Q as _,o as qe}from"./@vue/shared-mAAVTE9n.js";import{_ as tl}from"./index-E47--KT7.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const ll={class:"cs-page"},al={class:"cs-masthead"},nl={class:"cs-masthead__inner"},ol={key:0,class:"cs-masthead__stats"},sl={class:"cs-stat"},rl={class:"cs-stat__value"},il={key:0,class:"cs-stat"},dl={class:"cs-stat__value cs-stat__value--xs"},ul={key:1,class:"cs-stat"},_l={class:"cs-stat__value cs-stat__value--xs"},cl={class:"filter-surface"},pl={class:"filter-row filter-row--top"},ml={class:"filter-field"},fl={class:"filter-field filter-field--rangewrap"},vl={class:"filter-field"},gl={class:"filter-field filter-field--wide"},hl={class:"filter-select filter-select--dept filter-dept-tree-wrap"},bl={class:"filter-actions"},wl={class:"cs-alert__body"},yl={key:0},kl={key:1},xl={key:2,class:"cs-alert__meta"},Cl={class:"cs-reconcile"},Sl={class:"cs-reconcile__head"},Vl={class:"cs-reconcile__tags"},Ol={key:3,class:"cs-reconcile__meta"},Nl={key:4,class:"cs-reconcile__meta"},El={class:"cs-reconcile__toolbar"},Dl={key:0,class:"cs-reconcile__carry"},zl={class:"cs-table-head"},Ml={class:"cs-table-head__row"},$l={key:0,class:"cs-drill-state"},Tl={class:"cs-dept-link__text"},Rl={key:1,class:"cs-muted"},Fl={class:"cs-dialog__bar"},Ll={key:0},Bl={key:1,class:"cs-muted"},Il={key:0,class:"cs-muted"},Ul={key:1,class:"cs-muted"},Pl={class:"cs-dialog__pager"},Yl={class:"cs-dialog__bar cs-dialog__bar--split"},ql={class:"cs-dialog__hint"},Gl={key:0},Hl={key:1,class:"cs-muted"},Al={key:0,class:"cs-muted"},Wl={key:1,class:"cs-muted"},Ql={class:"cs-dialog__pager"},jl=Jt({__name:"commission-settlement",setup(Jl){const Ge={value:"id",label:"name",children:"children"};function He(t){if(!t.length)return[];const e=new Map;for(const m of t)e.set(m.id,{...m,children:[]});const i=[];for(const m of t){const v=e.get(m.id),w=Number(m.pid);w>0&&e.has(w)?e.get(w).children.push(v):i.push(v)}const l=m=>{var v;(v=m.children)!=null&&v.length?m.children.forEach(l):delete m.children};i.forEach(l);const k=m=>{var v;m.sort((w,E)=>{const C=w.name.includes("中心")?-1:1,D=E.name.includes("中心")?-1:1;return C!==D?C-D:w.id-E.id});for(const w of m)(v=w.children)!=null&&v.length&&k(w.children)};return k(i),i}function ke(){const t=new Date,e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0");return`${e}-${i}`}function j(t){return String(t).padStart(2,"0")}function xe(t){return`${t.getFullYear()}-${j(t.getMonth()+1)}-${j(t.getDate())} ${j(t.getHours())}:${j(t.getMinutes())}:${j(t.getSeconds())}`}function re(t){const e=/^(\d{4})-(\d{2})$/.exec(t),i=e?parseInt(e[1],10):new Date().getFullYear(),l=e?parseInt(e[2],10):new Date().getMonth()+1,k=new Date(i,l-2,1,0,0,0),m=new Date(i,l-1,0,23,59,59);return[xe(k),xe(m)]}const g=p(ke()),I=p(re(g.value)),ae=p(!1),T=p(!1),ne=p([]),ie=p(!1),Ae=$(()=>He(ne.value)),V=p([]),Ce=p([]),de=p(!1),R=p(""),ue=p([]),Se=p([]),Ve=p([]),oe=p([]),se=p([]),Oe=p("dept"),U=p({}),c=el({settlement_month:"",order_month:"",order_start_time:"",order_end_time:"",fulfillment_status:3,explicit_order_time_window:!1,cutoff_end:"",rule_note:"",channel_name:"",require_system_auto_prescription:!1}),O=p(null),J=p(""),_e=p(!1),ce=p(!1),pe=p(!1),F=$(()=>{var t;return Number((t=O.value)==null?void 0:t.status)===1}),me=p(!1),fe=p(!1),P=p("all"),ve=p([]),ge=p(0),Ne=p(1),Ee=p(20),X=p(!1),Y=p(null),M=p("all"),q=p([]),G=p(0),Z=p(1),De=p(20),he=p(!1),We=$(()=>{const t=Y.value;return t?t.mode==="dept"?`已完成业绩订单 · ${t.dept_name}`:t.title:"已完成业绩订单"}),K=$(()=>c.order_start_time&&c.order_end_time?`${c.order_start_time}~${c.order_end_time}`:c.order_month||"—"),Qe=$(()=>{const t=new Map;for(const e of ne.value){const i=Number(e.pid),l=t.get(i)??[];l.push(e.id),t.set(i,l)}return t}),be=$(()=>{const t=new Map;for(const e of ne.value)t.set(e.id,e);return t}),ee=$(()=>{if(V.value.length!==1)return null;const t=V.value[0];return be.value.get(t)??null}),je=$(()=>{const t=ee.value;if(!t)return"返回顶层";const e=Number(t.pid),i=e>0?be.value.get(e):null;return!i||Number(i.pid)<=0?"返回顶层":`返回上级 · ${i.name}`});function ze(t){if(!t||t<=0)return!1;const e=Qe.value.get(t);return!!(e&&e.length>0)}function Je(t){if(!(!t||!t.dept_id||t.dept_id<=0)){if(ze(t.dept_id)){V.value=[t.dept_id],N();return}Ze(t.dept_id,t.dept_name)}}function Xe(){const t=ee.value;if(!t){V.value=[],N();return}const e=Number(t.pid),i=e>0?be.value.get(e):null;!i||Number(i.pid)<=0?V.value=[]:V.value=[e],N()}function Ze(t,e){if(!g.value){b.warning("请选择结算月");return}Y.value={mode:"dept",dept_id:t,dept_name:e},M.value="all",Z.value=1,q.value=[],G.value=0,X.value=!0,te(1)}function Ke(t){if(!g.value){b.warning("请选择结算月");return}Y.value={mode:"channel",title:`业务订单 · ${t.appt_channel_name} · 医助 ${t.assistant_name}`,assistant_id:t.assistant_id,appt_channel_value:Number(t.appt_channel_value??0)},M.value="all",Z.value=1,q.value=[],G.value=0,X.value=!0,te(1)}function et(t){if(!g.value){b.warning("请选择结算月");return}Y.value={mode:"channel",title:`业务订单 · ${t.appt_channel_name} · 医生 ${t.doctor_name}`,doctor_id:t.doctor_id,appt_channel_value:Number(t.appt_channel_value??0)},M.value="all",Z.value=1,q.value=[],G.value=0,X.value=!0,te(1)}async function te(t){if(!(!g.value||!Y.value)){he.value=!0,Z.value=t;try{const e=Y.value,i={settlement_month:g.value,page:t,page_size:De.value};e.mode==="dept"?(i.dept_ids=String(e.dept_id),R.value&&(i.channel_code=R.value)):(Object.assign(i,H()),i.appt_channel_value=e.appt_channel_value,e.assistant_id!=null&&(i.assistant_id=e.assistant_id),e.doctor_id!=null&&(i.doctor_id=e.doctor_id)),M.value&&M.value!=="all"&&(i.bucket=M.value);const l=await Pe(i);q.value=(l==null?void 0:l.list)||[],G.value=Number((l==null?void 0:l.count)??0)}catch(e){b.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载明细失败"),q.value=[],G.value=0}finally{he.value=!1}}}function y(t){return t==null||!Number.isFinite(Number(t))?"—":`¥ ${Number(t).toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}`}async function tt(){ie.value=!0;try{const t=await Gt();ne.value=(t||[]).sort((e,i)=>{const l=e.name.includes("中心")?-1:1,k=i.name.includes("中心")?-1:1;return l!==k?l-k:e.id-i.id})}catch{}finally{ie.value=!1}}async function lt(){de.value=!0;try{const t=await Ht();Ce.value=(t==null?void 0:t.groups)||[]}catch{}finally{de.value=!1}}async function N(){var i;const t=g.value;if(!t){b.warning("请选择结算月");return}const e=I.value;if(!e||!e[0]||!e[1]){b.warning("请设置订单创建时间范围");return}T.value=!0;try{const l=await At(H());ue.value=(l==null?void 0:l.rows)||[],Se.value=(l==null?void 0:l.assistant_rows)||[],Ve.value=(l==null?void 0:l.doctor_rows)||[],oe.value=(l==null?void 0:l.assistant_channel_rows)||[],se.value=(l==null?void 0:l.doctor_channel_rows)||[],U.value=(l==null?void 0:l.total)||{},c.settlement_month=(l==null?void 0:l.settlement_month)||t,c.order_month=(l==null?void 0:l.order_month)||"",c.order_start_time=l!=null&&l.order_start_time?String(l.order_start_time):"",c.order_end_time=l!=null&&l.order_end_time?String(l.order_end_time):"",c.fulfillment_status=(l==null?void 0:l.fulfillment_status)!=null?Number(l.fulfillment_status):3,c.explicit_order_time_window=typeof(l==null?void 0:l.explicit_order_time_window)=="boolean"?l.explicit_order_time_window:!!(c.order_start_time&&c.order_end_time),c.cutoff_end=(l==null?void 0:l.cutoff_end)||"",c.rule_note=(l==null?void 0:l.rule_note)||"",c.channel_name=(l==null?void 0:l.channel_name)||"",c.require_system_auto_prescription=typeof(l==null?void 0:l.require_system_auto_prescription)=="boolean"?l.require_system_auto_prescription:!1,O.value=(l==null?void 0:l.confirm)??null,J.value=((i=l==null?void 0:l.confirm)==null?void 0:i.reconcile_note)!=null?String(l.confirm.reconcile_note):""}catch(l){b.error((l==null?void 0:l.msg)||(l==null?void 0:l.message)||"加载失败"),ue.value=[],Se.value=[],Ve.value=[],oe.value=[],se.value=[],U.value={},O.value=null}finally{T.value=!1}}function H(){const e={settlement_month:g.value,fulfillment_status:3},i=I.value;return i&&i[0]&&i[1]&&(e.start_time=i[0],e.end_time=i[1]),ae.value&&(e.require_system_auto_prescription=1),V.value.length>0&&(e.dept_ids=V.value.join(",")),R.value&&(e.channel_code=R.value),e}function at(){if(!g.value){b.warning("请选择结算月");return}me.value=!0}function nt(){P.value="all",we(1)}async function we(t){if(g.value){fe.value=!0,Ne.value=t;try{const e={...H(),page:t,page_size:Ee.value};P.value&&P.value!=="all"&&(e.bucket=P.value);const i=await Pe(e);ve.value=(i==null?void 0:i.list)||[],ge.value=Number((i==null?void 0:i.count)??0)}catch(e){b.error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"加载明细失败"),ve.value=[],ge.value=0}finally{fe.value=!1}}}async function ot(){if(!g.value){b.warning("请选择结算月");return}if(F.value){b.warning("已确定业绩不可修改备注;请先撤回确定");return}_e.value=!0;try{await Wt({...H(),reconcile_note:J.value}),b.success("已保存核对备注"),await N()}catch(t){b.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"保存失败")}finally{_e.value=!1}}async function st(){if(!g.value){b.warning("请选择结算月");return}try{await Ie.confirm("确定后将为「顺延下期」订单写入结转记录,下一结算月在相同渠道与部门筛选下自动并入统计。确定后仍可「撤回确定」以清除结转并重新核对(与财务对齐后再操作)。","确定本期业绩",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"})}catch{return}ce.value=!0;try{const t=await Qt({...H(),reconcile_note:J.value});b.success(`已确定本期业绩;结转 ${Number((t==null?void 0:t.deferred_carry_count)??0)} 单至 ${String((t==null?void 0:t.next_settlement_month)??"下期")}`),await N()}catch(t){b.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"提交失败")}finally{ce.value=!1}}async function rt(){if(!g.value){b.warning("请选择结算月");return}try{await Ie.confirm("将撤回本次「确定业绩」状态,并删除已写入的顺延结转记录(下期将不再汇入这些单)。确定后继续?","撤回确定业绩",{confirmButtonText:"撤回",cancelButtonText:"取消",type:"warning"})}catch{return}pe.value=!0;try{await jt(H()),b.success("已撤回确定;可重新保存备注并再次确定本期业绩"),await N()}catch(t){b.error((t==null?void 0:t.msg)||(t==null?void 0:t.message)||"撤回失败")}finally{pe.value=!1}}function it(){g.value=ke(),I.value=re(g.value),ae.value=!1,V.value=[],R.value="",N()}function Me(t){const{columns:e}=t,i=U.value,l=[];return e.forEach((k,m)=>{if(m===0){l[m]="合计";return}const v=k.property;if(!i||!v){l[m]="";return}if(v==="primary_dept_name"||v==="appt_channel_name"){l[m]="";return}if(v==="carry_in_order_count"){l[m]=String(i.carry_in_order_count??0);return}const w={completed_order_count:String(i.completed_order_count??0),completed_order_amount:y(i.completed_order_amount),current_period_count:String(i.current_period_count??0),current_period_amount:y(i.current_period_amount),deferred_period_count:String(i.deferred_period_count??0),deferred_period_amount:y(i.deferred_period_amount)};l[m]=w[String(v)]??""}),l}function $e(t,e){return i=>{const{rowIndex:l,columnIndex:k}=i;if(k>1)return;const m=t.value;if(!m||m.length===0)return;const v=m[l];if(!v)return;const w=v[e],E=l>0?m[l-1]:null;if(E&&E[e]===w)return{rowspan:0,colspan:0};let C=1;for(let D=l+1;D{if(m===0){l[m]="合计";return}const v=k.property;if(!i||!v){l[m]="";return}const w={completed_order_count:String(i.completed_order_count??0),completed_order_amount:y(i.completed_order_amount),current_period_count:String(i.current_period_count??0),current_period_amount:y(i.current_period_amount),deferred_period_count:String(i.deferred_period_count??0),deferred_period_amount:y(i.deferred_period_amount)};l[m]=w[String(v)]??""}),l}return Xt(g,t=>{t&&(I.value=re(t))}),Zt(async()=>{await Promise.all([tt(),lt()]),await N()}),(t,e)=>{const i=gt,l=ht,k=wt,m=yt,v=bt,w=kt,E=St,C=Ct,D=Vt,ct=Ot,S=Nt,pt=Et,mt=Tt,d=$t,le=Mt,ye=zt,ft=Dt,A=Ft,Re=Rt,Fe=Lt,Le=Bt,W=xt;return u(),f("div",ll,[r("header",al,[r("div",nl,[e[16]||(e[16]=Kt('
',1)),c.settlement_month||c.cutoff_end?(u(),f("dl",ol,[r("div",sl,[e[13]||(e[13]=r("dt",{class:"cs-stat__label"},"结算月",-1)),r("dd",rl,_(c.settlement_month||g.value),1)]),c.order_month||c.order_start_time?(u(),f("div",il,[e[14]||(e[14]=r("dt",{class:"cs-stat__label"},"订单时间窗",-1)),r("dd",dl,_(K.value),1)])):x("",!0),c.cutoff_end?(u(),f("div",ul,[e[15]||(e[15]=r("dt",{class:"cs-stat__label"},"截止时刻",-1)),r("dd",_l,_(c.cutoff_end),1)])):x("",!0)])):x("",!0)])]),n(D,{class:"cs-panel filter-card",shadow:"never"},{default:o(()=>[r("div",cl,[r("div",pl,[r("div",ml,[e[17]||(e[17]=r("span",{class:"lbl"},"结算月",-1)),n(i,{modelValue:g.value,"onUpdate:modelValue":e[0]||(e[0]=a=>g.value=a),type:"month","value-format":"YYYY-MM",placeholder:"选择结算月",class:"filter-month"},null,8,["modelValue"])]),r("div",fl,[e[19]||(e[19]=r("span",{class:"lbl"},"订单创建",-1)),n(i,{modelValue:I.value,"onUpdate:modelValue":e[1]||(e[1]=a=>I.value=a),type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss","range-separator":"至","start-placeholder":"列表 start_time","end-placeholder":"列表 end_time",class:"filter-datetimerange"},null,8,["modelValue"]),n(l,{modelValue:ae.value,"onUpdate:modelValue":e[2]||(e[2]=a=>ae.value=a),class:"filter-sa-check"},{default:o(()=>[...e[18]||(e[18]=[s(" 仅系统代开处方 ",-1)])]),_:1},8,["modelValue"])]),r("div",vl,[e[20]||(e[20]=r("span",{class:"lbl"},"渠道来源",-1)),n(v,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=a=>R.value=a),filterable:"",clearable:"",placeholder:"全部",class:"filter-select filter-select--channel",loading:de.value,onChange:N},{default:o(()=>[n(k,{label:"全部",value:""}),(u(!0),f(L,null,Ye(Ce.value,a=>(u(),h(m,{key:a.group_name,label:a.group_name},{default:o(()=>[(u(!0),f(L,null,Ye(a.channels,z=>(u(),h(k,{key:z.channel_code,label:z.channel_name,value:z.channel_code},null,8,["label","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","loading"])]),r("div",gl,[e[21]||(e[21]=r("span",{class:"lbl"},"展示部门",-1)),Q((u(),f("div",hl,[n(w,{modelValue:V.value,"onUpdate:modelValue":e[4]||(e[4]=a=>V.value=a),data:Ae.value,multiple:"","collapse-tags":"","collapse-tags-tooltip":"",filterable:"","check-strictly":"","render-after-expand":!1,"default-expand-all":!0,placeholder:"默认:所有「中心」部门",class:"filter-dept-tree-select","node-key":"id",props:Ge},null,8,["modelValue","data"])])),[[W,ie.value]])]),r("div",bl,[n(C,{type:"primary",class:"filter-btn filter-btn--query",loading:T.value,onClick:N},{default:o(()=>[n(E,{class:"filter-btn__icon"},{default:o(()=>[n(B(It))]),_:1}),e[22]||(e[22]=s(" 查询 ",-1))]),_:1},8,["loading"]),n(C,{class:"filter-btn filter-btn--reset",disabled:T.value,onClick:it},{default:o(()=>[n(E,{class:"filter-btn__icon"},{default:o(()=>[n(B(Ut))]),_:1}),e[23]||(e[23]=s(" 重置 ",-1))]),_:1},8,["disabled"])])])])]),_:1}),n(ct,{type:"info",closable:!1,"show-icon":"",class:"cs-alert"},{title:o(()=>[...e[24]||(e[24]=[r("span",{class:"cs-alert__title"},"统计口径",-1)])]),default:o(()=>[r("div",wl,[c.rule_note?(u(),f("p",yl,_(c.rule_note),1)):(u(),f("p",kl,[...e[25]||(e[25]=[s(" 请选择结算月并设置",-1),r("strong",null,"订单创建时间范围",-1),s("(与处方订单列表 URL 参数 ",-1),r("code",null,"start_time",-1),s("/",-1),r("code",null,"end_time",-1),s("/",-1),r("code",null,"fulfillment_status",-1),s(" 一致);切换结算月会自动带出",-1),r("strong",null,"上一自然月整段",-1),s("作为默认时段,可按业务修改(例如 2026-04-02~04-30)。 「仅系统代开处方」勾选后与列表在未限制开方类型时的条数会不一致。 ",-1)])])),c.cutoff_end?(u(),f("p",xl,[e[30]||(e[30]=s(" 当前结算月:",-1)),r("strong",null,_(c.settlement_month),1),e[31]||(e[31]=s(" · 订单时间:",-1)),r("strong",null,_(K.value),1),e[32]||(e[32]=s(" · 履约状态:",-1)),r("strong",null,_(c.fulfillment_status??3),1),e[33]||(e[33]=s(" · 截止时刻:",-1)),r("strong",null,_(c.cutoff_end),1),c.channel_name?(u(),f(L,{key:0},[e[26]||(e[26]=s(" · 渠道:",-1)),r("strong",null,_(c.channel_name),1)],64)):x("",!0),c.settlement_month?(u(),f(L,{key:1},[e[29]||(e[29]=s(" · 处方池:",-1)),r("strong",null,_(c.require_system_auto_prescription?"仅系统代开":"含手动与系统"),1),c.explicit_order_time_window?(u(),f(L,{key:0},[e[27]||(e[27]=s(" · 列表对齐:",-1)),e[28]||(e[28]=r("strong",null,"是",-1))],64)):x("",!0)],64)):x("",!0)])):x("",!0)])]),_:1}),n(D,{class:"cs-panel cs-reconcile-card",shadow:"never"},{default:o(()=>{var a,z,Be;return[r("div",Cl,[r("div",Sl,[r("div",Vl,[F.value?(u(),h(S,{key:0,type:"success",effect:"dark"},{default:o(()=>[...e[34]||(e[34]=[s("已确定业绩",-1)])]),_:1})):((a=O.value)==null?void 0:a.status)===2?(u(),h(S,{key:1,type:"warning",effect:"plain"},{default:o(()=>[...e[35]||(e[35]=[s("已撤回确定",-1)])]),_:1})):(u(),h(S,{key:2,type:"info",effect:"plain"},{default:o(()=>[...e[36]||(e[36]=[s("待确定业绩",-1)])]),_:1})),F.value&&((z=O.value)!=null&&z.confirmed_at_text)?(u(),f("span",Ol,_(O.value.confirmed_admin_name||"—")+" · "+_(O.value.confirmed_at_text),1)):((Be=O.value)==null?void 0:Be.status)===2&&O.value.revoked_at_text?(u(),f("span",Nl," 撤回:"+_(O.value.revoked_admin_name||"—")+" · "+_(O.value.revoked_at_text),1)):x("",!0)]),r("div",El,[n(C,{type:"primary",plain:"",onClick:at},{default:o(()=>[...e[37]||(e[37]=[s("业绩明细核对",-1)])]),_:1}),n(C,{disabled:F.value||_e.value,onClick:ot},{default:o(()=>[...e[38]||(e[38]=[s(" 保存核对备注 ",-1)])]),_:1},8,["disabled"]),n(C,{type:"warning",disabled:F.value||ce.value,onClick:st},{default:o(()=>[...e[39]||(e[39]=[s(" 确定本期业绩 ",-1)])]),_:1},8,["disabled"]),F.value?(u(),h(C,{key:0,type:"danger",plain:"",loading:pe.value,onClick:rt},{default:o(()=>[...e[40]||(e[40]=[s(" 撤回确定 ",-1)])]),_:1},8,["loading"])):x("",!0)])]),n(pt,{modelValue:J.value,"onUpdate:modelValue":e[5]||(e[5]=vt=>J.value=vt),type:"textarea",rows:2,maxlength:"500","show-word-limit":"",placeholder:"核对备注(可与财务线下对齐后填写;确定业绩前可反复保存)",disabled:F.value,class:"cs-reconcile__note"},null,8,["modelValue","disabled"]),Number(U.value.carry_in_order_count)>0?(u(),f("p",Dl,[e[41]||(e[41]=s(" 上期顺延汇入本期:",-1)),r("strong",null,_(U.value.carry_in_order_count),1),e[42]||(e[42]=s(" 单(已并入当前汇总) ",-1))])):x("",!0)])]}),_:1}),n(D,{class:"cs-panel cs-summary-card",shadow:"never"},{default:o(()=>[n(ft,{modelValue:Oe.value,"onUpdate:modelValue":e[6]||(e[6]=a=>Oe.value=a),class:"cs-summary-tabs"},{default:o(()=>[n(ye,{label:"部门汇总",name:"dept"},{default:o(()=>[r("div",zl,[r("div",Ml,[e[43]||(e[43]=r("span",{class:"cs-table-head__title"},"部门汇总",-1)),ee.value?(u(),f("div",$l,[n(S,{size:"small",type:"info",effect:"plain",class:"cs-drill-state__tag"},{default:o(()=>[s(" 当前下钻:"+_(ee.value.path||ee.value.name),1)]),_:1}),n(C,{link:"",type:"primary",class:"cs-drill-state__back",onClick:Xe},{default:o(()=>[n(E,null,{default:o(()=>[n(B(Pt))]),_:1}),s(" "+_(je.value),1)]),_:1})])):x("",!0)]),e[44]||(e[44]=r("span",{class:"cs-table-head__hint"},[s(" 金额单位:元;与业绩看板相同的部门摊列规则(业绩归属医助 → 展示「中心」)。 "),r("strong",null,"点击部门"),s(":若有子部门则下钻一层;末级部门弹出「已完成业绩订单」明细。 ")],-1))]),Q((u(),h(le,{data:ue.value,border:"",stripe:"",size:"small",class:"cs-table cs-table--clickable","show-summary":"","summary-method":_t},{default:o(()=>[n(d,{prop:"dept_name",label:"部门","min-width":"220",fixed:""},{default:o(({row:a})=>[a.dept_id>0?(u(),h(mt,{key:0,type:"primary",underline:!1,class:"cs-dept-link",onClick:z=>Je(a)},{default:o(()=>[r("span",Tl,_(a.dept_name),1),n(E,{class:"cs-dept-link__icon"},{default:o(()=>[ze(a.dept_id)?(u(),h(B(Yt),{key:0})):(u(),h(B(qt),{key:1}))]),_:2},1024)]),_:2},1032,["onClick"])):(u(),f("span",Rl,_(a.dept_name),1))]),_:1}),n(d,{prop:"completed_order_count",label:"已完成单数","min-width":"104",align:"right"}),n(d,{prop:"completed_order_amount",label:"已完成金额","min-width":"112",align:"right"},{default:o(({row:a})=>[s(_(y(a.completed_order_amount)),1)]),_:1}),n(d,{prop:"current_period_count",label:"本期提成单数","min-width":"118",align:"right"}),n(d,{prop:"current_period_amount",label:"本期提成金额","min-width":"118",align:"right"},{default:o(({row:a})=>[s(_(y(a.current_period_amount)),1)]),_:1}),n(d,{prop:"deferred_period_count",label:"顺延下期单数","min-width":"118",align:"right"}),n(d,{prop:"deferred_period_amount",label:"顺延下期金额","min-width":"118",align:"right"},{default:o(({row:a})=>[s(_(y(a.deferred_period_amount)),1)]),_:1})]),_:1},8,["data"])),[[W,T.value]])]),_:1}),n(ye,{label:"按医助下发",name:"assistant"},{default:o(()=>[e[45]||(e[45]=r("div",{class:"cs-table-head"},[r("span",{class:"cs-table-head__title"},"业绩归属医助 × 挂号渠道"),r("span",{class:"cs-table-head__hint"},[s(" 按诊单业绩归属医助 "),r("strong",null,"×"),s(" 挂号渠道(doctor_appointment.channels)拆分到行; "),r("strong",null,"「复诊2」「复诊3」「自媒体1」等保持各自独立"),s(",未关联挂号统一归到「未匹配挂号渠道」。 同一医助多行"),r("strong",null,"自动合并「医助 / 归属中心」单元格"),s(",「顺延汇入」为上期结转进入本期订单池的单数。 "),r("strong",null,"展示部门"),s("有勾选时,本表仅列出"),r("strong",null,"可归入该部门上下文"),s("的业绩医助(与人事部门落在所选部门范围内的账号一致)。 "),r("strong",null,"点击挂号渠道"),s(":查看该行对应的业务订单明细(与上方部门筛选一致)。 ")])],-1)),Q((u(),h(le,{data:oe.value,border:"",stripe:"",size:"small",class:"cs-table cs-table--grouped","show-summary":"","summary-method":Me,"span-method":B(dt)},{default:o(()=>[n(d,{prop:"assistant_name",label:"医助","min-width":"120",fixed:"","show-overflow-tooltip":""}),n(d,{prop:"primary_dept_name",label:"归属中心","min-width":"120","show-overflow-tooltip":""}),n(d,{prop:"appt_channel_name",label:"挂号渠道","min-width":"120","show-overflow-tooltip":""},{default:o(({row:a})=>[n(S,{size:"small",class:qe(["cs-channel-tag cs-channel-tag--clickable",Te(a.appt_channel_name)]),effect:"plain",onClick:Ue(z=>Ke(a),["stop"])},{default:o(()=>[s(_(a.appt_channel_name),1)]),_:2},1032,["class","onClick"])]),_:1}),n(d,{prop:"carry_in_order_count",label:"顺延汇入单数","min-width":"112",align:"right"}),n(d,{prop:"completed_order_count",label:"已完成单数","min-width":"104",align:"right"}),n(d,{prop:"completed_order_amount",label:"已完成金额","min-width":"112",align:"right"},{default:o(({row:a})=>[s(_(y(a.completed_order_amount)),1)]),_:1}),n(d,{prop:"current_period_count",label:"本期提成单数","min-width":"118",align:"right"}),n(d,{prop:"current_period_amount",label:"本期提成金额","min-width":"118",align:"right"},{default:o(({row:a})=>[s(_(y(a.current_period_amount)),1)]),_:1}),n(d,{prop:"deferred_period_count",label:"顺延下期单数","min-width":"118",align:"right"}),n(d,{prop:"deferred_period_amount",label:"顺延下期金额","min-width":"118",align:"right"},{default:o(({row:a})=>[s(_(y(a.deferred_period_amount)),1)]),_:1})]),_:1},8,["data","span-method"])),[[W,T.value]])]),_:1}),n(ye,{label:"按医生下发",name:"doctor"},{default:o(()=>[e[46]||(e[46]=r("div",{class:"cs-table-head"},[r("span",{class:"cs-table-head__title"},"处方开方医生 × 挂号渠道"),r("span",{class:"cs-table-head__hint"},[s(" 按处方创建账号(开方人) "),r("strong",null,"×"),s(" 挂号渠道拆分; 可与医助维度交叉核对;同一医生多行自动合并「医生 / 归属中心」单元格。 "),r("strong",null,"展示部门"),s("有勾选时,与医助表相同,仅统计"),r("strong",null,"该部门上下文内"),s("订单对应的开方医生。 "),r("strong",null,"点击挂号渠道"),s(":查看该行对应的业务订单明细。 ")])],-1)),Q((u(),h(le,{data:se.value,border:"",stripe:"",size:"small",class:"cs-table cs-table--grouped","show-summary":"","summary-method":Me,"span-method":B(ut)},{default:o(()=>[n(d,{prop:"doctor_name",label:"医生","min-width":"120",fixed:"","show-overflow-tooltip":""}),n(d,{prop:"primary_dept_name",label:"归属中心","min-width":"120","show-overflow-tooltip":""}),n(d,{prop:"appt_channel_name",label:"挂号渠道","min-width":"120","show-overflow-tooltip":""},{default:o(({row:a})=>[n(S,{size:"small",class:qe(["cs-channel-tag cs-channel-tag--clickable",Te(a.appt_channel_name)]),effect:"plain",onClick:Ue(z=>et(a),["stop"])},{default:o(()=>[s(_(a.appt_channel_name),1)]),_:2},1032,["class","onClick"])]),_:1}),n(d,{prop:"carry_in_order_count",label:"顺延汇入单数","min-width":"112",align:"right"}),n(d,{prop:"completed_order_count",label:"已完成单数","min-width":"104",align:"right"}),n(d,{prop:"completed_order_amount",label:"已完成金额","min-width":"112",align:"right"},{default:o(({row:a})=>[s(_(y(a.completed_order_amount)),1)]),_:1}),n(d,{prop:"current_period_count",label:"本期提成单数","min-width":"118",align:"right"}),n(d,{prop:"current_period_amount",label:"本期提成金额","min-width":"118",align:"right"},{default:o(({row:a})=>[s(_(y(a.current_period_amount)),1)]),_:1}),n(d,{prop:"deferred_period_count",label:"顺延下期单数","min-width":"118",align:"right"}),n(d,{prop:"deferred_period_amount",label:"顺延下期金额","min-width":"118",align:"right"},{default:o(({row:a})=>[s(_(y(a.deferred_period_amount)),1)]),_:1})]),_:1},8,["data","span-method"])),[[W,T.value]])]),_:1})]),_:1},8,["modelValue"])]),_:1}),n(Le,{modelValue:me.value,"onUpdate:modelValue":e[9]||(e[9]=a=>me.value=a),title:"业绩明细核对",width:"1280px","destroy-on-close":"",class:"cs-dialog",onOpen:nt},{default:o(()=>[r("div",Fl,[n(Re,{modelValue:P.value,"onUpdate:modelValue":e[7]||(e[7]=a=>P.value=a),size:"small",onChange:e[8]||(e[8]=a=>we(1))},{default:o(()=>[n(A,{label:"all"},{default:o(()=>[...e[47]||(e[47]=[s("全部",-1)])]),_:1}),n(A,{label:"current"},{default:o(()=>[...e[48]||(e[48]=[s("本期提成",-1)])]),_:1}),n(A,{label:"deferred"},{default:o(()=>[...e[49]||(e[49]=[s("顺延下期",-1)])]),_:1})]),_:1},8,["modelValue"])]),Q((u(),h(le,{data:ve.value,border:"",stripe:"",size:"small","max-height":"440"},{default:o(()=>[n(d,{prop:"order_no",label:"业务订单号","min-width":"128","show-overflow-tooltip":""}),n(d,{label:"快递单号","min-width":"132","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.tracking_number||"—"),1)]),_:1}),n(d,{label:"挂号日期","min-width":"124","show-overflow-tooltip":""},{default:o(({row:a})=>[r("span",null,_(a.appointment_date_text||"—"),1),a.appointment_status&&Number(a.appointment_status)!==3?(u(),h(S,{key:0,class:"cs-tag-appt-muted",type:"info",size:"small",effect:"plain"},{default:o(()=>[...e[50]||(e[50]=[s("未完结挂号",-1)])]),_:1})):x("",!0)]),_:1}),n(d,{label:"挂号渠道","min-width":"124","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.appt_channel_name||"—"),1)]),_:1}),n(d,{prop:"assistant_name",label:"业绩医助","min-width":"100","show-overflow-tooltip":""}),n(d,{prop:"doctor_name",label:"开方医生","min-width":"100","show-overflow-tooltip":""}),n(d,{prop:"primary_dept_name",label:"归属部门","min-width":"100","show-overflow-tooltip":""}),n(d,{prop:"amount",label:"金额",width:"108",align:"right"},{default:o(({row:a})=>[s(_(y(a.amount)),1)]),_:1}),n(d,{label:"分段",width:"88",align:"center"},{default:o(({row:a})=>[a.bucket==="current"?(u(),h(S,{key:0,type:"success",size:"small"},{default:o(()=>[...e[51]||(e[51]=[s("本期",-1)])]),_:1})):(u(),h(S,{key:1,type:"warning",size:"small"},{default:o(()=>[...e[52]||(e[52]=[s("顺延",-1)])]),_:1}))]),_:1}),n(d,{label:"结转",width:"72",align:"center"},{default:o(({row:a})=>[a.is_carry_in?(u(),f("span",Ll,"是")):(u(),f("span",Bl,"—"))]),_:1}),n(d,{label:"顺延说明","min-width":"200","show-overflow-tooltip":""},{default:o(({row:a})=>[a.bucket==="deferred"&&a.bucket_defer_text?(u(),f("span",Il,_(a.bucket_defer_text),1)):(u(),f("span",Ul,"—"))]),_:1}),n(d,{label:"物流签收","min-width":"152","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.sign_time_text||"—"),1)]),_:1}),n(d,{prop:"pay_time_text",label:"尾款支付","min-width":"152","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.pay_time_text||"—"),1)]),_:1}),n(d,{prop:"create_time_text",label:"订单创建",width:"152"})]),_:1},8,["data"])),[[W,fe.value]]),r("div",Pl,[n(Fe,{layout:"total, prev, pager, next",total:ge.value,"page-size":Ee.value,"current-page":Ne.value,onCurrentChange:we},null,8,["total","page-size","current-page"])])]),_:1},8,["modelValue"]),n(Le,{modelValue:X.value,"onUpdate:modelValue":e[12]||(e[12]=a=>X.value=a),title:We.value,width:"1280px","destroy-on-close":"",class:"cs-dialog"},{default:o(()=>[r("div",Yl,[n(Re,{modelValue:M.value,"onUpdate:modelValue":e[10]||(e[10]=a=>M.value=a),size:"small",onChange:e[11]||(e[11]=a=>te(1))},{default:o(()=>[n(A,{label:"all"},{default:o(()=>[...e[53]||(e[53]=[s("全部已完成",-1)])]),_:1}),n(A,{label:"current"},{default:o(()=>[...e[54]||(e[54]=[s("本期提成",-1)])]),_:1}),n(A,{label:"deferred"},{default:o(()=>[...e[55]||(e[55]=[s("顺延下期",-1)])]),_:1})]),_:1},8,["modelValue"]),r("span",ql,[e[58]||(e[58]=s(" 结算月:",-1)),r("strong",null,_(c.settlement_month||g.value),1),K.value&&K.value!=="—"?(u(),f(L,{key:0},[e[56]||(e[56]=s(" · 订单创建:",-1)),r("strong",null,_(K.value),1)],64)):x("",!0),c.channel_name?(u(),f(L,{key:1},[e[57]||(e[57]=s(" · 渠道:",-1)),r("strong",null,_(c.channel_name),1)],64)):x("",!0)])]),Q((u(),h(le,{data:q.value,border:"",stripe:"",size:"small","max-height":"440"},{default:o(()=>[n(d,{prop:"order_no",label:"业务订单号","min-width":"128","show-overflow-tooltip":""}),n(d,{label:"快递单号","min-width":"132","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.tracking_number||"—"),1)]),_:1}),n(d,{label:"挂号日期","min-width":"124","show-overflow-tooltip":""},{default:o(({row:a})=>[r("span",null,_(a.appointment_date_text||"—"),1),a.appointment_status&&Number(a.appointment_status)!==3?(u(),h(S,{key:0,class:"cs-tag-appt-muted",type:"info",size:"small",effect:"plain"},{default:o(()=>[...e[59]||(e[59]=[s("未完结挂号",-1)])]),_:1})):x("",!0)]),_:1}),n(d,{label:"挂号渠道","min-width":"124","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.appt_channel_name||"—"),1)]),_:1}),n(d,{prop:"assistant_name",label:"业绩医助","min-width":"100","show-overflow-tooltip":""}),n(d,{prop:"doctor_name",label:"开方医生","min-width":"100","show-overflow-tooltip":""}),n(d,{prop:"primary_dept_name",label:"归属部门","min-width":"120","show-overflow-tooltip":""}),n(d,{prop:"amount",label:"金额",width:"108",align:"right"},{default:o(({row:a})=>[s(_(y(a.amount)),1)]),_:1}),n(d,{label:"分段",width:"88",align:"center"},{default:o(({row:a})=>[a.bucket==="current"?(u(),h(S,{key:0,type:"success",size:"small"},{default:o(()=>[...e[60]||(e[60]=[s("本期",-1)])]),_:1})):(u(),h(S,{key:1,type:"warning",size:"small"},{default:o(()=>[...e[61]||(e[61]=[s("顺延",-1)])]),_:1}))]),_:1}),n(d,{label:"结转",width:"72",align:"center"},{default:o(({row:a})=>[a.is_carry_in?(u(),f("span",Gl,"是")):(u(),f("span",Hl,"—"))]),_:1}),n(d,{label:"顺延说明","min-width":"200","show-overflow-tooltip":""},{default:o(({row:a})=>[a.bucket==="deferred"&&a.bucket_defer_text?(u(),f("span",Al,_(a.bucket_defer_text),1)):(u(),f("span",Wl,"—"))]),_:1}),n(d,{label:"物流签收","min-width":"152","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.sign_time_text||"—"),1)]),_:1}),n(d,{prop:"pay_time_text",label:"尾款支付","min-width":"152","show-overflow-tooltip":""},{default:o(({row:a})=>[s(_(a.pay_time_text||"—"),1)]),_:1}),n(d,{prop:"create_time_text",label:"订单创建",width:"152"})]),_:1},8,["data"])),[[W,he.value]]),r("div",Ql,[n(Fe,{layout:"total, prev, pager, next",total:G.value,"page-size":De.value,"current-page":Z.value,onCurrentChange:te},null,8,["total","page-size","current-page"])])]),_:1},8,["modelValue","title"])])}}}),Ra=tl(jl,[["__scopeId","data-v-71fdf5ef"]]);export{Ra as default};
diff --git a/server/public/admin/assets/config-CYCTw4Fc.js b/server/public/admin/assets/config-BTlTjBYC.js
similarity index 93%
rename from server/public/admin/assets/config-CYCTw4Fc.js
rename to server/public/admin/assets/config-BTlTjBYC.js
index 9ce2de59..0bbb0f04 100644
--- a/server/public/admin/assets/config-CYCTw4Fc.js
+++ b/server/public/admin/assets/config-BTlTjBYC.js
@@ -1 +1 @@
-import{_ as q}from"./index-9zND60WT.js";import{K as R,J as j,B,C as T,i as J,G as N,I as O,D as G}from"./element-plus-0wC3naml.js";import{_ as K}from"./picker-DlbAZkDm.js";import{g as F,s as L}from"./wx_oa-CMZpCm8a.js";import{e as z}from"./index-E47--KT7.js";import{f as x,as as c,ak as m,I as M,a as o,aN as i,J as l,aP as f,G as v,O as r}from"./@vue/runtime-core-C6bnekPw.js";import{y as s,r as P,q as Z}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const H={class:"w-80"},Q={class:"w-80"},W={class:"w-80"},X={class:"w-80"},Y={class:"flex-1 min-w-0"},$={class:"sm:flex"},h={class:"mr-4 sm:w-80 flex"},ee={class:"flex-1 min-w-0"},oe={class:"w-80"},le={class:"flex-1 min-w-0"},te={class:"w-80"},se={class:"flex-1 min-w-0"},ie={class:"flex-1 min-w-0"},de={class:"sm:flex"},ne={class:"mr-4 sm:w-80 flex"},ae={class:"flex-1 min-w-0"},re={class:"sm:flex"},me={class:"mr-4 sm:w-80 flex"},pe={class:"flex-1 min-w-0"},ue={class:"sm:flex"},_e={class:"mr-4 sm:w-80 flex"},fe=x({name:"wxOaConfig"}),Vo=x({...fe,setup(ve){const y=z(),t=P({name:"",original_id:" ",qr_code:"",app_id:"",app_secret:"",url:"",token:"",encoding_aes_key:"",encryption_type:1,business_domain:"",js_secure_domain:"",web_auth_domain:""}),w=Z(),k={app_id:[{required:!0,message:"请输入AppID",trigger:["blur","change"]}],app_secret:[{required:!0,message:"请输入AppSecret",trigger:["blur","change"]}]},g=async()=>{const p=await F();for(const e in t)t[e]=p[e]},U=async()=>{var p;await((p=w.value)==null?void 0:p.validate()),await L(t),g()};return g(),(p,e)=>{const A=R,u=j,a=T,n=B,E=K,_=J,V=O,D=N,I=G,S=q,b=c("copy"),C=c("perms");return m(),M("div",null,[o(u,{class:"!border-none",shadow:"never"},{default:i(()=>[o(A,{type:"warning",title:"温馨提示:填写微信公众号开发配置,请前往微信公众平台申请服务号并完成认证",closable:!1,"show-icon":""})]),_:1}),o(I,{ref_key:"formRef",ref:w,model:s(t),rules:k,"label-width":s(y).isMobile?"80px":"160px"},{default:i(()=>[o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[13]||(e[13]=l("div",{class:"font-medium mb-7"},"微信公众号",-1)),o(n,{label:"公众号名称",prop:"name"},{default:i(()=>[l("div",H,[o(a,{modelValue:s(t).name,"onUpdate:modelValue":e[0]||(e[0]=d=>s(t).name=d),placeholder:"请输入公众号名称"},null,8,["modelValue"])])]),_:1}),o(n,{label:"原始ID",prop:"original_id"},{default:i(()=>[l("div",Q,[o(a,{modelValue:s(t).original_id,"onUpdate:modelValue":e[1]||(e[1]=d=>s(t).original_id=d),placeholder:"请输入原始ID"},null,8,["modelValue"])])]),_:1}),o(n,{label:"公众号二维码",prop:"qr_code"},{default:i(()=>[l("div",null,[l("div",null,[o(E,{modelValue:s(t).qr_code,"onUpdate:modelValue":e[2]||(e[2]=d=>s(t).qr_code=d),limit:1},null,8,["modelValue"])]),e[12]||(e[12]=l("div",{class:"form-tips"},"建议尺寸:宽400px*高400px。jpg,jpeg,png格式",-1))])]),_:1})]),_:1}),o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[15]||(e[15]=l("div",{class:"font-medium mb-7"},"公众号开发者信息",-1)),o(n,{label:"AppID",prop:"app_id"},{default:i(()=>[l("div",W,[o(a,{modelValue:s(t).app_id,"onUpdate:modelValue":e[3]||(e[3]=d=>s(t).app_id=d),placeholder:"请输入AppID"},null,8,["modelValue"])])]),_:1}),o(n,{label:"AppSecret",prop:"app_secret"},{default:i(()=>[l("div",X,[o(a,{modelValue:s(t).app_secret,"onUpdate:modelValue":e[4]||(e[4]=d=>s(t).app_secret=d),placeholder:"请输入AppSecret"},null,8,["modelValue"])])]),_:1}),o(n,null,{default:i(()=>[...e[14]||(e[14]=[l("div",{class:"form-tips"}," 小程序账号登录微信公众平台,点击开发>开发设置->开发者ID,设置AppID和AppSecret ",-1)])]),_:1})]),_:1}),o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[23]||(e[23]=l("div",{class:"font-medium mb-7"},"服务器配置",-1)),o(n,{label:"URL"},{default:i(()=>[l("div",Y,[l("div",$,[l("div",h,[o(a,{modelValue:s(t).url,"onUpdate:modelValue":e[5]||(e[5]=d=>s(t).url=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[16]||(e[16]=[r("复制",-1)])]),_:1})),[[b,s(t).url]])]),e[17]||(e[17]=l("div",{class:"form-tips"}," 登录微信公众平台,点击开发>基本配置>服务器配置,填写服务器地址(URL) ",-1))])]),_:1}),o(n,{label:"Token",prop:"Token"},{default:i(()=>[l("div",ee,[l("div",oe,[o(a,{modelValue:s(t).token,"onUpdate:modelValue":e[6]||(e[6]=d=>s(t).token=d),placeholder:"请输入Token"},null,8,["modelValue"])]),e[18]||(e[18]=l("div",{class:"form-tips"}," 登录微信公众平台,点击开发>基本配置>服务器配置,设置令牌Token。不填默认为“likeshop” ",-1))])]),_:1}),o(n,{label:"EncodingAESKey",prop:"encoding_aes_key"},{default:i(()=>[l("div",le,[l("div",te,[o(a,{modelValue:s(t).encoding_aes_key,"onUpdate:modelValue":e[7]||(e[7]=d=>s(t).encoding_aes_key=d),placeholder:"请输入EncodingAESKey"},null,8,["modelValue"])]),e[19]||(e[19]=l("div",{class:"form-tips"}," 消息加密密钥由43位字符组成,字符范围为A-Z,a-z,0-9 ",-1))])]),_:1}),o(n,{label:"消息加密方式",required:"",prop:"encryption_type"},{default:i(()=>[l("div",se,[o(D,{class:"flex-col !items-start min-w-0",modelValue:s(t).encryption_type,"onUpdate:modelValue":e[8]||(e[8]=d=>s(t).encryption_type=d)},{default:i(()=>[o(V,{value:1},{default:i(()=>[...e[20]||(e[20]=[r(" 明文模式 (不使用消息体加解密功能,安全系数较低) ",-1)])]),_:1}),o(V,{value:2},{default:i(()=>[...e[21]||(e[21]=[r(" 兼容模式 (明文、密文将共存,方便开发者调试和维护) ",-1)])]),_:1}),o(V,{value:3},{default:i(()=>[...e[22]||(e[22]=[r(" 安全模式(推荐) (消息包为纯密文,需要开发者加密和解密,安全系数高) ",-1)])]),_:1})]),_:1},8,["modelValue"])])]),_:1})]),_:1}),o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[30]||(e[30]=l("div",{class:"font-medium mb-7"},"功能设置",-1)),o(n,{label:"业务域名"},{default:i(()=>[l("div",ie,[l("div",de,[l("div",ne,[o(a,{modelValue:s(t).business_domain,"onUpdate:modelValue":e[9]||(e[9]=d=>s(t).business_domain=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[24]||(e[24]=[r("复制",-1)])]),_:1})),[[b,s(t).business_domain]])]),e[25]||(e[25]=l("div",{class:"form-tips"}," 登录微信公众平台,点击设置>公众号设置>功能设置,填写业务域名 ",-1))])]),_:1}),o(n,{label:"JS接口安全域名"},{default:i(()=>[l("div",ae,[l("div",re,[l("div",me,[o(a,{modelValue:s(t).js_secure_domain,"onUpdate:modelValue":e[10]||(e[10]=d=>s(t).js_secure_domain=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[26]||(e[26]=[r("复制",-1)])]),_:1})),[[b,s(t).js_secure_domain]])]),e[27]||(e[27]=l("div",{class:"form-tips"}," 登录微信公众平台,点击设置>公众号设置>功能设置,填写JS接口安全域名 ",-1))])]),_:1}),o(n,{label:"网页授权域名"},{default:i(()=>[l("div",pe,[l("div",ue,[l("div",_e,[o(a,{modelValue:s(t).web_auth_domain,"onUpdate:modelValue":e[11]||(e[11]=d=>s(t).web_auth_domain=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[28]||(e[28]=[r("复制",-1)])]),_:1})),[[b,s(t).web_auth_domain]])]),e[29]||(e[29]=l("div",{class:"form-tips"}," 登录微信公众平台,点击设置>公众号设置>功能设置,填写网页授权域名 ",-1))])]),_:1})]),_:1})]),_:1},8,["model","label-width"]),f((m(),v(S,null,{default:i(()=>[o(_,{type:"primary",onClick:U},{default:i(()=>[...e[31]||(e[31]=[r("保存",-1)])]),_:1})]),_:1})),[[C,["channel.official_account_setting/setConfig"]]])])}}});export{Vo as default};
+import{_ as q}from"./index-x1zzA0a7.js";import{K as R,J as j,B,C as T,i as J,G as N,I as O,D as G}from"./element-plus-DFTWCWyi.js";import{_ as K}from"./picker-BCRrEZaA.js";import{g as F,s as L}from"./wx_oa-sVQft6O9.js";import{e as z}from"./index-DBREMm_z.js";import{f as x,as as c,ak as m,I as M,a as o,aN as i,J as l,aP as f,G as v,O as r}from"./@vue/runtime-core-C6bnekPw.js";import{y as s,r as P,q as Z}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const H={class:"w-80"},Q={class:"w-80"},W={class:"w-80"},X={class:"w-80"},Y={class:"flex-1 min-w-0"},$={class:"sm:flex"},h={class:"mr-4 sm:w-80 flex"},ee={class:"flex-1 min-w-0"},oe={class:"w-80"},le={class:"flex-1 min-w-0"},te={class:"w-80"},se={class:"flex-1 min-w-0"},ie={class:"flex-1 min-w-0"},de={class:"sm:flex"},ne={class:"mr-4 sm:w-80 flex"},ae={class:"flex-1 min-w-0"},re={class:"sm:flex"},me={class:"mr-4 sm:w-80 flex"},pe={class:"flex-1 min-w-0"},ue={class:"sm:flex"},_e={class:"mr-4 sm:w-80 flex"},fe=x({name:"wxOaConfig"}),Vo=x({...fe,setup(ve){const y=z(),t=P({name:"",original_id:" ",qr_code:"",app_id:"",app_secret:"",url:"",token:"",encoding_aes_key:"",encryption_type:1,business_domain:"",js_secure_domain:"",web_auth_domain:""}),w=Z(),k={app_id:[{required:!0,message:"请输入AppID",trigger:["blur","change"]}],app_secret:[{required:!0,message:"请输入AppSecret",trigger:["blur","change"]}]},g=async()=>{const p=await F();for(const e in t)t[e]=p[e]},U=async()=>{var p;await((p=w.value)==null?void 0:p.validate()),await L(t),g()};return g(),(p,e)=>{const A=R,u=j,a=T,n=B,E=K,_=J,V=O,D=N,I=G,S=q,b=c("copy"),C=c("perms");return m(),M("div",null,[o(u,{class:"!border-none",shadow:"never"},{default:i(()=>[o(A,{type:"warning",title:"温馨提示:填写微信公众号开发配置,请前往微信公众平台申请服务号并完成认证",closable:!1,"show-icon":""})]),_:1}),o(I,{ref_key:"formRef",ref:w,model:s(t),rules:k,"label-width":s(y).isMobile?"80px":"160px"},{default:i(()=>[o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[13]||(e[13]=l("div",{class:"font-medium mb-7"},"微信公众号",-1)),o(n,{label:"公众号名称",prop:"name"},{default:i(()=>[l("div",H,[o(a,{modelValue:s(t).name,"onUpdate:modelValue":e[0]||(e[0]=d=>s(t).name=d),placeholder:"请输入公众号名称"},null,8,["modelValue"])])]),_:1}),o(n,{label:"原始ID",prop:"original_id"},{default:i(()=>[l("div",Q,[o(a,{modelValue:s(t).original_id,"onUpdate:modelValue":e[1]||(e[1]=d=>s(t).original_id=d),placeholder:"请输入原始ID"},null,8,["modelValue"])])]),_:1}),o(n,{label:"公众号二维码",prop:"qr_code"},{default:i(()=>[l("div",null,[l("div",null,[o(E,{modelValue:s(t).qr_code,"onUpdate:modelValue":e[2]||(e[2]=d=>s(t).qr_code=d),limit:1},null,8,["modelValue"])]),e[12]||(e[12]=l("div",{class:"form-tips"},"建议尺寸:宽400px*高400px。jpg,jpeg,png格式",-1))])]),_:1})]),_:1}),o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[15]||(e[15]=l("div",{class:"font-medium mb-7"},"公众号开发者信息",-1)),o(n,{label:"AppID",prop:"app_id"},{default:i(()=>[l("div",W,[o(a,{modelValue:s(t).app_id,"onUpdate:modelValue":e[3]||(e[3]=d=>s(t).app_id=d),placeholder:"请输入AppID"},null,8,["modelValue"])])]),_:1}),o(n,{label:"AppSecret",prop:"app_secret"},{default:i(()=>[l("div",X,[o(a,{modelValue:s(t).app_secret,"onUpdate:modelValue":e[4]||(e[4]=d=>s(t).app_secret=d),placeholder:"请输入AppSecret"},null,8,["modelValue"])])]),_:1}),o(n,null,{default:i(()=>[...e[14]||(e[14]=[l("div",{class:"form-tips"}," 小程序账号登录微信公众平台,点击开发>开发设置->开发者ID,设置AppID和AppSecret ",-1)])]),_:1})]),_:1}),o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[23]||(e[23]=l("div",{class:"font-medium mb-7"},"服务器配置",-1)),o(n,{label:"URL"},{default:i(()=>[l("div",Y,[l("div",$,[l("div",h,[o(a,{modelValue:s(t).url,"onUpdate:modelValue":e[5]||(e[5]=d=>s(t).url=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[16]||(e[16]=[r("复制",-1)])]),_:1})),[[b,s(t).url]])]),e[17]||(e[17]=l("div",{class:"form-tips"}," 登录微信公众平台,点击开发>基本配置>服务器配置,填写服务器地址(URL) ",-1))])]),_:1}),o(n,{label:"Token",prop:"Token"},{default:i(()=>[l("div",ee,[l("div",oe,[o(a,{modelValue:s(t).token,"onUpdate:modelValue":e[6]||(e[6]=d=>s(t).token=d),placeholder:"请输入Token"},null,8,["modelValue"])]),e[18]||(e[18]=l("div",{class:"form-tips"}," 登录微信公众平台,点击开发>基本配置>服务器配置,设置令牌Token。不填默认为“likeshop” ",-1))])]),_:1}),o(n,{label:"EncodingAESKey",prop:"encoding_aes_key"},{default:i(()=>[l("div",le,[l("div",te,[o(a,{modelValue:s(t).encoding_aes_key,"onUpdate:modelValue":e[7]||(e[7]=d=>s(t).encoding_aes_key=d),placeholder:"请输入EncodingAESKey"},null,8,["modelValue"])]),e[19]||(e[19]=l("div",{class:"form-tips"}," 消息加密密钥由43位字符组成,字符范围为A-Z,a-z,0-9 ",-1))])]),_:1}),o(n,{label:"消息加密方式",required:"",prop:"encryption_type"},{default:i(()=>[l("div",se,[o(D,{class:"flex-col !items-start min-w-0",modelValue:s(t).encryption_type,"onUpdate:modelValue":e[8]||(e[8]=d=>s(t).encryption_type=d)},{default:i(()=>[o(V,{value:1},{default:i(()=>[...e[20]||(e[20]=[r(" 明文模式 (不使用消息体加解密功能,安全系数较低) ",-1)])]),_:1}),o(V,{value:2},{default:i(()=>[...e[21]||(e[21]=[r(" 兼容模式 (明文、密文将共存,方便开发者调试和维护) ",-1)])]),_:1}),o(V,{value:3},{default:i(()=>[...e[22]||(e[22]=[r(" 安全模式(推荐) (消息包为纯密文,需要开发者加密和解密,安全系数高) ",-1)])]),_:1})]),_:1},8,["modelValue"])])]),_:1})]),_:1}),o(u,{class:"!border-none mt-4",shadow:"never"},{default:i(()=>[e[30]||(e[30]=l("div",{class:"font-medium mb-7"},"功能设置",-1)),o(n,{label:"业务域名"},{default:i(()=>[l("div",ie,[l("div",de,[l("div",ne,[o(a,{modelValue:s(t).business_domain,"onUpdate:modelValue":e[9]||(e[9]=d=>s(t).business_domain=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[24]||(e[24]=[r("复制",-1)])]),_:1})),[[b,s(t).business_domain]])]),e[25]||(e[25]=l("div",{class:"form-tips"}," 登录微信公众平台,点击设置>公众号设置>功能设置,填写业务域名 ",-1))])]),_:1}),o(n,{label:"JS接口安全域名"},{default:i(()=>[l("div",ae,[l("div",re,[l("div",me,[o(a,{modelValue:s(t).js_secure_domain,"onUpdate:modelValue":e[10]||(e[10]=d=>s(t).js_secure_domain=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[26]||(e[26]=[r("复制",-1)])]),_:1})),[[b,s(t).js_secure_domain]])]),e[27]||(e[27]=l("div",{class:"form-tips"}," 登录微信公众平台,点击设置>公众号设置>功能设置,填写JS接口安全域名 ",-1))])]),_:1}),o(n,{label:"网页授权域名"},{default:i(()=>[l("div",pe,[l("div",ue,[l("div",_e,[o(a,{modelValue:s(t).web_auth_domain,"onUpdate:modelValue":e[11]||(e[11]=d=>s(t).web_auth_domain=d),disabled:""},null,8,["modelValue"])]),f((m(),v(_,null,{default:i(()=>[...e[28]||(e[28]=[r("复制",-1)])]),_:1})),[[b,s(t).web_auth_domain]])]),e[29]||(e[29]=l("div",{class:"form-tips"}," 登录微信公众平台,点击设置>公众号设置>功能设置,填写网页授权域名 ",-1))])]),_:1})]),_:1})]),_:1},8,["model","label-width"]),f((m(),v(S,null,{default:i(()=>[o(_,{type:"primary",onClick:U},{default:i(()=>[...e[31]||(e[31]=[r("保存",-1)])]),_:1})]),_:1})),[[C,["channel.official_account_setting/setConfig"]]])])}}});export{Vo as default};
diff --git a/server/public/admin/assets/consumer-C-hGL7Bd.js b/server/public/admin/assets/consumer-BHPpijRv.js
similarity index 81%
rename from server/public/admin/assets/consumer-C-hGL7Bd.js
rename to server/public/admin/assets/consumer-BHPpijRv.js
index dbd1371d..b56e259e 100644
--- a/server/public/admin/assets/consumer-C-hGL7Bd.js
+++ b/server/public/admin/assets/consumer-BHPpijRv.js
@@ -1 +1 @@
-import{r}from"./index-E47--KT7.js";function u(e){return r.get({url:"/user.user/lists",params:e},{ignoreCancelToken:!0})}function s(e){return r.get({url:"/user.user/detail",params:e})}function n(e){return r.post({url:"/user.user/edit",params:e})}function o(e){return r.post({url:"/user.user/adjustMoney",params:e})}export{o as a,u as b,s as g,n as u};
+import{r}from"./index-DBREMm_z.js";function u(e){return r.get({url:"/user.user/lists",params:e},{ignoreCancelToken:!0})}function s(e){return r.get({url:"/user.user/detail",params:e})}function n(e){return r.post({url:"/user.user/edit",params:e})}function o(e){return r.post({url:"/user.user/adjustMoney",params:e})}export{o as a,u as b,s as g,n as u};
diff --git a/server/public/admin/assets/content-DP2jpo2x.js b/server/public/admin/assets/content-BXP6L3kv.js
similarity index 86%
rename from server/public/admin/assets/content-DP2jpo2x.js
rename to server/public/admin/assets/content-BXP6L3kv.js
index 6c0fee8a..b36f8ea6 100644
--- a/server/public/admin/assets/content-DP2jpo2x.js
+++ b/server/public/admin/assets/content-BXP6L3kv.js
@@ -1 +1 @@
-import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-B9VzIZnv.js";import"./decoration-img-CZl9mrsf.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
+import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-B-SEL-YW.js";import"./decoration-img-CZLpkXPN.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
diff --git a/server/public/admin/assets/content-B7VEJItb.js b/server/public/admin/assets/content-BeOu4XYf.js
similarity index 92%
rename from server/public/admin/assets/content-B7VEJItb.js
rename to server/public/admin/assets/content-BeOu4XYf.js
index fae630db..286cf475 100644
--- a/server/public/admin/assets/content-B7VEJItb.js
+++ b/server/public/admin/assets/content-BeOu4XYf.js
@@ -1 +1 @@
-import{_ as i,c as m}from"./index-E47--KT7.js";import{ak as p,I as e,J as t,a as s}from"./@vue/runtime-core-C6bnekPw.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const c={},a={class:"search"},n={class:"search-con flex items-center px-[15px]"};function _(d,o){const r=m;return p(),e("div",a,[t("div",n,[s(r,{name:"el-icon-Search",size:17}),o[0]||(o[0]=t("span",{class:"ml-[5px]"},"请输入关键词搜索",-1))])])}const W=i(c,[["render",_],["__scopeId","data-v-3514bdd8"]]);export{W as default};
+import{_ as i,c as m}from"./index-DBREMm_z.js";import{ak as p,I as e,J as t,a as s}from"./@vue/runtime-core-C6bnekPw.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const c={},a={class:"search"},n={class:"search-con flex items-center px-[15px]"};function _(d,o){const r=m;return p(),e("div",a,[t("div",n,[s(r,{name:"el-icon-Search",size:17}),o[0]||(o[0]=t("span",{class:"ml-[5px]"},"请输入关键词搜索",-1))])])}const W=i(c,[["render",_],["__scopeId","data-v-3514bdd8"]]);export{W as default};
diff --git a/server/public/admin/assets/content-CtN1fP4w.js b/server/public/admin/assets/content-C1yNkqxj.js
similarity index 92%
rename from server/public/admin/assets/content-CtN1fP4w.js
rename to server/public/admin/assets/content-C1yNkqxj.js
index ac93dab0..66764883 100644
--- a/server/public/admin/assets/content-CtN1fP4w.js
+++ b/server/public/admin/assets/content-C1yNkqxj.js
@@ -1 +1 @@
-import{s as _}from"./element-plus-0wC3naml.js";import l from"./decoration-img-CZl9mrsf.js";import{f,ak as r,I as e,a as p,aN as a,J as t,F as m,ap as c,H as v}from"./@vue/runtime-core-C6bnekPw.js";import{o as h,Q as d}from"./@vue/shared-mAAVTE9n.js";import{_ as x}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const y={class:"pc-aside absolute top-0 bottom-0 left-0 w-[150px]"},k={class:"h-full px-[10px] flex flex-col"},b={class:"mb-auto"},g={class:"nav"},w=["to"],C={class:"ml-[10px]"},N={class:"menu"},B={class:"ml-[6px] line-clamp-1"},E=f({__name:"content",props:{nav:{type:Array,default:()=>[]},menu:{type:Array,default:()=>[]}},setup(n){return(I,i)=>{const u=_;return r(),e("div",y,[p(u,null,{default:a(()=>[t("div",k,[t("div",b,[t("div",g,[(r(!0),e(m,null,c(n.nav,(o,s)=>(r(),e(m,{key:s},[o.is_show=="1"?(r(),e("div",{key:0,to:o.link.path,class:h(["nav-item",{active:s==0}])},[p(l,{width:"18px",height:"18px",src:s==0?o.selected:o.unselected,fit:"cover"},{error:a(()=>[...i[0]||(i[0]=[t("span",null,null,-1)])]),_:1},8,["src"]),t("div",C,d(o.name),1)],10,w)):v("",!0)],64))),128))])]),t("div",null,[t("div",N,[(r(!0),e(m,null,c(n.menu,(o,s)=>(r(),e("div",{class:"menu-item",key:s},[p(l,{width:"16px",height:"16px",src:o.unselected,fit:"cover"},{error:a(()=>[...i[1]||(i[1]=[t("span",null,null,-1)])]),_:1},8,["src"]),t("span",B,d(o.name),1)]))),128))])])])]),_:1})])}}}),ut=x(E,[["__scopeId","data-v-35c14957"]]);export{ut as default};
+import{s as _}from"./element-plus-DFTWCWyi.js";import l from"./decoration-img-CZLpkXPN.js";import{f,ak as r,I as e,a as p,aN as a,J as t,F as m,ap as c,H as v}from"./@vue/runtime-core-C6bnekPw.js";import{o as h,Q as d}from"./@vue/shared-mAAVTE9n.js";import{_ as x}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const y={class:"pc-aside absolute top-0 bottom-0 left-0 w-[150px]"},k={class:"h-full px-[10px] flex flex-col"},b={class:"mb-auto"},g={class:"nav"},w=["to"],C={class:"ml-[10px]"},N={class:"menu"},B={class:"ml-[6px] line-clamp-1"},E=f({__name:"content",props:{nav:{type:Array,default:()=>[]},menu:{type:Array,default:()=>[]}},setup(n){return(I,i)=>{const u=_;return r(),e("div",y,[p(u,null,{default:a(()=>[t("div",k,[t("div",b,[t("div",g,[(r(!0),e(m,null,c(n.nav,(o,s)=>(r(),e(m,{key:s},[o.is_show=="1"?(r(),e("div",{key:0,to:o.link.path,class:h(["nav-item",{active:s==0}])},[p(l,{width:"18px",height:"18px",src:s==0?o.selected:o.unselected,fit:"cover"},{error:a(()=>[...i[0]||(i[0]=[t("span",null,null,-1)])]),_:1},8,["src"]),t("div",C,d(o.name),1)],10,w)):v("",!0)],64))),128))])]),t("div",null,[t("div",N,[(r(!0),e(m,null,c(n.menu,(o,s)=>(r(),e("div",{class:"menu-item",key:s},[p(l,{width:"16px",height:"16px",src:o.unselected,fit:"cover"},{error:a(()=>[...i[1]||(i[1]=[t("span",null,null,-1)])]),_:1},8,["src"]),t("span",B,d(o.name),1)]))),128))])])])]),_:1})])}}}),ut=x(E,[["__scopeId","data-v-35c14957"]]);export{ut as default};
diff --git a/server/public/admin/assets/content-CgQTA2IB.js b/server/public/admin/assets/content-C_MRybMI.js
similarity index 92%
rename from server/public/admin/assets/content-CgQTA2IB.js
rename to server/public/admin/assets/content-C_MRybMI.js
index d177d5c4..ae53cc37 100644
--- a/server/public/admin/assets/content-CgQTA2IB.js
+++ b/server/public/admin/assets/content-C_MRybMI.js
@@ -1 +1 @@
-import{_ as r}from"./index-E47--KT7.js";import{ak as p,I as i,J as o}from"./@vue/runtime-core-C6bnekPw.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const m="/admin/assets/default_avatar-C6VB7PGm.png",e={},s={class:"user-info flex items-center px-[25px]"};function a(n,t){return p(),i("div",s,[...t[0]||(t[0]=[o("img",{src:m,class:"w-[60px] h-[60px]",alt:""},null,-1),o("div",{class:"text-white text-[18px] ml-[10px]"},"未登录",-1)])])}const T=r(e,[["render",a],["__scopeId","data-v-4b1b613f"]]);export{T as default};
+import{_ as r}from"./index-DBREMm_z.js";import{ak as p,I as i,J as o}from"./@vue/runtime-core-C6bnekPw.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const m="/admin/assets/default_avatar-C6VB7PGm.png",e={},s={class:"user-info flex items-center px-[25px]"};function a(n,t){return p(),i("div",s,[...t[0]||(t[0]=[o("img",{src:m,class:"w-[60px] h-[60px]",alt:""},null,-1),o("div",{class:"text-white text-[18px] ml-[10px]"},"未登录",-1)])])}const T=r(e,[["render",a],["__scopeId","data-v-4b1b613f"]]);export{T as default};
diff --git a/server/public/admin/assets/content-Ba9eVUWZ.js b/server/public/admin/assets/content-Cko7KRov.js
similarity index 86%
rename from server/public/admin/assets/content-Ba9eVUWZ.js
rename to server/public/admin/assets/content-Cko7KRov.js
index e40c9a59..1f321aae 100644
--- a/server/public/admin/assets/content-Ba9eVUWZ.js
+++ b/server/public/admin/assets/content-Cko7KRov.js
@@ -1 +1 @@
-import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-C4EWc4Ny.js";import"./decoration-img-CZl9mrsf.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
+import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-u1kTovEN.js";import"./decoration-img-CZLpkXPN.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
diff --git a/server/public/admin/assets/content-BcVLO4Yk.js b/server/public/admin/assets/content-D083YTRY.js
similarity index 86%
rename from server/public/admin/assets/content-BcVLO4Yk.js
rename to server/public/admin/assets/content-D083YTRY.js
index 5e3b9860..3f5756f0 100644
--- a/server/public/admin/assets/content-BcVLO4Yk.js
+++ b/server/public/admin/assets/content-D083YTRY.js
@@ -1 +1 @@
-import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-CuEc-gLQ.js";import"./decoration-img-CZl9mrsf.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
+import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-DtEQqPIi.js";import"./decoration-img-CZLpkXPN.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
diff --git a/server/public/admin/assets/content-DoO11RHs.js b/server/public/admin/assets/content-DXKcrTu3.js
similarity index 67%
rename from server/public/admin/assets/content-DoO11RHs.js
rename to server/public/admin/assets/content-DXKcrTu3.js
index 5fc7f954..44b8fc87 100644
--- a/server/public/admin/assets/content-DoO11RHs.js
+++ b/server/public/admin/assets/content-DXKcrTu3.js
@@ -1 +1 @@
-import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-hItYL1wr.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BHTgr4Ka.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-B9b8bj5N.js";import"./index-nymJKQXP.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./article-DJnP6RZd.js";import"./usePaging-VsbTxSU0.js";import"./picker-DlbAZkDm.js";import"./index-B56X8bEB.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
+import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-BK6uSq1e.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-CbfZXeGu.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DPnqJ8Gk.js";import"./index-BwF7vczx.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./article-BnVIxFkr.js";import"./usePaging-VsbTxSU0.js";import"./picker-BCRrEZaA.js";import"./index-BiPYXDtP.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";export{o as default};
diff --git a/server/public/admin/assets/content-Dyh_0iwA.js b/server/public/admin/assets/content-DblaaeJD.js
similarity index 92%
rename from server/public/admin/assets/content-Dyh_0iwA.js
rename to server/public/admin/assets/content-DblaaeJD.js
index f2313184..478fe4fd 100644
--- a/server/public/admin/assets/content-Dyh_0iwA.js
+++ b/server/public/admin/assets/content-DblaaeJD.js
@@ -1 +1 @@
-import{c,_ as n}from"./index-E47--KT7.js";import{g as l}from"./decoration-ChND9qat.js";import{f as d,ak as o,I as s,J as t,F as _,ap as x,H as f,a as u}from"./@vue/runtime-core-C6bnekPw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{y as v,n as y}from"./@vue/reactivity-DiY1c2vO.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./lodash-D3kF6u-c.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const w={class:"news"},b={key:0,class:"mr-[10px]"},g=["src"],h={class:"flex flex-col justify-between flex-1"},k={class:"text-[15px] font-medium line-clamp-2"},j={class:"line-clamp-1 text-sm mt-[8px]"},D={class:"text-[#999] text-xs w-full flex justify-between mt-[8px]"},V={class:"flex items-center"},B={class:"ml-[5px]"},N=d({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(C){const r=y([]);return(async()=>{const p=await l({limit:10});r.value=p})(),(p,m)=>{const a=c;return o(),s("div",w,[m[0]||(m[0]=t("div",{class:"flex items-center news-title mx-[10px] my-[15px] text-[17px] font-medium"}," 最新资讯 ",-1)),(o(!0),s(_,null,x(v(r),e=>(o(),s("div",{key:e.id,class:"news-card flex bg-white px-[10px] py-[16px] text-[#333] border-[#f2f2f2] border-b"},[e.image?(o(),s("div",b,[t("img",{src:e.image,class:"w-[120px] h-[90px] object-contain"},null,8,g)])):f("",!0),t("div",h,[t("div",k,i(e.title),1),t("div",j,i(e.desc),1),t("div",D,[t("div",null,i(e.create_time),1),t("div",V,[u(a,{name:"el-icon-View"}),t("div",B,i(e.click),1)])])])]))),128))])}}}),ft=n(N,[["__scopeId","data-v-dba98882"]]);export{ft as default};
+import{c,_ as n}from"./index-DBREMm_z.js";import{g as l}from"./decoration-C799ML-U.js";import{f as d,ak as o,I as s,J as t,F as _,ap as x,H as f,a as u}from"./@vue/runtime-core-C6bnekPw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{y as v,n as y}from"./@vue/reactivity-DiY1c2vO.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./lodash-D3kF6u-c.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const w={class:"news"},b={key:0,class:"mr-[10px]"},g=["src"],h={class:"flex flex-col justify-between flex-1"},k={class:"text-[15px] font-medium line-clamp-2"},j={class:"line-clamp-1 text-sm mt-[8px]"},D={class:"text-[#999] text-xs w-full flex justify-between mt-[8px]"},V={class:"flex items-center"},B={class:"ml-[5px]"},N=d({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(C){const r=y([]);return(async()=>{const p=await l({limit:10});r.value=p})(),(p,m)=>{const a=c;return o(),s("div",w,[m[0]||(m[0]=t("div",{class:"flex items-center news-title mx-[10px] my-[15px] text-[17px] font-medium"}," 最新资讯 ",-1)),(o(!0),s(_,null,x(v(r),e=>(o(),s("div",{key:e.id,class:"news-card flex bg-white px-[10px] py-[16px] text-[#333] border-[#f2f2f2] border-b"},[e.image?(o(),s("div",b,[t("img",{src:e.image,class:"w-[120px] h-[90px] object-contain"},null,8,g)])):f("",!0),t("div",h,[t("div",k,i(e.title),1),t("div",j,i(e.desc),1),t("div",D,[t("div",null,i(e.create_time),1),t("div",V,[u(a,{name:"el-icon-View"}),t("div",B,i(e.click),1)])])])]))),128))])}}}),ft=n(N,[["__scopeId","data-v-dba98882"]]);export{ft as default};
diff --git a/server/public/admin/assets/content-B6YfxEbd.js b/server/public/admin/assets/content-Dyki4H78.js
similarity index 92%
rename from server/public/admin/assets/content-B6YfxEbd.js
rename to server/public/admin/assets/content-Dyki4H78.js
index eb9eaa28..9b2ec4d2 100644
--- a/server/public/admin/assets/content-B6YfxEbd.js
+++ b/server/public/admin/assets/content-Dyki4H78.js
@@ -1 +1 @@
-import s from"./decoration-img-CZl9mrsf.js";import{f as p,ak as r,I as m,J as e,a as c,H as n,O as a,F as l}from"./@vue/runtime-core-C6bnekPw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{_ as x}from"./index-E47--KT7.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const d={class:"customer-service bg-white flex flex-col justify-center items-center mx-[18px] mt-[15px] rounded-[10px] px-[10px] pb-[50px]"},f={class:"w-full border-solid border-0 border-b border-[#f5f5f5] p-[15px] text-center text-[#101010] text-base font-medium"},u={class:"mt-[30px]"},b={key:0,class:"text-sm mt-[20px] font-medium"},h={key:1,class:"text-sm mt-[12px] flex flex-wrap"},w=["href"],v={key:2,class:"text-muted text-sm mt-[15px]"},y=p({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){return(k,o)=>(r(),m(l,null,[o[0]||(o[0]=e("view",{class:"bg-white p-[15px] flex text-[#101010] font-medium text-lg"}," 联系我们 ",-1)),e("view",d,[e("view",f,i(t.content.title),1),e("view",u,[c(s,{width:"100px",height:"100px",src:t.content.qrcode,alt:""},null,8,["src"])]),t.content.remark?(r(),m("view",b,i(t.content.remark),1)):n("",!0),t.content.mobile?(r(),m("view",h,[e("a",{class:"ml-[5px] phone text-primary underline",href:"tel:"+t.content.mobile},i(t.content.mobile),9,w)])):n("",!0),t.content.time?(r(),m("view",v," 服务时间:"+i(t.content.time),1)):n("",!0)]),o[1]||(o[1]=a(" Î ",-1))],64))}}),nt=x(y,[["__scopeId","data-v-ed28524a"]]);export{nt as default};
+import s from"./decoration-img-CZLpkXPN.js";import{f as p,ak as r,I as m,J as e,a as c,H as n,O as a,F as l}from"./@vue/runtime-core-C6bnekPw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{_ as x}from"./index-DBREMm_z.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const d={class:"customer-service bg-white flex flex-col justify-center items-center mx-[18px] mt-[15px] rounded-[10px] px-[10px] pb-[50px]"},f={class:"w-full border-solid border-0 border-b border-[#f5f5f5] p-[15px] text-center text-[#101010] text-base font-medium"},u={class:"mt-[30px]"},b={key:0,class:"text-sm mt-[20px] font-medium"},h={key:1,class:"text-sm mt-[12px] flex flex-wrap"},w=["href"],v={key:2,class:"text-muted text-sm mt-[15px]"},y=p({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){return(k,o)=>(r(),m(l,null,[o[0]||(o[0]=e("view",{class:"bg-white p-[15px] flex text-[#101010] font-medium text-lg"}," 联系我们 ",-1)),e("view",d,[e("view",f,i(t.content.title),1),e("view",u,[c(s,{width:"100px",height:"100px",src:t.content.qrcode,alt:""},null,8,["src"])]),t.content.remark?(r(),m("view",b,i(t.content.remark),1)):n("",!0),t.content.mobile?(r(),m("view",h,[e("a",{class:"ml-[5px] phone text-primary underline",href:"tel:"+t.content.mobile},i(t.content.mobile),9,w)])):n("",!0),t.content.time?(r(),m("view",v," 服务时间:"+i(t.content.time),1)):n("",!0)]),o[1]||(o[1]=a(" Î ",-1))],64))}}),nt=x(y,[["__scopeId","data-v-ed28524a"]]);export{nt as default};
diff --git a/server/public/admin/assets/content-B1b0mSAw.js b/server/public/admin/assets/content-PkioGtTh.js
similarity index 90%
rename from server/public/admin/assets/content-B1b0mSAw.js
rename to server/public/admin/assets/content-PkioGtTh.js
index 7ea2556a..88f994d3 100644
--- a/server/public/admin/assets/content-B1b0mSAw.js
+++ b/server/public/admin/assets/content-PkioGtTh.js
@@ -1 +1 @@
-import{_ as t}from"./index-E47--KT7.js";import{ak as o,I as r}from"./@vue/runtime-core-C6bnekPw.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const m={},i={class:"page-mate"};function p(e,c){return o(),r("div",i)}const S=t(m,[["render",p]]);export{S as default};
+import{_ as t}from"./index-DBREMm_z.js";import{ak as o,I as r}from"./@vue/runtime-core-C6bnekPw.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const m={},i={class:"page-mate"};function p(e,c){return o(),r("div",i)}const S=t(m,[["render",p]]);export{S as default};
diff --git a/server/public/admin/assets/content-Cj4lK4l8.js b/server/public/admin/assets/content-Sf3nxxVG.js
similarity index 92%
rename from server/public/admin/assets/content-Cj4lK4l8.js
rename to server/public/admin/assets/content-Sf3nxxVG.js
index 910895f1..6a857534 100644
--- a/server/public/admin/assets/content-Cj4lK4l8.js
+++ b/server/public/admin/assets/content-Sf3nxxVG.js
@@ -1 +1 @@
-import{c as y,_ as v}from"./index-E47--KT7.js";import d from"./decoration-img-CZl9mrsf.js";import{f as b,ak as t,I as e,J as i,H as m,F as x,ap as f,a as n,A as g}from"./@vue/runtime-core-C6bnekPw.js";import{Q as c}from"./@vue/shared-mAAVTE9n.js";import{y as u}from"./@vue/reactivity-DiY1c2vO.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./lodash-D3kF6u-c.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const k={class:"my-service"},w={key:0,class:"title px-[15px] py-[10px]"},B={key:1,class:"flex flex-wrap pt-[20px] pb-[10px]"},I={class:"mt-[7px]"},N={key:2},V={class:"ml-[10px] flex-1"},j=b({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){const _=o,a=g(()=>{var s;return((s=_.content.data)==null?void 0:s.filter(l=>l.is_show=="1"))||[]});return(s,l)=>{const h=y;return t(),e("div",k,[o.content.title?(t(),e("div",w,[i("div",null,c(o.content.title),1)])):m("",!0),o.content.style==1?(t(),e("div",B,[(t(!0),e(x,null,f(u(a),(r,p)=>(t(),e("div",{key:p,class:"flex flex-col items-center w-1/4 mb-[15px]"},[n(d,{width:"26px",height:"26px",src:r.image,alt:""},null,8,["src"]),i("div",I,c(r.name),1)]))),128))])):m("",!0),o.content.style==2?(t(),e("div",N,[(t(!0),e(x,null,f(u(a),(r,p)=>(t(),e("div",{key:p,class:"flex items-center border-b border-[#e5e5e5] h-[50px] px-[12px]"},[n(d,{width:"24px",height:"24px",src:r.image,alt:""},null,8,["src"]),i("div",V,c(r.name),1),i("div",null,[n(h,{name:"el-icon-ArrowRight"})])]))),128))])):m("",!0)])}}}),xt=v(j,[["__scopeId","data-v-2f09c27b"]]);export{xt as default};
+import{c as y,_ as v}from"./index-DBREMm_z.js";import d from"./decoration-img-CZLpkXPN.js";import{f as b,ak as t,I as e,J as i,H as m,F as x,ap as f,a as n,A as g}from"./@vue/runtime-core-C6bnekPw.js";import{Q as c}from"./@vue/shared-mAAVTE9n.js";import{y as u}from"./@vue/reactivity-DiY1c2vO.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./lodash-D3kF6u-c.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const k={class:"my-service"},w={key:0,class:"title px-[15px] py-[10px]"},B={key:1,class:"flex flex-wrap pt-[20px] pb-[10px]"},I={class:"mt-[7px]"},N={key:2},V={class:"ml-[10px] flex-1"},j=b({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){const _=o,a=g(()=>{var s;return((s=_.content.data)==null?void 0:s.filter(l=>l.is_show=="1"))||[]});return(s,l)=>{const h=y;return t(),e("div",k,[o.content.title?(t(),e("div",w,[i("div",null,c(o.content.title),1)])):m("",!0),o.content.style==1?(t(),e("div",B,[(t(!0),e(x,null,f(u(a),(r,p)=>(t(),e("div",{key:p,class:"flex flex-col items-center w-1/4 mb-[15px]"},[n(d,{width:"26px",height:"26px",src:r.image,alt:""},null,8,["src"]),i("div",I,c(r.name),1)]))),128))])):m("",!0),o.content.style==2?(t(),e("div",N,[(t(!0),e(x,null,f(u(a),(r,p)=>(t(),e("div",{key:p,class:"flex items-center border-b border-[#e5e5e5] h-[50px] px-[12px]"},[n(d,{width:"24px",height:"24px",src:r.image,alt:""},null,8,["src"]),i("div",V,c(r.name),1),i("div",null,[n(h,{name:"el-icon-ArrowRight"})])]))),128))])):m("",!0)])}}}),xt=v(j,[["__scopeId","data-v-2f09c27b"]]);export{xt as default};
diff --git a/server/public/admin/assets/content-Dt4NHJyv.js b/server/public/admin/assets/content-cVLu-KHW.js
similarity index 93%
rename from server/public/admin/assets/content-Dt4NHJyv.js
rename to server/public/admin/assets/content-cVLu-KHW.js
index f1fff9f4..a87a8f10 100644
--- a/server/public/admin/assets/content-Dt4NHJyv.js
+++ b/server/public/admin/assets/content-cVLu-KHW.js
@@ -1 +1 @@
-import c from"./decoration-img-CZl9mrsf.js";import{f as n,ak as r,I as o,F as l,ap as f,a as d,J as u,A as _}from"./@vue/runtime-core-C6bnekPw.js";import{p as x,Q as y}from"./@vue/shared-mAAVTE9n.js";import{y as b}from"./@vue/reactivity-DiY1c2vO.js";import{_ as h}from"./index-E47--KT7.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const g={class:"tabbar flex"},v={class:"leading-3 text-[12px] mt-[4px]"},k=n({__name:"content",props:{style:{type:Object,default:()=>({})},list:{type:Array,default:()=>[]}},setup(e){const m=e,s=_(()=>{var t;return((t=m.list)==null?void 0:t.filter(i=>i.is_show==1))||[]});return(t,i)=>(r(),o("div",g,[(r(!0),o(l,null,f(b(s),(p,a)=>(r(),o("div",{key:a,class:"tabbar-item flex flex-col justify-center items-center flex-1",style:x({color:e.style.default_color})},[d(c,{width:"22px",height:"22px",src:p.unselected,fit:"cover"},null,8,["src"]),u("div",v,y(p.name),1)],4))),128))]))}}),st=h(k,[["__scopeId","data-v-0405bccb"]]);export{st as default};
+import c from"./decoration-img-CZLpkXPN.js";import{f as n,ak as r,I as o,F as l,ap as f,a as d,J as u,A as _}from"./@vue/runtime-core-C6bnekPw.js";import{p as x,Q as y}from"./@vue/shared-mAAVTE9n.js";import{y as b}from"./@vue/reactivity-DiY1c2vO.js";import{_ as h}from"./index-DBREMm_z.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const g={class:"tabbar flex"},v={class:"leading-3 text-[12px] mt-[4px]"},k=n({__name:"content",props:{style:{type:Object,default:()=>({})},list:{type:Array,default:()=>[]}},setup(e){const m=e,s=_(()=>{var t;return((t=m.list)==null?void 0:t.filter(i=>i.is_show==1))||[]});return(t,i)=>(r(),o("div",g,[(r(!0),o(l,null,f(b(s),(p,a)=>(r(),o("div",{key:a,class:"tabbar-item flex flex-col justify-center items-center flex-1",style:x({color:e.style.default_color})},[d(c,{width:"22px",height:"22px",src:p.unselected,fit:"cover"},null,8,["src"]),u("div",v,y(p.name),1)],4))),128))]))}}),st=h(k,[["__scopeId","data-v-0405bccb"]]);export{st as default};
diff --git a/server/public/admin/assets/content-CfP4zJwT.js b/server/public/admin/assets/content-cljmXW2f.js
similarity index 86%
rename from server/public/admin/assets/content-CfP4zJwT.js
rename to server/public/admin/assets/content-cljmXW2f.js
index 2356b03f..0fac6d6a 100644
--- a/server/public/admin/assets/content-CfP4zJwT.js
+++ b/server/public/admin/assets/content-cljmXW2f.js
@@ -1 +1 @@
-import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-zA2x9af7.js";import"./decoration-img-CZl9mrsf.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
+import{_ as o}from"./content.vue_vue_type_script_setup_true_lang-uukcy-Ti.js";import"./decoration-img-CZLpkXPN.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";export{o as default};
diff --git a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-CuEc-gLQ.js b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-B-SEL-YW.js
similarity index 93%
rename from server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-CuEc-gLQ.js
rename to server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-B-SEL-YW.js
index 06153333..014d9e3e 100644
--- a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-CuEc-gLQ.js
+++ b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-B-SEL-YW.js
@@ -1 +1 @@
-import p from"./decoration-img-CZl9mrsf.js";import{f as m,ak as a,I as n,J as r,F as d,ap as f,a as u,A as _}from"./@vue/runtime-core-C6bnekPw.js";import{Q as g,p as h}from"./@vue/shared-mAAVTE9n.js";import{y as x}from"./@vue/reactivity-DiY1c2vO.js";const y={class:"nav bg-white pt-[15px] pb-[8px]"},w={class:"mt-[7px]"},j=m({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){const t=o,c=_(()=>{var s;return(((s=t.content.data)==null?void 0:s.filter(e=>e.is_show=="1"))||[]).slice(0,t.content.show_line*t.content.per_line)});return(i,s)=>(a(),n("div",y,[r("div",{class:"grid grid-rows-auto gap-y-3 w-full",style:h({"grid-template-columns":`repeat(${o.content.per_line}, 1fr)`})},[(a(!0),n(d,null,f(x(c),(e,l)=>(a(),n("div",{key:l,class:"flex flex-col items-center"},[u(p,{width:"41px",height:"41px",src:e.image,alt:""},null,8,["src"]),r("div",w,g(e.name),1)]))),128))],4)]))}});export{j as _};
+import p from"./decoration-img-CZLpkXPN.js";import{f as m,ak as a,I as n,J as r,F as d,ap as f,a as u,A as _}from"./@vue/runtime-core-C6bnekPw.js";import{Q as g,p as h}from"./@vue/shared-mAAVTE9n.js";import{y as x}from"./@vue/reactivity-DiY1c2vO.js";const y={class:"nav bg-white pt-[15px] pb-[8px]"},w={class:"mt-[7px]"},j=m({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){const t=o,c=_(()=>{var s;return(((s=t.content.data)==null?void 0:s.filter(e=>e.is_show=="1"))||[]).slice(0,t.content.show_line*t.content.per_line)});return(i,s)=>(a(),n("div",y,[r("div",{class:"grid grid-rows-auto gap-y-3 w-full",style:h({"grid-template-columns":`repeat(${o.content.per_line}, 1fr)`})},[(a(!0),n(d,null,f(x(c),(e,l)=>(a(),n("div",{key:l,class:"flex flex-col items-center"},[u(p,{width:"41px",height:"41px",src:e.image,alt:""},null,8,["src"]),r("div",w,g(e.name),1)]))),128))],4)]))}});export{j as _};
diff --git a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-hItYL1wr.js b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-BK6uSq1e.js
similarity index 86%
rename from server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-hItYL1wr.js
rename to server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-BK6uSq1e.js
index 00d8dc9b..9db6ec80 100644
--- a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-hItYL1wr.js
+++ b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-BK6uSq1e.js
@@ -1 +1 @@
-import{K as U,s as j,i as O}from"./element-plus-0wC3naml.js";import{_ as R}from"./index-BHTgr4Ka.js";import{_ as S}from"./picker-B9b8bj5N.js";import{_ as $}from"./picker-DlbAZkDm.js";import{_ as A}from"./index-nymJKQXP.js";import{i as u}from"./index-E47--KT7.js";import{k as f}from"./lodash-es-C2A-Pj28.js";import{f as D,ak as r,G as g,aN as o,a as n,J as l,I as h,F,ap as q,O as G}from"./@vue/runtime-core-C6bnekPw.js";import{q as I}from"./@vue/reactivity-DiY1c2vO.js";const J={class:"flex flex-wrap p-4"},K={class:"bg-fill-light w-full p-4"},L={class:"flex items-center"},T={class:"mt-4 ml-4"},ee=D({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},height:{type:String,default:"170px"}},emits:["update:content"],setup(d,{expose:x,emit:k}){const _=k,i=I(),a=d,y=()=>{var e;(e=i.value)==null||e.open()},b=()=>{var e;(e=i.value)==null||e.close()},w=()=>{var e;if(((e=a.content.data)==null?void 0:e.length)<10){const t=f(a.content);t.data.push({image:"",name:"",link:{}}),_("update:content",t)}else u.msgError("最多添加10张图片")},V=e=>{var s;if(((s=a.content.data)==null?void 0:s.length)<=1)return u.msgError("最少保留一个轮播图");const t=f(a.content);t.data.splice(e,1),_("update:content",t)};return x({open:y}),(e,t)=>{const s=U,v=$,C=S,E=R,B=O,N=j;return r(),g(A,{ref_key:"popupRef",ref:i,title:"轮播图设置",async:!0,width:"980px",onConfirm:b},{default:o(()=>[n(s,{title:"最多可添加10张,建议图片尺寸750px*440px",type:"warning"}),n(N,{height:"400px",class:"mt-4"},{default:o(()=>[l("div",J,[(r(!0),h(F,null,q(d.content.data,(p,m)=>(r(),h("div",{key:m,class:"w-[400px] mr-4 mb-4"},[(r(),g(E,{key:m,onClose:c=>V(m),class:"w-full"},{default:o(()=>[l("div",K,[l("div",L,[n(v,{width:"122px",height:"122px",modelValue:p.image,"onUpdate:modelValue":c=>p.image=c,"upload-class":"bg-body","exclude-domain":""},{upload:o(()=>[...t[0]||(t[0]=[l("div",{class:"w-[122px] h-[122px] flex justify-center items-center"}," 轮播图 ",-1)])]),_:1},8,["modelValue","onUpdate:modelValue"]),n(C,{modelValue:p.link,"onUpdate:modelValue":c=>p.link=c},null,8,["modelValue","onUpdate:modelValue"])])])]),_:2},1032,["onClose"]))]))),128))]),l("div",T,[n(B,{link:"",type:"primary",onClick:w},{default:o(()=>[...t[1]||(t[1]=[G("+ 添加轮播图",-1)])]),_:1})])]),_:1})]),_:1},512)}}});export{ee as _};
+import{K as U,s as j,i as O}from"./element-plus-DFTWCWyi.js";import{_ as R}from"./index-CbfZXeGu.js";import{_ as S}from"./picker-DPnqJ8Gk.js";import{_ as $}from"./picker-BCRrEZaA.js";import{_ as A}from"./index-BwF7vczx.js";import{i as u}from"./index-DBREMm_z.js";import{k as f}from"./lodash-es-C2A-Pj28.js";import{f as D,ak as r,G as g,aN as o,a as n,J as l,I as h,F,ap as q,O as G}from"./@vue/runtime-core-C6bnekPw.js";import{q as I}from"./@vue/reactivity-DiY1c2vO.js";const J={class:"flex flex-wrap p-4"},K={class:"bg-fill-light w-full p-4"},L={class:"flex items-center"},T={class:"mt-4 ml-4"},ee=D({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},height:{type:String,default:"170px"}},emits:["update:content"],setup(d,{expose:x,emit:k}){const _=k,i=I(),a=d,y=()=>{var e;(e=i.value)==null||e.open()},b=()=>{var e;(e=i.value)==null||e.close()},w=()=>{var e;if(((e=a.content.data)==null?void 0:e.length)<10){const t=f(a.content);t.data.push({image:"",name:"",link:{}}),_("update:content",t)}else u.msgError("最多添加10张图片")},V=e=>{var s;if(((s=a.content.data)==null?void 0:s.length)<=1)return u.msgError("最少保留一个轮播图");const t=f(a.content);t.data.splice(e,1),_("update:content",t)};return x({open:y}),(e,t)=>{const s=U,v=$,C=S,E=R,B=O,N=j;return r(),g(A,{ref_key:"popupRef",ref:i,title:"轮播图设置",async:!0,width:"980px",onConfirm:b},{default:o(()=>[n(s,{title:"最多可添加10张,建议图片尺寸750px*440px",type:"warning"}),n(N,{height:"400px",class:"mt-4"},{default:o(()=>[l("div",J,[(r(!0),h(F,null,q(d.content.data,(p,m)=>(r(),h("div",{key:m,class:"w-[400px] mr-4 mb-4"},[(r(),g(E,{key:m,onClose:c=>V(m),class:"w-full"},{default:o(()=>[l("div",K,[l("div",L,[n(v,{width:"122px",height:"122px",modelValue:p.image,"onUpdate:modelValue":c=>p.image=c,"upload-class":"bg-body","exclude-domain":""},{upload:o(()=>[...t[0]||(t[0]=[l("div",{class:"w-[122px] h-[122px] flex justify-center items-center"}," 轮播图 ",-1)])]),_:1},8,["modelValue","onUpdate:modelValue"]),n(C,{modelValue:p.link,"onUpdate:modelValue":c=>p.link=c},null,8,["modelValue","onUpdate:modelValue"])])])]),_:2},1032,["onClose"]))]))),128))]),l("div",T,[n(B,{link:"",type:"primary",onClick:w},{default:o(()=>[...t[1]||(t[1]=[G("+ 添加轮播图",-1)])]),_:1})])]),_:1})]),_:1},512)}}});export{ee as _};
diff --git a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-zA2x9af7.js b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-DtEQqPIi.js
similarity index 90%
rename from server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-zA2x9af7.js
rename to server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-DtEQqPIi.js
index 7c441ca9..178e94c7 100644
--- a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-zA2x9af7.js
+++ b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-DtEQqPIi.js
@@ -1 +1 @@
-import c from"./decoration-img-CZl9mrsf.js";import{f as i,ak as m,I as p,J as l,a as u,A as s}from"./@vue/runtime-core-C6bnekPw.js";import{y as d}from"./@vue/reactivity-DiY1c2vO.js";const f={class:"banner mx-[10px] mt-[10px]"},_={class:"banner-image"},y=i({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){const o=n,e=s(()=>{var t;return((t=o.content.data)==null?void 0:t.filter(a=>a.is_show=="1"))||[]}),r=s(()=>Array.isArray(e.value)&&e.value[0]?e.value[0].image:"");return(t,a)=>(m(),p("div",f,[l("div",_,[u(c,{width:"100%",height:"100px",src:d(r),fit:"contain"},null,8,["src"])])]))}});export{y as _};
+import c from"./decoration-img-CZLpkXPN.js";import{f as i,ak as m,I as p,J as l,a as u,A as s}from"./@vue/runtime-core-C6bnekPw.js";import{y as d}from"./@vue/reactivity-DiY1c2vO.js";const f={class:"banner mx-[10px] mt-[10px]"},_={class:"banner-image"},y=i({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){const o=n,e=s(()=>{var t;return((t=o.content.data)==null?void 0:t.filter(a=>a.is_show=="1"))||[]}),r=s(()=>Array.isArray(e.value)&&e.value[0]?e.value[0].image:"");return(t,a)=>(m(),p("div",f,[l("div",_,[u(c,{width:"100%",height:"100px",src:d(r),fit:"contain"},null,8,["src"])])]))}});export{y as _};
diff --git a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-B9VzIZnv.js b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-u1kTovEN.js
similarity index 91%
rename from server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-B9VzIZnv.js
rename to server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-u1kTovEN.js
index 44368ded..10850af8 100644
--- a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-B9VzIZnv.js
+++ b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-u1kTovEN.js
@@ -1 +1 @@
-import c from"./decoration-img-CZl9mrsf.js";import{f as i,ak as l,I as m,J as u,a as f,A as r}from"./@vue/runtime-core-C6bnekPw.js";import{y as h}from"./@vue/reactivity-DiY1c2vO.js";import{p}from"./@vue/shared-mAAVTE9n.js";const d={class:"banner-image w-full h-full"},w=i({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},height:{type:String,default:"170px"}},setup(e){const s=e,t=r(()=>{var a;return((a=s.content.data)==null?void 0:a.filter(n=>n.is_show=="1"))||[]}),o=r(()=>Array.isArray(t.value)&&t.value[0]?t.value[0].image:"");return(a,n)=>(l(),m("div",{class:"banner",style:p(e.styles)},[u("div",d,[f(c,{width:"100%",height:e.content.style==1?e.height:"550px",src:h(o),fit:"contain"},null,8,["height","src"])])],4))}});export{w as _};
+import c from"./decoration-img-CZLpkXPN.js";import{f as i,ak as l,I as m,J as u,a as f,A as r}from"./@vue/runtime-core-C6bnekPw.js";import{y as h}from"./@vue/reactivity-DiY1c2vO.js";import{p}from"./@vue/shared-mAAVTE9n.js";const d={class:"banner-image w-full h-full"},w=i({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},height:{type:String,default:"170px"}},setup(e){const s=e,t=r(()=>{var a;return((a=s.content.data)==null?void 0:a.filter(n=>n.is_show=="1"))||[]}),o=r(()=>Array.isArray(t.value)&&t.value[0]?t.value[0].image:"");return(a,n)=>(l(),m("div",{class:"banner",style:p(e.styles)},[u("div",d,[f(c,{width:"100%",height:e.content.style==1?e.height:"550px",src:h(o),fit:"contain"},null,8,["height","src"])])],4))}});export{w as _};
diff --git a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-C4EWc4Ny.js b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-uukcy-Ti.js
similarity index 91%
rename from server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-C4EWc4Ny.js
rename to server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-uukcy-Ti.js
index b6889103..1790a6ed 100644
--- a/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-C4EWc4Ny.js
+++ b/server/public/admin/assets/content.vue_vue_type_script_setup_true_lang-uukcy-Ti.js
@@ -1 +1 @@
-import i from"./decoration-img-CZl9mrsf.js";import{f as c,ak as l,I as m,J as u,a as f,A as n}from"./@vue/runtime-core-C6bnekPw.js";import{y as h}from"./@vue/reactivity-DiY1c2vO.js";import{p as d}from"./@vue/shared-mAAVTE9n.js";const p={class:"banner-image w-full h-full"},w=c({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},height:{type:String,default:"96px"}},setup(e){const r=e,t=n(()=>{var a;return((a=r.content.data)==null?void 0:a.filter(s=>s.is_show=="1"))||[]}),o=n(()=>Array.isArray(t.value)&&t.value[0]?t.value[0].image:"");return(a,s)=>(l(),m("div",{class:"banner",style:d(e.styles)},[u("div",p,[f(i,{width:"100%",height:e.styles.height||e.height,src:h(o),fit:"contain"},null,8,["height","src"])])],4))}});export{w as _};
+import i from"./decoration-img-CZLpkXPN.js";import{f as c,ak as l,I as m,J as u,a as f,A as n}from"./@vue/runtime-core-C6bnekPw.js";import{y as h}from"./@vue/reactivity-DiY1c2vO.js";import{p as d}from"./@vue/shared-mAAVTE9n.js";const p={class:"banner-image w-full h-full"},w=c({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})},height:{type:String,default:"96px"}},setup(e){const r=e,t=n(()=>{var a;return((a=r.content.data)==null?void 0:a.filter(s=>s.is_show=="1"))||[]}),o=n(()=>Array.isArray(t.value)&&t.value[0]?t.value[0].image:"");return(a,s)=>(l(),m("div",{class:"banner",style:d(e.styles)},[u("div",p,[f(i,{width:"100%",height:e.styles.height||e.height,src:h(o),fit:"contain"},null,8,["height","src"])])],4))}});export{w as _};
diff --git a/server/public/admin/assets/data-table-Bk1rmEww.js b/server/public/admin/assets/data-table-CRN3dt_k.js
similarity index 83%
rename from server/public/admin/assets/data-table-Bk1rmEww.js
rename to server/public/admin/assets/data-table-CRN3dt_k.js
index 6d8306b0..17a79951 100644
--- a/server/public/admin/assets/data-table-Bk1rmEww.js
+++ b/server/public/admin/assets/data-table-CRN3dt_k.js
@@ -1 +1 @@
-import{_ as o}from"./data-table.vue_vue_type_script_setup_true_lang-Bt3AQScq.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./code-DY1HVNqE.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-nymJKQXP.js";import"./usePaging-VsbTxSU0.js";export{o as default};
+import{_ as o}from"./data-table.vue_vue_type_script_setup_true_lang-CfariYw3.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./code-UKo2HpQE.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-BwF7vczx.js";import"./usePaging-VsbTxSU0.js";export{o as default};
diff --git a/server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-Bt3AQScq.js b/server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-CfariYw3.js
similarity index 87%
rename from server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-Bt3AQScq.js
rename to server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-CfariYw3.js
index 35ffd550..584e3fb1 100644
--- a/server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-Bt3AQScq.js
+++ b/server/public/admin/assets/data-table.vue_vue_type_script_setup_true_lang-CfariYw3.js
@@ -1 +1 @@
-import{D as K,B as N,C as T,i as D,M as P,N as R,L as F}from"./element-plus-0wC3naml.js";import{w as b}from"./@vue/runtime-dom-DDAG46FW.js";import{f as I,h as L}from"./code-DY1HVNqE.js";import{_ as S}from"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import{_ as U}from"./index-nymJKQXP.js";import{u as q}from"./usePaging-VsbTxSU0.js";import{i as z}from"./index-E47--KT7.js";import{f as M,w as $,ak as g,I as h,a as e,aN as l,O as w,aP as j,J,aq as O}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,a as A,q as G,r as H,n as Q}from"./@vue/reactivity-DiY1c2vO.js";const W={class:"data-table"},X={class:"m-4"},Y={class:"flex justify-end mt-4"},re=M({__name:"data-table",emits:["success"],setup(Z,{emit:C}){const v=C,u=G(),n=H({name:"",comment:""}),{pager:s,getLists:f,resetParams:y,resetPage:c}=q({fetchFun:I,params:n,size:10}),d=Q([]),V=o=>{d.value=o.map(({name:t,comment:i})=>({name:t,comment:i}))},k=async()=>{var o;if(!d.value.length)return z.msgError("请选择数据表");await L({table:d.value}),(o=u.value)==null||o.close(),v("success")};return $(()=>{var o;return(o=u.value)==null?void 0:o.visible},o=>{o&&f()}),(o,t)=>{const i=T,p=N,_=D,E=K,r=R,x=P,B=F;return g(),h("div",W,[e(U,{ref_key:"popupRef",ref:u,clickModalClose:!1,title:"选择表",width:"900px",async:!0,onConfirm:k},{trigger:l(()=>[O(o.$slots,"default")]),default:l(()=>[e(E,{class:"ls-form",model:a(n),inline:""},{default:l(()=>[e(p,{class:"w-[280px]",label:"表名称"},{default:l(()=>[e(i,{modelValue:a(n).name,"onUpdate:modelValue":t[0]||(t[0]=m=>a(n).name=m),clearable:"",onKeyup:b(a(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,{class:"w-[280px]",label:"表描述"},{default:l(()=>[e(i,{modelValue:a(n).comment,"onUpdate:modelValue":t[1]||(t[1]=m=>a(n).comment=m),clearable:"",onKeyup:b(a(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,null,{default:l(()=>[e(_,{type:"primary",onClick:a(c)},{default:l(()=>[...t[3]||(t[3]=[w("查询",-1)])]),_:1},8,["onClick"]),e(_,{onClick:a(y)},{default:l(()=>[...t[4]||(t[4]=[w("重置",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"]),j((g(),h("div",X,[e(x,{height:"400",size:"large",data:a(s).lists,onSelectionChange:V},{default:l(()=>[e(r,{type:"selection",width:"55"}),e(r,{label:"表名称",prop:"name","min-width":"150"}),e(r,{label:"表描述",prop:"comment","min-width":"160"}),e(r,{label:"创建时间",prop:"create_time","min-width":"180"})]),_:1},8,["data"])])),[[B,a(s).loading]]),J("div",Y,[e(S,{modelValue:a(s),"onUpdate:modelValue":t[2]||(t[2]=m=>A(s)?s.value=m:null),onChange:a(f)},null,8,["modelValue","onChange"])])]),_:3},512)])}}});export{re as _};
+import{D as K,B as N,C as T,i as D,M as P,N as R,L as F}from"./element-plus-DFTWCWyi.js";import{w as b}from"./@vue/runtime-dom-DDAG46FW.js";import{f as I,h as L}from"./code-UKo2HpQE.js";import{_ as S}from"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import{_ as U}from"./index-BwF7vczx.js";import{u as q}from"./usePaging-VsbTxSU0.js";import{i as z}from"./index-DBREMm_z.js";import{f as M,w as $,ak as g,I as h,a as e,aN as l,O as w,aP as j,J,aq as O}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,a as A,q as G,r as H,n as Q}from"./@vue/reactivity-DiY1c2vO.js";const W={class:"data-table"},X={class:"m-4"},Y={class:"flex justify-end mt-4"},re=M({__name:"data-table",emits:["success"],setup(Z,{emit:C}){const v=C,u=G(),n=H({name:"",comment:""}),{pager:s,getLists:f,resetParams:y,resetPage:c}=q({fetchFun:I,params:n,size:10}),d=Q([]),V=o=>{d.value=o.map(({name:t,comment:i})=>({name:t,comment:i}))},k=async()=>{var o;if(!d.value.length)return z.msgError("请选择数据表");await L({table:d.value}),(o=u.value)==null||o.close(),v("success")};return $(()=>{var o;return(o=u.value)==null?void 0:o.visible},o=>{o&&f()}),(o,t)=>{const i=T,p=N,_=D,E=K,r=R,x=P,B=F;return g(),h("div",W,[e(U,{ref_key:"popupRef",ref:u,clickModalClose:!1,title:"选择表",width:"900px",async:!0,onConfirm:k},{trigger:l(()=>[O(o.$slots,"default")]),default:l(()=>[e(E,{class:"ls-form",model:a(n),inline:""},{default:l(()=>[e(p,{class:"w-[280px]",label:"表名称"},{default:l(()=>[e(i,{modelValue:a(n).name,"onUpdate:modelValue":t[0]||(t[0]=m=>a(n).name=m),clearable:"",onKeyup:b(a(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,{class:"w-[280px]",label:"表描述"},{default:l(()=>[e(i,{modelValue:a(n).comment,"onUpdate:modelValue":t[1]||(t[1]=m=>a(n).comment=m),clearable:"",onKeyup:b(a(c),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(p,null,{default:l(()=>[e(_,{type:"primary",onClick:a(c)},{default:l(()=>[...t[3]||(t[3]=[w("查询",-1)])]),_:1},8,["onClick"]),e(_,{onClick:a(y)},{default:l(()=>[...t[4]||(t[4]=[w("重置",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"]),j((g(),h("div",X,[e(x,{height:"400",size:"large",data:a(s).lists,onSelectionChange:V},{default:l(()=>[e(r,{type:"selection",width:"55"}),e(r,{label:"表名称",prop:"name","min-width":"150"}),e(r,{label:"表描述",prop:"comment","min-width":"160"}),e(r,{label:"创建时间",prop:"create_time","min-width":"180"})]),_:1},8,["data"])])),[[B,a(s).loading]]),J("div",Y,[e(S,{modelValue:a(s),"onUpdate:modelValue":t[2]||(t[2]=m=>A(s)?s.value=m:null),onChange:a(f)},null,8,["modelValue","onChange"])])]),_:3},512)])}}});export{re as _};
diff --git a/server/public/admin/assets/decoration-ChND9qat.js b/server/public/admin/assets/decoration-C799ML-U.js
similarity index 87%
rename from server/public/admin/assets/decoration-ChND9qat.js
rename to server/public/admin/assets/decoration-C799ML-U.js
index 8f932349..b0e151eb 100644
--- a/server/public/admin/assets/decoration-ChND9qat.js
+++ b/server/public/admin/assets/decoration-C799ML-U.js
@@ -1 +1 @@
-import{r as t}from"./index-E47--KT7.js";function a(e){return t.get({url:"/decorate.page/detail",params:e},{ignoreCancelToken:!0})}function o(e){return t.post({url:"/decorate.page/save",params:e})}function c(e){return t.get({url:"/decorate.data/article",params:e})}function n(e){return t.get({url:"/decorate.tabbar/detail",params:e})}function u(e){return t.post({url:"/decorate.tabbar/save",params:e})}function s(){return t.get({url:"/decorate.data/pc"})}export{a,s as b,n as c,u as d,c as g,o as s};
+import{r as t}from"./index-DBREMm_z.js";function a(e){return t.get({url:"/decorate.page/detail",params:e},{ignoreCancelToken:!0})}function o(e){return t.post({url:"/decorate.page/save",params:e})}function c(e){return t.get({url:"/decorate.data/article",params:e})}function n(e){return t.get({url:"/decorate.tabbar/detail",params:e})}function u(e){return t.post({url:"/decorate.tabbar/save",params:e})}function s(){return t.get({url:"/decorate.data/pc"})}export{a,s as b,n as c,u as d,c as g,o as s};
diff --git a/server/public/admin/assets/decoration-img-CZl9mrsf.js b/server/public/admin/assets/decoration-img-CZLpkXPN.js
similarity index 93%
rename from server/public/admin/assets/decoration-img-CZl9mrsf.js
rename to server/public/admin/assets/decoration-img-CZLpkXPN.js
index 12bd2781..1783f114 100644
--- a/server/public/admin/assets/decoration-img-CZl9mrsf.js
+++ b/server/public/admin/assets/decoration-img-CZLpkXPN.js
@@ -1 +1 @@
-import{t as d,v as l}from"./element-plus-0wC3naml.js";import{e as u,c as _,o,_ as g}from"./index-E47--KT7.js";import{f,ak as h,G as y,aN as i,J as e,a as N,ab as b,A as v}from"./@vue/runtime-core-C6bnekPw.js";import{y as w}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const I={class:"image-slot"},S=f({__name:"decoration-img",props:{width:{type:[String,Number],default:"auto"},height:{type:[String,Number],default:"auto"},radius:{type:[String,Number],default:0},...d},setup(m){const t=m,{getImageUrl:p}=u(),s=v(()=>({width:o(t.width),height:o(t.height),borderRadius:o(t.radius)}));return(a,r)=>{const n=_,c=l;return h(),y(c,b({style:s.value},t,{src:w(p)(a.src)}),{placeholder:i(()=>[...r[0]||(r[0]=[e("div",{class:"image-slot"},null,-1)])]),error:i(()=>[e("div",I,[N(n,{name:"el-icon-Picture",size:30})])]),_:1},16,["style","src"])}}}),at=g(S,[["__scopeId","data-v-5e0890d2"]]);export{at as default};
+import{t as d,v as l}from"./element-plus-DFTWCWyi.js";import{e as u,c as _,o,_ as g}from"./index-DBREMm_z.js";import{f,ak as h,G as y,aN as i,J as e,a as N,ab as b,A as v}from"./@vue/runtime-core-C6bnekPw.js";import{y as w}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const I={class:"image-slot"},S=f({__name:"decoration-img",props:{width:{type:[String,Number],default:"auto"},height:{type:[String,Number],default:"auto"},radius:{type:[String,Number],default:0},...d},setup(m){const t=m,{getImageUrl:p}=u(),s=v(()=>({width:o(t.width),height:o(t.height),borderRadius:o(t.radius)}));return(a,r)=>{const n=_,c=l;return h(),y(c,b({style:s.value},t,{src:w(p)(a.src)}),{placeholder:i(()=>[...r[0]||(r[0]=[e("div",{class:"image-slot"},null,-1)])]),error:i(()=>[e("div",I,[N(n,{name:"el-icon-Picture",size:30})])]),_:1},16,["style","src"])}}}),at=g(S,[["__scopeId","data-v-5e0890d2"]]);export{at as default};
diff --git a/server/public/admin/assets/default_reply-BLLS8q8G.js b/server/public/admin/assets/default_reply-Dl6lTkU1.js
similarity index 90%
rename from server/public/admin/assets/default_reply-BLLS8q8G.js
rename to server/public/admin/assets/default_reply-Dl6lTkU1.js
index f63774b8..07ebc8a5 100644
--- a/server/public/admin/assets/default_reply-BLLS8q8G.js
+++ b/server/public/admin/assets/default_reply-Dl6lTkU1.js
@@ -1 +1 @@
-import{K as B,J as D,i as T,M as L,N as A,g as O,L as P}from"./element-plus-0wC3naml.js";import{_ as U}from"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import{c as J,i as v}from"./index-E47--KT7.js";import{d as j,o as q,e as z}from"./wx_oa-CMZpCm8a.js";import{u as F}from"./usePaging-VsbTxSU0.js";import{_ as G}from"./edit.vue_vue_type_script_setup_true_lang-BsajSW9y.js";import{f as H,ak as f,I,a as e,aN as n,J as y,O as u,aP as K,G as w,H as M,A as Q,n as h}from"./@vue/runtime-core-C6bnekPw.js";import{y as i,a as W,q as X,n as Y}from"./@vue/reactivity-DiY1c2vO.js";import{Q as Z}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";const tt={class:"flex justify-end mt-4"},Gt=H({__name:"default_reply",setup(et){const m=X(),p=Y(!1),b=Q(()=>a=>{switch(a){case 1:return"文本"}}),{pager:r,getLists:l}=F({fetchFun:j,params:{reply_type:3}}),C=async()=>{var a;p.value=!0,await h(),(a=m.value)==null||a.open("add",3)},k=async a=>{var t,d;p.value=!0,await h(),(t=m.value)==null||t.open("edit",3),(d=m.value)==null||d.getDetail(a)},V=async a=>{await v.confirm("确定要删除?"),await q({id:a}),v.msgSuccess("删除成功"),l()},E=async a=>{try{await z({id:a}),l()}catch{l()}};return l(),(a,t)=>{const d=B,g=D,$=J,_=T,s=A,x=O,R=L,S=U,N=P;return f(),I("div",null,[e(g,{class:"!border-none",shadow:"never"},{default:n(()=>[e(d,{type:"warning",title:"温馨提示:1.粉丝在公众号发送内容时,系统无法匹配情况下发送启用的默认文本回复;2.同时只能启用一个默认回复。",closable:!1,"show-icon":""})]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:n(()=>[y("div",null,[e(_,{class:"mb-4",type:"primary",onClick:t[0]||(t[0]=o=>C())},{icon:n(()=>[e($,{name:"el-icon-Plus"})]),default:n(()=>[t[3]||(t[3]=u(" 新增 ",-1))]),_:1})]),K((f(),w(R,{size:"large",data:i(r).lists},{default:n(()=>[e(s,{label:"规则名称",prop:"name","min-width":"120"}),e(s,{label:"回复类型","min-width":"120"},{default:n(({row:o})=>[u(Z(i(b)(o.content_type)),1)]),_:1}),e(s,{label:"回复内容",prop:"content","min-width":"120"}),e(s,{label:"状态","min-width":"120"},{default:n(({row:o})=>[e(x,{modelValue:o.status,"onUpdate:modelValue":c=>o.status=c,"active-value":1,"inactive-value":0,onChange:c=>E(o.id)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),e(s,{label:"排序",prop:"sort","min-width":"120"}),e(s,{label:"操作",width:"120",fixed:"right"},{default:n(({row:o})=>[e(_,{type:"primary",link:"",onClick:c=>k(o)},{default:n(()=>[...t[4]||(t[4]=[u(" 编辑 ",-1)])]),_:1},8,["onClick"]),e(_,{type:"danger",link:"",onClick:c=>V(o.id)},{default:n(()=>[...t[5]||(t[5]=[u(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[N,i(r).loading]]),y("div",tt,[e(S,{modelValue:i(r),"onUpdate:modelValue":t[1]||(t[1]=o=>W(r)?r.value=o:null),onChange:i(l)},null,8,["modelValue","onChange"])])]),_:1}),i(p)?(f(),w(G,{key:0,ref_key:"editRef",ref:m,onSuccess:i(l),onClose:t[2]||(t[2]=o=>p.value=!1)},null,8,["onSuccess"])):M("",!0)])}}});export{Gt as default};
+import{K as B,J as D,i as T,M as L,N as A,g as O,L as P}from"./element-plus-DFTWCWyi.js";import{_ as U}from"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import{c as J,i as v}from"./index-DBREMm_z.js";import{d as j,o as q,e as z}from"./wx_oa-sVQft6O9.js";import{u as F}from"./usePaging-VsbTxSU0.js";import{_ as G}from"./edit.vue_vue_type_script_setup_true_lang-W1DUlHN3.js";import{f as H,ak as f,I,a as e,aN as n,J as y,O as u,aP as K,G as w,H as M,A as Q,n as h}from"./@vue/runtime-core-C6bnekPw.js";import{y as i,a as W,q as X,n as Y}from"./@vue/reactivity-DiY1c2vO.js";import{Q as Z}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";const tt={class:"flex justify-end mt-4"},Gt=H({__name:"default_reply",setup(et){const m=X(),p=Y(!1),b=Q(()=>a=>{switch(a){case 1:return"文本"}}),{pager:r,getLists:l}=F({fetchFun:j,params:{reply_type:3}}),C=async()=>{var a;p.value=!0,await h(),(a=m.value)==null||a.open("add",3)},k=async a=>{var t,d;p.value=!0,await h(),(t=m.value)==null||t.open("edit",3),(d=m.value)==null||d.getDetail(a)},V=async a=>{await v.confirm("确定要删除?"),await q({id:a}),v.msgSuccess("删除成功"),l()},E=async a=>{try{await z({id:a}),l()}catch{l()}};return l(),(a,t)=>{const d=B,g=D,$=J,_=T,s=A,x=O,R=L,S=U,N=P;return f(),I("div",null,[e(g,{class:"!border-none",shadow:"never"},{default:n(()=>[e(d,{type:"warning",title:"温馨提示:1.粉丝在公众号发送内容时,系统无法匹配情况下发送启用的默认文本回复;2.同时只能启用一个默认回复。",closable:!1,"show-icon":""})]),_:1}),e(g,{class:"!border-none mt-4",shadow:"never"},{default:n(()=>[y("div",null,[e(_,{class:"mb-4",type:"primary",onClick:t[0]||(t[0]=o=>C())},{icon:n(()=>[e($,{name:"el-icon-Plus"})]),default:n(()=>[t[3]||(t[3]=u(" 新增 ",-1))]),_:1})]),K((f(),w(R,{size:"large",data:i(r).lists},{default:n(()=>[e(s,{label:"规则名称",prop:"name","min-width":"120"}),e(s,{label:"回复类型","min-width":"120"},{default:n(({row:o})=>[u(Z(i(b)(o.content_type)),1)]),_:1}),e(s,{label:"回复内容",prop:"content","min-width":"120"}),e(s,{label:"状态","min-width":"120"},{default:n(({row:o})=>[e(x,{modelValue:o.status,"onUpdate:modelValue":c=>o.status=c,"active-value":1,"inactive-value":0,onChange:c=>E(o.id)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),e(s,{label:"排序",prop:"sort","min-width":"120"}),e(s,{label:"操作",width:"120",fixed:"right"},{default:n(({row:o})=>[e(_,{type:"primary",link:"",onClick:c=>k(o)},{default:n(()=>[...t[4]||(t[4]=[u(" 编辑 ",-1)])]),_:1},8,["onClick"]),e(_,{type:"danger",link:"",onClick:c=>V(o.id)},{default:n(()=>[...t[5]||(t[5]=[u(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[N,i(r).loading]]),y("div",tt,[e(S,{modelValue:i(r),"onUpdate:modelValue":t[1]||(t[1]=o=>W(r)?r.value=o:null),onChange:i(l)},null,8,["modelValue","onChange"])])]),_:1}),i(p)?(f(),w(G,{key:0,ref_key:"editRef",ref:m,onSuccess:i(l),onClose:t[2]||(t[2]=o=>p.value=!1)},null,8,["onSuccess"])):M("",!0)])}}});export{Gt as default};
diff --git a/server/public/admin/assets/department-4lF54x8w.js b/server/public/admin/assets/department-CrUndMAW.js
similarity index 86%
rename from server/public/admin/assets/department-4lF54x8w.js
rename to server/public/admin/assets/department-CrUndMAW.js
index 394ab131..cc53b648 100644
--- a/server/public/admin/assets/department-4lF54x8w.js
+++ b/server/public/admin/assets/department-CrUndMAW.js
@@ -1 +1 @@
-import{r as e}from"./index-E47--KT7.js";function p(t){return e.get({url:"/dept.dept/lists",params:t})}function r(t){return e.post({url:"/dept.dept/add",params:t})}function u(t){return e.post({url:"/dept.dept/edit",params:t})}function n(t){return e.post({url:"/dept.dept/delete",params:t})}function l(t){return e.get({url:"/dept.dept/detail",params:t})}function s(t){return e.get({url:"/dept.dept/all",params:t})}export{u as a,r as b,l as c,s as d,p as e,n as f};
+import{r as e}from"./index-DBREMm_z.js";function p(t){return e.get({url:"/dept.dept/lists",params:t})}function r(t){return e.post({url:"/dept.dept/add",params:t})}function u(t){return e.post({url:"/dept.dept/edit",params:t})}function n(t){return e.post({url:"/dept.dept/delete",params:t})}function l(t){return e.get({url:"/dept.dept/detail",params:t})}function s(t){return e.get({url:"/dept.dept/all",params:t})}export{u as a,r as b,l as c,s as d,p as e,n as f};
diff --git a/server/public/admin/assets/dept-tongji-BJuS-9pm.js b/server/public/admin/assets/dept-tongji-BDo1JncR.js
similarity index 97%
rename from server/public/admin/assets/dept-tongji-BJuS-9pm.js
rename to server/public/admin/assets/dept-tongji-BDo1JncR.js
index c5a178b1..ffa97d37 100644
--- a/server/public/admin/assets/dept-tongji-BJuS-9pm.js
+++ b/server/public/admin/assets/dept-tongji-BDo1JncR.js
@@ -1 +1 @@
-import{D as P,B as S,P as Y,Q as G,G as I,F as U,a2 as j,i as J,J as O,L as Q,M as q,N as H,T as W,R as A,E as K}from"./element-plus-0wC3naml.js";import{a as X,b as Z}from"./doctor-6V0qM7Ks.js";import{f as $,b as tt,ak as d,I as y,a as e,aN as a,F as et,ap as at,G as k,O as i,H as ot,J as c,aP as lt}from"./@vue/runtime-core-C6bnekPw.js";import{Q as _}from"./@vue/shared-mAAVTE9n.js";import{n as g,r as st}from"./@vue/reactivity-DiY1c2vO.js";import{_ as it}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const nt={class:"dept-statistics-page"},rt={key:0},dt={class:"status-overview"},mt={class:"status-tags"},pt={key:1,class:"empty-data"},ct=$({__name:"dept-tongji",setup(_t){const u=g(!1),V=g([]),v=g([]),r=g([]),s=st({dept_id:"",time_type:"today",start_date:"",end_date:""}),D=async()=>{try{const l=await X(),t=h=>{let m=[];return h.forEach(n=>{m.push({id:n.id,name:n.name}),n.children&&n.children.length>0&&(m=m.concat(t(n.children)))}),m};V.value=t(l)||[]}catch(l){console.error("获取部门列表失败:",l)}},b=async()=>{u.value=!0;try{const l={time_type:s.time_type};s.dept_id&&(l.dept_id=s.dept_id),s.time_type==="custom"&&r.value&&r.value.length===2&&(l.start_date=r.value[0],l.end_date=r.value[1]);const t=await Z(l);v.value=t.lists||[]}catch(l){console.error("获取统计数据错误:",l),K.error(l.msg||"获取统计数据失败")}finally{u.value=!1}},T=()=>{s.time_type!=="custom"&&(r.value=[])},x=()=>{s.dept_id="",s.time_type="today",r.value=[],b()},B=l=>l>=80?"success":l>=60?"primary":"warning";return tt(()=>{D(),b()}),(l,t)=>{const h=G,m=Y,n=S,f=U,L=I,z=j,w=J,N=P,C=O,E=H,p=W,R=q,F=A,M=Q;return d(),y("div",nt,[e(C,{class:"mb-4",shadow:"hover"},{header:a(()=>[...t[3]||(t[3]=[c("div",{class:"card-header"},[c("span",{class:"card-title"},"筛选条件")],-1)])]),default:a(()=>[e(N,{inline:!0,model:s,class:"filter-form"},{default:a(()=>[e(n,{label:"部门"},{default:a(()=>[e(m,{modelValue:s.dept_id,"onUpdate:modelValue":t[0]||(t[0]=o=>s.dept_id=o),placeholder:"全部部门",clearable:"",filterable:"",style:{width:"200px"}},{default:a(()=>[(d(!0),y(et,null,at(V.value,o=>(d(),k(h,{key:o.id,label:o.name,value:o.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"时间范围"},{default:a(()=>[e(L,{modelValue:s.time_type,"onUpdate:modelValue":t[1]||(t[1]=o=>s.time_type=o),onChange:T},{default:a(()=>[e(f,{label:"today"},{default:a(()=>[...t[4]||(t[4]=[i("今天",-1)])]),_:1}),e(f,{label:"week"},{default:a(()=>[...t[5]||(t[5]=[i("最近7天",-1)])]),_:1}),e(f,{label:"month"},{default:a(()=>[...t[6]||(t[6]=[i("最近30天",-1)])]),_:1}),e(f,{label:"custom"},{default:a(()=>[...t[7]||(t[7]=[i("自定义",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),s.time_type==="custom"?(d(),k(n,{key:0},{default:a(()=>[e(z,{modelValue:r.value,"onUpdate:modelValue":t[2]||(t[2]=o=>r.value=o),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"260px"}},null,8,["modelValue"])]),_:1})):ot("",!0),e(n,null,{default:a(()=>[e(w,{type:"primary",onClick:b,loading:u.value},{default:a(()=>[...t[8]||(t[8]=[i("查询",-1)])]),_:1},8,["loading"]),e(w,{onClick:x},{default:a(()=>[...t[9]||(t[9]=[i("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),lt((d(),k(C,{class:"mb-4",shadow:"hover"},{header:a(()=>[...t[10]||(t[10]=[c("div",{class:"card-header"},[c("span",{class:"card-title"},"部门统计数据")],-1)])]),default:a(()=>[v.value.length>0?(d(),y("div",rt,[e(R,{data:v.value,style:{width:"100%"},"header-cell-style":{background:"#f5f7fa",color:"#606266",fontWeight:"600"}},{default:a(()=>[e(E,{prop:"dept_name",label:"部门名称",width:"120"}),e(E,{label:"状态明细","min-width":"700"},{default:a(({row:o})=>[c("div",dt,[c("div",mt,[e(p,{type:"info",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已挂号: "+_(o.registered_count),1)]),_:2},1024),e(p,{type:"success",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已完成: "+_(o.completed_count),1)]),_:2},1024),e(p,{type:"danger",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已取消: "+_(o.canceled_count),1)]),_:2},1024),e(p,{type:"warning",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已过号: "+_(o.expired_count),1)]),_:2},1024),e(p,{type:"primary",size:"small",class:"compact-tag"},{default:a(()=>[i(" 总数量: "+_(o.total_count),1)]),_:2},1024),e(p,{type:B(o.completion_rate),size:"small",class:"compact-tag"},{default:a(()=>[i(" 完成率: "+_(o.completion_rate)+"% ",1)]),_:2},1032,["type"])])])]),_:1}),e(E,{prop:"time_range",label:"统计时间","min-width":"200"})]),_:1},8,["data"])])):(d(),y("div",pt,[e(F,{description:"暂无统计数据"})]))]),_:1})),[[M,u.value]])])}}}),Zt=it(ct,[["__scopeId","data-v-edcb5eaf"]]);export{Zt as default};
+import{D as P,B as S,P as Y,Q as G,G as I,F as U,a2 as j,i as J,J as O,L as Q,M as q,N as H,T as W,R as A,E as K}from"./element-plus-DFTWCWyi.js";import{c as X,d as Z}from"./doctor-ul0r578d.js";import{f as $,b as tt,ak as d,I as y,a as e,aN as a,F as et,ap as at,G as k,O as i,H as ot,J as c,aP as lt}from"./@vue/runtime-core-C6bnekPw.js";import{Q as _}from"./@vue/shared-mAAVTE9n.js";import{n as g,r as st}from"./@vue/reactivity-DiY1c2vO.js";import{_ as it}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const nt={class:"dept-statistics-page"},rt={key:0},dt={class:"status-overview"},mt={class:"status-tags"},pt={key:1,class:"empty-data"},ct=$({__name:"dept-tongji",setup(_t){const u=g(!1),V=g([]),v=g([]),r=g([]),s=st({dept_id:"",time_type:"today",start_date:"",end_date:""}),D=async()=>{try{const l=await X(),t=h=>{let m=[];return h.forEach(n=>{m.push({id:n.id,name:n.name}),n.children&&n.children.length>0&&(m=m.concat(t(n.children)))}),m};V.value=t(l)||[]}catch(l){console.error("获取部门列表失败:",l)}},b=async()=>{u.value=!0;try{const l={time_type:s.time_type};s.dept_id&&(l.dept_id=s.dept_id),s.time_type==="custom"&&r.value&&r.value.length===2&&(l.start_date=r.value[0],l.end_date=r.value[1]);const t=await Z(l);v.value=t.lists||[]}catch(l){console.error("获取统计数据错误:",l),K.error(l.msg||"获取统计数据失败")}finally{u.value=!1}},T=()=>{s.time_type!=="custom"&&(r.value=[])},x=()=>{s.dept_id="",s.time_type="today",r.value=[],b()},B=l=>l>=80?"success":l>=60?"primary":"warning";return tt(()=>{D(),b()}),(l,t)=>{const h=G,m=Y,n=S,f=U,L=I,z=j,w=J,N=P,C=O,E=H,p=W,R=q,F=A,M=Q;return d(),y("div",nt,[e(C,{class:"mb-4",shadow:"hover"},{header:a(()=>[...t[3]||(t[3]=[c("div",{class:"card-header"},[c("span",{class:"card-title"},"筛选条件")],-1)])]),default:a(()=>[e(N,{inline:!0,model:s,class:"filter-form"},{default:a(()=>[e(n,{label:"部门"},{default:a(()=>[e(m,{modelValue:s.dept_id,"onUpdate:modelValue":t[0]||(t[0]=o=>s.dept_id=o),placeholder:"全部部门",clearable:"",filterable:"",style:{width:"200px"}},{default:a(()=>[(d(!0),y(et,null,at(V.value,o=>(d(),k(h,{key:o.id,label:o.name,value:o.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"时间范围"},{default:a(()=>[e(L,{modelValue:s.time_type,"onUpdate:modelValue":t[1]||(t[1]=o=>s.time_type=o),onChange:T},{default:a(()=>[e(f,{label:"today"},{default:a(()=>[...t[4]||(t[4]=[i("今天",-1)])]),_:1}),e(f,{label:"week"},{default:a(()=>[...t[5]||(t[5]=[i("最近7天",-1)])]),_:1}),e(f,{label:"month"},{default:a(()=>[...t[6]||(t[6]=[i("最近30天",-1)])]),_:1}),e(f,{label:"custom"},{default:a(()=>[...t[7]||(t[7]=[i("自定义",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),s.time_type==="custom"?(d(),k(n,{key:0},{default:a(()=>[e(z,{modelValue:r.value,"onUpdate:modelValue":t[2]||(t[2]=o=>r.value=o),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"260px"}},null,8,["modelValue"])]),_:1})):ot("",!0),e(n,null,{default:a(()=>[e(w,{type:"primary",onClick:b,loading:u.value},{default:a(()=>[...t[8]||(t[8]=[i("查询",-1)])]),_:1},8,["loading"]),e(w,{onClick:x},{default:a(()=>[...t[9]||(t[9]=[i("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),lt((d(),k(C,{class:"mb-4",shadow:"hover"},{header:a(()=>[...t[10]||(t[10]=[c("div",{class:"card-header"},[c("span",{class:"card-title"},"部门统计数据")],-1)])]),default:a(()=>[v.value.length>0?(d(),y("div",rt,[e(R,{data:v.value,style:{width:"100%"},"header-cell-style":{background:"#f5f7fa",color:"#606266",fontWeight:"600"}},{default:a(()=>[e(E,{prop:"dept_name",label:"部门名称",width:"120"}),e(E,{label:"状态明细","min-width":"700"},{default:a(({row:o})=>[c("div",dt,[c("div",mt,[e(p,{type:"info",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已挂号: "+_(o.registered_count),1)]),_:2},1024),e(p,{type:"success",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已完成: "+_(o.completed_count),1)]),_:2},1024),e(p,{type:"danger",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已取消: "+_(o.canceled_count),1)]),_:2},1024),e(p,{type:"warning",size:"small",class:"compact-tag"},{default:a(()=>[i(" 已过号: "+_(o.expired_count),1)]),_:2},1024),e(p,{type:"primary",size:"small",class:"compact-tag"},{default:a(()=>[i(" 总数量: "+_(o.total_count),1)]),_:2},1024),e(p,{type:B(o.completion_rate),size:"small",class:"compact-tag"},{default:a(()=>[i(" 完成率: "+_(o.completion_rate)+"% ",1)]),_:2},1032,["type"])])])]),_:1}),e(E,{prop:"time_range",label:"统计时间","min-width":"200"})]),_:1},8,["data"])])):(d(),y("div",pt,[e(F,{description:"暂无统计数据"})]))]),_:1})),[[M,u.value]])])}}}),Zt=it(ct,[["__scopeId","data-v-edcb5eaf"]]);export{Zt as default};
diff --git a/server/public/admin/assets/detail-41GQnmm8.js b/server/public/admin/assets/detail-47n6zBhj.js
similarity index 94%
rename from server/public/admin/assets/detail-41GQnmm8.js
rename to server/public/admin/assets/detail-47n6zBhj.js
index 0286dde1..07a4fa8d 100644
--- a/server/public/admin/assets/detail-41GQnmm8.js
+++ b/server/public/admin/assets/detail-47n6zBhj.js
@@ -1 +1 @@
-import{_ as B}from"./index-nymJKQXP.js";import{a9 as I,aa as V,T as C,v as O}from"./element-plus-0wC3naml.js";import{W as T}from"./tcm-SLIwsL8z.js";import{m as F}from"./index-E47--KT7.js";import{f as H,ak as i,I as n,a as o,aN as a,O as l,F as f,ap as y,G as c,H as L,J as g,A as R}from"./@vue/runtime-core-C6bnekPw.js";import{Q as r}from"./@vue/shared-mAAVTE9n.js";import{y as t,n as h}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const z={class:"detail-popup"},A={key:0},G={key:0,class:"flex gap-2"},J={key:1},Q={key:0,class:"flex flex-wrap gap-2"},S={key:1},W={style:{"white-space":"pre-wrap"}},j={style:{"white-space":"pre-wrap"}},q={style:{"white-space":"pre-wrap"}},Fe=H({__name:"detail",setup(K,{expose:x}){const b=h(),e=h({}),v=h([]),D=async()=>{try{const p=await F({type:"past_history"});v.value=(p==null?void 0:p.past_history)||[]}catch(p){console.error("获取字典数据失败:",p)}},w=R(()=>!e.value.past_history||!e.value.past_history.length?[]:e.value.past_history.map(p=>{const _=v.value.find(s=>s.value===p);return _?_.name:p}));return x({open:async p=>{b.value.open(),await D(),e.value=await T({id:p})}}),(p,_)=>{const s=V,u=C,k=O,E=I,N=B;return i(),n("div",z,[o(N,{ref_key:"popupRef",ref:b,title:"诊单详情",width:"800px","show-confirm":!1,"z-index":1500},{default:a(()=>[o(E,{column:2,border:""},{default:a(()=>[o(s,{label:"患者ID"},{default:a(()=>[l(r(t(e).patient_id),1)]),_:1}),o(s,{label:"患者姓名"},{default:a(()=>[l(r(t(e).patient_name),1)]),_:1}),o(s,{label:"性别"},{default:a(()=>[l(r(t(e).gender_desc),1)]),_:1}),o(s,{label:"年龄"},{default:a(()=>[l(r(t(e).age)+"岁 ",1)]),_:1}),o(s,{label:"诊断日期"},{default:a(()=>[l(r(t(e).diagnosis_date_text),1)]),_:1}),o(s,{label:"诊断类型"},{default:a(()=>[l(r(t(e).diagnosis_type),1)]),_:1}),o(s,{label:"证型",span:2},{default:a(()=>[l(r(t(e).syndrome_type),1)]),_:1}),o(s,{label:"既往史",span:2},{default:a(()=>[(i(!0),n(f,null,y(t(w),m=>(i(),c(u,{key:m,class:"mr-2",type:"info"},{default:a(()=>[l(r(m),1)]),_:2},1024))),128)),t(w).length?L("",!0):(i(),n("span",A,"无"))]),_:1}),o(s,{label:"外伤史"},{default:a(()=>[l(r(t(e).trauma_history?"有":"无"),1)]),_:1}),o(s,{label:"手术史"},{default:a(()=>[l(r(t(e).surgery_history?"有":"无"),1)]),_:1}),o(s,{label:"过敏史"},{default:a(()=>[l(r(t(e).allergy_history?"有":"无"),1)]),_:1}),o(s,{label:"家族病史"},{default:a(()=>[l(r(t(e).family_history?"有":"无"),1)]),_:1}),o(s,{label:"妊娠哺乳史",span:2},{default:a(()=>[l(r(t(e).pregnancy_history?"有":"无"),1)]),_:1}),o(s,{label:"舌苔照片",span:2},{default:a(()=>[t(e).tongue_images&&t(e).tongue_images.length?(i(),n("div",G,[(i(!0),n(f,null,y(t(e).tongue_images,(m,d)=>(i(),c(k,{key:d,src:m,"preview-src-list":t(e).tongue_images,style:{width:"100px",height:"100px"},fit:"cover"},null,8,["src","preview-src-list"]))),128))])):(i(),n("span",J,"暂无"))]),_:1}),o(s,{label:"检查报告",span:2},{default:a(()=>[t(e).report_files&&t(e).report_files.length?(i(),n("div",Q,[(i(!0),n(f,null,y(t(e).report_files,(m,d)=>(i(),c(k,{key:d,src:m,"preview-src-list":t(e).report_files,style:{width:"100px",height:"100px"},fit:"cover"},null,8,["src","preview-src-list"]))),128))])):(i(),n("span",S,"暂无"))]),_:1}),o(s,{label:"症状",span:2},{default:a(()=>[l(r(t(e).symptoms||"无"),1)]),_:1}),o(s,{label:"舌苔"},{default:a(()=>[l(r(t(e).tongue_coating||"无"),1)]),_:1}),o(s,{label:"脉象"},{default:a(()=>[l(r(t(e).pulse||"无"),1)]),_:1}),o(s,{label:"治则",span:2},{default:a(()=>[l(r(t(e).treatment_principle||"无"),1)]),_:1}),o(s,{label:"在用药物",span:2},{default:a(()=>[g("div",W,r(t(e).current_medications||"无"),1)]),_:1}),o(s,{label:"处方",span:2},{default:a(()=>[g("div",j,r(t(e).prescription||"无"),1)]),_:1}),o(s,{label:"医嘱",span:2},{default:a(()=>[g("div",q,r(t(e).doctor_advice||"无"),1)]),_:1}),o(s,{label:"备注",span:2},{default:a(()=>[l(r(t(e).remark||"无"),1)]),_:1}),o(s,{label:"状态"},{default:a(()=>[t(e).status==1?(i(),c(u,{key:0,type:"success"},{default:a(()=>[..._[0]||(_[0]=[l("启用",-1)])]),_:1})):(i(),c(u,{key:1,type:"danger"},{default:a(()=>[..._[1]||(_[1]=[l("禁用",-1)])]),_:1}))]),_:1}),o(s,{label:"创建时间"},{default:a(()=>[l(r(t(e).create_time),1)]),_:1})]),_:1})]),_:1},512)])}}});export{Fe as default};
+import{_ as B}from"./index-BwF7vczx.js";import{aa as I,ab as V,T as C,v as O}from"./element-plus-DFTWCWyi.js";import{X as T}from"./tcm-BcqaE0lo.js";import{m as F}from"./index-DBREMm_z.js";import{f as H,ak as i,I as n,a as o,aN as a,O as l,F as f,ap as y,G as c,H as L,J as g,A as R}from"./@vue/runtime-core-C6bnekPw.js";import{Q as r}from"./@vue/shared-mAAVTE9n.js";import{y as t,n as h}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const z={class:"detail-popup"},A={key:0},G={key:0,class:"flex gap-2"},J={key:1},Q={key:0,class:"flex flex-wrap gap-2"},S={key:1},X={style:{"white-space":"pre-wrap"}},j={style:{"white-space":"pre-wrap"}},q={style:{"white-space":"pre-wrap"}},Fe=H({__name:"detail",setup(K,{expose:x}){const b=h(),e=h({}),v=h([]),D=async()=>{try{const p=await F({type:"past_history"});v.value=(p==null?void 0:p.past_history)||[]}catch(p){console.error("获取字典数据失败:",p)}},w=R(()=>!e.value.past_history||!e.value.past_history.length?[]:e.value.past_history.map(p=>{const _=v.value.find(s=>s.value===p);return _?_.name:p}));return x({open:async p=>{b.value.open(),await D(),e.value=await T({id:p})}}),(p,_)=>{const s=V,u=C,k=O,E=I,N=B;return i(),n("div",z,[o(N,{ref_key:"popupRef",ref:b,title:"诊单详情",width:"800px","show-confirm":!1,"z-index":1500},{default:a(()=>[o(E,{column:2,border:""},{default:a(()=>[o(s,{label:"患者ID"},{default:a(()=>[l(r(t(e).patient_id),1)]),_:1}),o(s,{label:"患者姓名"},{default:a(()=>[l(r(t(e).patient_name),1)]),_:1}),o(s,{label:"性别"},{default:a(()=>[l(r(t(e).gender_desc),1)]),_:1}),o(s,{label:"年龄"},{default:a(()=>[l(r(t(e).age)+"岁 ",1)]),_:1}),o(s,{label:"诊断日期"},{default:a(()=>[l(r(t(e).diagnosis_date_text),1)]),_:1}),o(s,{label:"诊断类型"},{default:a(()=>[l(r(t(e).diagnosis_type),1)]),_:1}),o(s,{label:"证型",span:2},{default:a(()=>[l(r(t(e).syndrome_type),1)]),_:1}),o(s,{label:"既往史",span:2},{default:a(()=>[(i(!0),n(f,null,y(t(w),m=>(i(),c(u,{key:m,class:"mr-2",type:"info"},{default:a(()=>[l(r(m),1)]),_:2},1024))),128)),t(w).length?L("",!0):(i(),n("span",A,"无"))]),_:1}),o(s,{label:"外伤史"},{default:a(()=>[l(r(t(e).trauma_history?"有":"无"),1)]),_:1}),o(s,{label:"手术史"},{default:a(()=>[l(r(t(e).surgery_history?"有":"无"),1)]),_:1}),o(s,{label:"过敏史"},{default:a(()=>[l(r(t(e).allergy_history?"有":"无"),1)]),_:1}),o(s,{label:"家族病史"},{default:a(()=>[l(r(t(e).family_history?"有":"无"),1)]),_:1}),o(s,{label:"妊娠哺乳史",span:2},{default:a(()=>[l(r(t(e).pregnancy_history?"有":"无"),1)]),_:1}),o(s,{label:"舌苔照片",span:2},{default:a(()=>[t(e).tongue_images&&t(e).tongue_images.length?(i(),n("div",G,[(i(!0),n(f,null,y(t(e).tongue_images,(m,d)=>(i(),c(k,{key:d,src:m,"preview-src-list":t(e).tongue_images,style:{width:"100px",height:"100px"},fit:"cover"},null,8,["src","preview-src-list"]))),128))])):(i(),n("span",J,"暂无"))]),_:1}),o(s,{label:"检查报告",span:2},{default:a(()=>[t(e).report_files&&t(e).report_files.length?(i(),n("div",Q,[(i(!0),n(f,null,y(t(e).report_files,(m,d)=>(i(),c(k,{key:d,src:m,"preview-src-list":t(e).report_files,style:{width:"100px",height:"100px"},fit:"cover"},null,8,["src","preview-src-list"]))),128))])):(i(),n("span",S,"暂无"))]),_:1}),o(s,{label:"症状",span:2},{default:a(()=>[l(r(t(e).symptoms||"无"),1)]),_:1}),o(s,{label:"舌苔"},{default:a(()=>[l(r(t(e).tongue_coating||"无"),1)]),_:1}),o(s,{label:"脉象"},{default:a(()=>[l(r(t(e).pulse||"无"),1)]),_:1}),o(s,{label:"治则",span:2},{default:a(()=>[l(r(t(e).treatment_principle||"无"),1)]),_:1}),o(s,{label:"在用药物",span:2},{default:a(()=>[g("div",X,r(t(e).current_medications||"无"),1)]),_:1}),o(s,{label:"处方",span:2},{default:a(()=>[g("div",j,r(t(e).prescription||"无"),1)]),_:1}),o(s,{label:"医嘱",span:2},{default:a(()=>[g("div",q,r(t(e).doctor_advice||"无"),1)]),_:1}),o(s,{label:"备注",span:2},{default:a(()=>[l(r(t(e).remark||"无"),1)]),_:1}),o(s,{label:"状态"},{default:a(()=>[t(e).status==1?(i(),c(u,{key:0,type:"success"},{default:a(()=>[..._[0]||(_[0]=[l("启用",-1)])]),_:1})):(i(),c(u,{key:1,type:"danger"},{default:a(()=>[..._[1]||(_[1]=[l("禁用",-1)])]),_:1}))]),_:1}),o(s,{label:"创建时间"},{default:a(()=>[l(r(t(e).create_time),1)]),_:1})]),_:1})]),_:1},512)])}}});export{Fe as default};
diff --git a/server/public/admin/assets/detail-DzXhStO7.js b/server/public/admin/assets/detail-D1BwcPGJ.js
similarity index 92%
rename from server/public/admin/assets/detail-DzXhStO7.js
rename to server/public/admin/assets/detail-D1BwcPGJ.js
index 97301d2a..334aa7a2 100644
--- a/server/public/admin/assets/detail-DzXhStO7.js
+++ b/server/public/admin/assets/detail-D1BwcPGJ.js
@@ -1 +1 @@
-import{O as q,J as N,D as R,q as A,i as O,B as V}from"./element-plus-0wC3naml.js";import{_ as F}from"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import{c as I,n as J}from"./index-E47--KT7.js";import{g as M,u as S,a as U}from"./consumer-C-hGL7Bd.js";import{_ as z}from"./account-adjust.vue_vue_type_script_setup_true_lang-Bsqxx3M3.js";import{u as G}from"./vue-router-QlpZ4wdW.js";import{f as C,as as H,ak as u,I as Q,a as t,aN as o,J as d,O as n,aP as c,G as y}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,r as g,q as T}from"./@vue/reactivity-DiY1c2vO.js";import{Q as l}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";const K={class:"bg-page flex py-5 mb-10 items-center"},L={class:"basis-40 flex flex-col justify-center items-center"},W={class:"basis-40 flex flex-col justify-center items-center"},X={class:"mt-2 flex items-center"},Y=C({name:"consumerDetail"}),Se=C({...Y,setup(Z){const w=G(),r=g({avatar:"",channel:"",create_time:"",login_time:"",mobile:"",nickname:"",real_name:0,sex:0,sn:"",account:"",user_money:""}),p=g({show:!1,value:""}),j=T(),k=async()=>{const i=await M({id:w.query.id});Object.keys(r).forEach(e=>{r[e]=i[e]})},v=async(i,e)=>{J(i)||(await S({id:w.query.id,field:e,value:i}),k())},D=i=>{p.show=!0,p.value=i},h=async i=>{await U({user_id:w.query.id,...i}),p.show=!1,k()};return k(),(i,e)=>{const B=q,E=N,P=A,f=O,m=V,b=I,x=F,$=R,_=H("perms");return u(),Q("div",null,[t(E,{class:"!border-none",shadow:"never"},{default:o(()=>[t(B,{content:"用户详情",onBack:e[0]||(e[0]=s=>i.$router.back())})]),_:1}),t(E,{class:"mt-4 !border-none",header:"基本资料",shadow:"never"},{default:o(()=>[t($,{ref_key:"formRef",ref:j,class:"ls-form",model:a(r),"label-width":"120px"},{default:o(()=>[d("div",K,[d("div",L,[e[7]||(e[7]=d("div",{class:"mb-2 text-tx-regular"},"用户头像",-1)),t(P,{src:a(r).avatar,size:58},null,8,["src"])]),d("div",W,[e[9]||(e[9]=d("div",{class:"text-tx-regular"},"账户余额",-1)),d("div",X,[n(" ¥"+l(a(r).user_money)+" ",1),c((u(),y(f,{type:"primary",link:"",onClick:e[1]||(e[1]=s=>D(a(r).user_money))},{default:o(()=>[...e[8]||(e[8]=[n(" 调整 ",-1)])]),_:1})),[[_,["user.user/adjustMoney"]]])])])]),t(m,{label:"用户昵称:"},{default:o(()=>[n(l(a(r).nickname),1)]),_:1}),t(m,{label:"账号:"},{default:o(()=>[n(l(a(r).account)+" ",1),c((u(),y(x,{class:"ml-[10px]",onConfirm:e[2]||(e[2]=s=>v(s,"account")),limit:32},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"真实姓名:"},{default:o(()=>[n(l(a(r).real_name||"-")+" ",1),c((u(),y(x,{class:"ml-[10px]",onConfirm:e[3]||(e[3]=s=>v(s,"real_name")),limit:32},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"性别:"},{default:o(()=>[n(l(a(r).sex)+" ",1),c((u(),y(x,{class:"ml-[10px]",type:"select",options:[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],onConfirm:e[4]||(e[4]=s=>v(s,"sex"))},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"联系电话:"},{default:o(()=>[n(l(a(r).mobile||"-")+" ",1),c((u(),y(x,{class:"ml-[10px]",type:"number",onConfirm:e[5]||(e[5]=s=>v(s,"mobile"))},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"注册来源:"},{default:o(()=>[n(l(a(r).channel),1)]),_:1}),t(m,{label:"注册时间:"},{default:o(()=>[n(l(a(r).create_time),1)]),_:1}),t(m,{label:"最近登录时间:"},{default:o(()=>[n(l(a(r).login_time),1)]),_:1})]),_:1},8,["model"])]),_:1}),t(z,{show:a(p).show,"onUpdate:show":e[6]||(e[6]=s=>a(p).show=s),value:a(p).value,onConfirm:h},null,8,["show","value"])])}}});export{Se as default};
+import{O as q,J as N,D as R,q as A,i as O,B as V}from"./element-plus-DFTWCWyi.js";import{_ as F}from"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import{c as I,n as J}from"./index-DBREMm_z.js";import{g as M,u as S,a as U}from"./consumer-BHPpijRv.js";import{_ as z}from"./account-adjust.vue_vue_type_script_setup_true_lang-DxyP7JSE.js";import{u as G}from"./vue-router-QlpZ4wdW.js";import{f as C,as as H,ak as u,I as Q,a as t,aN as o,J as d,O as n,aP as c,G as y}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,r as g,q as T}from"./@vue/reactivity-DiY1c2vO.js";import{Q as l}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";const K={class:"bg-page flex py-5 mb-10 items-center"},L={class:"basis-40 flex flex-col justify-center items-center"},W={class:"basis-40 flex flex-col justify-center items-center"},X={class:"mt-2 flex items-center"},Y=C({name:"consumerDetail"}),Se=C({...Y,setup(Z){const w=G(),r=g({avatar:"",channel:"",create_time:"",login_time:"",mobile:"",nickname:"",real_name:0,sex:0,sn:"",account:"",user_money:""}),p=g({show:!1,value:""}),j=T(),k=async()=>{const i=await M({id:w.query.id});Object.keys(r).forEach(e=>{r[e]=i[e]})},v=async(i,e)=>{J(i)||(await S({id:w.query.id,field:e,value:i}),k())},D=i=>{p.show=!0,p.value=i},h=async i=>{await U({user_id:w.query.id,...i}),p.show=!1,k()};return k(),(i,e)=>{const B=q,E=N,P=A,f=O,m=V,b=I,x=F,$=R,_=H("perms");return u(),Q("div",null,[t(E,{class:"!border-none",shadow:"never"},{default:o(()=>[t(B,{content:"用户详情",onBack:e[0]||(e[0]=s=>i.$router.back())})]),_:1}),t(E,{class:"mt-4 !border-none",header:"基本资料",shadow:"never"},{default:o(()=>[t($,{ref_key:"formRef",ref:j,class:"ls-form",model:a(r),"label-width":"120px"},{default:o(()=>[d("div",K,[d("div",L,[e[7]||(e[7]=d("div",{class:"mb-2 text-tx-regular"},"用户头像",-1)),t(P,{src:a(r).avatar,size:58},null,8,["src"])]),d("div",W,[e[9]||(e[9]=d("div",{class:"text-tx-regular"},"账户余额",-1)),d("div",X,[n(" ¥"+l(a(r).user_money)+" ",1),c((u(),y(f,{type:"primary",link:"",onClick:e[1]||(e[1]=s=>D(a(r).user_money))},{default:o(()=>[...e[8]||(e[8]=[n(" 调整 ",-1)])]),_:1})),[[_,["user.user/adjustMoney"]]])])])]),t(m,{label:"用户昵称:"},{default:o(()=>[n(l(a(r).nickname),1)]),_:1}),t(m,{label:"账号:"},{default:o(()=>[n(l(a(r).account)+" ",1),c((u(),y(x,{class:"ml-[10px]",onConfirm:e[2]||(e[2]=s=>v(s,"account")),limit:32},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"真实姓名:"},{default:o(()=>[n(l(a(r).real_name||"-")+" ",1),c((u(),y(x,{class:"ml-[10px]",onConfirm:e[3]||(e[3]=s=>v(s,"real_name")),limit:32},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"性别:"},{default:o(()=>[n(l(a(r).sex)+" ",1),c((u(),y(x,{class:"ml-[10px]",type:"select",options:[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],onConfirm:e[4]||(e[4]=s=>v(s,"sex"))},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"联系电话:"},{default:o(()=>[n(l(a(r).mobile||"-")+" ",1),c((u(),y(x,{class:"ml-[10px]",type:"number",onConfirm:e[5]||(e[5]=s=>v(s,"mobile"))},{default:o(()=>[t(f,{type:"primary",link:""},{default:o(()=>[t(b,{name:"el-icon-EditPen"})]),_:1})]),_:1})),[[_,["user.user/edit"]]])]),_:1}),t(m,{label:"注册来源:"},{default:o(()=>[n(l(a(r).channel),1)]),_:1}),t(m,{label:"注册时间:"},{default:o(()=>[n(l(a(r).create_time),1)]),_:1}),t(m,{label:"最近登录时间:"},{default:o(()=>[n(l(a(r).login_time),1)]),_:1})]),_:1},8,["model"])]),_:1}),t(z,{show:a(p).show,"onUpdate:show":e[6]||(e[6]=s=>a(p).show=s),value:a(p).value,onConfirm:h},null,8,["show","value"])])}}});export{Se as default};
diff --git a/server/public/admin/assets/dict-Nvtnb8GD.js b/server/public/admin/assets/dict-BKviBR_7.js
similarity index 92%
rename from server/public/admin/assets/dict-Nvtnb8GD.js
rename to server/public/admin/assets/dict-BKviBR_7.js
index cc962826..770f3859 100644
--- a/server/public/admin/assets/dict-Nvtnb8GD.js
+++ b/server/public/admin/assets/dict-BKviBR_7.js
@@ -1 +1 @@
-import{r as i}from"./index-E47--KT7.js";function d(t){return i.get({url:"/setting.dict.dict_type/lists",params:t})}function n(t){return i.get({url:"/setting.dict.dict_type/all",params:t})}function c(t){return i.post({url:"/setting.dict.dict_type/add",params:t})}function r(t){return i.post({url:"/setting.dict.dict_type/edit",params:t})}function s(t){return i.post({url:"/setting.dict.dict_type/delete",params:t})}function a(t){return i.get({url:"/setting.dict.dict_data/lists",params:t},{ignoreCancelToken:!0})}function u(t){return i.post({url:"/setting.dict.dict_data/add",params:t})}function l(t){return i.post({url:"/setting.dict.dict_data/edit",params:t})}function o(t){return i.post({url:"/setting.dict.dict_data/delete",params:t})}export{l as a,u as b,a as c,n as d,o as e,d as f,r as g,c as h,s as i};
+import{r as i}from"./index-DBREMm_z.js";function d(t){return i.get({url:"/setting.dict.dict_type/lists",params:t})}function n(t){return i.get({url:"/setting.dict.dict_type/all",params:t})}function c(t){return i.post({url:"/setting.dict.dict_type/add",params:t})}function r(t){return i.post({url:"/setting.dict.dict_type/edit",params:t})}function s(t){return i.post({url:"/setting.dict.dict_type/delete",params:t})}function a(t){return i.get({url:"/setting.dict.dict_data/lists",params:t},{ignoreCancelToken:!0})}function u(t){return i.post({url:"/setting.dict.dict_data/add",params:t})}function l(t){return i.post({url:"/setting.dict.dict_data/edit",params:t})}function o(t){return i.post({url:"/setting.dict.dict_data/delete",params:t})}export{l as a,u as b,a as c,n as d,o as e,d as f,r as g,c as h,s as i};
diff --git a/server/public/admin/assets/doctor-6V0qM7Ks.js b/server/public/admin/assets/doctor-6V0qM7Ks.js
deleted file mode 100644
index d5c94256..00000000
--- a/server/public/admin/assets/doctor-6V0qM7Ks.js
+++ /dev/null
@@ -1 +0,0 @@
-import{r}from"./index-E47--KT7.js";function o(t){return r.get({url:"/auth.admin/lists",params:{...t,role_id:1,exclude_disabled:1}})}function s(t){return r.get({url:"/doctor.roster/lists",params:t})}function n(t){return r.post({url:"/doctor.roster/save",params:t})}function a(t){return r.post({url:"/doctor.roster/delete",params:t})}function i(t){return r.post({url:"/doctor.roster/batchSave",params:t})}function c(t){return r.get({url:"/doctor.appointment/availableSlots",params:t})}function u(t){return r.post({url:"/doctor.appointment/create",params:t})}function l(t){return r.post({url:"/doctor.appointment/cancel",params:t})}function p(t){return r.get({url:"/doctor.appointment/lists",params:t})}function d(t){return r.post({url:"/doctor.appointment/complete",params:t})}function f(t){return r.get({url:"/doctor.statistics/lists",params:t})}function m(){return r.get({url:"/dept.dept/all"})}function g(t){return r.get({url:"/doctor.statistics/deptLists",params:t})}export{m as a,g as b,p as c,o as d,n as e,a as f,c as g,i as h,f as i,d as j,l as k,u as l,s as r};
diff --git a/server/public/admin/assets/doctor-ul0r578d.js b/server/public/admin/assets/doctor-ul0r578d.js
new file mode 100644
index 00000000..715b8b17
--- /dev/null
+++ b/server/public/admin/assets/doctor-ul0r578d.js
@@ -0,0 +1 @@
+import{r}from"./index-DBREMm_z.js";function o(t){return r.get({url:"/auth.admin/lists",params:{...t,role_id:1,exclude_disabled:1}})}function n(t){return r.get({url:"/doctor.roster/lists",params:t})}function s(t){return r.post({url:"/doctor.roster/save",params:t})}function i(t){return r.post({url:"/doctor.roster/delete",params:t})}function a(t){return r.post({url:"/doctor.roster/batchSave",params:t})}function u(t){return r.get({url:"/doctor.appointment/availableSlots",params:t})}function c(t){return r.post({url:"/doctor.appointment/create",params:t})}function p(t){return r.post({url:"/doctor.appointment/cancel",params:t})}function l(t){return r.get({url:"/doctor.appointment/lists",params:t})}function d(t){return r.post({url:"/doctor.appointment/edit",params:t})}function m(t){return r.post({url:"/doctor.appointment/complete",params:t})}function f(t){return r.get({url:"/doctor.statistics/lists",params:t})}function g(){return r.get({url:"/dept.dept/all"})}function S(t){return r.get({url:"/doctor.statistics/deptLists",params:t})}export{l as a,d as b,g as c,S as d,o as e,s as f,u as g,i as h,a as i,f as j,m as k,p as l,c as m,n as r};
diff --git a/server/public/admin/assets/edit-DlBhR6x6.js b/server/public/admin/assets/edit-BG1q_jZS.js
similarity index 90%
rename from server/public/admin/assets/edit-DlBhR6x6.js
rename to server/public/admin/assets/edit-BG1q_jZS.js
index 91d2706c..96654539 100644
--- a/server/public/admin/assets/edit-DlBhR6x6.js
+++ b/server/public/admin/assets/edit-BG1q_jZS.js
@@ -1 +1 @@
-import{m as Ke,l as el,D as ll,U as al,B as tl,C as ol,a3 as il,a4 as dl,G as nl,I as sl,h as rl,P as ul,Q as pl,a2 as ml,ae as _l,al as fl,F as gl,R as cl,i as vl,T as yl,e as bl,E as ae}from"./element-plus-0wC3naml.js";import{J as Vl,X as Ne,Y as kl,Z as hl,W as Oe,_ as wl}from"./tcm-SLIwsL8z.js";import{e as xl,u as Ul,m as h,_ as El}from"./index-E47--KT7.js";import{h as P}from"./perm-YIJpPBOg.js";import Nl from"./DailyMatrix-0DiBlpfB.js";import Ol from"./CaseRecordList-CsyYkwG-.js";import Pl from"./CallRecordPanel-CLexkvxf.js";import Rl from"./ImChatRecordPanel-DiuuXcLT.js";import Dl from"./AssignLogPanel-B0ohl4pV.js";import Il from"./AppointmentRecordPanel-BZnhzLjC.js";import Cl from"./NoteTimeline-CDNv1DMC.js";/* empty css */import zl from"./PatientOrderList-DQ7QxnQw.js";import Fl from"./index-kYFkWYEt.js";import{g as Bl}from"./patient-DKQ1nUyC.js";import{f as Tl,w as Pe,ak as d,I as g,a as o,aN as a,J as A,O as r,F as x,H as R,G as u,ap as U,A as H}from"./@vue/runtime-core-C6bnekPw.js";import{n as p,a as Re,y as t}from"./@vue/reactivity-DiY1c2vO.js";import{Q as k}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-DlbAZkDm.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./vue-echarts-BNtg2q_G.js";import"./resize-detector-G6vbKCU7.js";import"./DiagnosisTodoList-DC7uqd6f.js";import"./blood-thresholds-CJ1fqMjh.js";import"./RecordingPlaybackBlock-z0PPBYke.js";import"./RecordingVideoPlayer-DWV7klHs.js";import"./im-business-message-parse-QKjFLn3X.js";import"./doctor-6V0qM7Ks.js";import"./index-wwnvQhjf.js";import"./medicine-D-OyzCbR.js";import"./diabetes-discovery-display-B_wmGXQJ.js";import"./html2canvas-QH1iLAAe.js";const $l={class:"edit-drawer"},Ll={class:"tcm-dd-header"},Sl={class:"tcm-dd-header__row"},Ml={class:"tcm-dd-header__title"},Yl={key:0,class:"tcm-dd-header__sub"},ql={key:0,class:"tcm-dd-header__name"},Al={key:1,class:"tcm-dd-header__id"},Gl={key:0,class:"tcm-dd-header__sep"},Jl=["disabled"],Hl={key:0,class:"text-xs text-gray-400 mt-1"},Xl={key:0,class:"p-4"},Ql={key:0,class:"bingli-tab-content"},Wl={class:"tcm-dd-footer"},Zl=Tl({__name:"edit",emits:["success"],setup(jl,{expose:De,emit:Ie}){const Ce=Ie;xl();const X=p(),ze=p(null),Q=p(),z=p(!1),N=p(!1),W=p(),D=p("add"),Z=p(!1),M=H(()=>P(["tcm.diagnosis/phonePlain"])),te=H(()=>P(["tcm.diagnosis/dailyRecord"])),Fe=H(()=>D.value==="edit"&&!M.value),F=p(!1),b=p("basic"),Be=H(()=>N.value?"诊单详情":D.value==="add"?"新增诊单":"编辑诊单"),j=p([]),oe=async()=>{if(l.value.id)try{j.value=await Bl({diagnosis_id:Number(l.value.id)})||[]}catch{j.value=[]}},ie=p([]),Te=async()=>{if(l.value.id)try{ie.value=await Vl({diagnosis_id:Number(l.value.id)})||[]}catch{ie.value=[]}};Pe(()=>b.value,async n=>{n==="doctorNote"&&l.value.id&&await oe(),n==="trackingNote"&&l.value.id&&await Te()}),Pe([z,b],()=>{z.value&&(b.value==="chat"&&!P(["tcm.diagnosis/chat"])&&(b.value="basic"),b.value==="visit"&&!P(["tcm.diagnosis/huifang"])&&(b.value="basic"),b.value==="assignLog"&&!P(["tcm.diagnosis/assign"])&&!P(["tcm.diagnosis/detail"])&&(b.value="basic"),b.value==="appointmentRecords"&&!P(["doctor.appointment/lists"])&&(b.value="basic"),b.value==="daily"&&!te.value&&(b.value="basic"))});const l=p({id:"",patient_id:"",patient_name:"",id_card:"",phone:"",gender:1,age:void 0,diagnosis_date:"",diagnosis_type:"",syndrome_type:"",diabetes_type:"",diabetes_discovery_year:"",local_hospital_diagnosis:[],local_hospital_name:"",marital_status:void 0,height:void 0,weight:void 0,region:"",systolic_pressure:void 0,diastolic_pressure:void 0,fasting_blood_sugar:"",appetite:[],water_intake:"",diet_condition:[],weight_change:"",body_feeling:[],sleep_condition:[],eye_condition:[],head_feeling:[],sweat_condition:[],skin_condition:[],urine_condition:[],stool_condition:[],kidney_condition:[],fatty_liver_degree:"",past_history:[],trauma_history:0,surgery_history:0,allergy_history:0,family_history:0,pregnancy_history:0,assistant_id:void 0,symptoms:"",tongue_coating:"",pulse:"",treatment_principle:"",prescription:"",doctor_advice:"",remark:"",current_medications:"",status:1,external_userid:""}),E=p(""),B=p(""),K=p(!1),ee=p(!1),G=n=>!n||n.length<11?n:n.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"),$e=()=>{E.value&&(F.value=!F.value)},le=n=>n&&(n.length===15?n.replace(/(\d{6})\d{5}(\d{4})/,"$1*****$2"):n.length===18?n.replace(/(\d{6})\d{8}(\d{4})/,"$1********$2"):n),Le=()=>{if(K.value=!0,!!E.value){if(M.value){l.value.phone=E.value;return}D.value==="add"&&(l.value.phone=E.value)}},Se=async()=>{if(K.value=!1,M.value){if(l.value.phone&&l.value.phone.length===11&&(E.value=l.value.phone,/^1[3-9]\d{9}$/.test(l.value.phone)))try{const n=await Ne({phone:l.value.phone,id:l.value.id||""});n.exists&&ae.warning(n.message)}catch(n){console.error("检查手机号失败:",n)}return}if(D.value==="add"&&l.value.phone&&l.value.phone.length===11){if(E.value=l.value.phone,/^1[3-9]\d{9}$/.test(l.value.phone))try{const n=await Ne({phone:l.value.phone,id:l.value.id||""});n.exists&&ae.warning(n.message)}catch(n){console.error("检查手机号失败:",n)}l.value.phone=G(l.value.phone)}},Me=()=>{ee.value=!0,B.value&&(l.value.id_card=B.value)},Ye=async()=>{if(ee.value=!1,l.value.id_card&&(l.value.id_card.length===15||l.value.id_card.length===18)){if(B.value=l.value.id_card,/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(l.value.id_card)){const n=l.value.id_card,e=parseInt(n.substring(6,10)),f=parseInt(n.substring(10,12)),_=parseInt(n.substring(12,14)),c=new Date;let s=c.getFullYear()-e;(c.getMonth()+1{const _=B.value||e;if(_&&!/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(_)){f(new Error("身份证号格式不正确"));return}f()},trigger:"blur"}],phone:[{required:!0,validator:(n,e,f)=>{const _=E.value||e;if(!_){f(new Error("请输入手机号"));return}if(!/^1[3-9]\d{9}$/.test(_)){f(new Error("手机号格式不正确"));return}f()},trigger:"blur"}],gender:[{required:!0,message:"请选择性别",trigger:"change"}],age:[{required:!0,message:"请输入年龄",trigger:"blur"}],fasting_blood_sugar:[{required:!0,message:"请输入空腹血糖",trigger:"blur"}],diagnosis_type:[{required:!0,message:"请选择诊断类型",trigger:"change"}],diabetes_discovery_year:[{max:50,message:"最多50个字符",trigger:"blur"}]},de=p([]),Ae=p([]),Ge=p([]),ne=p([]),se=p([]),re=p([]),ue=p([]),pe=p([]),me=p([]),_e=p([]),fe=p([]),ge=p([]),ce=p([]),ve=p([]),ye=p([]),be=p([]),Ve=p([]),ke=p([]),he=async()=>{try{const[n,e,f,_,c,s,m,v,T,O,I,$,S,Y,V,w,y,q]=await Promise.all([h({type:"diagnosis_type"}),h({type:"syndrome_type"}),h({type:"diabetes_type"}),h({type:"past_history"}),h({type:"appetite"}),h({type:"water_intake"}),h({type:"diet_condition"}),h({type:"weight_change"}),h({type:"body_feeling"}),h({type:"sleep_condition"}),h({type:"eye_condition"}),h({type:"head_feeling"}),h({type:"sweat_condition"}),h({type:"skin_condition"}),h({type:"urine_condition"}),h({type:"stool_condition"}),h({type:"kidney_condition"}),h({type:"fatty_liver_degree"})]);de.value=(n==null?void 0:n.diagnosis_type)||[],Ae.value=(e==null?void 0:e.syndrome_type)||[],Ge.value=(f==null?void 0:f.diabetes_type)||[],ne.value=(_==null?void 0:_.past_history)||[],se.value=(c==null?void 0:c.appetite)||[],re.value=(s==null?void 0:s.water_intake)||[],ue.value=(m==null?void 0:m.diet_condition)||[],pe.value=(v==null?void 0:v.weight_change)||[],me.value=(T==null?void 0:T.body_feeling)||[],_e.value=(O==null?void 0:O.sleep_condition)||[],fe.value=(I==null?void 0:I.eye_condition)||[],ge.value=($==null?void 0:$.head_feeling)||[],ce.value=(S==null?void 0:S.sweat_condition)||[],ve.value=(Y==null?void 0:Y.skin_condition)||[],ye.value=(V==null?void 0:V.urine_condition)||[],be.value=(w==null?void 0:w.stool_condition)||[],Ve.value=(y==null?void 0:y.kidney_condition)||[],ke.value=(q==null?void 0:q.fatty_liver_degree)||[]}catch(n){console.error("获取字典数据失败:",n)}};async function we(n){const e=await Oe({id:n});E.value=e.phone||"",B.value=e.id_card||"",e.phone=M.value?e.phone||"":G(e.phone||""),e.id_card=le(e.id_card||""),l.value=e;const f=e.diabetes_discovery_year;l.value.diabetes_discovery_year=f==null||f===""?"":String(f)}const Je=async(n,e)=>{var f;if(N.value=!1,D.value=n,z.value=!0,b.value="basic",F.value=!1,await he(),n==="edit"&&e)await we(e);else if(n==="add"){const _=Ul();l.value.assistant_id=((f=_.userInfo)==null?void 0:f.id)||"",l.value.diagnosis_type="follow_up"}},He=async n=>{n&&(N.value=!0,D.value="edit",z.value=!0,b.value="basic",F.value=!1,await he(),await we(n))},Xe=async()=>{var n;if(!N.value){await((n=W.value)==null?void 0:n.validate()),Z.value=!0;try{const e={...l.value,phone:E.value||l.value.phone,id_card:B.value||l.value.id_card};if(D.value==="add"){const f=await hl(e);if(f&&f.id){D.value="edit",F.value=!1,l.value.id=f.id;try{const _=await Oe({id:f.id});l.value.patient_id=_.patient_id,E.value=_.phone||"",B.value=_.id_card||"",l.value.phone=M.value?_.phone||"":G(_.phone||""),l.value.id_card=le(_.id_card||"")}catch(_){console.error("获取详情失败:",_)}}}else await wl(e);Ce("success")}catch(e){console.error("提交失败:",e)}finally{Z.value=!1}}},Qe=n=>{var e;(e=Q.value)==null||e.openById(n.id)},We=()=>{var e;if(N.value)return;const n={id:l.value.id,diagnosis_id:l.value.id,appointment_id:0,patient_name:l.value.patient_name,patient_phone:E.value||l.value.phone,patient_gender:l.value.gender,patient_age:l.value.age,case_record:JSON.parse(JSON.stringify(l.value))};(e=Q.value)==null||e.open(n)},xe=()=>{var n;(n=W.value)==null||n.resetFields(),l.value={id:"",patient_id:"",patient_name:"",id_card:"",phone:"",gender:1,age:void 0,diagnosis_date:"",diagnosis_type:"",syndrome_type:"",diabetes_type:"",diabetes_discovery_year:"",local_hospital_diagnosis:[],local_hospital_name:"",marital_status:void 0,height:void 0,weight:void 0,region:"",systolic_pressure:void 0,diastolic_pressure:void 0,fasting_blood_sugar:"",appetite:[],water_intake:"",diet_condition:[],weight_change:"",body_feeling:[],sleep_condition:[],eye_condition:[],head_feeling:[],sweat_condition:[],skin_condition:[],urine_condition:[],stool_condition:[],kidney_condition:[],fatty_liver_degree:"",past_history:[],trauma_history:0,surgery_history:0,allergy_history:0,family_history:0,pregnancy_history:0,assistant_id:void 0,symptoms:"",tongue_coating:"",pulse:"",treatment_principle:"",prescription:"",doctor_advice:"",remark:"",current_medications:"",status:1,external_userid:""},E.value="",B.value="",K.value=!1,ee.value=!1,F.value=!1,N.value=!1,z.value=!1};return De({open:Je,openViewOnly:He,refreshCaseList:()=>{var n,e;return(e=(n=X.value)==null?void 0:n.refresh)==null?void 0:e.call(n)}}),(n,e)=>{const f=yl,_=al,c=ol,s=tl,m=dl,v=il,T=sl,O=nl,I=rl,$=pl,S=ul,Y=ml,V=fl,w=_l,y=gl,q=ll,C=el,L=cl,Ze=Ke,Ue=vl,je=bl;return d(),g("div",$l,[o(je,{modelValue:t(z),"onUpdate:modelValue":e[44]||(e[44]=i=>Re(z)?z.value=i:null),size:"60%","before-close":xe,"z-index":t(N)?4e3:1500,modal:!0,class:"diagnosis-drawer tcm-diagnosis-drawer"},{header:a(()=>[A("div",Ll,[A("div",Sl,[A("h2",Ml,k(t(Be)),1),t(N)?(d(),u(f,{key:0,type:"info",effect:"plain",round:"",size:"small",class:"tcm-dd-header__badge"},{default:a(()=>[...e[45]||(e[45]=[r(" 只读 ",-1)])]),_:1})):t(D)==="add"?(d(),u(f,{key:1,type:"success",effect:"plain",round:"",size:"small",class:"tcm-dd-header__badge"},{default:a(()=>[...e[46]||(e[46]=[r(" 新建 ",-1)])]),_:1})):(d(),u(f,{key:2,type:"warning",effect:"plain",round:"",size:"small",class:"tcm-dd-header__badge"},{default:a(()=>[...e[47]||(e[47]=[r(" 编辑 ",-1)])]),_:1}))]),t(l).patient_name||t(l).id?(d(),g("p",Yl,[t(l).patient_name?(d(),g("span",ql,k(t(l).patient_name),1)):R("",!0),t(l).id?(d(),g("span",Al,[t(l).patient_name?(d(),g("span",Gl,"·")):R("",!0),r(" 诊单 "+k(t(l).patient_id||t(l).id),1)])):R("",!0)])):R("",!0)])]),footer:a(()=>[A("div",Wl,[o(Ue,{class:"tcm-dd-footer__btn",onClick:xe},{default:a(()=>[r(k(t(N)?"关闭":"取消"),1)]),_:1}),!t(N)&&t(b)==="basic"?(d(),u(Ue,{key:0,class:"tcm-dd-footer__btn",type:"primary",onClick:Xe,loading:t(Z)},{default:a(()=>[...e[75]||(e[75]=[r(" 保存病历 ",-1)])]),_:1},8,["loading"])):R("",!0)])]),default:a(()=>[o(Ze,{modelValue:t(b),"onUpdate:modelValue":e[42]||(e[42]=i=>Re(b)?b.value=i:null),class:"diagnosis-tabs tcm-diagnosis-tabs"},{default:a(()=>[o(C,{label:"病历",name:"basic"},{default:a(()=>[o(q,{ref_key:"formRef",ref:W,model:t(l),rules:qe,"label-width":"160px"},{default:a(()=>[A("fieldset",{disabled:t(N),class:"diagnosis-view-fieldset border-0 min-w-0 p-0 m-0"},[o(_,{"content-position":"left"},{default:a(()=>[...e[48]||(e[48]=[r("基本信息",-1)])]),_:1}),o(s,{label:"诊单ID"},{default:a(()=>[o(c,{modelValue:t(l).patient_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t(l).patient_id=i),disabled:"",placeholder:"系统自动生成"},null,8,["modelValue"])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"姓名",prop:"patient_name"},{default:a(()=>[o(c,{modelValue:t(l).patient_name,"onUpdate:modelValue":e[1]||(e[1]=i=>t(l).patient_name=i),placeholder:"请输入姓名"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"身份证号",prop:"id_card"},{default:a(()=>[o(c,{modelValue:t(l).id_card,"onUpdate:modelValue":e[2]||(e[2]=i=>t(l).id_card=i),placeholder:"请输入身份证号",maxlength:"18",onFocus:Me,onBlur:Ye},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"手机号",prop:"phone"},{default:a(()=>[t(Fe)?(d(),g(x,{key:0},[o(c,{"model-value":t(F)?t(E)||"":G(t(E)||""),readonly:"",placeholder:"点击可查看完整手机号",maxlength:"11",class:"cursor-pointer phone-mask-toggle",onClick:$e},null,8,["model-value"]),t(E)&&!t(F)?(d(),g("p",Hl," 当前为脱敏显示,点击输入框可查看完整号码 ")):R("",!0)],64)):(d(),u(c,{key:1,modelValue:t(l).phone,"onUpdate:modelValue":e[3]||(e[3]=i=>t(l).phone=i),placeholder:"请输入手机号",maxlength:"11",onFocus:Le,onBlur:Se},null,8,["modelValue"]))]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"性别",prop:"gender"},{default:a(()=>[o(O,{modelValue:t(l).gender,"onUpdate:modelValue":e[4]||(e[4]=i=>t(l).gender=i)},{default:a(()=>[o(T,{label:1},{default:a(()=>[...e[49]||(e[49]=[r("男",-1)])]),_:1}),o(T,{label:0},{default:a(()=>[...e[50]||(e[50]=[r("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"年龄",prop:"age"},{default:a(()=>[o(I,{modelValue:t(l).age,"onUpdate:modelValue":e[5]||(e[5]=i=>t(l).age=i),min:0,max:150,placeholder:"请输入年龄",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[51]||(e[51]=[r("生命体征",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"婚姻状态",prop:"marital_status"},{default:a(()=>[o(S,{modelValue:t(l).marital_status,"onUpdate:modelValue":e[6]||(e[6]=i=>t(l).marital_status=i),placeholder:"请选择婚姻状态",class:"w-full","popper-options":{strategy:"fixed"},"popper-class":"high-z-index"},{default:a(()=>[o($,{label:"未婚",value:0}),o($,{label:"已婚",value:1}),o($,{label:"离异",value:2})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"就诊人身高(cm)",prop:"height"},{default:a(()=>[o(I,{modelValue:t(l).height,"onUpdate:modelValue":e[7]||(e[7]=i=>t(l).height=i),min:0,max:300,placeholder:"请输入身高",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"体重(kg)",prop:"weight"},{default:a(()=>[o(I,{modelValue:t(l).weight,"onUpdate:modelValue":e[8]||(e[8]=i=>t(l).weight=i),min:0,max:500,step:.1,placeholder:"请输入体重",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"地区",prop:"region"},{default:a(()=>[o(c,{modelValue:t(l).region,"onUpdate:modelValue":e[9]||(e[9]=i=>t(l).region=i),placeholder:"请输入地区"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"就诊人血压(高压mmHg)",prop:"systolic_pressure"},{default:a(()=>[o(I,{modelValue:t(l).systolic_pressure,"onUpdate:modelValue":e[10]||(e[10]=i=>t(l).systolic_pressure=i),min:0,max:250,placeholder:"请输入高压",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"就诊人血压(低压mmHg)",prop:"diastolic_pressure"},{default:a(()=>[o(I,{modelValue:t(l).diastolic_pressure,"onUpdate:modelValue":e[11]||(e[11]=i=>t(l).diastolic_pressure=i),min:0,max:150,placeholder:"请输入低压",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"空腹血糖(mmol/L)",prop:"fasting_blood_sugar"},{default:a(()=>[o(c,{modelValue:t(l).fasting_blood_sugar,"onUpdate:modelValue":e[12]||(e[12]=i=>t(l).fasting_blood_sugar=i),placeholder:"请输入空腹血糖,如:8.5 或 8-9",maxlength:"20",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"诊断类型",prop:"diagnosis_type"},{default:a(()=>[o(S,{modelValue:t(l).diagnosis_type,"onUpdate:modelValue":e[13]||(e[13]=i=>t(l).diagnosis_type=i),placeholder:"请选择诊断类型",class:"w-full","popper-options":{strategy:"fixed"},"popper-class":"high-z-index"},{default:a(()=>[(d(!0),g(x,null,U(t(de),i=>(d(),u($,{key:i.value,label:i.name,value:i.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"状态",prop:"status"},{default:a(()=>[o(O,{modelValue:t(l).status,"onUpdate:modelValue":e[14]||(e[14]=i=>t(l).status=i)},{default:a(()=>[o(T,{label:1},{default:a(()=>[...e[52]||(e[52]=[r("启用",-1)])]),_:1}),o(T,{label:0},{default:a(()=>[...e[53]||(e[53]=[r("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"在用药物",prop:"current_medications"},{default:a(()=>[o(c,{modelValue:t(l).current_medications,"onUpdate:modelValue":e[15]||(e[15]=i=>t(l).current_medications=i),type:"textarea",rows:3,placeholder:"请填写患者当前正在使用的药物(如降压药、降糖药等),多种请换行或顿号分隔",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[54]||(e[54]=[r("主诉",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"当地医院诊断日期",prop:"diagnosis_date"},{default:a(()=>[o(Y,{modelValue:t(l).diagnosis_date,"onUpdate:modelValue":e[16]||(e[16]=i=>t(l).diagnosis_date=i),type:"date",placeholder:"请选择诊断日期","value-format":"YYYY-MM-DD",class:"w-full","popper-options":{strategy:"fixed"},"popper-class":"high-z-index"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"发现糖尿病患病史",prop:"diabetes_discovery_year"},{default:a(()=>[o(c,{modelValue:t(l).diabetes_discovery_year,"onUpdate:modelValue":e[17]||(e[17]=i=>t(l).diabetes_discovery_year=i),clearable:"",maxlength:"50","show-word-limit":"",placeholder:"可填数字或文字,如:5、1年、半年",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(s,{label:"当地医院诊断结果",prop:"local_hospital_diagnosis",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).local_hospital_diagnosis,"onUpdate:modelValue":e[18]||(e[18]=i=>t(l).local_hospital_diagnosis=i)},{default:a(()=>[o(V,{label:"糖尿病"},{default:a(()=>[...e[55]||(e[55]=[r("糖尿病",-1)])]),_:1}),o(V,{label:"消渴病"},{default:a(()=>[...e[56]||(e[56]=[r("消渴病",-1)])]),_:1}),o(V,{label:"糖尿病前期"},{default:a(()=>[...e[57]||(e[57]=[r("糖尿病前期",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"当地就诊医院名称",prop:"local_hospital_name"},{default:a(()=>[o(c,{modelValue:t(l).local_hospital_name,"onUpdate:modelValue":e[19]||(e[19]=i=>t(l).local_hospital_name=i),placeholder:"请输入当地就诊医院名称(不能填写当地、本地、互联网等关键词)"},null,8,["modelValue"])]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[58]||(e[58]=[r("现病史",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(s,{label:"口腔感觉",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).appetite,"onUpdate:modelValue":e[20]||(e[20]=i=>t(l).appetite=i)},{default:a(()=>[(d(!0),g(x,null,U(t(se),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:20},{default:a(()=>[o(s,{label:"每日饮水量",class:"compact-form-item"},{default:a(()=>[o(O,{modelValue:t(l).water_intake,"onUpdate:modelValue":e[21]||(e[21]=i=>t(l).water_intake=i)},{default:a(()=>[o(y,{label:""},{default:a(()=>[...e[59]||(e[59]=[r("无",-1)])]),_:1}),(d(!0),g(x,null,U(t(re),i=>(d(),u(y,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"近一个月体重变化",class:"compact-form-item"},{default:a(()=>[o(O,{modelValue:t(l).weight_change,"onUpdate:modelValue":e[22]||(e[22]=i=>t(l).weight_change=i)},{default:a(()=>[o(y,{label:""},{default:a(()=>[...e[60]||(e[60]=[r("无",-1)])]),_:1}),(d(!0),g(x,null,U(t(pe),i=>(d(),u(y,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"脂肪肝程度",class:"compact-form-item"},{default:a(()=>[o(O,{modelValue:t(l).fatty_liver_degree,"onUpdate:modelValue":e[23]||(e[23]=i=>t(l).fatty_liver_degree=i)},{default:a(()=>[o(y,{label:""},{default:a(()=>[...e[61]||(e[61]=[r("无",-1)])]),_:1}),(d(!0),g(x,null,U(t(ke),i=>(d(),u(y,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(s,{label:"饮食情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).diet_condition,"onUpdate:modelValue":e[24]||(e[24]=i=>t(l).diet_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ue),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"肢体感觉",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).body_feeling,"onUpdate:modelValue":e[25]||(e[25]=i=>t(l).body_feeling=i)},{default:a(()=>[(d(!0),g(x,null,U(t(me),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"睡眠情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).sleep_condition,"onUpdate:modelValue":e[26]||(e[26]=i=>t(l).sleep_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(_e),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"眼睛情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).eye_condition,"onUpdate:modelValue":e[27]||(e[27]=i=>t(l).eye_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(fe),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"头部感觉",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).head_feeling,"onUpdate:modelValue":e[28]||(e[28]=i=>t(l).head_feeling=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ge),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"出汗情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).sweat_condition,"onUpdate:modelValue":e[29]||(e[29]=i=>t(l).sweat_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ce),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"皮肤情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).skin_condition,"onUpdate:modelValue":e[30]||(e[30]=i=>t(l).skin_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ve),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"小便情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).urine_condition,"onUpdate:modelValue":e[31]||(e[31]=i=>t(l).urine_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ye),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"大便情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).stool_condition,"onUpdate:modelValue":e[32]||(e[32]=i=>t(l).stool_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(be),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"腰肾情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).kidney_condition,"onUpdate:modelValue":e[33]||(e[33]=i=>t(l).kidney_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(Ve),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"其他补充",prop:"symptoms"},{default:a(()=>[o(c,{modelValue:t(l).symptoms,"onUpdate:modelValue":e[34]||(e[34]=i=>t(l).symptoms=i),type:"textarea",rows:3,placeholder:"请输入症状"},null,8,["modelValue"])]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[62]||(e[62]=[r("既往史",-1)])]),_:1}),o(s,{label:"",prop:"past_history",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).past_history,"onUpdate:modelValue":e[35]||(e[35]=i=>t(l).past_history=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ne),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[63]||(e[63]=[r("其他病史",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"外伤史"},{default:a(()=>[o(O,{modelValue:t(l).trauma_history,"onUpdate:modelValue":e[36]||(e[36]=i=>t(l).trauma_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[64]||(e[64]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[65]||(e[65]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"手术史"},{default:a(()=>[o(O,{modelValue:t(l).surgery_history,"onUpdate:modelValue":e[37]||(e[37]=i=>t(l).surgery_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[66]||(e[66]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[67]||(e[67]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"过敏史"},{default:a(()=>[o(O,{modelValue:t(l).allergy_history,"onUpdate:modelValue":e[38]||(e[38]=i=>t(l).allergy_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[68]||(e[68]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[69]||(e[69]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"家族病史"},{default:a(()=>[o(O,{modelValue:t(l).family_history,"onUpdate:modelValue":e[39]||(e[39]=i=>t(l).family_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[70]||(e[70]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[71]||(e[71]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"妊娠哺乳史"},{default:a(()=>[o(O,{modelValue:t(l).pregnancy_history,"onUpdate:modelValue":e[40]||(e[40]=i=>t(l).pregnancy_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[72]||(e[72]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[73]||(e[73]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[74]||(e[74]=[r("诊断信息",-1)])]),_:1}),o(s,{label:"病史补充",prop:"remark"},{default:a(()=>[o(c,{modelValue:t(l).remark,"onUpdate:modelValue":e[41]||(e[41]=i=>t(l).remark=i),type:"textarea",rows:2,placeholder:"请输入病史补充"},null,8,["modelValue"])]),_:1})],8,Jl)]),_:1},8,["model"])]),_:1}),o(C,{label:"医生备注",name:"doctorNote",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),g("div",Xl,[o(Cl,{notes:t(j),"diagnosis-id":Number(t(l).id),readonly:t(N),onRefresh:oe},null,8,["notes","diagnosis-id","readonly"])])):(d(),u(L,{key:1,description:"请先保存诊单后查看"}))]),_:1},8,["disabled"]),t(te)?(d(),u(C,{key:0,label:"日常记录",name:"daily",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Nl,{key:0,"diagnosis-id":Number(t(l).id),"patient-id":Number(t(l).patient_id),age:t(l).age,"patient-name":t(l).patient_name,"read-only":t(N)},null,8,["diagnosis-id","patient-id","age","patient-name","read-only"])):(d(),u(L,{key:1,description:"请先保存诊单后查看"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/chufang"])?(d(),u(C,{key:1,label:"处方",name:"bingli",disabled:!t(l).id},{default:a(()=>[t(l).id?(d(),g("div",Ql,[o(Ol,{ref_key:"caseRecordListRef",ref:X,"diagnosis-id":Number(t(l).id),"read-only":t(N),onView:Qe,onOpenPrescription:We},null,8,["diagnosis-id","read-only"])])):(d(),u(L,{key:1,description:"请先保存诊单,开方后病历将在此显示"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/patientOrders"])?(d(),u(C,{key:2,label:"业务订单",name:"patientOrders",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(zl,{key:0,"diagnosis-id":Number(t(l).id),"patient-id":Number(t(l).patient_id)||0},null,8,["diagnosis-id","patient-id"])):(d(),u(L,{key:1,description:"请先保存诊单后查看业务订单"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/huifang"])?(d(),u(C,{key:3,label:"视频录制回放记录",name:"visit",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Pl,{key:0,ref_key:"callRecordPanelRef",ref:ze,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):(d(),u(L,{key:1,description:"请先保存诊单后再查看视频录制回放记录"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/chat"])?(d(),u(C,{key:4,label:"聊天记录",name:"chat",disabled:!t(l).id,lazy:""},{default:a(()=>[t(b)==="chat"&&t(l).id?(d(),u(Rl,{key:0,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):t(l).id?R("",!0):(d(),u(L,{key:1,description:"请先保存诊单后再查看聊天记录"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/assign"])||t(P)(["tcm.diagnosis/detail"])?(d(),u(C,{key:5,label:"指派医助记录",name:"assignLog",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Dl,{key:0,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):(d(),u(L,{key:1,description:"请先保存诊单后再查看指派记录"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["doctor.appointment/lists"])?(d(),u(C,{key:6,label:"挂号记录",name:"appointmentRecords",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Il,{key:0,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):(d(),u(L,{key:1,description:"请先保存诊单后再查看挂号记录"}))]),_:1},8,["disabled"])):R("",!0)]),_:1},8,["modelValue"]),o(Fl,{ref_key:"prescriptionRef",ref:Q,onSuccess:e[43]||(e[43]=i=>{var J,Ee;return(Ee=(J=t(X))==null?void 0:J.refresh)==null?void 0:Ee.call(J)})},null,512)]),_:1},8,["modelValue","z-index"])])}}}),xt=El(Zl,[["__scopeId","data-v-4d5cecd1"]]);export{xt as default};
+import{m as We,l as el,D as ll,U as al,B as tl,C as ol,a4 as il,a5 as dl,G as nl,I as sl,h as rl,P as ul,Q as pl,a2 as ml,af as _l,al as fl,F as gl,R as cl,i as vl,T as yl,e as bl,E as ae}from"./element-plus-DFTWCWyi.js";import{K as Vl,Y as Ne,Z as kl,_ as hl,X as Oe,$ as wl}from"./tcm-BcqaE0lo.js";import{e as xl,u as Ul,m as h,_ as El}from"./index-DBREMm_z.js";import{h as P}from"./perm-Bo9eM8XD.js";import Nl from"./DailyMatrix-CZKqLaUg.js";import Ol from"./CaseRecordList-X66GZZcg.js";import Pl from"./CallRecordPanel-D709DmJk.js";import Rl from"./ImChatRecordPanel-C40Ue1e_.js";import Dl from"./AssignLogPanel-B1RENXkE.js";import Il from"./AppointmentRecordPanel-DH84Bquy.js";import Cl from"./NoteTimeline-BzPD6QHw.js";/* empty css */import zl from"./PatientOrderList-Vzhj0FzC.js";import Fl from"./index-B91OSiYQ.js";import{g as Bl}from"./patient-DdWkVUZB.js";import{f as Tl,w as Pe,ak as d,I as g,a as o,aN as a,J as A,O as r,F as x,H as R,G as u,ap as U,A as J}from"./@vue/runtime-core-C6bnekPw.js";import{n as p,a as Re,y as t}from"./@vue/reactivity-DiY1c2vO.js";import{Q as k}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./picker-BCRrEZaA.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./vue-echarts-BNtg2q_G.js";import"./resize-detector-G6vbKCU7.js";import"./DiagnosisTodoList-CgT2M9eR.js";import"./blood-thresholds-CJ1fqMjh.js";import"./RecordingPlaybackBlock-COxLgEiR.js";import"./RecordingVideoPlayer-DJ_BP9x7.js";import"./im-business-message-parse-QKjFLn3X.js";import"./doctor-ul0r578d.js";import"./index-DcDP_Tmx.js";import"./medicine-CCdxjQY6.js";import"./diabetes-discovery-display-B_wmGXQJ.js";import"./html2canvas-QH1iLAAe.js";const $l={class:"edit-drawer"},Ll={class:"tcm-dd-header"},Sl={class:"tcm-dd-header__row"},Ml={class:"tcm-dd-header__title"},Yl={key:0,class:"tcm-dd-header__sub"},ql={key:0,class:"tcm-dd-header__name"},Al={key:1,class:"tcm-dd-header__id"},Gl={key:0,class:"tcm-dd-header__sep"},Hl=["disabled"],Jl={key:0,class:"text-xs text-gray-400 mt-1"},Xl={key:0,class:"p-4"},Ql={key:0,class:"bingli-tab-content"},Kl={class:"tcm-dd-footer"},Zl=Tl({__name:"edit",emits:["success"],setup(jl,{expose:De,emit:Ie}){const Ce=Ie;xl();const X=p(),ze=p(null),Q=p(),z=p(!1),N=p(!1),K=p(),D=p("add"),Z=p(!1),M=J(()=>P(["tcm.diagnosis/phonePlain"])),te=J(()=>P(["tcm.diagnosis/dailyRecord"])),Fe=J(()=>D.value==="edit"&&!M.value),F=p(!1),b=p("basic"),Be=J(()=>N.value?"诊单详情":D.value==="add"?"新增诊单":"编辑诊单"),j=p([]),oe=async()=>{if(l.value.id)try{j.value=await Bl({diagnosis_id:Number(l.value.id)})||[]}catch{j.value=[]}},ie=p([]),Te=async()=>{if(l.value.id)try{ie.value=await Vl({diagnosis_id:Number(l.value.id)})||[]}catch{ie.value=[]}};Pe(()=>b.value,async n=>{n==="doctorNote"&&l.value.id&&await oe(),n==="trackingNote"&&l.value.id&&await Te()}),Pe([z,b],()=>{z.value&&(b.value==="chat"&&!P(["tcm.diagnosis/chat"])&&(b.value="basic"),b.value==="visit"&&!P(["tcm.diagnosis/huifang"])&&(b.value="basic"),b.value==="assignLog"&&!P(["tcm.diagnosis/assign"])&&!P(["tcm.diagnosis/detail"])&&(b.value="basic"),b.value==="appointmentRecords"&&!P(["doctor.appointment/lists"])&&(b.value="basic"),b.value==="daily"&&!te.value&&(b.value="basic"))});const l=p({id:"",patient_id:"",patient_name:"",id_card:"",phone:"",gender:1,age:void 0,diagnosis_date:"",diagnosis_type:"",syndrome_type:"",diabetes_type:"",diabetes_discovery_year:"",local_hospital_diagnosis:[],local_hospital_name:"",marital_status:void 0,height:void 0,weight:void 0,region:"",systolic_pressure:void 0,diastolic_pressure:void 0,fasting_blood_sugar:"",appetite:[],water_intake:"",diet_condition:[],weight_change:"",body_feeling:[],sleep_condition:[],eye_condition:[],head_feeling:[],sweat_condition:[],skin_condition:[],urine_condition:[],stool_condition:[],kidney_condition:[],fatty_liver_degree:"",past_history:[],trauma_history:0,surgery_history:0,allergy_history:0,family_history:0,pregnancy_history:0,assistant_id:void 0,symptoms:"",tongue_coating:"",pulse:"",treatment_principle:"",prescription:"",doctor_advice:"",remark:"",current_medications:"",status:1,external_userid:""}),E=p(""),B=p(""),W=p(!1),ee=p(!1),G=n=>!n||n.length<11?n:n.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"),$e=()=>{E.value&&(F.value=!F.value)},le=n=>n&&(n.length===15?n.replace(/(\d{6})\d{5}(\d{4})/,"$1*****$2"):n.length===18?n.replace(/(\d{6})\d{8}(\d{4})/,"$1********$2"):n),Le=()=>{if(W.value=!0,!!E.value){if(M.value){l.value.phone=E.value;return}D.value==="add"&&(l.value.phone=E.value)}},Se=async()=>{if(W.value=!1,M.value){if(l.value.phone&&l.value.phone.length===11&&(E.value=l.value.phone,/^1[3-9]\d{9}$/.test(l.value.phone)))try{const n=await Ne({phone:l.value.phone,id:l.value.id||""});n.exists&&ae.warning(n.message)}catch(n){console.error("检查手机号失败:",n)}return}if(D.value==="add"&&l.value.phone&&l.value.phone.length===11){if(E.value=l.value.phone,/^1[3-9]\d{9}$/.test(l.value.phone))try{const n=await Ne({phone:l.value.phone,id:l.value.id||""});n.exists&&ae.warning(n.message)}catch(n){console.error("检查手机号失败:",n)}l.value.phone=G(l.value.phone)}},Me=()=>{ee.value=!0,B.value&&(l.value.id_card=B.value)},Ye=async()=>{if(ee.value=!1,l.value.id_card&&(l.value.id_card.length===15||l.value.id_card.length===18)){if(B.value=l.value.id_card,/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(l.value.id_card)){const n=l.value.id_card,e=parseInt(n.substring(6,10)),f=parseInt(n.substring(10,12)),_=parseInt(n.substring(12,14)),c=new Date;let s=c.getFullYear()-e;(c.getMonth()+1{const _=B.value||e;if(_&&!/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(_)){f(new Error("身份证号格式不正确"));return}f()},trigger:"blur"}],phone:[{required:!0,validator:(n,e,f)=>{const _=E.value||e;if(!_){f(new Error("请输入手机号"));return}if(!/^1[3-9]\d{9}$/.test(_)){f(new Error("手机号格式不正确"));return}f()},trigger:"blur"}],gender:[{required:!0,message:"请选择性别",trigger:"change"}],age:[{required:!0,message:"请输入年龄",trigger:"blur"}],fasting_blood_sugar:[{required:!0,message:"请输入空腹血糖",trigger:"blur"}],diagnosis_type:[{required:!0,message:"请选择诊断类型",trigger:"change"}],diabetes_discovery_year:[{max:50,message:"最多50个字符",trigger:"blur"}]},de=p([]),Ae=p([]),Ge=p([]),ne=p([]),se=p([]),re=p([]),ue=p([]),pe=p([]),me=p([]),_e=p([]),fe=p([]),ge=p([]),ce=p([]),ve=p([]),ye=p([]),be=p([]),Ve=p([]),ke=p([]),he=async()=>{try{const[n,e,f,_,c,s,m,v,T,O,I,$,S,Y,V,w,y,q]=await Promise.all([h({type:"diagnosis_type"}),h({type:"syndrome_type"}),h({type:"diabetes_type"}),h({type:"past_history"}),h({type:"appetite"}),h({type:"water_intake"}),h({type:"diet_condition"}),h({type:"weight_change"}),h({type:"body_feeling"}),h({type:"sleep_condition"}),h({type:"eye_condition"}),h({type:"head_feeling"}),h({type:"sweat_condition"}),h({type:"skin_condition"}),h({type:"urine_condition"}),h({type:"stool_condition"}),h({type:"kidney_condition"}),h({type:"fatty_liver_degree"})]);de.value=(n==null?void 0:n.diagnosis_type)||[],Ae.value=(e==null?void 0:e.syndrome_type)||[],Ge.value=(f==null?void 0:f.diabetes_type)||[],ne.value=(_==null?void 0:_.past_history)||[],se.value=(c==null?void 0:c.appetite)||[],re.value=(s==null?void 0:s.water_intake)||[],ue.value=(m==null?void 0:m.diet_condition)||[],pe.value=(v==null?void 0:v.weight_change)||[],me.value=(T==null?void 0:T.body_feeling)||[],_e.value=(O==null?void 0:O.sleep_condition)||[],fe.value=(I==null?void 0:I.eye_condition)||[],ge.value=($==null?void 0:$.head_feeling)||[],ce.value=(S==null?void 0:S.sweat_condition)||[],ve.value=(Y==null?void 0:Y.skin_condition)||[],ye.value=(V==null?void 0:V.urine_condition)||[],be.value=(w==null?void 0:w.stool_condition)||[],Ve.value=(y==null?void 0:y.kidney_condition)||[],ke.value=(q==null?void 0:q.fatty_liver_degree)||[]}catch(n){console.error("获取字典数据失败:",n)}};async function we(n){const e=await Oe({id:n});E.value=e.phone||"",B.value=e.id_card||"",e.phone=M.value?e.phone||"":G(e.phone||""),e.id_card=le(e.id_card||""),l.value=e;const f=e.diabetes_discovery_year;l.value.diabetes_discovery_year=f==null||f===""?"":String(f)}const He=async(n,e)=>{var f;if(N.value=!1,D.value=n,z.value=!0,b.value="basic",F.value=!1,await he(),n==="edit"&&e)await we(e);else if(n==="add"){const _=Ul();l.value.assistant_id=((f=_.userInfo)==null?void 0:f.id)||"",l.value.diagnosis_type="follow_up"}},Je=async n=>{n&&(N.value=!0,D.value="edit",z.value=!0,b.value="basic",F.value=!1,await he(),await we(n))},Xe=async()=>{var n;if(!N.value){await((n=K.value)==null?void 0:n.validate()),Z.value=!0;try{const e={...l.value,phone:E.value||l.value.phone,id_card:B.value||l.value.id_card};if(D.value==="add"){const f=await hl(e);if(f&&f.id){D.value="edit",F.value=!1,l.value.id=f.id;try{const _=await Oe({id:f.id});l.value.patient_id=_.patient_id,E.value=_.phone||"",B.value=_.id_card||"",l.value.phone=M.value?_.phone||"":G(_.phone||""),l.value.id_card=le(_.id_card||"")}catch(_){console.error("获取详情失败:",_)}}}else await wl(e);Ce("success")}catch(e){console.error("提交失败:",e)}finally{Z.value=!1}}},Qe=n=>{var e;(e=Q.value)==null||e.openById(n.id)},Ke=()=>{var e;if(N.value)return;const n={id:l.value.id,diagnosis_id:l.value.id,appointment_id:0,patient_name:l.value.patient_name,patient_phone:E.value||l.value.phone,patient_gender:l.value.gender,patient_age:l.value.age,case_record:JSON.parse(JSON.stringify(l.value))};(e=Q.value)==null||e.open(n)},xe=()=>{var n;(n=K.value)==null||n.resetFields(),l.value={id:"",patient_id:"",patient_name:"",id_card:"",phone:"",gender:1,age:void 0,diagnosis_date:"",diagnosis_type:"",syndrome_type:"",diabetes_type:"",diabetes_discovery_year:"",local_hospital_diagnosis:[],local_hospital_name:"",marital_status:void 0,height:void 0,weight:void 0,region:"",systolic_pressure:void 0,diastolic_pressure:void 0,fasting_blood_sugar:"",appetite:[],water_intake:"",diet_condition:[],weight_change:"",body_feeling:[],sleep_condition:[],eye_condition:[],head_feeling:[],sweat_condition:[],skin_condition:[],urine_condition:[],stool_condition:[],kidney_condition:[],fatty_liver_degree:"",past_history:[],trauma_history:0,surgery_history:0,allergy_history:0,family_history:0,pregnancy_history:0,assistant_id:void 0,symptoms:"",tongue_coating:"",pulse:"",treatment_principle:"",prescription:"",doctor_advice:"",remark:"",current_medications:"",status:1,external_userid:""},E.value="",B.value="",W.value=!1,ee.value=!1,F.value=!1,N.value=!1,z.value=!1};return De({open:He,openViewOnly:Je,refreshCaseList:()=>{var n,e;return(e=(n=X.value)==null?void 0:n.refresh)==null?void 0:e.call(n)}}),(n,e)=>{const f=yl,_=al,c=ol,s=tl,m=dl,v=il,T=sl,O=nl,I=rl,$=pl,S=ul,Y=ml,V=fl,w=_l,y=gl,q=ll,C=el,L=cl,Ze=We,Ue=vl,je=bl;return d(),g("div",$l,[o(je,{modelValue:t(z),"onUpdate:modelValue":e[44]||(e[44]=i=>Re(z)?z.value=i:null),size:"60%","before-close":xe,"z-index":t(N)?4e3:1500,modal:!0,class:"diagnosis-drawer tcm-diagnosis-drawer"},{header:a(()=>[A("div",Ll,[A("div",Sl,[A("h2",Ml,k(t(Be)),1),t(N)?(d(),u(f,{key:0,type:"info",effect:"plain",round:"",size:"small",class:"tcm-dd-header__badge"},{default:a(()=>[...e[45]||(e[45]=[r(" 只读 ",-1)])]),_:1})):t(D)==="add"?(d(),u(f,{key:1,type:"success",effect:"plain",round:"",size:"small",class:"tcm-dd-header__badge"},{default:a(()=>[...e[46]||(e[46]=[r(" 新建 ",-1)])]),_:1})):(d(),u(f,{key:2,type:"warning",effect:"plain",round:"",size:"small",class:"tcm-dd-header__badge"},{default:a(()=>[...e[47]||(e[47]=[r(" 编辑 ",-1)])]),_:1}))]),t(l).patient_name||t(l).id?(d(),g("p",Yl,[t(l).patient_name?(d(),g("span",ql,k(t(l).patient_name),1)):R("",!0),t(l).id?(d(),g("span",Al,[t(l).patient_name?(d(),g("span",Gl,"·")):R("",!0),r(" 诊单 "+k(t(l).patient_id||t(l).id),1)])):R("",!0)])):R("",!0)])]),footer:a(()=>[A("div",Kl,[o(Ue,{class:"tcm-dd-footer__btn",onClick:xe},{default:a(()=>[r(k(t(N)?"关闭":"取消"),1)]),_:1}),!t(N)&&t(b)==="basic"?(d(),u(Ue,{key:0,class:"tcm-dd-footer__btn",type:"primary",onClick:Xe,loading:t(Z)},{default:a(()=>[...e[75]||(e[75]=[r(" 保存病历 ",-1)])]),_:1},8,["loading"])):R("",!0)])]),default:a(()=>[o(Ze,{modelValue:t(b),"onUpdate:modelValue":e[42]||(e[42]=i=>Re(b)?b.value=i:null),class:"diagnosis-tabs tcm-diagnosis-tabs"},{default:a(()=>[o(C,{label:"病历",name:"basic"},{default:a(()=>[o(q,{ref_key:"formRef",ref:K,model:t(l),rules:qe,"label-width":"160px"},{default:a(()=>[A("fieldset",{disabled:t(N),class:"diagnosis-view-fieldset border-0 min-w-0 p-0 m-0"},[o(_,{"content-position":"left"},{default:a(()=>[...e[48]||(e[48]=[r("基本信息",-1)])]),_:1}),o(s,{label:"诊单ID"},{default:a(()=>[o(c,{modelValue:t(l).patient_id,"onUpdate:modelValue":e[0]||(e[0]=i=>t(l).patient_id=i),disabled:"",placeholder:"系统自动生成"},null,8,["modelValue"])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"姓名",prop:"patient_name"},{default:a(()=>[o(c,{modelValue:t(l).patient_name,"onUpdate:modelValue":e[1]||(e[1]=i=>t(l).patient_name=i),placeholder:"请输入姓名"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"身份证号",prop:"id_card"},{default:a(()=>[o(c,{modelValue:t(l).id_card,"onUpdate:modelValue":e[2]||(e[2]=i=>t(l).id_card=i),placeholder:"请输入身份证号",maxlength:"18",onFocus:Me,onBlur:Ye},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"手机号",prop:"phone"},{default:a(()=>[t(Fe)?(d(),g(x,{key:0},[o(c,{"model-value":t(F)?t(E)||"":G(t(E)||""),readonly:"",placeholder:"点击可查看完整手机号",maxlength:"11",class:"cursor-pointer phone-mask-toggle",onClick:$e},null,8,["model-value"]),t(E)&&!t(F)?(d(),g("p",Jl," 当前为脱敏显示,点击输入框可查看完整号码 ")):R("",!0)],64)):(d(),u(c,{key:1,modelValue:t(l).phone,"onUpdate:modelValue":e[3]||(e[3]=i=>t(l).phone=i),placeholder:"请输入手机号",maxlength:"11",onFocus:Le,onBlur:Se},null,8,["modelValue"]))]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"性别",prop:"gender"},{default:a(()=>[o(O,{modelValue:t(l).gender,"onUpdate:modelValue":e[4]||(e[4]=i=>t(l).gender=i)},{default:a(()=>[o(T,{label:1},{default:a(()=>[...e[49]||(e[49]=[r("男",-1)])]),_:1}),o(T,{label:0},{default:a(()=>[...e[50]||(e[50]=[r("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"年龄",prop:"age"},{default:a(()=>[o(I,{modelValue:t(l).age,"onUpdate:modelValue":e[5]||(e[5]=i=>t(l).age=i),min:0,max:150,placeholder:"请输入年龄",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[51]||(e[51]=[r("生命体征",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"婚姻状态",prop:"marital_status"},{default:a(()=>[o(S,{modelValue:t(l).marital_status,"onUpdate:modelValue":e[6]||(e[6]=i=>t(l).marital_status=i),placeholder:"请选择婚姻状态",class:"w-full","popper-options":{strategy:"fixed"},"popper-class":"high-z-index"},{default:a(()=>[o($,{label:"未婚",value:0}),o($,{label:"已婚",value:1}),o($,{label:"离异",value:2})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"就诊人身高(cm)",prop:"height"},{default:a(()=>[o(I,{modelValue:t(l).height,"onUpdate:modelValue":e[7]||(e[7]=i=>t(l).height=i),min:0,max:300,placeholder:"请输入身高",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"体重(kg)",prop:"weight"},{default:a(()=>[o(I,{modelValue:t(l).weight,"onUpdate:modelValue":e[8]||(e[8]=i=>t(l).weight=i),min:0,max:500,step:.1,placeholder:"请输入体重",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"地区",prop:"region"},{default:a(()=>[o(c,{modelValue:t(l).region,"onUpdate:modelValue":e[9]||(e[9]=i=>t(l).region=i),placeholder:"请输入地区"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"就诊人血压(高压mmHg)",prop:"systolic_pressure"},{default:a(()=>[o(I,{modelValue:t(l).systolic_pressure,"onUpdate:modelValue":e[10]||(e[10]=i=>t(l).systolic_pressure=i),min:0,max:250,placeholder:"请输入高压",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"就诊人血压(低压mmHg)",prop:"diastolic_pressure"},{default:a(()=>[o(I,{modelValue:t(l).diastolic_pressure,"onUpdate:modelValue":e[11]||(e[11]=i=>t(l).diastolic_pressure=i),min:0,max:150,placeholder:"请输入低压",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"空腹血糖(mmol/L)",prop:"fasting_blood_sugar"},{default:a(()=>[o(c,{modelValue:t(l).fasting_blood_sugar,"onUpdate:modelValue":e[12]||(e[12]=i=>t(l).fasting_blood_sugar=i),placeholder:"请输入空腹血糖,如:8.5 或 8-9",maxlength:"20",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"诊断类型",prop:"diagnosis_type"},{default:a(()=>[o(S,{modelValue:t(l).diagnosis_type,"onUpdate:modelValue":e[13]||(e[13]=i=>t(l).diagnosis_type=i),placeholder:"请选择诊断类型",class:"w-full","popper-options":{strategy:"fixed"},"popper-class":"high-z-index"},{default:a(()=>[(d(!0),g(x,null,U(t(de),i=>(d(),u($,{key:i.value,label:i.name,value:i.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"状态",prop:"status"},{default:a(()=>[o(O,{modelValue:t(l).status,"onUpdate:modelValue":e[14]||(e[14]=i=>t(l).status=i)},{default:a(()=>[o(T,{label:1},{default:a(()=>[...e[52]||(e[52]=[r("启用",-1)])]),_:1}),o(T,{label:0},{default:a(()=>[...e[53]||(e[53]=[r("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"在用药物",prop:"current_medications"},{default:a(()=>[o(c,{modelValue:t(l).current_medications,"onUpdate:modelValue":e[15]||(e[15]=i=>t(l).current_medications=i),type:"textarea",rows:3,placeholder:"请填写患者当前正在使用的药物(如降压药、降糖药等),多种请换行或顿号分隔",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[54]||(e[54]=[r("主诉",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"当地医院诊断日期",prop:"diagnosis_date"},{default:a(()=>[o(Y,{modelValue:t(l).diagnosis_date,"onUpdate:modelValue":e[16]||(e[16]=i=>t(l).diagnosis_date=i),type:"date",placeholder:"请选择诊断日期","value-format":"YYYY-MM-DD",class:"w-full","popper-options":{strategy:"fixed"},"popper-class":"high-z-index"},null,8,["modelValue"])]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"发现糖尿病患病史",prop:"diabetes_discovery_year"},{default:a(()=>[o(c,{modelValue:t(l).diabetes_discovery_year,"onUpdate:modelValue":e[17]||(e[17]=i=>t(l).diabetes_discovery_year=i),clearable:"",maxlength:"50","show-word-limit":"",placeholder:"可填数字或文字,如:5、1年、半年",class:"w-full"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(s,{label:"当地医院诊断结果",prop:"local_hospital_diagnosis",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).local_hospital_diagnosis,"onUpdate:modelValue":e[18]||(e[18]=i=>t(l).local_hospital_diagnosis=i)},{default:a(()=>[o(V,{label:"糖尿病"},{default:a(()=>[...e[55]||(e[55]=[r("糖尿病",-1)])]),_:1}),o(V,{label:"消渴病"},{default:a(()=>[...e[56]||(e[56]=[r("消渴病",-1)])]),_:1}),o(V,{label:"糖尿病前期"},{default:a(()=>[...e[57]||(e[57]=[r("糖尿病前期",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"当地就诊医院名称",prop:"local_hospital_name"},{default:a(()=>[o(c,{modelValue:t(l).local_hospital_name,"onUpdate:modelValue":e[19]||(e[19]=i=>t(l).local_hospital_name=i),placeholder:"请输入当地就诊医院名称(不能填写当地、本地、互联网等关键词)"},null,8,["modelValue"])]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[58]||(e[58]=[r("现病史",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(s,{label:"口腔感觉",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).appetite,"onUpdate:modelValue":e[20]||(e[20]=i=>t(l).appetite=i)},{default:a(()=>[(d(!0),g(x,null,U(t(se),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:20},{default:a(()=>[o(s,{label:"每日饮水量",class:"compact-form-item"},{default:a(()=>[o(O,{modelValue:t(l).water_intake,"onUpdate:modelValue":e[21]||(e[21]=i=>t(l).water_intake=i)},{default:a(()=>[o(y,{label:""},{default:a(()=>[...e[59]||(e[59]=[r("无",-1)])]),_:1}),(d(!0),g(x,null,U(t(re),i=>(d(),u(y,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"近一个月体重变化",class:"compact-form-item"},{default:a(()=>[o(O,{modelValue:t(l).weight_change,"onUpdate:modelValue":e[22]||(e[22]=i=>t(l).weight_change=i)},{default:a(()=>[o(y,{label:""},{default:a(()=>[...e[60]||(e[60]=[r("无",-1)])]),_:1}),(d(!0),g(x,null,U(t(pe),i=>(d(),u(y,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"脂肪肝程度",class:"compact-form-item"},{default:a(()=>[o(O,{modelValue:t(l).fatty_liver_degree,"onUpdate:modelValue":e[23]||(e[23]=i=>t(l).fatty_liver_degree=i)},{default:a(()=>[o(y,{label:""},{default:a(()=>[...e[61]||(e[61]=[r("无",-1)])]),_:1}),(d(!0),g(x,null,U(t(ke),i=>(d(),u(y,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(s,{label:"饮食情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).diet_condition,"onUpdate:modelValue":e[24]||(e[24]=i=>t(l).diet_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ue),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"肢体感觉",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).body_feeling,"onUpdate:modelValue":e[25]||(e[25]=i=>t(l).body_feeling=i)},{default:a(()=>[(d(!0),g(x,null,U(t(me),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"睡眠情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).sleep_condition,"onUpdate:modelValue":e[26]||(e[26]=i=>t(l).sleep_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(_e),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"眼睛情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).eye_condition,"onUpdate:modelValue":e[27]||(e[27]=i=>t(l).eye_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(fe),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"头部感觉",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).head_feeling,"onUpdate:modelValue":e[28]||(e[28]=i=>t(l).head_feeling=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ge),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"出汗情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).sweat_condition,"onUpdate:modelValue":e[29]||(e[29]=i=>t(l).sweat_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ce),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"皮肤情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).skin_condition,"onUpdate:modelValue":e[30]||(e[30]=i=>t(l).skin_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ve),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"小便情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).urine_condition,"onUpdate:modelValue":e[31]||(e[31]=i=>t(l).urine_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ye),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"大便情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).stool_condition,"onUpdate:modelValue":e[32]||(e[32]=i=>t(l).stool_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(be),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"腰肾情况",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).kidney_condition,"onUpdate:modelValue":e[33]||(e[33]=i=>t(l).kidney_condition=i)},{default:a(()=>[(d(!0),g(x,null,U(t(Ve),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"其他补充",prop:"symptoms"},{default:a(()=>[o(c,{modelValue:t(l).symptoms,"onUpdate:modelValue":e[34]||(e[34]=i=>t(l).symptoms=i),type:"textarea",rows:3,placeholder:"请输入症状"},null,8,["modelValue"])]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[62]||(e[62]=[r("既往史",-1)])]),_:1}),o(s,{label:"",prop:"past_history",class:"checkbox-form-item"},{default:a(()=>[o(w,{modelValue:t(l).past_history,"onUpdate:modelValue":e[35]||(e[35]=i=>t(l).past_history=i)},{default:a(()=>[(d(!0),g(x,null,U(t(ne),i=>(d(),u(V,{key:i.value,label:i.value},{default:a(()=>[r(k(i.name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[63]||(e[63]=[r("其他病史",-1)])]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:8},{default:a(()=>[o(s,{label:"外伤史"},{default:a(()=>[o(O,{modelValue:t(l).trauma_history,"onUpdate:modelValue":e[36]||(e[36]=i=>t(l).trauma_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[64]||(e[64]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[65]||(e[65]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"手术史"},{default:a(()=>[o(O,{modelValue:t(l).surgery_history,"onUpdate:modelValue":e[37]||(e[37]=i=>t(l).surgery_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[66]||(e[66]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[67]||(e[67]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:8},{default:a(()=>[o(s,{label:"过敏史"},{default:a(()=>[o(O,{modelValue:t(l).allergy_history,"onUpdate:modelValue":e[38]||(e[38]=i=>t(l).allergy_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[68]||(e[68]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[69]||(e[69]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(v,{gutter:20},{default:a(()=>[o(m,{span:12},{default:a(()=>[o(s,{label:"家族病史"},{default:a(()=>[o(O,{modelValue:t(l).family_history,"onUpdate:modelValue":e[39]||(e[39]=i=>t(l).family_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[70]||(e[70]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[71]||(e[71]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(m,{span:12},{default:a(()=>[o(s,{label:"妊娠哺乳史"},{default:a(()=>[o(O,{modelValue:t(l).pregnancy_history,"onUpdate:modelValue":e[40]||(e[40]=i=>t(l).pregnancy_history=i)},{default:a(()=>[o(y,{label:1},{default:a(()=>[...e[72]||(e[72]=[r("有",-1)])]),_:1}),o(y,{label:0},{default:a(()=>[...e[73]||(e[73]=[r("无",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),o(_,{"content-position":"left"},{default:a(()=>[...e[74]||(e[74]=[r("诊断信息",-1)])]),_:1}),o(s,{label:"病史补充",prop:"remark"},{default:a(()=>[o(c,{modelValue:t(l).remark,"onUpdate:modelValue":e[41]||(e[41]=i=>t(l).remark=i),type:"textarea",rows:2,placeholder:"请输入病史补充"},null,8,["modelValue"])]),_:1})],8,Hl)]),_:1},8,["model"])]),_:1}),o(C,{label:"医生备注",name:"doctorNote",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),g("div",Xl,[o(Cl,{notes:t(j),"diagnosis-id":Number(t(l).id),readonly:t(N),onRefresh:oe},null,8,["notes","diagnosis-id","readonly"])])):(d(),u(L,{key:1,description:"请先保存诊单后查看"}))]),_:1},8,["disabled"]),t(te)?(d(),u(C,{key:0,label:"日常记录",name:"daily",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Nl,{key:0,"diagnosis-id":Number(t(l).id),"patient-id":Number(t(l).patient_id),age:t(l).age,"patient-name":t(l).patient_name,"read-only":t(N)},null,8,["diagnosis-id","patient-id","age","patient-name","read-only"])):(d(),u(L,{key:1,description:"请先保存诊单后查看"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/chufang"])?(d(),u(C,{key:1,label:"处方",name:"bingli",disabled:!t(l).id},{default:a(()=>[t(l).id?(d(),g("div",Ql,[o(Ol,{ref_key:"caseRecordListRef",ref:X,"diagnosis-id":Number(t(l).id),"read-only":t(N),onView:Qe,onOpenPrescription:Ke},null,8,["diagnosis-id","read-only"])])):(d(),u(L,{key:1,description:"请先保存诊单,开方后病历将在此显示"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/patientOrders"])?(d(),u(C,{key:2,label:"业务订单",name:"patientOrders",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(zl,{key:0,"diagnosis-id":Number(t(l).id),"patient-id":Number(t(l).patient_id)||0},null,8,["diagnosis-id","patient-id"])):(d(),u(L,{key:1,description:"请先保存诊单后查看业务订单"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/huifang"])?(d(),u(C,{key:3,label:"视频录制回放记录",name:"visit",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Pl,{key:0,ref_key:"callRecordPanelRef",ref:ze,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):(d(),u(L,{key:1,description:"请先保存诊单后再查看视频录制回放记录"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/chat"])?(d(),u(C,{key:4,label:"聊天记录",name:"chat",disabled:!t(l).id,lazy:""},{default:a(()=>[t(b)==="chat"&&t(l).id?(d(),u(Rl,{key:0,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):t(l).id?R("",!0):(d(),u(L,{key:1,description:"请先保存诊单后再查看聊天记录"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["tcm.diagnosis/assign"])||t(P)(["tcm.diagnosis/detail"])?(d(),u(C,{key:5,label:"指派医助记录",name:"assignLog",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Dl,{key:0,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):(d(),u(L,{key:1,description:"请先保存诊单后再查看指派记录"}))]),_:1},8,["disabled"])):R("",!0),t(P)(["doctor.appointment/lists"])?(d(),u(C,{key:6,label:"挂号记录",name:"appointmentRecords",disabled:!t(l).id,lazy:""},{default:a(()=>[t(l).id?(d(),u(Il,{key:0,"diagnosis-id":Number(t(l).id)},null,8,["diagnosis-id"])):(d(),u(L,{key:1,description:"请先保存诊单后再查看挂号记录"}))]),_:1},8,["disabled"])):R("",!0)]),_:1},8,["modelValue"]),o(Fl,{ref_key:"prescriptionRef",ref:Q,onSuccess:e[43]||(e[43]=i=>{var H,Ee;return(Ee=(H=t(X))==null?void 0:H.refresh)==null?void 0:Ee.call(H)})},null,512)]),_:1},8,["modelValue","z-index"])])}}}),xt=El(Zl,[["__scopeId","data-v-4d5cecd1"]]);export{xt as default};
diff --git a/server/public/admin/assets/edit-Dhq5bPXP.js b/server/public/admin/assets/edit-BNPso8Y3.js
similarity index 77%
rename from server/public/admin/assets/edit-Dhq5bPXP.js
rename to server/public/admin/assets/edit-BNPso8Y3.js
index 539ee990..edc3305f 100644
--- a/server/public/admin/assets/edit-Dhq5bPXP.js
+++ b/server/public/admin/assets/edit-BNPso8Y3.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-YNgwqh5W.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./post-Dq6zumLO.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-BCQfswVh.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./post-RziaWdiV.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-D3JE6NlA.js b/server/public/admin/assets/edit-BRBBltgC.js
similarity index 95%
rename from server/public/admin/assets/edit-D3JE6NlA.js
rename to server/public/admin/assets/edit-BRBBltgC.js
index 7ab01dad..1a0ef186 100644
--- a/server/public/admin/assets/edit-D3JE6NlA.js
+++ b/server/public/admin/assets/edit-BRBBltgC.js
@@ -1 +1 @@
-import{e as M,D as T,B as z,I as J,C as O,G as Q,h as $,i as j,L as W,a as X}from"./element-plus-0wC3naml.js";import{_ as Y}from"./picker-DlbAZkDm.js";import{g as Z,s as h}from"./pay-wX-vUDcK.js";import{u as ee}from"./useLockFn-X4Qce5KO.js";import{u as le}from"./getExposeType-MUpmx9zy.js";import{f as oe,ak as y,G as te,aN as a,aP as ie,I as V,a as o,O as d,J as r,F as k,H as x,A as ae}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,a as re,n as u}from"./@vue/reactivity-DiY1c2vO.js";import{Q as ne}from"./@vue/shared-mAAVTE9n.js";import{_ as pe}from"./index-E47--KT7.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const me={class:"h-full flex flex-col","element-loading-text":"加载中...","element-loading-background":"var(--el-bg-color)"},se={class:"flex-1"},de={class:"flex-1"},ue={class:"flex-1"},fe=oe({__name:"edit",emits:["refresh"],setup(_e,{expose:b,emit:w}){const f=u(!1),v=le(),I=u(),U=u("profile"),C=u(!1),c=u(!0),_=ae(()=>{switch(t.value.pay_way){case 1:return"余额支付";case 2:return"微信支付";case 3:return"支付宝支付";default:return""}}),t=u({id:"",pay_way:0,name:"",icon:"",sort:0,remark:"",domain:"",config:{interface_version:"",merchant_type:"",mch_id:"",pay_sign_key:"",apiclient_cert:"",apiclient_key:"",mode:"",app_id:"",private_key:"",ali_public_key:""}}),E={name:[{required:!0,message:"请输入显示名称"}],"config.mch_id":[{required:!0,message:"请输入微信支付商户号"}],"config.pay_sign_key":[{required:!0,message:"请输入微信支付商户API密钥"}],"config.apiclient_cert":[{required:!0,message:"请输入微信支付证书"}],"config.apiclient_key":[{required:!0,message:"请输入微信支付证书密钥"}],"config.app_id":[{required:!0,message:"请输入支付宝应用ID"}],"config.private_key":[{required:!0,message:"请输入支付宝应用私钥"}],"config.ali_public_key":[{required:!0,message:"请输入支付宝公钥"}]},D=w,P=(p,e,s)=>{c.value=!0,U.value=s||"profile",C.value=e||!1,q(p),I.value=p,f.value=!0},q=async p=>{const e=await Z({id:p});e.config||(e.config=t.value.config),c.value=!1,t.value=e},B=p=>{X.confirm("修改还未保存,确认退出编辑吗?").then(()=>{p()}).catch(()=>{})},F=()=>{var p;(p=v.value)==null||p.resetFields()},N=async()=>{var p;await((p=v.value)==null?void 0:p.validate()),await h(t.value),f.value=!1,D("refresh")},{isLock:R,lockFn:A}=ee(N);return b({openHandle:P}),(p,e)=>{const s=J,n=z,m=O,L=Y,g=Q,S=$,G=j,H=M,K=W;return y(),te(H,{modelValue:l(f),"onUpdate:modelValue":e[14]||(e[14]=i=>re(f)?f.value=i:null),"destroy-on-close":"",title:`${l(_)}配置`,direction:"rtl",size:"50%",onClose:F,"before-close":B},{default:a(()=>[ie((y(),V("div",me,[o(l(T),{ref_key:"formRef",ref:v,model:l(t),"label-width":"9rem",rules:E},{default:a(()=>[o(n,{label:"支付方式"},{default:a(()=>[o(s,{value:l(_),"model-value":l(_)},{default:a(()=>[d(ne(l(_)),1)]),_:1},8,["value","model-value"])]),_:1}),o(n,{label:"显示名称",prop:"name"},{default:a(()=>[o(m,{modelValue:l(t).name,"onUpdate:modelValue":e[0]||(e[0]=i=>l(t).name=i),placeholder:"请输入显示名称",style:{"max-width":"250px"}},null,8,["modelValue"])]),_:1}),o(n,{label:"图标",prop:"image"},{default:a(()=>[r("div",null,[o(L,{limit:1,disabled:!1,modelValue:l(t).icon,"onUpdate:modelValue":e[1]||(e[1]=i=>l(t).icon=i)},null,8,["modelValue"]),e[15]||(e[15]=r("div",{class:"form-tips"},"建议尺寸:200*200px",-1))])]),_:1}),l(t).pay_way==2?(y(),V(k,{key:0},[o(n,{prop:"config.interface_version",label:"微信支付接口版本"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.interface_version,"onUpdate:modelValue":e[2]||(e[2]=i=>l(t).config.interface_version=i)},{default:a(()=>[o(s,{value:"v3"},{default:a(()=>[...e[16]||(e[16]=[d("V3",-1)])]),_:1})]),_:1},8,["modelValue"]),e[17]||(e[17]=r("div",{class:"form-tips"},"暂时只支持V3版本",-1))])]),_:1}),o(n,{label:"商户类型",prop:"config.merchant_type"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.merchant_type,"onUpdate:modelValue":e[3]||(e[3]=i=>l(t).config.merchant_type=i)},{default:a(()=>[o(s,{value:"ordinary_merchant"},{default:a(()=>[...e[18]||(e[18]=[d("普通商户",-1)])]),_:1})]),_:1},8,["modelValue"]),e[19]||(e[19]=r("div",{class:"form-tips"}," 暂时只支持普通商户类型,服务商户类型模式暂不支持 ",-1))])]),_:1}),o(n,{label:"微信支付商户号",prop:"config.mch_id"},{default:a(()=>[r("div",null,[o(m,{modelValue:l(t).config.mch_id,"onUpdate:modelValue":e[4]||(e[4]=i=>l(t).config.mch_id=i),placeholder:"请输入微信支付商户号",style:{"max-width":"250px"}},null,8,["modelValue"]),e[20]||(e[20]=r("div",{class:"form-tips"},"微信支付商户号(MCHID)",-1))])]),_:1}),o(n,{label:"商户API密钥",prop:"config.pay_sign_key"},{default:a(()=>[r("div",null,[o(m,{modelValue:l(t).config.pay_sign_key,"onUpdate:modelValue":e[5]||(e[5]=i=>l(t).config.pay_sign_key=i),placeholder:"请输入微信支付商户API密钥",style:{"max-width":"250px"}},null,8,["modelValue"]),e[21]||(e[21]=r("div",{class:"form-tips"},"微信支付商户API密钥(paySignKey)",-1))])]),_:1}),o(n,{label:"微信支付证书",prop:"config.apiclient_cert"},{default:a(()=>[r("div",null,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.apiclient_cert,"onUpdate:modelValue":e[6]||(e[6]=i=>l(t).config.apiclient_cert=i),placeholder:"请输入微信支付证书",style:{"max-width":"400px"}},null,8,["modelValue"]),e[22]||(e[22]=r("div",{class:"form-tips"}," 微信支付证书(apiclient_cert.pem),前往微信商家平台生成并黏贴至此处 ",-1))])]),_:1}),o(n,{label:"微信支付证书密钥",prop:"config.apiclient_key"},{default:a(()=>[r("div",null,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.apiclient_key,"onUpdate:modelValue":e[7]||(e[7]=i=>l(t).config.apiclient_key=i),placeholder:"请输入微信支付证书密钥",style:{"max-width":"400px"}},null,8,["modelValue"]),e[23]||(e[23]=r("div",{class:"form-tips"}," 微信支付证书密钥(apiclient_key.pem),前往微信商家平台生成并黏贴至此处 ",-1))])]),_:1}),o(n,{label:"支付授权目录"},{default:a(()=>[...e[24]||(e[24]=[r("div",null,[r("div",null,[r("span",{class:"mr-[20px]"},"https://前台手机域名地址/")])],-1)])]),_:1})],64)):x("",!0),l(t).pay_way==3?(y(),V(k,{key:1},[o(n,{label:"模式",prop:"config.mode"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.mode,"onUpdate:modelValue":e[8]||(e[8]=i=>l(t).config.mode=i)},{default:a(()=>[o(s,{value:"normal_mode"},{default:a(()=>[...e[25]||(e[25]=[d("普通模式",-1)])]),_:1})]),_:1},8,["modelValue"]),e[26]||(e[26]=r("div",{class:"form-tips"},"暂时仅支持支付宝普通模式",-1))])]),_:1}),o(n,{label:"商户类型",prop:"config.merchant_type"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.merchant_type,"onUpdate:modelValue":e[9]||(e[9]=i=>l(t).config.merchant_type=i)},{default:a(()=>[o(s,{value:"ordinary_merchant"},{default:a(()=>[...e[27]||(e[27]=[d("普通商户",-1)])]),_:1})]),_:1},8,["modelValue"]),e[28]||(e[28]=r("div",{class:"form-tips"}," 暂时只支持普通商户类型,服务商户类型模式暂不支持 ",-1))])]),_:1}),o(n,{label:"应用ID",prop:"config.app_id"},{default:a(()=>[r("div",se,[o(m,{modelValue:l(t).config.app_id,"onUpdate:modelValue":e[10]||(e[10]=i=>l(t).config.app_id=i),placeholder:"请输入支付宝应用ID",style:{"max-width":"250px"}},null,8,["modelValue"]),e[29]||(e[29]=r("div",{class:"form-tips"},"支付宝应用APP_ID",-1))])]),_:1}),o(n,{label:"应用私钥",prop:"config.private_key"},{default:a(()=>[r("div",de,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.private_key,"onUpdate:modelValue":e[11]||(e[11]=i=>l(t).config.private_key=i),placeholder:"请输入支付宝应用私钥",style:{"max-width":"400px"}},null,8,["modelValue"]),e[30]||(e[30]=r("div",{class:"form-tips"},"支付宝应用私钥(private_key)",-1))])]),_:1}),o(n,{label:"支付宝公钥",prop:"config.ali_public_key"},{default:a(()=>[r("div",ue,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.ali_public_key,"onUpdate:modelValue":e[12]||(e[12]=i=>l(t).config.ali_public_key=i),placeholder:"请输入支付宝公钥",style:{"max-width":"400px"}},null,8,["modelValue"]),e[31]||(e[31]=r("div",{class:"form-tips"},"支付宝公钥(alipayCertPublicKey)",-1))])]),_:1})],64)):x("",!0),o(n,{label:"排序",prop:"sort"},{default:a(()=>[r("div",null,[o(S,{modelValue:l(t).sort,"onUpdate:modelValue":e[13]||(e[13]=i=>l(t).sort=i),min:0,max:9999},null,8,["modelValue"]),e[32]||(e[32]=r("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),o(n,null,{default:a(()=>[o(G,{type:"primary",loading:l(R),onClick:l(A)},{default:a(()=>[...e[33]||(e[33]=[d("保存",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1},8,["model"])])),[[K,l(c)]])]),_:1},8,["modelValue","title"])}}}),yl=pe(fe,[["__scopeId","data-v-221f14e8"]]);export{yl as default};
+import{e as M,D as T,B as z,I as J,C as O,G as Q,h as $,i as j,L as W,a as X}from"./element-plus-DFTWCWyi.js";import{_ as Y}from"./picker-BCRrEZaA.js";import{g as Z,s as h}from"./pay-BWtHlaJr.js";import{u as ee}from"./useLockFn-X4Qce5KO.js";import{u as le}from"./getExposeType-MUpmx9zy.js";import{f as oe,ak as y,G as te,aN as a,aP as ie,I as V,a as o,O as d,J as r,F as k,H as x,A as ae}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,a as re,n as u}from"./@vue/reactivity-DiY1c2vO.js";import{Q as ne}from"./@vue/shared-mAAVTE9n.js";import{_ as pe}from"./index-DBREMm_z.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const me={class:"h-full flex flex-col","element-loading-text":"加载中...","element-loading-background":"var(--el-bg-color)"},se={class:"flex-1"},de={class:"flex-1"},ue={class:"flex-1"},fe=oe({__name:"edit",emits:["refresh"],setup(_e,{expose:b,emit:w}){const f=u(!1),v=le(),I=u(),U=u("profile"),C=u(!1),c=u(!0),_=ae(()=>{switch(t.value.pay_way){case 1:return"余额支付";case 2:return"微信支付";case 3:return"支付宝支付";default:return""}}),t=u({id:"",pay_way:0,name:"",icon:"",sort:0,remark:"",domain:"",config:{interface_version:"",merchant_type:"",mch_id:"",pay_sign_key:"",apiclient_cert:"",apiclient_key:"",mode:"",app_id:"",private_key:"",ali_public_key:""}}),E={name:[{required:!0,message:"请输入显示名称"}],"config.mch_id":[{required:!0,message:"请输入微信支付商户号"}],"config.pay_sign_key":[{required:!0,message:"请输入微信支付商户API密钥"}],"config.apiclient_cert":[{required:!0,message:"请输入微信支付证书"}],"config.apiclient_key":[{required:!0,message:"请输入微信支付证书密钥"}],"config.app_id":[{required:!0,message:"请输入支付宝应用ID"}],"config.private_key":[{required:!0,message:"请输入支付宝应用私钥"}],"config.ali_public_key":[{required:!0,message:"请输入支付宝公钥"}]},D=w,P=(p,e,s)=>{c.value=!0,U.value=s||"profile",C.value=e||!1,q(p),I.value=p,f.value=!0},q=async p=>{const e=await Z({id:p});e.config||(e.config=t.value.config),c.value=!1,t.value=e},B=p=>{X.confirm("修改还未保存,确认退出编辑吗?").then(()=>{p()}).catch(()=>{})},F=()=>{var p;(p=v.value)==null||p.resetFields()},N=async()=>{var p;await((p=v.value)==null?void 0:p.validate()),await h(t.value),f.value=!1,D("refresh")},{isLock:R,lockFn:A}=ee(N);return b({openHandle:P}),(p,e)=>{const s=J,n=z,m=O,L=Y,g=Q,S=$,G=j,H=M,K=W;return y(),te(H,{modelValue:l(f),"onUpdate:modelValue":e[14]||(e[14]=i=>re(f)?f.value=i:null),"destroy-on-close":"",title:`${l(_)}配置`,direction:"rtl",size:"50%",onClose:F,"before-close":B},{default:a(()=>[ie((y(),V("div",me,[o(l(T),{ref_key:"formRef",ref:v,model:l(t),"label-width":"9rem",rules:E},{default:a(()=>[o(n,{label:"支付方式"},{default:a(()=>[o(s,{value:l(_),"model-value":l(_)},{default:a(()=>[d(ne(l(_)),1)]),_:1},8,["value","model-value"])]),_:1}),o(n,{label:"显示名称",prop:"name"},{default:a(()=>[o(m,{modelValue:l(t).name,"onUpdate:modelValue":e[0]||(e[0]=i=>l(t).name=i),placeholder:"请输入显示名称",style:{"max-width":"250px"}},null,8,["modelValue"])]),_:1}),o(n,{label:"图标",prop:"image"},{default:a(()=>[r("div",null,[o(L,{limit:1,disabled:!1,modelValue:l(t).icon,"onUpdate:modelValue":e[1]||(e[1]=i=>l(t).icon=i)},null,8,["modelValue"]),e[15]||(e[15]=r("div",{class:"form-tips"},"建议尺寸:200*200px",-1))])]),_:1}),l(t).pay_way==2?(y(),V(k,{key:0},[o(n,{prop:"config.interface_version",label:"微信支付接口版本"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.interface_version,"onUpdate:modelValue":e[2]||(e[2]=i=>l(t).config.interface_version=i)},{default:a(()=>[o(s,{value:"v3"},{default:a(()=>[...e[16]||(e[16]=[d("V3",-1)])]),_:1})]),_:1},8,["modelValue"]),e[17]||(e[17]=r("div",{class:"form-tips"},"暂时只支持V3版本",-1))])]),_:1}),o(n,{label:"商户类型",prop:"config.merchant_type"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.merchant_type,"onUpdate:modelValue":e[3]||(e[3]=i=>l(t).config.merchant_type=i)},{default:a(()=>[o(s,{value:"ordinary_merchant"},{default:a(()=>[...e[18]||(e[18]=[d("普通商户",-1)])]),_:1})]),_:1},8,["modelValue"]),e[19]||(e[19]=r("div",{class:"form-tips"}," 暂时只支持普通商户类型,服务商户类型模式暂不支持 ",-1))])]),_:1}),o(n,{label:"微信支付商户号",prop:"config.mch_id"},{default:a(()=>[r("div",null,[o(m,{modelValue:l(t).config.mch_id,"onUpdate:modelValue":e[4]||(e[4]=i=>l(t).config.mch_id=i),placeholder:"请输入微信支付商户号",style:{"max-width":"250px"}},null,8,["modelValue"]),e[20]||(e[20]=r("div",{class:"form-tips"},"微信支付商户号(MCHID)",-1))])]),_:1}),o(n,{label:"商户API密钥",prop:"config.pay_sign_key"},{default:a(()=>[r("div",null,[o(m,{modelValue:l(t).config.pay_sign_key,"onUpdate:modelValue":e[5]||(e[5]=i=>l(t).config.pay_sign_key=i),placeholder:"请输入微信支付商户API密钥",style:{"max-width":"250px"}},null,8,["modelValue"]),e[21]||(e[21]=r("div",{class:"form-tips"},"微信支付商户API密钥(paySignKey)",-1))])]),_:1}),o(n,{label:"微信支付证书",prop:"config.apiclient_cert"},{default:a(()=>[r("div",null,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.apiclient_cert,"onUpdate:modelValue":e[6]||(e[6]=i=>l(t).config.apiclient_cert=i),placeholder:"请输入微信支付证书",style:{"max-width":"400px"}},null,8,["modelValue"]),e[22]||(e[22]=r("div",{class:"form-tips"}," 微信支付证书(apiclient_cert.pem),前往微信商家平台生成并黏贴至此处 ",-1))])]),_:1}),o(n,{label:"微信支付证书密钥",prop:"config.apiclient_key"},{default:a(()=>[r("div",null,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.apiclient_key,"onUpdate:modelValue":e[7]||(e[7]=i=>l(t).config.apiclient_key=i),placeholder:"请输入微信支付证书密钥",style:{"max-width":"400px"}},null,8,["modelValue"]),e[23]||(e[23]=r("div",{class:"form-tips"}," 微信支付证书密钥(apiclient_key.pem),前往微信商家平台生成并黏贴至此处 ",-1))])]),_:1}),o(n,{label:"支付授权目录"},{default:a(()=>[...e[24]||(e[24]=[r("div",null,[r("div",null,[r("span",{class:"mr-[20px]"},"https://前台手机域名地址/")])],-1)])]),_:1})],64)):x("",!0),l(t).pay_way==3?(y(),V(k,{key:1},[o(n,{label:"模式",prop:"config.mode"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.mode,"onUpdate:modelValue":e[8]||(e[8]=i=>l(t).config.mode=i)},{default:a(()=>[o(s,{value:"normal_mode"},{default:a(()=>[...e[25]||(e[25]=[d("普通模式",-1)])]),_:1})]),_:1},8,["modelValue"]),e[26]||(e[26]=r("div",{class:"form-tips"},"暂时仅支持支付宝普通模式",-1))])]),_:1}),o(n,{label:"商户类型",prop:"config.merchant_type"},{default:a(()=>[r("div",null,[o(g,{modelValue:l(t).config.merchant_type,"onUpdate:modelValue":e[9]||(e[9]=i=>l(t).config.merchant_type=i)},{default:a(()=>[o(s,{value:"ordinary_merchant"},{default:a(()=>[...e[27]||(e[27]=[d("普通商户",-1)])]),_:1})]),_:1},8,["modelValue"]),e[28]||(e[28]=r("div",{class:"form-tips"}," 暂时只支持普通商户类型,服务商户类型模式暂不支持 ",-1))])]),_:1}),o(n,{label:"应用ID",prop:"config.app_id"},{default:a(()=>[r("div",se,[o(m,{modelValue:l(t).config.app_id,"onUpdate:modelValue":e[10]||(e[10]=i=>l(t).config.app_id=i),placeholder:"请输入支付宝应用ID",style:{"max-width":"250px"}},null,8,["modelValue"]),e[29]||(e[29]=r("div",{class:"form-tips"},"支付宝应用APP_ID",-1))])]),_:1}),o(n,{label:"应用私钥",prop:"config.private_key"},{default:a(()=>[r("div",de,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.private_key,"onUpdate:modelValue":e[11]||(e[11]=i=>l(t).config.private_key=i),placeholder:"请输入支付宝应用私钥",style:{"max-width":"400px"}},null,8,["modelValue"]),e[30]||(e[30]=r("div",{class:"form-tips"},"支付宝应用私钥(private_key)",-1))])]),_:1}),o(n,{label:"支付宝公钥",prop:"config.ali_public_key"},{default:a(()=>[r("div",ue,[o(m,{type:"textarea",rows:3,modelValue:l(t).config.ali_public_key,"onUpdate:modelValue":e[12]||(e[12]=i=>l(t).config.ali_public_key=i),placeholder:"请输入支付宝公钥",style:{"max-width":"400px"}},null,8,["modelValue"]),e[31]||(e[31]=r("div",{class:"form-tips"},"支付宝公钥(alipayCertPublicKey)",-1))])]),_:1})],64)):x("",!0),o(n,{label:"排序",prop:"sort"},{default:a(()=>[r("div",null,[o(S,{modelValue:l(t).sort,"onUpdate:modelValue":e[13]||(e[13]=i=>l(t).sort=i),min:0,max:9999},null,8,["modelValue"]),e[32]||(e[32]=r("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),o(n,null,{default:a(()=>[o(G,{type:"primary",loading:l(R),onClick:l(A)},{default:a(()=>[...e[33]||(e[33]=[d("保存",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1},8,["model"])])),[[K,l(c)]])]),_:1},8,["modelValue","title"])}}}),yl=pe(fe,[["__scopeId","data-v-221f14e8"]]);export{yl as default};
diff --git a/server/public/admin/assets/edit-CW0m9s4L.js b/server/public/admin/assets/edit-B_gi1DEq.js
similarity index 88%
rename from server/public/admin/assets/edit-CW0m9s4L.js
rename to server/public/admin/assets/edit-B_gi1DEq.js
index 3d8874b7..39b8b436 100644
--- a/server/public/admin/assets/edit-CW0m9s4L.js
+++ b/server/public/admin/assets/edit-B_gi1DEq.js
@@ -1 +1 @@
-import{_ as F}from"./index-9zND60WT.js";import{O as $,J as j,D as z,B as G,C as T,P as A,Q as J,h as L,G as P,I as S,i as H}from"./element-plus-0wC3naml.js";import{_ as M}from"./index.vue_vue_type_style_index_0_lang-CSw0OmVb.js";import{_ as Q}from"./picker-DlbAZkDm.js";import{g as K,h as W,i as X,j as Y}from"./article-DJnP6RZd.js";import{u as Z}from"./useDictOptions-CypOxw17.js";import{j as tt}from"./index-E47--KT7.js";import{u as et,a as ot}from"./vue-router-QlpZ4wdW.js";import{f as v,ak as d,I as V,a as e,aN as r,J as i,F as lt,ap as at,G as rt,O as u}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,r as w,q as it}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@wangeditor/editor-Cyf37SuL.js";import"./@wangeditor/editor-for-vue-D1vSph3l.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const st={class:"article-edit"},mt={class:"xl:flex"},nt={class:"w-80"},pt={class:"w-80"},dt={class:"w-80"},ut={class:"w-80"},_t={class:"xl:ml-20"},ct=v({name:"articleListsEdit"}),ge=v({...ct,setup(ft){const p=et(),g=ot(),o=w({id:"",title:"",image:"",cid:"",desc:"",author:"",content:"",click_virtual:0,sort:0,is_show:1,abstract:""}),{removeTab:x}=tt(),_=it(),k=w({title:[{required:!0,message:"请输入文章标题",trigger:"blur"}],cid:[{required:!0,message:"请选择文章栏目",trigger:"blur"}]}),E=async()=>{const m=await K({id:p.query.id});Object.keys(o).forEach(t=>{o[t]=m[t]})},{optionsData:y}=Z({article_cate:{api:Y}}),R=async()=>{var m;await((m=_.value)==null?void 0:m.validate()),p.query.id?await W(o):await X(o),x(),g.back()};return p.query.id&&E(),(m,t)=>{const U=$,c=j,n=T,s=G,h=J,q=A,B=Q,f=L,b=S,C=P,D=M,I=z,N=H,O=F;return d(),V("div",st,[e(c,{class:"!border-none",shadow:"never"},{default:r(()=>[e(U,{content:m.$route.meta.title,onBack:t[0]||(t[0]=l=>m.$router.back())},null,8,["content"])]),_:1}),e(c,{class:"mt-4 !border-none",shadow:"never"},{default:r(()=>[e(I,{ref_key:"formRef",ref:_,class:"ls-form",model:a(o),"label-width":"85px",rules:a(k)},{default:r(()=>[i("div",mt,[i("div",null,[e(s,{label:"文章标题",prop:"title"},{default:r(()=>[i("div",nt,[e(n,{modelValue:a(o).title,"onUpdate:modelValue":t[1]||(t[1]=l=>a(o).title=l),placeholder:"请输入文章标题",type:"textarea",autosize:{minRows:3,maxRows:3},maxlength:"64","show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1}),e(s,{label:"文章栏目",prop:"cid"},{default:r(()=>[e(q,{class:"w-80",modelValue:a(o).cid,"onUpdate:modelValue":t[2]||(t[2]=l=>a(o).cid=l),placeholder:"请选择文章栏目",clearable:""},{default:r(()=>[(d(!0),V(lt,null,at(a(y).article_cate,l=>(d(),rt(h,{key:l.id,label:l.name,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"文章简介",prop:"desc"},{default:r(()=>[i("div",pt,[e(n,{modelValue:a(o).desc,"onUpdate:modelValue":t[3]||(t[3]=l=>a(o).desc=l),placeholder:"请输入文章简介",type:"textarea",autosize:{minRows:3,maxRows:6},maxlength:200,"show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1}),e(s,{label:"摘要",prop:"abstract"},{default:r(()=>[i("div",dt,[e(n,{type:"textarea",autosize:{minRows:6,maxRows:6},modelValue:a(o).abstract,"onUpdate:modelValue":t[4]||(t[4]=l=>a(o).abstract=l),maxlength:"200","show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1}),e(s,{label:"文章封面",prop:"image"},{default:r(()=>[i("div",null,[i("div",null,[e(B,{modelValue:a(o).image,"onUpdate:modelValue":t[5]||(t[5]=l=>a(o).image=l),limit:1},null,8,["modelValue"])]),t[11]||(t[11]=i("div",{class:"form-tips"},"建议尺寸:240*180px",-1))])]),_:1}),e(s,{label:"作者",prop:"author"},{default:r(()=>[i("div",ut,[e(n,{modelValue:a(o).author,"onUpdate:modelValue":t[6]||(t[6]=l=>a(o).author=l),placeholder:"请输入作者名称"},null,8,["modelValue"])])]),_:1}),e(s,{label:"排序",prop:"sort"},{default:r(()=>[i("div",null,[e(f,{modelValue:a(o).sort,"onUpdate:modelValue":t[7]||(t[7]=l=>a(o).sort=l),min:0,max:9999},null,8,["modelValue"]),t[12]||(t[12]=i("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),e(s,{label:"初始浏览量",prop:"click_virtual"},{default:r(()=>[i("div",null,[e(f,{modelValue:a(o).click_virtual,"onUpdate:modelValue":t[8]||(t[8]=l=>a(o).click_virtual=l),min:0},null,8,["modelValue"])])]),_:1}),e(s,{label:"文章状态",required:"",prop:"is_show"},{default:r(()=>[e(C,{modelValue:a(o).is_show,"onUpdate:modelValue":t[9]||(t[9]=l=>a(o).is_show=l)},{default:r(()=>[e(b,{value:1},{default:r(()=>[...t[13]||(t[13]=[u("显示",-1)])]),_:1}),e(b,{value:0},{default:r(()=>[...t[14]||(t[14]=[u("隐藏",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),i("div",_t,[e(s,{label:"文章内容",prop:"content"},{default:r(()=>[e(D,{modelValue:a(o).content,"onUpdate:modelValue":t[10]||(t[10]=l=>a(o).content=l),height:667,width:375},null,8,["modelValue"])]),_:1})])])]),_:1},8,["model","rules"])]),_:1}),e(O,null,{default:r(()=>[e(N,{type:"primary",onClick:R},{default:r(()=>[...t[15]||(t[15]=[u("保存",-1)])]),_:1})]),_:1})])}}});export{ge as default};
+import{_ as F}from"./index-x1zzA0a7.js";import{O as $,J as j,D as z,B as G,C as T,P as A,Q as J,h as L,G as P,I as S,i as H}from"./element-plus-DFTWCWyi.js";import{_ as M}from"./index.vue_vue_type_style_index_0_lang-CV_qr4dh.js";import{_ as Q}from"./picker-BCRrEZaA.js";import{g as K,h as W,i as X,j as Y}from"./article-BnVIxFkr.js";import{u as Z}from"./useDictOptions-Dl6xXBty.js";import{j as tt}from"./index-DBREMm_z.js";import{u as et,a as ot}from"./vue-router-QlpZ4wdW.js";import{f as v,ak as d,I as V,a as e,aN as r,J as i,F as lt,ap as at,G as rt,O as u}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,r as w,q as it}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@wangeditor/editor-Cyf37SuL.js";import"./@wangeditor/editor-for-vue-D1vSph3l.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const st={class:"article-edit"},mt={class:"xl:flex"},nt={class:"w-80"},pt={class:"w-80"},dt={class:"w-80"},ut={class:"w-80"},_t={class:"xl:ml-20"},ct=v({name:"articleListsEdit"}),ge=v({...ct,setup(ft){const p=et(),g=ot(),o=w({id:"",title:"",image:"",cid:"",desc:"",author:"",content:"",click_virtual:0,sort:0,is_show:1,abstract:""}),{removeTab:x}=tt(),_=it(),k=w({title:[{required:!0,message:"请输入文章标题",trigger:"blur"}],cid:[{required:!0,message:"请选择文章栏目",trigger:"blur"}]}),E=async()=>{const m=await K({id:p.query.id});Object.keys(o).forEach(t=>{o[t]=m[t]})},{optionsData:y}=Z({article_cate:{api:Y}}),R=async()=>{var m;await((m=_.value)==null?void 0:m.validate()),p.query.id?await W(o):await X(o),x(),g.back()};return p.query.id&&E(),(m,t)=>{const U=$,c=j,n=T,s=G,h=J,q=A,B=Q,f=L,b=S,C=P,D=M,I=z,N=H,O=F;return d(),V("div",st,[e(c,{class:"!border-none",shadow:"never"},{default:r(()=>[e(U,{content:m.$route.meta.title,onBack:t[0]||(t[0]=l=>m.$router.back())},null,8,["content"])]),_:1}),e(c,{class:"mt-4 !border-none",shadow:"never"},{default:r(()=>[e(I,{ref_key:"formRef",ref:_,class:"ls-form",model:a(o),"label-width":"85px",rules:a(k)},{default:r(()=>[i("div",mt,[i("div",null,[e(s,{label:"文章标题",prop:"title"},{default:r(()=>[i("div",nt,[e(n,{modelValue:a(o).title,"onUpdate:modelValue":t[1]||(t[1]=l=>a(o).title=l),placeholder:"请输入文章标题",type:"textarea",autosize:{minRows:3,maxRows:3},maxlength:"64","show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1}),e(s,{label:"文章栏目",prop:"cid"},{default:r(()=>[e(q,{class:"w-80",modelValue:a(o).cid,"onUpdate:modelValue":t[2]||(t[2]=l=>a(o).cid=l),placeholder:"请选择文章栏目",clearable:""},{default:r(()=>[(d(!0),V(lt,null,at(a(y).article_cate,l=>(d(),rt(h,{key:l.id,label:l.name,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"文章简介",prop:"desc"},{default:r(()=>[i("div",pt,[e(n,{modelValue:a(o).desc,"onUpdate:modelValue":t[3]||(t[3]=l=>a(o).desc=l),placeholder:"请输入文章简介",type:"textarea",autosize:{minRows:3,maxRows:6},maxlength:200,"show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1}),e(s,{label:"摘要",prop:"abstract"},{default:r(()=>[i("div",dt,[e(n,{type:"textarea",autosize:{minRows:6,maxRows:6},modelValue:a(o).abstract,"onUpdate:modelValue":t[4]||(t[4]=l=>a(o).abstract=l),maxlength:"200","show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1}),e(s,{label:"文章封面",prop:"image"},{default:r(()=>[i("div",null,[i("div",null,[e(B,{modelValue:a(o).image,"onUpdate:modelValue":t[5]||(t[5]=l=>a(o).image=l),limit:1},null,8,["modelValue"])]),t[11]||(t[11]=i("div",{class:"form-tips"},"建议尺寸:240*180px",-1))])]),_:1}),e(s,{label:"作者",prop:"author"},{default:r(()=>[i("div",ut,[e(n,{modelValue:a(o).author,"onUpdate:modelValue":t[6]||(t[6]=l=>a(o).author=l),placeholder:"请输入作者名称"},null,8,["modelValue"])])]),_:1}),e(s,{label:"排序",prop:"sort"},{default:r(()=>[i("div",null,[e(f,{modelValue:a(o).sort,"onUpdate:modelValue":t[7]||(t[7]=l=>a(o).sort=l),min:0,max:9999},null,8,["modelValue"]),t[12]||(t[12]=i("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),e(s,{label:"初始浏览量",prop:"click_virtual"},{default:r(()=>[i("div",null,[e(f,{modelValue:a(o).click_virtual,"onUpdate:modelValue":t[8]||(t[8]=l=>a(o).click_virtual=l),min:0},null,8,["modelValue"])])]),_:1}),e(s,{label:"文章状态",required:"",prop:"is_show"},{default:r(()=>[e(C,{modelValue:a(o).is_show,"onUpdate:modelValue":t[9]||(t[9]=l=>a(o).is_show=l)},{default:r(()=>[e(b,{value:1},{default:r(()=>[...t[13]||(t[13]=[u("显示",-1)])]),_:1}),e(b,{value:0},{default:r(()=>[...t[14]||(t[14]=[u("隐藏",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),i("div",_t,[e(s,{label:"文章内容",prop:"content"},{default:r(()=>[e(D,{modelValue:a(o).content,"onUpdate:modelValue":t[10]||(t[10]=l=>a(o).content=l),height:667,width:375},null,8,["modelValue"])]),_:1})])])]),_:1},8,["model","rules"])]),_:1}),e(O,null,{default:r(()=>[e(N,{type:"primary",onClick:R},{default:r(()=>[...t[15]||(t[15]=[u("保存",-1)])]),_:1})]),_:1})])}}});export{ge as default};
diff --git a/server/public/admin/assets/edit-Ma-5Uh1k.js b/server/public/admin/assets/edit-BhpztwAz.js
similarity index 93%
rename from server/public/admin/assets/edit-Ma-5Uh1k.js
rename to server/public/admin/assets/edit-BhpztwAz.js
index 53b89d9d..d4ea3cda 100644
--- a/server/public/admin/assets/edit-Ma-5Uh1k.js
+++ b/server/public/admin/assets/edit-BhpztwAz.js
@@ -1 +1 @@
-import{D as X,U as Y,B as Z,C as h,G as ee,I as le,h as oe,W as te,P as ae,Q as re,g as de,i as ie,e as ne}from"./element-plus-0wC3naml.js";import{_ as se}from"./picker-DlbAZkDm.js";import{b as pe,d as ue,e as me}from"./admin-DO1zWq80.js";import{d as fe}from"./department-4lF54x8w.js";import{j as _e}from"./post-Dq6zumLO.js";import{i as ge,m as be,_ as ce}from"./index-E47--KT7.js";import{u as Ve}from"./useDictOptions-CypOxw17.js";import{f as ve,ak as _,I as v,a as t,aN as r,O as u,G as w,J as s,H as we,F as R,ap as A,A as ye}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,a as xe,q as Ue,n as b,r as B}from"./@vue/reactivity-DiY1c2vO.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ee={class:"edit-drawer"},je={class:"text-primary font-medium"},De={class:"w-full"},ke={class:"ml-2 text-gray-500"},qe={class:"flex justify-end"},Ce=ve({__name:"edit",emits:["success","close"],setup(Ne,{expose:O,emit:S}){function F(i){if(i.status!==1)return!0;const e=i.children;return Array.isArray(e)&&e.length>0}const y=S,x=Ue(),f=b(!1),m=b("add"),c=b(!1),U=b([]),T=async()=>{const i=await be({type:"department"});U.value=(i==null?void 0:i.department)||[]},G=ye(()=>m.value=="edit"?"编辑医助":"新增医助"),o=B({id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[2],dept_id:[],jobs_id:[],avatar:"",title:"",department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1,diagnosis_count:null}),{optionsData:E}=Ve({jobs:{api:_e},dept:{api:fe,params:{apply_data_scope:1}}}),V=(i,e,n)=>{o.password&&(e||n(new Error("请再次输入密码")),e!==o.password&&n(new Error("两次输入密码不一致!"))),n()},g=B({account:[{required:!0,message:"请输入账号",trigger:["blur"]}],name:[{required:!0,message:"请输入姓名",trigger:["blur"]}],gender:[{required:!0,message:"请选择性别",trigger:["change"]}],dept_id:[{required:!0,type:"array",min:1,message:"请选择归属部门",trigger:["change"]}],phone:[{validator:(i,e,n)=>{e&&!/^1[3-9]\d{9}$/.test(e)?n(new Error("请输入正确的手机号")):n()},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:["blur"]}],password_confirm:[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:V,trigger:"blur"}]}),P=async()=>{var i;try{await((i=x.value)==null?void 0:i.validate()),c.value=!0,m.value=="edit"?await pe(o):await ue(o),ge.msgSuccess(m.value=="edit"?"编辑成功":"新增成功"),f.value=!1,y("success")}catch(e){console.error("提交失败:",e)}finally{c.value=!1}},Q=(i="add")=>{m.value=i,f.value=!0,T(),i==="add"&&(Object.assign(o,{id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[2],dept_id:[],jobs_id:[],avatar:"",title:"",department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1,diagnosis_count:null}),g.password=[{required:!0,message:"请输入密码",trigger:["blur"]}],g.password_confirm=[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:V,trigger:"blur"}])},z=async i=>{g.password=[],g.password_confirm=[{validator:V,trigger:"blur"}];const e=await me({id:i.id});for(const n in o)e[n]!=null&&e[n]!=null&&(o[n]=e[n]);o.role_id.includes(2)||o.role_id.push(2)},j=()=>{f.value=!1,y("close")};return O({open:Q,setFormData:z}),(i,e)=>{const n=Y,d=Z,p=h,H=se,D=le,J=ee,L=oe,W=te,k=re,q=ae,C=de,$=X,N=ie,K=ne;return _(),v("div",Ee,[t(K,{modelValue:l(f),"onUpdate:modelValue":e[18]||(e[18]=a=>xe(f)?f.value=a:null),title:l(G),direction:"rtl",size:"780px","before-close":j},{footer:r(()=>[s("div",qe,[t(N,{onClick:j},{default:r(()=>[...e[30]||(e[30]=[u("取消",-1)])]),_:1}),t(N,{type:"primary",onClick:P,loading:l(c)},{default:r(()=>[...e[31]||(e[31]=[u("确定",-1)])]),_:1},8,["loading"])])]),default:r(()=>[t($,{ref_key:"formRef",ref:x,model:l(o),"label-width":"100px",rules:l(g)},{default:r(()=>[t(n,{"content-position":"left"},{default:r(()=>[...e[19]||(e[19]=[u("基本信息",-1)])]),_:1}),l(m)==="edit"&&l(o).diagnosis_count!=null?(_(),w(d,{key:0,label:"创建诊单数"},{default:r(()=>[s("span",je,I(l(o).diagnosis_count),1),e[20]||(e[20]=s("span",{class:"text-tx-secondary text-sm ml-2"},"条",-1))]),_:1})):we("",!0),t(d,{label:"账号",prop:"account"},{default:r(()=>[t(p,{modelValue:l(o).account,"onUpdate:modelValue":e[0]||(e[0]=a=>l(o).account=a),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),t(d,{label:"头像"},{default:r(()=>[s("div",null,[s("div",null,[t(H,{modelValue:l(o).avatar,"onUpdate:modelValue":e[1]||(e[1]=a=>l(o).avatar=a),limit:1},null,8,["modelValue"])]),e[21]||(e[21]=s("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1}),t(d,{label:"姓名",prop:"name"},{default:r(()=>[t(p,{modelValue:l(o).name,"onUpdate:modelValue":e[2]||(e[2]=a=>l(o).name=a),placeholder:"请输入姓名",clearable:""},null,8,["modelValue"])]),_:1}),t(d,{label:"性别",prop:"gender"},{default:r(()=>[t(J,{modelValue:l(o).gender,"onUpdate:modelValue":e[3]||(e[3]=a=>l(o).gender=a)},{default:r(()=>[t(D,{label:1},{default:r(()=>[...e[22]||(e[22]=[u("男",-1)])]),_:1}),t(D,{label:2},{default:r(()=>[...e[23]||(e[23]=[u("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"年龄",prop:"age"},{default:r(()=>[t(L,{modelValue:l(o).age,"onUpdate:modelValue":e[4]||(e[4]=a=>l(o).age=a),min:18,max:100,placeholder:"请输入年龄"},null,8,["modelValue"])]),_:1}),t(d,{label:"手机号",prop:"phone"},{default:r(()=>[t(p,{modelValue:l(o).phone,"onUpdate:modelValue":e[5]||(e[5]=a=>l(o).phone=a),placeholder:"请输入手机号",clearable:""},null,8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[24]||(e[24]=[u("组织信息",-1)])]),_:1}),t(d,{label:"归属部门",prop:"dept_id"},{default:r(()=>[s("div",De,[t(W,{class:"flex-1 w-full",modelValue:l(o).dept_id,"onUpdate:modelValue":e[6]||(e[6]=a=>l(o).dept_id=a),data:l(E).dept,clearable:"",multiple:"","node-key":"id",props:{label:"name",disabled:F},"check-strictly":"","default-expand-all":!0,placeholder:"请选择末级归属部门"},null,8,["modelValue","data","props"]),e[25]||(e[25]=s("div",{class:"form-tips"},"仅可选末级部门(含下级的父部门不可选),与数据权限范围一致。",-1))])]),_:1}),t(d,{label:"岗位",prop:"jobs_id"},{default:r(()=>[t(q,{class:"flex-1",modelValue:l(o).jobs_id,"onUpdate:modelValue":e[7]||(e[7]=a=>l(o).jobs_id=a),clearable:"",multiple:"",placeholder:"请选择岗位"},{default:r(()=>[(_(!0),v(R,null,A(l(E).jobs,(a,M)=>(_(),w(k,{key:M,label:a.name,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[26]||(e[26]=[u("专业信息",-1)])]),_:1}),t(d,{label:"职称",prop:"title"},{default:r(()=>[t(p,{modelValue:l(o).title,"onUpdate:modelValue":e[8]||(e[8]=a=>l(o).title=a),placeholder:"如:主任医师、副主任医师",clearable:""},null,8,["modelValue"])]),_:1}),t(d,{label:"所属科室",prop:"department"},{default:r(()=>[t(q,{modelValue:l(o).department,"onUpdate:modelValue":e[9]||(e[9]=a=>l(o).department=a),placeholder:"请选择所属科室",clearable:"",class:"flex-1"},{default:r(()=>[(_(!0),v(R,null,A(l(U),a=>(_(),w(k,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"擅长领域",prop:"specialty"},{default:r(()=>[t(p,{modelValue:l(o).specialty,"onUpdate:modelValue":e[10]||(e[10]=a=>l(o).specialty=a),type:"textarea",rows:3,placeholder:"请输入擅长领域"},null,8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[27]||(e[27]=[u("履历信息",-1)])]),_:1}),t(d,{label:"教育背景",prop:"education"},{default:r(()=>[t(p,{modelValue:l(o).education,"onUpdate:modelValue":e[11]||(e[11]=a=>l(o).education=a),type:"textarea",rows:3,placeholder:"请输入教育背景,如:北京中医药大学 中医学博士"},null,8,["modelValue"])]),_:1}),t(d,{label:"工作经历",prop:"experience"},{default:r(()=>[t(p,{modelValue:l(o).experience,"onUpdate:modelValue":e[12]||(e[12]=a=>l(o).experience=a),type:"textarea",rows:4,placeholder:"请输入工作经历"},null,8,["modelValue"])]),_:1}),t(d,{label:"荣誉资质",prop:"honors"},{default:r(()=>[t(p,{modelValue:l(o).honors,"onUpdate:modelValue":e[13]||(e[13]=a=>l(o).honors=a),type:"textarea",rows:3,placeholder:"请输入荣誉资质"},null,8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[28]||(e[28]=[u("账号设置",-1)])]),_:1}),t(d,{label:"密码",prop:"password"},{default:r(()=>[t(p,{modelValue:l(o).password,"onUpdate:modelValue":e[14]||(e[14]=a=>l(o).password=a),"show-password":"",clearable:"",placeholder:l(m)==="edit"?"不修改请留空":"请输入密码"},null,8,["modelValue","placeholder"])]),_:1}),t(d,{label:"确认密码",prop:"password_confirm"},{default:r(()=>[t(p,{modelValue:l(o).password_confirm,"onUpdate:modelValue":e[15]||(e[15]=a=>l(o).password_confirm=a),"show-password":"",clearable:"",placeholder:l(m)==="edit"?"不修改请留空":"请输入确认密码"},null,8,["modelValue","placeholder"])]),_:1}),t(d,{label:"状态"},{default:r(()=>[t(C,{modelValue:l(o).disable,"onUpdate:modelValue":e[16]||(e[16]=a=>l(o).disable=a),"active-value":0,"inactive-value":1},null,8,["modelValue"]),s("span",ke,I(l(o).disable===0?"启用":"禁用"),1)]),_:1}),t(d,{label:"多处登录"},{default:r(()=>[s("div",null,[t(C,{modelValue:l(o).multipoint_login,"onUpdate:modelValue":e[17]||(e[17]=a=>l(o).multipoint_login=a),"active-value":1,"inactive-value":0},null,8,["modelValue"]),e[29]||(e[29]=s("div",{class:"form-tips"},"允许多人同时在线登录",-1))])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}}),Il=ce(Ce,[["__scopeId","data-v-f616077a"]]);export{Il as default};
+import{D as X,U as Y,B as Z,C as h,G as ee,I as le,h as oe,W as te,P as ae,Q as re,g as de,i as ie,e as ne}from"./element-plus-DFTWCWyi.js";import{_ as se}from"./picker-BCRrEZaA.js";import{b as pe,d as ue,e as me}from"./admin-DVVxI3fN.js";import{d as fe}from"./department-CrUndMAW.js";import{j as _e}from"./post-RziaWdiV.js";import{i as ge,m as be,_ as ce}from"./index-DBREMm_z.js";import{u as Ve}from"./useDictOptions-Dl6xXBty.js";import{f as ve,ak as _,I as v,a as t,aN as r,O as u,G as w,J as s,H as we,F as R,ap as A,A as ye}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,a as xe,q as Ue,n as b,r as B}from"./@vue/reactivity-DiY1c2vO.js";import{Q as I}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ee={class:"edit-drawer"},je={class:"text-primary font-medium"},De={class:"w-full"},ke={class:"ml-2 text-gray-500"},qe={class:"flex justify-end"},Ce=ve({__name:"edit",emits:["success","close"],setup(Ne,{expose:O,emit:S}){function F(i){if(i.status!==1)return!0;const e=i.children;return Array.isArray(e)&&e.length>0}const y=S,x=Ue(),f=b(!1),m=b("add"),c=b(!1),U=b([]),T=async()=>{const i=await be({type:"department"});U.value=(i==null?void 0:i.department)||[]},G=ye(()=>m.value=="edit"?"编辑医助":"新增医助"),o=B({id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[2],dept_id:[],jobs_id:[],avatar:"",title:"",department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1,diagnosis_count:null}),{optionsData:E}=Ve({jobs:{api:_e},dept:{api:fe,params:{apply_data_scope:1}}}),V=(i,e,n)=>{o.password&&(e||n(new Error("请再次输入密码")),e!==o.password&&n(new Error("两次输入密码不一致!"))),n()},g=B({account:[{required:!0,message:"请输入账号",trigger:["blur"]}],name:[{required:!0,message:"请输入姓名",trigger:["blur"]}],gender:[{required:!0,message:"请选择性别",trigger:["change"]}],dept_id:[{required:!0,type:"array",min:1,message:"请选择归属部门",trigger:["change"]}],phone:[{validator:(i,e,n)=>{e&&!/^1[3-9]\d{9}$/.test(e)?n(new Error("请输入正确的手机号")):n()},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:["blur"]}],password_confirm:[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:V,trigger:"blur"}]}),P=async()=>{var i;try{await((i=x.value)==null?void 0:i.validate()),c.value=!0,m.value=="edit"?await pe(o):await ue(o),ge.msgSuccess(m.value=="edit"?"编辑成功":"新增成功"),f.value=!1,y("success")}catch(e){console.error("提交失败:",e)}finally{c.value=!1}},Q=(i="add")=>{m.value=i,f.value=!0,T(),i==="add"&&(Object.assign(o,{id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[2],dept_id:[],jobs_id:[],avatar:"",title:"",department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1,diagnosis_count:null}),g.password=[{required:!0,message:"请输入密码",trigger:["blur"]}],g.password_confirm=[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:V,trigger:"blur"}])},z=async i=>{g.password=[],g.password_confirm=[{validator:V,trigger:"blur"}];const e=await me({id:i.id});for(const n in o)e[n]!=null&&e[n]!=null&&(o[n]=e[n]);o.role_id.includes(2)||o.role_id.push(2)},j=()=>{f.value=!1,y("close")};return O({open:Q,setFormData:z}),(i,e)=>{const n=Y,d=Z,p=h,H=se,D=le,J=ee,L=oe,W=te,k=re,q=ae,C=de,$=X,N=ie,K=ne;return _(),v("div",Ee,[t(K,{modelValue:l(f),"onUpdate:modelValue":e[18]||(e[18]=a=>xe(f)?f.value=a:null),title:l(G),direction:"rtl",size:"780px","before-close":j},{footer:r(()=>[s("div",qe,[t(N,{onClick:j},{default:r(()=>[...e[30]||(e[30]=[u("取消",-1)])]),_:1}),t(N,{type:"primary",onClick:P,loading:l(c)},{default:r(()=>[...e[31]||(e[31]=[u("确定",-1)])]),_:1},8,["loading"])])]),default:r(()=>[t($,{ref_key:"formRef",ref:x,model:l(o),"label-width":"100px",rules:l(g)},{default:r(()=>[t(n,{"content-position":"left"},{default:r(()=>[...e[19]||(e[19]=[u("基本信息",-1)])]),_:1}),l(m)==="edit"&&l(o).diagnosis_count!=null?(_(),w(d,{key:0,label:"创建诊单数"},{default:r(()=>[s("span",je,I(l(o).diagnosis_count),1),e[20]||(e[20]=s("span",{class:"text-tx-secondary text-sm ml-2"},"条",-1))]),_:1})):we("",!0),t(d,{label:"账号",prop:"account"},{default:r(()=>[t(p,{modelValue:l(o).account,"onUpdate:modelValue":e[0]||(e[0]=a=>l(o).account=a),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),t(d,{label:"头像"},{default:r(()=>[s("div",null,[s("div",null,[t(H,{modelValue:l(o).avatar,"onUpdate:modelValue":e[1]||(e[1]=a=>l(o).avatar=a),limit:1},null,8,["modelValue"])]),e[21]||(e[21]=s("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1}),t(d,{label:"姓名",prop:"name"},{default:r(()=>[t(p,{modelValue:l(o).name,"onUpdate:modelValue":e[2]||(e[2]=a=>l(o).name=a),placeholder:"请输入姓名",clearable:""},null,8,["modelValue"])]),_:1}),t(d,{label:"性别",prop:"gender"},{default:r(()=>[t(J,{modelValue:l(o).gender,"onUpdate:modelValue":e[3]||(e[3]=a=>l(o).gender=a)},{default:r(()=>[t(D,{label:1},{default:r(()=>[...e[22]||(e[22]=[u("男",-1)])]),_:1}),t(D,{label:2},{default:r(()=>[...e[23]||(e[23]=[u("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"年龄",prop:"age"},{default:r(()=>[t(L,{modelValue:l(o).age,"onUpdate:modelValue":e[4]||(e[4]=a=>l(o).age=a),min:18,max:100,placeholder:"请输入年龄"},null,8,["modelValue"])]),_:1}),t(d,{label:"手机号",prop:"phone"},{default:r(()=>[t(p,{modelValue:l(o).phone,"onUpdate:modelValue":e[5]||(e[5]=a=>l(o).phone=a),placeholder:"请输入手机号",clearable:""},null,8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[24]||(e[24]=[u("组织信息",-1)])]),_:1}),t(d,{label:"归属部门",prop:"dept_id"},{default:r(()=>[s("div",De,[t(W,{class:"flex-1 w-full",modelValue:l(o).dept_id,"onUpdate:modelValue":e[6]||(e[6]=a=>l(o).dept_id=a),data:l(E).dept,clearable:"",multiple:"","node-key":"id",props:{label:"name",disabled:F},"check-strictly":"","default-expand-all":!0,placeholder:"请选择末级归属部门"},null,8,["modelValue","data","props"]),e[25]||(e[25]=s("div",{class:"form-tips"},"仅可选末级部门(含下级的父部门不可选),与数据权限范围一致。",-1))])]),_:1}),t(d,{label:"岗位",prop:"jobs_id"},{default:r(()=>[t(q,{class:"flex-1",modelValue:l(o).jobs_id,"onUpdate:modelValue":e[7]||(e[7]=a=>l(o).jobs_id=a),clearable:"",multiple:"",placeholder:"请选择岗位"},{default:r(()=>[(_(!0),v(R,null,A(l(E).jobs,(a,M)=>(_(),w(k,{key:M,label:a.name,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[26]||(e[26]=[u("专业信息",-1)])]),_:1}),t(d,{label:"职称",prop:"title"},{default:r(()=>[t(p,{modelValue:l(o).title,"onUpdate:modelValue":e[8]||(e[8]=a=>l(o).title=a),placeholder:"如:主任医师、副主任医师",clearable:""},null,8,["modelValue"])]),_:1}),t(d,{label:"所属科室",prop:"department"},{default:r(()=>[t(q,{modelValue:l(o).department,"onUpdate:modelValue":e[9]||(e[9]=a=>l(o).department=a),placeholder:"请选择所属科室",clearable:"",class:"flex-1"},{default:r(()=>[(_(!0),v(R,null,A(l(U),a=>(_(),w(k,{key:a.value,label:a.name,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(d,{label:"擅长领域",prop:"specialty"},{default:r(()=>[t(p,{modelValue:l(o).specialty,"onUpdate:modelValue":e[10]||(e[10]=a=>l(o).specialty=a),type:"textarea",rows:3,placeholder:"请输入擅长领域"},null,8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[27]||(e[27]=[u("履历信息",-1)])]),_:1}),t(d,{label:"教育背景",prop:"education"},{default:r(()=>[t(p,{modelValue:l(o).education,"onUpdate:modelValue":e[11]||(e[11]=a=>l(o).education=a),type:"textarea",rows:3,placeholder:"请输入教育背景,如:北京中医药大学 中医学博士"},null,8,["modelValue"])]),_:1}),t(d,{label:"工作经历",prop:"experience"},{default:r(()=>[t(p,{modelValue:l(o).experience,"onUpdate:modelValue":e[12]||(e[12]=a=>l(o).experience=a),type:"textarea",rows:4,placeholder:"请输入工作经历"},null,8,["modelValue"])]),_:1}),t(d,{label:"荣誉资质",prop:"honors"},{default:r(()=>[t(p,{modelValue:l(o).honors,"onUpdate:modelValue":e[13]||(e[13]=a=>l(o).honors=a),type:"textarea",rows:3,placeholder:"请输入荣誉资质"},null,8,["modelValue"])]),_:1}),t(n,{"content-position":"left"},{default:r(()=>[...e[28]||(e[28]=[u("账号设置",-1)])]),_:1}),t(d,{label:"密码",prop:"password"},{default:r(()=>[t(p,{modelValue:l(o).password,"onUpdate:modelValue":e[14]||(e[14]=a=>l(o).password=a),"show-password":"",clearable:"",placeholder:l(m)==="edit"?"不修改请留空":"请输入密码"},null,8,["modelValue","placeholder"])]),_:1}),t(d,{label:"确认密码",prop:"password_confirm"},{default:r(()=>[t(p,{modelValue:l(o).password_confirm,"onUpdate:modelValue":e[15]||(e[15]=a=>l(o).password_confirm=a),"show-password":"",clearable:"",placeholder:l(m)==="edit"?"不修改请留空":"请输入确认密码"},null,8,["modelValue","placeholder"])]),_:1}),t(d,{label:"状态"},{default:r(()=>[t(C,{modelValue:l(o).disable,"onUpdate:modelValue":e[16]||(e[16]=a=>l(o).disable=a),"active-value":0,"inactive-value":1},null,8,["modelValue"]),s("span",ke,I(l(o).disable===0?"启用":"禁用"),1)]),_:1}),t(d,{label:"多处登录"},{default:r(()=>[s("div",null,[t(C,{modelValue:l(o).multipoint_login,"onUpdate:modelValue":e[17]||(e[17]=a=>l(o).multipoint_login=a),"active-value":1,"inactive-value":0},null,8,["modelValue"]),e[29]||(e[29]=s("div",{class:"form-tips"},"允许多人同时在线登录",-1))])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}}),Il=ce(Ce,[["__scopeId","data-v-f616077a"]]);export{Il as default};
diff --git a/server/public/admin/assets/edit-Cne84dsM.js b/server/public/admin/assets/edit-Bkhnc9Ab.js
similarity index 74%
rename from server/public/admin/assets/edit-Cne84dsM.js
rename to server/public/admin/assets/edit-Bkhnc9Ab.js
index 1072c455..f22c99f7 100644
--- a/server/public/admin/assets/edit-Cne84dsM.js
+++ b/server/public/admin/assets/edit-Bkhnc9Ab.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-n7cqpx9_.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./department-4lF54x8w.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";import"./useDictOptions-CypOxw17.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-Cw38i8Af.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./department-CrUndMAW.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";import"./useDictOptions-Dl6xXBty.js";export{o as default};
diff --git a/server/public/admin/assets/edit-DkNQatXb.js b/server/public/admin/assets/edit-CGm0fUcE.js
similarity index 77%
rename from server/public/admin/assets/edit-DkNQatXb.js
rename to server/public/admin/assets/edit-CGm0fUcE.js
index 210348d6..8d2717d8 100644
--- a/server/public/admin/assets/edit-DkNQatXb.js
+++ b/server/public/admin/assets/edit-CGm0fUcE.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-DItGEiu-.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./dict-Nvtnb8GD.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-SN25urAl.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./dict-BKviBR_7.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-wfA6DpoG.js b/server/public/admin/assets/edit-CLzx_CbK.js
similarity index 62%
rename from server/public/admin/assets/edit-wfA6DpoG.js
rename to server/public/admin/assets/edit-CLzx_CbK.js
index 4ef9d021..cec2df08 100644
--- a/server/public/admin/assets/edit-wfA6DpoG.js
+++ b/server/public/admin/assets/edit-CLzx_CbK.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-3m13EY17.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./picker-DlbAZkDm.js";import"./index-nymJKQXP.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./department-4lF54x8w.js";import"./post-Dq6zumLO.js";import"./admin-DO1zWq80.js";import"./role-DPqAO58h.js";import"./useDictOptions-CypOxw17.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-DAbW78Jr.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./picker-BCRrEZaA.js";import"./index-BwF7vczx.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./department-CrUndMAW.js";import"./post-RziaWdiV.js";import"./admin-DVVxI3fN.js";import"./role-DTNlgcHU.js";import"./useDictOptions-Dl6xXBty.js";export{o as default};
diff --git a/server/public/admin/assets/edit-BH5h2IG9.js b/server/public/admin/assets/edit-CRO3r4qf.js
similarity index 77%
rename from server/public/admin/assets/edit-BH5h2IG9.js
rename to server/public/admin/assets/edit-CRO3r4qf.js
index 30834b1e..fcdbc20f 100644
--- a/server/public/admin/assets/edit-BH5h2IG9.js
+++ b/server/public/admin/assets/edit-CRO3r4qf.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-BsajSW9y.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./wx_oa-CMZpCm8a.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-W1DUlHN3.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./wx_oa-sVQft6O9.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-BVgeLr6b.js b/server/public/admin/assets/edit-Cgkk3pe8.js
similarity index 94%
rename from server/public/admin/assets/edit-BVgeLr6b.js
rename to server/public/admin/assets/edit-Cgkk3pe8.js
index e279cb0c..eb21d379 100644
--- a/server/public/admin/assets/edit-BVgeLr6b.js
+++ b/server/public/admin/assets/edit-Cgkk3pe8.js
@@ -1 +1 @@
-import{D as X,U as Y,B as Z,C as h,G as ee,I as le,h as oe,W as ae,P as te,Q as re,g as ne,i as de,e as ie}from"./element-plus-0wC3naml.js";import{_ as se}from"./picker-DlbAZkDm.js";import{b as pe,d as ue,e as me}from"./admin-DO1zWq80.js";import{d as fe}from"./department-4lF54x8w.js";import{j as _e}from"./post-Dq6zumLO.js";import{i as be,m as ge,_ as ce}from"./index-E47--KT7.js";import{u as Ve}from"./useDictOptions-CypOxw17.js";import{f as ve,ak as g,I as y,a,aN as r,O as u,J as s,F as B,ap as I,G as N,A as we}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,a as ye,q as xe,n as c,r as O}from"./@vue/reactivity-DiY1c2vO.js";import{Q as V}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-nymJKQXP.js";import"./index-B56X8bEB.js";import"./index.vue_vue_type_script_setup_true_lang-DXTGI59-.js";import"./index-BHTgr4Ka.js";import"./index-Ci4dcEQh.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-DoYUJmkp.js";import"./index.vue_vue_type_script_setup_true_lang-Bl0f8aX8.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ue={class:"edit-drawer"},Ee={class:"w-full"},je={class:"ml-2 text-gray-500"},qe={class:"ml-2 text-gray-500"},De={class:"ml-2 text-gray-500"},ke={class:"ml-2 text-gray-500"},Ce={class:"flex justify-end"},Re=ve({__name:"edit",emits:["success","close"],setup(Ae,{expose:S,emit:F}){function T(d){if(d.status!==1)return!0;const e=d.children;return Array.isArray(e)&&e.length>0}const x=F,U=xe(),m=c(!1),f=c("add"),v=c(!1),E=c([]),G=async()=>{const d=await ge({type:"department"});E.value=(d==null?void 0:d.department)||[]},P=we(()=>f.value=="edit"?"编辑医生":"新增医生"),l=O({id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[1],dept_id:[],jobs_id:[],avatar:"",title:"",license_no:"",qualification_images:"",enable_image_consult:1,enable_video_consult:1,enable_charge:0,department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1}),{optionsData:j}=Ve({jobs:{api:_e},dept:{api:fe,params:{apply_data_scope:1}}}),w=(d,e,i)=>{l.password&&(e||i(new Error("请再次输入密码")),e!==l.password&&i(new Error("两次输入密码不一致!"))),i()},_=O({account:[{required:!0,message:"请输入账号",trigger:["blur"]}],name:[{required:!0,message:"请输入姓名",trigger:["blur"]}],gender:[{required:!0,message:"请选择性别",trigger:["change"]}],dept_id:[{required:!0,type:"array",min:1,message:"请选择归属部门",trigger:["change"]}],phone:[{validator:(d,e,i)=>{e&&!/^1[3-9]\d{9}$/.test(e)?i(new Error("请输入正确的手机号")):i()},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:["blur"]}],password_confirm:[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:w,trigger:"blur"}]}),Q=async()=>{var d;try{await((d=U.value)==null?void 0:d.validate()),v.value=!0,f.value=="edit"?await pe(l):await ue(l),be.msgSuccess(f.value=="edit"?"编辑成功":"新增成功"),m.value=!1,x("success")}catch(e){console.error("提交失败:",e)}finally{v.value=!1}},z=(d="add")=>{f.value=d,m.value=!0,G(),d==="add"&&(Object.assign(l,{id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[1],dept_id:[],jobs_id:[],avatar:"",title:"",license_no:"",qualification_images:"",enable_image_consult:1,enable_video_consult:1,enable_charge:0,department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1}),_.password=[{required:!0,message:"请输入密码",trigger:["blur"]}],_.password_confirm=[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:w,trigger:"blur"}])},J=async d=>{_.password=[],_.password_confirm=[{validator:w,trigger:"blur"}];const e=await me({id:d.id});for(const i in l)e[i]!=null&&e[i]!=null&&(l[i]=e[i]);l.role_id.includes(1)||l.role_id.push(1)},q=()=>{m.value=!1,x("close")};return S({open:z,setFormData:J}),(d,e)=>{const i=Y,p=h,n=Z,D=se,k=le,L=ee,W=oe,$=ae,C=re,R=te,b=ne,H=X,A=de,K=ie;return g(),y("div",Ue,[a(K,{modelValue:o(m),"onUpdate:modelValue":e[23]||(e[23]=t=>ye(m)?m.value=t:null),title:o(P),direction:"rtl",size:"780px","before-close":q},{footer:r(()=>[s("div",Ce,[a(A,{onClick:q},{default:r(()=>[...e[35]||(e[35]=[u("取消",-1)])]),_:1}),a(A,{type:"primary",onClick:Q,loading:o(v)},{default:r(()=>[...e[36]||(e[36]=[u("确定",-1)])]),_:1},8,["loading"])])]),default:r(()=>[a(H,{ref_key:"formRef",ref:U,model:o(l),"label-width":"100px",rules:o(_)},{default:r(()=>[a(i,{"content-position":"left"},{default:r(()=>[...e[24]||(e[24]=[u("基本信息",-1)])]),_:1}),a(n,{label:"账号",prop:"account"},{default:r(()=>[a(p,{modelValue:o(l).account,"onUpdate:modelValue":e[0]||(e[0]=t=>o(l).account=t),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"头像"},{default:r(()=>[s("div",null,[s("div",null,[a(D,{modelValue:o(l).avatar,"onUpdate:modelValue":e[1]||(e[1]=t=>o(l).avatar=t),limit:1},null,8,["modelValue"])]),e[25]||(e[25]=s("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1}),a(n,{label:"姓名",prop:"name"},{default:r(()=>[a(p,{modelValue:o(l).name,"onUpdate:modelValue":e[2]||(e[2]=t=>o(l).name=t),placeholder:"请输入姓名",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"性别",prop:"gender"},{default:r(()=>[a(L,{modelValue:o(l).gender,"onUpdate:modelValue":e[3]||(e[3]=t=>o(l).gender=t)},{default:r(()=>[a(k,{label:1},{default:r(()=>[...e[26]||(e[26]=[u("男",-1)])]),_:1}),a(k,{label:2},{default:r(()=>[...e[27]||(e[27]=[u("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"年龄",prop:"age"},{default:r(()=>[a(W,{modelValue:o(l).age,"onUpdate:modelValue":e[4]||(e[4]=t=>o(l).age=t),min:18,max:100,placeholder:"请输入年龄"},null,8,["modelValue"])]),_:1}),a(n,{label:"手机号",prop:"phone"},{default:r(()=>[a(p,{modelValue:o(l).phone,"onUpdate:modelValue":e[5]||(e[5]=t=>o(l).phone=t),placeholder:"请输入手机号",clearable:""},null,8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[28]||(e[28]=[u("组织信息",-1)])]),_:1}),a(n,{label:"归属部门",prop:"dept_id"},{default:r(()=>[s("div",Ee,[a($,{class:"flex-1 w-full",modelValue:o(l).dept_id,"onUpdate:modelValue":e[6]||(e[6]=t=>o(l).dept_id=t),data:o(j).dept,clearable:"",multiple:"","node-key":"id",props:{label:"name",disabled:T},"check-strictly":"","default-expand-all":!0,placeholder:"请选择末级归属部门"},null,8,["modelValue","data","props"]),e[29]||(e[29]=s("div",{class:"form-tips"},"仅可选末级部门(含下级的父部门不可选),与数据权限范围一致。",-1))])]),_:1}),a(n,{label:"岗位",prop:"jobs_id"},{default:r(()=>[a(R,{class:"flex-1",modelValue:o(l).jobs_id,"onUpdate:modelValue":e[7]||(e[7]=t=>o(l).jobs_id=t),clearable:"",multiple:"",placeholder:"请选择岗位"},{default:r(()=>[(g(!0),y(B,null,I(o(j).jobs,(t,M)=>(g(),N(C,{key:M,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[30]||(e[30]=[u("专业信息",-1)])]),_:1}),a(n,{label:"职称",prop:"title"},{default:r(()=>[a(p,{modelValue:o(l).title,"onUpdate:modelValue":e[8]||(e[8]=t=>o(l).title=t),placeholder:"如:主任医师、副主任医师",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"执业证书编号",prop:"license_no"},{default:r(()=>[a(p,{modelValue:o(l).license_no,"onUpdate:modelValue":e[9]||(e[9]=t=>o(l).license_no=t),placeholder:"请输入执业证书编号",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"资质图片"},{default:r(()=>[s("div",null,[s("div",null,[a(D,{modelValue:o(l).qualification_images,"onUpdate:modelValue":e[10]||(e[10]=t=>o(l).qualification_images=t),limit:9},null,8,["modelValue"])]),e[31]||(e[31]=s("div",{class:"form-tips"},"上传医生资质证书、荣誉证书等图片,最多9张,建议尺寸:800*600px",-1))])]),_:1}),a(n,{label:"图文问诊"},{default:r(()=>[a(b,{modelValue:o(l).enable_image_consult,"onUpdate:modelValue":e[11]||(e[11]=t=>o(l).enable_image_consult=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),s("span",je,V(o(l).enable_image_consult===1?"已开启":"已关闭"),1)]),_:1}),a(n,{label:"视频问诊"},{default:r(()=>[a(b,{modelValue:o(l).enable_video_consult,"onUpdate:modelValue":e[12]||(e[12]=t=>o(l).enable_video_consult=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),s("span",qe,V(o(l).enable_video_consult===1?"已开启":"已关闭"),1)]),_:1}),a(n,{label:"是否开启收费"},{default:r(()=>[a(b,{modelValue:o(l).enable_charge,"onUpdate:modelValue":e[13]||(e[13]=t=>o(l).enable_charge=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),s("span",De,V(o(l).enable_charge===1?"已开启":"已关闭"),1)]),_:1}),a(n,{label:"所属科室",prop:"department"},{default:r(()=>[a(R,{modelValue:o(l).department,"onUpdate:modelValue":e[14]||(e[14]=t=>o(l).department=t),placeholder:"请选择所属科室",clearable:"",class:"flex-1"},{default:r(()=>[(g(!0),y(B,null,I(o(E),t=>(g(),N(C,{key:t.value,label:t.name,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"擅长领域",prop:"specialty"},{default:r(()=>[a(p,{modelValue:o(l).specialty,"onUpdate:modelValue":e[15]||(e[15]=t=>o(l).specialty=t),type:"textarea",rows:3,placeholder:"请输入擅长领域"},null,8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[32]||(e[32]=[u("履历信息",-1)])]),_:1}),a(n,{label:"教育背景",prop:"education"},{default:r(()=>[a(p,{modelValue:o(l).education,"onUpdate:modelValue":e[16]||(e[16]=t=>o(l).education=t),type:"textarea",rows:3,placeholder:"请输入教育背景,如:北京中医药大学 中医学博士"},null,8,["modelValue"])]),_:1}),a(n,{label:"工作经历",prop:"experience"},{default:r(()=>[a(p,{modelValue:o(l).experience,"onUpdate:modelValue":e[17]||(e[17]=t=>o(l).experience=t),type:"textarea",rows:4,placeholder:"请输入工作经历"},null,8,["modelValue"])]),_:1}),a(n,{label:"荣誉资质",prop:"honors"},{default:r(()=>[a(p,{modelValue:o(l).honors,"onUpdate:modelValue":e[18]||(e[18]=t=>o(l).honors=t),type:"textarea",rows:3,placeholder:"请输入荣誉资质"},null,8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[33]||(e[33]=[u("账号设置",-1)])]),_:1}),a(n,{label:"密码",prop:"password"},{default:r(()=>[a(p,{modelValue:o(l).password,"onUpdate:modelValue":e[19]||(e[19]=t=>o(l).password=t),"show-password":"",clearable:"",placeholder:o(f)==="edit"?"不修改请留空":"请输入密码"},null,8,["modelValue","placeholder"])]),_:1}),a(n,{label:"确认密码",prop:"password_confirm"},{default:r(()=>[a(p,{modelValue:o(l).password_confirm,"onUpdate:modelValue":e[20]||(e[20]=t=>o(l).password_confirm=t),"show-password":"",clearable:"",placeholder:o(f)==="edit"?"不修改请留空":"请输入确认密码"},null,8,["modelValue","placeholder"])]),_:1}),a(n,{label:"状态"},{default:r(()=>[a(b,{modelValue:o(l).disable,"onUpdate:modelValue":e[21]||(e[21]=t=>o(l).disable=t),"active-value":0,"inactive-value":1},null,8,["modelValue"]),s("span",ke,V(o(l).disable===0?"启用":"禁用"),1)]),_:1}),a(n,{label:"多处登录"},{default:r(()=>[s("div",null,[a(b,{modelValue:o(l).multipoint_login,"onUpdate:modelValue":e[22]||(e[22]=t=>o(l).multipoint_login=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),e[34]||(e[34]=s("div",{class:"form-tips"},"允许多人同时在线登录",-1))])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}}),Ol=ce(Re,[["__scopeId","data-v-c5cf7e96"]]);export{Ol as default};
+import{D as X,U as Y,B as Z,C as h,G as ee,I as le,h as oe,W as ae,P as te,Q as re,g as ne,i as de,e as ie}from"./element-plus-DFTWCWyi.js";import{_ as se}from"./picker-BCRrEZaA.js";import{b as pe,d as ue,e as me}from"./admin-DVVxI3fN.js";import{d as fe}from"./department-CrUndMAW.js";import{j as _e}from"./post-RziaWdiV.js";import{i as be,m as ge,_ as ce}from"./index-DBREMm_z.js";import{u as Ve}from"./useDictOptions-Dl6xXBty.js";import{f as ve,ak as g,I as y,a,aN as r,O as u,J as s,F as B,ap as I,G as N,A as we}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,a as ye,q as xe,n as c,r as O}from"./@vue/reactivity-DiY1c2vO.js";import{Q as V}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-BwF7vczx.js";import"./index-BiPYXDtP.js";import"./index.vue_vue_type_script_setup_true_lang-CcvIuIWy.js";import"./index-CbfZXeGu.js";import"./index-CRoZWY-W.js";import"./cos-js-sdk-v5-DSMN0LUT.js";import"./file-BimpIRb_.js";import"./index.vue_vue_type_script_setup_true_lang-x0oL2ShL.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./usePaging-VsbTxSU0.js";import"./vuedraggable-5bKFmC7X.js";import"./vue-BVs68q8v.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const Ue={class:"edit-drawer"},Ee={class:"w-full"},je={class:"ml-2 text-gray-500"},qe={class:"ml-2 text-gray-500"},De={class:"ml-2 text-gray-500"},ke={class:"ml-2 text-gray-500"},Ce={class:"flex justify-end"},Re=ve({__name:"edit",emits:["success","close"],setup(Ae,{expose:S,emit:F}){function T(d){if(d.status!==1)return!0;const e=d.children;return Array.isArray(e)&&e.length>0}const x=F,U=xe(),m=c(!1),f=c("add"),v=c(!1),E=c([]),G=async()=>{const d=await ge({type:"department"});E.value=(d==null?void 0:d.department)||[]},P=we(()=>f.value=="edit"?"编辑医生":"新增医生"),l=O({id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[1],dept_id:[],jobs_id:[],avatar:"",title:"",license_no:"",qualification_images:"",enable_image_consult:1,enable_video_consult:1,enable_charge:0,department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1}),{optionsData:j}=Ve({jobs:{api:_e},dept:{api:fe,params:{apply_data_scope:1}}}),w=(d,e,i)=>{l.password&&(e||i(new Error("请再次输入密码")),e!==l.password&&i(new Error("两次输入密码不一致!"))),i()},_=O({account:[{required:!0,message:"请输入账号",trigger:["blur"]}],name:[{required:!0,message:"请输入姓名",trigger:["blur"]}],gender:[{required:!0,message:"请选择性别",trigger:["change"]}],dept_id:[{required:!0,type:"array",min:1,message:"请选择归属部门",trigger:["change"]}],phone:[{validator:(d,e,i)=>{e&&!/^1[3-9]\d{9}$/.test(e)?i(new Error("请输入正确的手机号")):i()},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:["blur"]}],password_confirm:[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:w,trigger:"blur"}]}),Q=async()=>{var d;try{await((d=U.value)==null?void 0:d.validate()),v.value=!0,f.value=="edit"?await pe(l):await ue(l),be.msgSuccess(f.value=="edit"?"编辑成功":"新增成功"),m.value=!1,x("success")}catch(e){console.error("提交失败:",e)}finally{v.value=!1}},z=(d="add")=>{f.value=d,m.value=!0,G(),d==="add"&&(Object.assign(l,{id:"",account:"",name:"",gender:1,age:null,phone:"",role_id:[1],dept_id:[],jobs_id:[],avatar:"",title:"",license_no:"",qualification_images:"",enable_image_consult:1,enable_video_consult:1,enable_charge:0,department:"",specialty:"",education:"",experience:"",honors:"",password:"",password_confirm:"",disable:0,multipoint_login:1}),_.password=[{required:!0,message:"请输入密码",trigger:["blur"]}],_.password_confirm=[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:w,trigger:"blur"}])},J=async d=>{_.password=[],_.password_confirm=[{validator:w,trigger:"blur"}];const e=await me({id:d.id});for(const i in l)e[i]!=null&&e[i]!=null&&(l[i]=e[i]);l.role_id.includes(1)||l.role_id.push(1)},q=()=>{m.value=!1,x("close")};return S({open:z,setFormData:J}),(d,e)=>{const i=Y,p=h,n=Z,D=se,k=le,L=ee,W=oe,$=ae,C=re,R=te,b=ne,H=X,A=de,K=ie;return g(),y("div",Ue,[a(K,{modelValue:o(m),"onUpdate:modelValue":e[23]||(e[23]=t=>ye(m)?m.value=t:null),title:o(P),direction:"rtl",size:"780px","before-close":q},{footer:r(()=>[s("div",Ce,[a(A,{onClick:q},{default:r(()=>[...e[35]||(e[35]=[u("取消",-1)])]),_:1}),a(A,{type:"primary",onClick:Q,loading:o(v)},{default:r(()=>[...e[36]||(e[36]=[u("确定",-1)])]),_:1},8,["loading"])])]),default:r(()=>[a(H,{ref_key:"formRef",ref:U,model:o(l),"label-width":"100px",rules:o(_)},{default:r(()=>[a(i,{"content-position":"left"},{default:r(()=>[...e[24]||(e[24]=[u("基本信息",-1)])]),_:1}),a(n,{label:"账号",prop:"account"},{default:r(()=>[a(p,{modelValue:o(l).account,"onUpdate:modelValue":e[0]||(e[0]=t=>o(l).account=t),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"头像"},{default:r(()=>[s("div",null,[s("div",null,[a(D,{modelValue:o(l).avatar,"onUpdate:modelValue":e[1]||(e[1]=t=>o(l).avatar=t),limit:1},null,8,["modelValue"])]),e[25]||(e[25]=s("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1}),a(n,{label:"姓名",prop:"name"},{default:r(()=>[a(p,{modelValue:o(l).name,"onUpdate:modelValue":e[2]||(e[2]=t=>o(l).name=t),placeholder:"请输入姓名",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"性别",prop:"gender"},{default:r(()=>[a(L,{modelValue:o(l).gender,"onUpdate:modelValue":e[3]||(e[3]=t=>o(l).gender=t)},{default:r(()=>[a(k,{label:1},{default:r(()=>[...e[26]||(e[26]=[u("男",-1)])]),_:1}),a(k,{label:2},{default:r(()=>[...e[27]||(e[27]=[u("女",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"年龄",prop:"age"},{default:r(()=>[a(W,{modelValue:o(l).age,"onUpdate:modelValue":e[4]||(e[4]=t=>o(l).age=t),min:18,max:100,placeholder:"请输入年龄"},null,8,["modelValue"])]),_:1}),a(n,{label:"手机号",prop:"phone"},{default:r(()=>[a(p,{modelValue:o(l).phone,"onUpdate:modelValue":e[5]||(e[5]=t=>o(l).phone=t),placeholder:"请输入手机号",clearable:""},null,8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[28]||(e[28]=[u("组织信息",-1)])]),_:1}),a(n,{label:"归属部门",prop:"dept_id"},{default:r(()=>[s("div",Ee,[a($,{class:"flex-1 w-full",modelValue:o(l).dept_id,"onUpdate:modelValue":e[6]||(e[6]=t=>o(l).dept_id=t),data:o(j).dept,clearable:"",multiple:"","node-key":"id",props:{label:"name",disabled:T},"check-strictly":"","default-expand-all":!0,placeholder:"请选择末级归属部门"},null,8,["modelValue","data","props"]),e[29]||(e[29]=s("div",{class:"form-tips"},"仅可选末级部门(含下级的父部门不可选),与数据权限范围一致。",-1))])]),_:1}),a(n,{label:"岗位",prop:"jobs_id"},{default:r(()=>[a(R,{class:"flex-1",modelValue:o(l).jobs_id,"onUpdate:modelValue":e[7]||(e[7]=t=>o(l).jobs_id=t),clearable:"",multiple:"",placeholder:"请选择岗位"},{default:r(()=>[(g(!0),y(B,null,I(o(j).jobs,(t,M)=>(g(),N(C,{key:M,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[30]||(e[30]=[u("专业信息",-1)])]),_:1}),a(n,{label:"职称",prop:"title"},{default:r(()=>[a(p,{modelValue:o(l).title,"onUpdate:modelValue":e[8]||(e[8]=t=>o(l).title=t),placeholder:"如:主任医师、副主任医师",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"执业证书编号",prop:"license_no"},{default:r(()=>[a(p,{modelValue:o(l).license_no,"onUpdate:modelValue":e[9]||(e[9]=t=>o(l).license_no=t),placeholder:"请输入执业证书编号",clearable:""},null,8,["modelValue"])]),_:1}),a(n,{label:"资质图片"},{default:r(()=>[s("div",null,[s("div",null,[a(D,{modelValue:o(l).qualification_images,"onUpdate:modelValue":e[10]||(e[10]=t=>o(l).qualification_images=t),limit:9},null,8,["modelValue"])]),e[31]||(e[31]=s("div",{class:"form-tips"},"上传医生资质证书、荣誉证书等图片,最多9张,建议尺寸:800*600px",-1))])]),_:1}),a(n,{label:"图文问诊"},{default:r(()=>[a(b,{modelValue:o(l).enable_image_consult,"onUpdate:modelValue":e[11]||(e[11]=t=>o(l).enable_image_consult=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),s("span",je,V(o(l).enable_image_consult===1?"已开启":"已关闭"),1)]),_:1}),a(n,{label:"视频问诊"},{default:r(()=>[a(b,{modelValue:o(l).enable_video_consult,"onUpdate:modelValue":e[12]||(e[12]=t=>o(l).enable_video_consult=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),s("span",qe,V(o(l).enable_video_consult===1?"已开启":"已关闭"),1)]),_:1}),a(n,{label:"是否开启收费"},{default:r(()=>[a(b,{modelValue:o(l).enable_charge,"onUpdate:modelValue":e[13]||(e[13]=t=>o(l).enable_charge=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),s("span",De,V(o(l).enable_charge===1?"已开启":"已关闭"),1)]),_:1}),a(n,{label:"所属科室",prop:"department"},{default:r(()=>[a(R,{modelValue:o(l).department,"onUpdate:modelValue":e[14]||(e[14]=t=>o(l).department=t),placeholder:"请选择所属科室",clearable:"",class:"flex-1"},{default:r(()=>[(g(!0),y(B,null,I(o(E),t=>(g(),N(C,{key:t.value,label:t.name,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{label:"擅长领域",prop:"specialty"},{default:r(()=>[a(p,{modelValue:o(l).specialty,"onUpdate:modelValue":e[15]||(e[15]=t=>o(l).specialty=t),type:"textarea",rows:3,placeholder:"请输入擅长领域"},null,8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[32]||(e[32]=[u("履历信息",-1)])]),_:1}),a(n,{label:"教育背景",prop:"education"},{default:r(()=>[a(p,{modelValue:o(l).education,"onUpdate:modelValue":e[16]||(e[16]=t=>o(l).education=t),type:"textarea",rows:3,placeholder:"请输入教育背景,如:北京中医药大学 中医学博士"},null,8,["modelValue"])]),_:1}),a(n,{label:"工作经历",prop:"experience"},{default:r(()=>[a(p,{modelValue:o(l).experience,"onUpdate:modelValue":e[17]||(e[17]=t=>o(l).experience=t),type:"textarea",rows:4,placeholder:"请输入工作经历"},null,8,["modelValue"])]),_:1}),a(n,{label:"荣誉资质",prop:"honors"},{default:r(()=>[a(p,{modelValue:o(l).honors,"onUpdate:modelValue":e[18]||(e[18]=t=>o(l).honors=t),type:"textarea",rows:3,placeholder:"请输入荣誉资质"},null,8,["modelValue"])]),_:1}),a(i,{"content-position":"left"},{default:r(()=>[...e[33]||(e[33]=[u("账号设置",-1)])]),_:1}),a(n,{label:"密码",prop:"password"},{default:r(()=>[a(p,{modelValue:o(l).password,"onUpdate:modelValue":e[19]||(e[19]=t=>o(l).password=t),"show-password":"",clearable:"",placeholder:o(f)==="edit"?"不修改请留空":"请输入密码"},null,8,["modelValue","placeholder"])]),_:1}),a(n,{label:"确认密码",prop:"password_confirm"},{default:r(()=>[a(p,{modelValue:o(l).password_confirm,"onUpdate:modelValue":e[20]||(e[20]=t=>o(l).password_confirm=t),"show-password":"",clearable:"",placeholder:o(f)==="edit"?"不修改请留空":"请输入确认密码"},null,8,["modelValue","placeholder"])]),_:1}),a(n,{label:"状态"},{default:r(()=>[a(b,{modelValue:o(l).disable,"onUpdate:modelValue":e[21]||(e[21]=t=>o(l).disable=t),"active-value":0,"inactive-value":1},null,8,["modelValue"]),s("span",ke,V(o(l).disable===0?"启用":"禁用"),1)]),_:1}),a(n,{label:"多处登录"},{default:r(()=>[s("div",null,[a(b,{modelValue:o(l).multipoint_login,"onUpdate:modelValue":e[22]||(e[22]=t=>o(l).multipoint_login=t),"active-value":1,"inactive-value":0},null,8,["modelValue"]),e[34]||(e[34]=s("div",{class:"form-tips"},"允许多人同时在线登录",-1))])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}}),Ol=ce(Re,[["__scopeId","data-v-c5cf7e96"]]);export{Ol as default};
diff --git a/server/public/admin/assets/edit-hgBBPYXJ.js b/server/public/admin/assets/edit-ClO9w8qS.js
similarity index 84%
rename from server/public/admin/assets/edit-hgBBPYXJ.js
rename to server/public/admin/assets/edit-ClO9w8qS.js
index 430ccdd0..2b50c68f 100644
--- a/server/public/admin/assets/edit-hgBBPYXJ.js
+++ b/server/public/admin/assets/edit-ClO9w8qS.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-CzxfOEt7.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./article-DJnP6RZd.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-DPHyz3nQ.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./article-BnVIxFkr.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-D4HOYBIv.js b/server/public/admin/assets/edit-DLrF_4OV.js
similarity index 77%
rename from server/public/admin/assets/edit-D4HOYBIv.js
rename to server/public/admin/assets/edit-DLrF_4OV.js
index 15420a47..042a118e 100644
--- a/server/public/admin/assets/edit-D4HOYBIv.js
+++ b/server/public/admin/assets/edit-DLrF_4OV.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-C3aOnTrX.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./dict-Nvtnb8GD.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-Bo8W-Bev.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./role-DTNlgcHU.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-aPyRH11x.js b/server/public/admin/assets/edit-DfWwbZ4V.js
similarity index 82%
rename from server/public/admin/assets/edit-aPyRH11x.js
rename to server/public/admin/assets/edit-DfWwbZ4V.js
index 14b9a4e2..f0e15cfb 100644
--- a/server/public/admin/assets/edit-aPyRH11x.js
+++ b/server/public/admin/assets/edit-DfWwbZ4V.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-C3YGQx3u.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./picker.vue_vue_type_script_setup_true_lang-DBWe-4hk.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./menu-CJerAkpY.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-BBq07rga.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./picker.vue_vue_type_script_setup_true_lang-CqrG0MgW.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./menu-CvPcniJ1.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-CK5zzVEN.js b/server/public/admin/assets/edit-DjUf2sPY.js
similarity index 83%
rename from server/public/admin/assets/edit-CK5zzVEN.js
rename to server/public/admin/assets/edit-DjUf2sPY.js
index 0ee6cab4..f3727025 100644
--- a/server/public/admin/assets/edit-CK5zzVEN.js
+++ b/server/public/admin/assets/edit-DjUf2sPY.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-BdtkGJu8.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-DK2-d75P.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-CTvlHb1B.js b/server/public/admin/assets/edit-Dx70kQ0n.js
similarity index 77%
rename from server/public/admin/assets/edit-CTvlHb1B.js
rename to server/public/admin/assets/edit-Dx70kQ0n.js
index 71e1da57..85902d0d 100644
--- a/server/public/admin/assets/edit-CTvlHb1B.js
+++ b/server/public/admin/assets/edit-Dx70kQ0n.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-BRxNvBo2.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./finance-C48kuhTG.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-Bn53gSK4.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./finance-YaEgIEMc.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-Cj0lyXv8.js b/server/public/admin/assets/edit-Nqt6NFjX.js
similarity index 77%
rename from server/public/admin/assets/edit-Cj0lyXv8.js
rename to server/public/admin/assets/edit-Nqt6NFjX.js
index b833c55a..86ecbba5 100644
--- a/server/public/admin/assets/edit-Cj0lyXv8.js
+++ b/server/public/admin/assets/edit-Nqt6NFjX.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-CAjYh8N9.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./message-CSrefGEU.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-CwKzaRbZ.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./message-Dx96dhoI.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit-Do-kTB4P.js b/server/public/admin/assets/edit-YD1kWr3g.js
similarity index 96%
rename from server/public/admin/assets/edit-Do-kTB4P.js
rename to server/public/admin/assets/edit-YD1kWr3g.js
index d48e5e65..40b2e3a3 100644
--- a/server/public/admin/assets/edit-Do-kTB4P.js
+++ b/server/public/admin/assets/edit-YD1kWr3g.js
@@ -1 +1 @@
-import{_ as I}from"./index-9zND60WT.js";import{O as N,J as D,D as F,B as G,C as M,G as O,I as $,g as j,M as H,N as J,i as S}from"./element-plus-0wC3naml.js";import{j as z,F as A,G as L,H as P,I as K}from"./index-E47--KT7.js";import{u as Q,a as W}from"./vue-router-QlpZ4wdW.js";import{f as v,b as X,ak as Y,I as Z,a as o,aN as l,J as i,O as b}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,r as w,q as ee,n as oe}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const te={class:"article-edit"},ae={class:"w-80"},le={class:"w-80"},re={class:"w-80"},se={class:"w-80"},ne={class:"w-80"},me=v({name:"scheduledTaskEdit"}),Ke=v({...me,setup(ie){const p=Q(),V=W(),t=w({id:"",name:"",command:"",expression:"",params:"",remark:"",status:1,type:1}),{removeTab:x}=z(),d=ee(),y=w({name:[{required:!0,message:"请输入名称"}],command:[{required:!0,message:"请输入thankphp命令,如vresion"}],expression:[{required:!0,message:"请输入crontab规则,例:5 9 * * *"}]}),E=async()=>{const s=await A({id:p.query.id});Object.keys(t).forEach(e=>{t[e]=s[e]})},u=oe([]),c=async()=>{var e;await((e=d.value)==null?void 0:e.validateField(["expression"]));const s=await L({expression:t.expression});u.value=s},k=async()=>{var s;await((s=d.value)==null?void 0:s.validate()),p.query.id?await P(t):await K(t),x(),V.back()};return X(async()=>{p.query.id&&(await E(),await c())}),(s,e)=>{const g=N,_=D,m=M,n=G,h=$,R=O,q=j,f=J,B=H,U=F,C=S,T=I;return Y(),Z("div",te,[o(_,{class:"!border-none",shadow:"never"},{default:l(()=>[o(g,{content:s.$route.meta.title,onBack:e[0]||(e[0]=r=>s.$router.back())},null,8,["content"])]),_:1}),o(_,{class:"mt-4 !border-none",shadow:"never"},{default:l(()=>[o(U,{ref_key:"formRef",ref:d,class:"ls-form",model:a(t),"label-width":"85px",rules:a(y)},{default:l(()=>[o(n,{label:"名称",prop:"name"},{default:l(()=>[i("div",ae,[o(m,{modelValue:a(t).name,"onUpdate:modelValue":e[1]||(e[1]=r=>a(t).name=r),placeholder:"请输入名称",maxlength:"30",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"类型",prop:"type"},{default:l(()=>[o(R,{modelValue:a(t).type,"onUpdate:modelValue":e[2]||(e[2]=r=>a(t).type=r)},{default:l(()=>[o(h,{value:1},{default:l(()=>[...e[8]||(e[8]=[b("定时任务",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"命令",prop:"command"},{default:l(()=>[i("div",le,[o(m,{modelValue:a(t).command,"onUpdate:modelValue":e[3]||(e[3]=r=>a(t).command=r),placeholder:"请输入thinkphp命令,如vresion",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"参数",prop:"params"},{default:l(()=>[i("div",re,[o(m,{modelValue:a(t).params,"onUpdate:modelValue":e[4]||(e[4]=r=>a(t).params=r),placeholder:"请输入参数,例:--id 8 --name 测试",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"状态"},{default:l(()=>[o(q,{modelValue:a(t).status,"onUpdate:modelValue":e[5]||(e[5]=r=>a(t).status=r),"active-value":1,"inactive-value":2},null,8,["modelValue"])]),_:1}),o(n,{label:"规则",prop:"expression"},{default:l(()=>[i("div",se,[o(m,{onBlur:c,modelValue:a(t).expression,"onUpdate:modelValue":e[6]||(e[6]=r=>a(t).expression=r),placeholder:"请输入crontab规则,例:5 9 * * *"},null,8,["modelValue"])])]),_:1}),o(n,null,{default:l(()=>[o(B,{data:a(u),style:{"max-width":"320px"}},{default:l(()=>[o(f,{prop:"time",label:"序号","min-width":"80"}),o(f,{prop:"date",label:"执行时间","min-width":"240"})]),_:1},8,["data"])]),_:1}),o(n,{label:"备注",prop:"remark"},{default:l(()=>[i("div",ne,[o(m,{modelValue:a(t).remark,"onUpdate:modelValue":e[7]||(e[7]=r=>a(t).remark=r),type:"textarea",autosize:{minRows:3,maxRows:6},maxlength:200,"show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1})]),_:1},8,["model","rules"])]),_:1}),o(T,null,{default:l(()=>[o(C,{type:"primary",onClick:k},{default:l(()=>[...e[9]||(e[9]=[b("保存",-1)])]),_:1})]),_:1})])}}});export{Ke as default};
+import{_ as I}from"./index-x1zzA0a7.js";import{O as N,J as D,D as F,B as G,C as M,G as O,I as $,g as j,M as H,N as J,i as S}from"./element-plus-DFTWCWyi.js";import{j as z,F as A,G as L,H as P,I as K}from"./index-DBREMm_z.js";import{u as Q,a as W}from"./vue-router-QlpZ4wdW.js";import{f as v,b as X,ak as Y,I as Z,a as o,aN as l,J as i,O as b}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,r as w,q as ee,n as oe}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const te={class:"article-edit"},ae={class:"w-80"},le={class:"w-80"},re={class:"w-80"},se={class:"w-80"},ne={class:"w-80"},me=v({name:"scheduledTaskEdit"}),Ke=v({...me,setup(ie){const p=Q(),V=W(),t=w({id:"",name:"",command:"",expression:"",params:"",remark:"",status:1,type:1}),{removeTab:x}=z(),d=ee(),y=w({name:[{required:!0,message:"请输入名称"}],command:[{required:!0,message:"请输入thankphp命令,如vresion"}],expression:[{required:!0,message:"请输入crontab规则,例:5 9 * * *"}]}),E=async()=>{const s=await A({id:p.query.id});Object.keys(t).forEach(e=>{t[e]=s[e]})},u=oe([]),c=async()=>{var e;await((e=d.value)==null?void 0:e.validateField(["expression"]));const s=await L({expression:t.expression});u.value=s},k=async()=>{var s;await((s=d.value)==null?void 0:s.validate()),p.query.id?await P(t):await K(t),x(),V.back()};return X(async()=>{p.query.id&&(await E(),await c())}),(s,e)=>{const g=N,_=D,m=M,n=G,h=$,R=O,q=j,f=J,B=H,U=F,C=S,T=I;return Y(),Z("div",te,[o(_,{class:"!border-none",shadow:"never"},{default:l(()=>[o(g,{content:s.$route.meta.title,onBack:e[0]||(e[0]=r=>s.$router.back())},null,8,["content"])]),_:1}),o(_,{class:"mt-4 !border-none",shadow:"never"},{default:l(()=>[o(U,{ref_key:"formRef",ref:d,class:"ls-form",model:a(t),"label-width":"85px",rules:a(y)},{default:l(()=>[o(n,{label:"名称",prop:"name"},{default:l(()=>[i("div",ae,[o(m,{modelValue:a(t).name,"onUpdate:modelValue":e[1]||(e[1]=r=>a(t).name=r),placeholder:"请输入名称",maxlength:"30",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"类型",prop:"type"},{default:l(()=>[o(R,{modelValue:a(t).type,"onUpdate:modelValue":e[2]||(e[2]=r=>a(t).type=r)},{default:l(()=>[o(h,{value:1},{default:l(()=>[...e[8]||(e[8]=[b("定时任务",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(n,{label:"命令",prop:"command"},{default:l(()=>[i("div",le,[o(m,{modelValue:a(t).command,"onUpdate:modelValue":e[3]||(e[3]=r=>a(t).command=r),placeholder:"请输入thinkphp命令,如vresion",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"参数",prop:"params"},{default:l(()=>[i("div",re,[o(m,{modelValue:a(t).params,"onUpdate:modelValue":e[4]||(e[4]=r=>a(t).params=r),placeholder:"请输入参数,例:--id 8 --name 测试",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"状态"},{default:l(()=>[o(q,{modelValue:a(t).status,"onUpdate:modelValue":e[5]||(e[5]=r=>a(t).status=r),"active-value":1,"inactive-value":2},null,8,["modelValue"])]),_:1}),o(n,{label:"规则",prop:"expression"},{default:l(()=>[i("div",se,[o(m,{onBlur:c,modelValue:a(t).expression,"onUpdate:modelValue":e[6]||(e[6]=r=>a(t).expression=r),placeholder:"请输入crontab规则,例:5 9 * * *"},null,8,["modelValue"])])]),_:1}),o(n,null,{default:l(()=>[o(B,{data:a(u),style:{"max-width":"320px"}},{default:l(()=>[o(f,{prop:"time",label:"序号","min-width":"80"}),o(f,{prop:"date",label:"执行时间","min-width":"240"})]),_:1},8,["data"])]),_:1}),o(n,{label:"备注",prop:"remark"},{default:l(()=>[i("div",ne,[o(m,{modelValue:a(t).remark,"onUpdate:modelValue":e[7]||(e[7]=r=>a(t).remark=r),type:"textarea",autosize:{minRows:3,maxRows:6},maxlength:200,"show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1})]),_:1},8,["model","rules"])]),_:1}),o(T,null,{default:l(()=>[o(C,{type:"primary",onClick:k},{default:l(()=>[...e[9]||(e[9]=[b("保存",-1)])]),_:1})]),_:1})])}}});export{Ke as default};
diff --git a/server/public/admin/assets/edit-CktqTQQ_.js b/server/public/admin/assets/edit-g9E_gOwG.js
similarity index 97%
rename from server/public/admin/assets/edit-CktqTQQ_.js
rename to server/public/admin/assets/edit-g9E_gOwG.js
index 3aee0759..3a60457b 100644
--- a/server/public/admin/assets/edit-CktqTQQ_.js
+++ b/server/public/admin/assets/edit-g9E_gOwG.js
@@ -1 +1 @@
-import{_ as ye}from"./index-9zND60WT.js";import{O as ge,J as ke,D as Ue,m as we,l as Ee,B as qe,C as xe,M as Ce,N as De,H as Ae,P as Re,Q as $e,G as Ie,I as Te,W as Ne,i as Be}from"./element-plus-0wC3naml.js";import{f as j,ak as p,I as v,F as q,ap as D,A as Y,a as l,aN as t,J as u,G as w,O as f,H,n as Oe,w as Pe}from"./@vue/runtime-core-C6bnekPw.js";import{Q as Z}from"./@vue/shared-mAAVTE9n.js";import{y as n,a as C,n as E,r as h,q as ee,t as le}from"./@vue/reactivity-DiY1c2vO.js";import{c as Se,i as ae,_ as Fe}from"./index-E47--KT7.js";import{l as te}from"./lodash-D3kF6u-c.js";import{m as Le}from"./menu-CJerAkpY.js";import{d as Qe}from"./dict-Nvtnb8GD.js";import{t as Ge,g as He}from"./code-DY1HVNqE.js";import{u as je}from"./useDictOptions-CypOxw17.js";import{_ as ze}from"./relations-add.vue_vue_type_script_setup_true_lang-CKhVzzB6.js";import{u as Je,a as We}from"./vue-router-QlpZ4wdW.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";const Ke=j({__name:"index",props:{options:{default:()=>[]},value:{},config:{default:()=>({label:"name",value:"value"})}},setup(P){const c=P,S=Y(()=>c.value!==null&&typeof c.value<"u"?Array.isArray(c.value)?c.value:String(c.value).split(","):[]),A=Y(()=>c.options.filter(x=>S.value.includes(x[c.config.value])));return(x,F)=>(p(),v("div",null,[(p(!0),v(q,null,D(n(A),(o,g)=>(p(),v("span",{key:g},Z(g!=0?"、":"")+Z(o[P.config.label]),1))),128))]))}}),Me={class:"code-edit"},Xe={class:"w-80"},Ye={class:"w-80"},Ze={class:"w-80"},he={class:"w-80"},el={class:"header-checkbox"},ll={class:"header-checkbox"},al={class:"header-checkbox"},tl={class:"header-checkbox"},ol={class:"header-checkbox"},nl={class:"w-80"},ul={class:"w-80"},dl={class:"w-80"},sl={class:"w-80"},ml={class:"mt-4"},rl=j({name:"tableEdit"}),il=j({...rl,setup(P){const c=Je(),S=We(),A=E("column"),x=E(!1),F=[{name:"一对一",value:"has_one"},{name:"一对多",value:"has_many"}],o=h({id:"",table_name:"",table_comment:"",author:"",remark:"",template_type:0,generate_type:0,module_name:"",class_dir:"",class_comment:"",table_column:[],menu:{pid:0,name:"",type:0},tree:{tree_id:0,tree_pid:0,tree_name:0},delete:{name:"",type:0},relations:[]}),g=E(!1),R=E(!1),$=E(!1),I=E(!1),T=E(!1),oe=()=>{o.table_column.forEach(d=>{d.is_required=g.value?1:0})},ne=()=>{o.table_column.forEach(d=>{d.is_insert=R.value?1:0})},ue=()=>{o.table_column.forEach(d=>{d.is_update=$.value?1:0})},de=()=>{o.table_column.forEach(d=>{d.is_lists=I.value?1:0})},se=()=>{o.table_column.forEach(d=>{d.is_query=T.value?1:0})};let L=0;const z=ee(),Q=ee(),J=h({table_name:[{required:!0,message:"请输入表名称"}],table_comment:[{required:!0,message:"请输入表描述"}],module_name:[{required:!0,message:"请输入模块名"}],generate_type:[{required:!0,trigger:"change"}],template_type:[{required:!0,trigger:"change"}],"menu.pid":[{required:!0,message:"请选择父级菜单"}],"menu.name":[{required:!0,message:"请输入菜单名称"}],"delete.type":[{required:!0,trigger:"change"}],"delete.name":[{required:!0,message:"请选择删除字段"}]}),W=async(d,e,k)=>{var V,_;x.value=!0,await Oe(),e&&k!==void 0&&((V=Q.value)==null||V.setFormData(e),L=k),(_=Q.value)==null||_.open(d)},me=d=>{const e=te.cloneDeep(le(d));o.relations.push(e)},re=async d=>{const e=te.cloneDeep(le(d));console.log(L),o.relations.splice(L,1,e)},ie=d=>{o.relations.splice(d,1)},pe=async()=>{const d=await Ge({id:c.query.id});Object.keys(o).forEach(e=>{o[e]=d[e]}),Pe(()=>o.generate_type,e=>{e==1&&ae.confirm("生成到模块方式如遇同名文件会覆盖旧文件,确定要选择此方式吗?").catch(()=>{o.generate_type=0})})},{optionsData:K}=je({dict_type:{api:Qe},menu:{api:Le,transformData(d){const e={id:0,name:"顶级",children:[]};return e.children=d,[e]}}}),_e=async()=>{var d,e;try{await((d=z.value)==null?void 0:d.validate()),await He(o),S.back()}catch(k){for(const V in k)Object.keys(J).includes(V)&&ae.msgError((e=k[V][0])==null?void 0:e.message)}};return pe(),(d,e)=>{const k=ge,V=ke,_=xe,r=qe,N=Ee,i=De,b=Ae,m=$e,U=Re,M=Ce,y=Te,B=Ie,fe=Ne,be=Se,O=Be,X=Ke,ve=we,ce=Ue,Ve=ye;return p(),v("div",Me,[l(V,{class:"!border-none",shadow:"never"},{default:t(()=>[l(k,{content:"编辑数据表",onBack:e[0]||(e[0]=a=>d.$router.back())})]),_:1}),l(V,{class:"mt-4 !border-none",shadow:"never"},{default:t(()=>[l(ce,{ref_key:"formRef",ref:z,class:"ls-form",model:n(o),"label-width":"100px",rules:n(J)},{default:t(()=>[l(ve,{modelValue:n(A),"onUpdate:modelValue":e[25]||(e[25]=a=>C(A)?A.value=a:null)},{default:t(()=>[l(N,{label:"基础信息",name:"base"},{default:t(()=>[l(r,{label:"表名称",prop:"table_name"},{default:t(()=>[u("div",Xe,[l(_,{modelValue:n(o).table_name,"onUpdate:modelValue":e[1]||(e[1]=a=>n(o).table_name=a),placeholder:"请输入表名称",clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"表描述",prop:"table_comment"},{default:t(()=>[u("div",Ye,[l(_,{modelValue:n(o).table_comment,"onUpdate:modelValue":e[2]||(e[2]=a=>n(o).table_comment=a),placeholder:"请输入表描述",clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"作者"},{default:t(()=>[u("div",Ze,[l(_,{modelValue:n(o).author,"onUpdate:modelValue":e[3]||(e[3]=a=>n(o).author=a),clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"备注"},{default:t(()=>[u("div",he,[l(_,{modelValue:n(o).remark,"onUpdate:modelValue":e[4]||(e[4]=a=>n(o).remark=a),class:"w-full",type:"textarea",autosize:{minRows:4,maxRows:4},maxlength:"200","show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1})]),_:1}),l(N,{label:"字段管理",name:"column"},{default:t(()=>[l(M,{data:n(o).table_column},{default:t(()=>[l(i,{label:"字段列名",prop:"column_name"}),l(i,{label:"字段描述",prop:"column_comment","min-width":"120"},{default:t(({row:a})=>[l(_,{modelValue:a.column_comment,"onUpdate:modelValue":s=>a.column_comment=s,clearable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"物理类型",prop:"column_type"}),l(i,{label:"必填",width:"80"},{header:t(()=>[u("div",el,[l(b,{modelValue:n(g),"onUpdate:modelValue":e[5]||(e[5]=a=>C(g)?g.value=a:null),onChange:oe},null,8,["modelValue"]),e[26]||(e[26]=u("span",null,"必填",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_required,"onUpdate:modelValue":s=>a.is_required=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"插入",width:"80"},{header:t(()=>[u("div",ll,[l(b,{modelValue:n(R),"onUpdate:modelValue":e[6]||(e[6]=a=>C(R)?R.value=a:null),onChange:ne},null,8,["modelValue"]),e[27]||(e[27]=u("span",null,"插入",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_insert,"onUpdate:modelValue":s=>a.is_insert=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"编辑",width:"80"},{header:t(()=>[u("div",al,[l(b,{modelValue:n($),"onUpdate:modelValue":e[7]||(e[7]=a=>C($)?$.value=a:null),onChange:ue},null,8,["modelValue"]),e[28]||(e[28]=u("span",null,"编辑",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_update,"onUpdate:modelValue":s=>a.is_update=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"列表",width:"80"},{header:t(()=>[u("div",tl,[l(b,{modelValue:n(I),"onUpdate:modelValue":e[8]||(e[8]=a=>C(I)?I.value=a:null),onChange:de},null,8,["modelValue"]),e[29]||(e[29]=u("span",null,"列表",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_lists,"onUpdate:modelValue":s=>a.is_lists=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"查询",width:"80"},{header:t(()=>[u("div",ol,[l(b,{modelValue:n(T),"onUpdate:modelValue":e[9]||(e[9]=a=>C(T)?T.value=a:null),onChange:se},null,8,["modelValue"]),e[30]||(e[30]=u("span",null,"查询",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_query,"onUpdate:modelValue":s=>a.is_query=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"查询方式"},{default:t(({row:a})=>[l(U,{modelValue:a.query_type,"onUpdate:modelValue":s=>a.query_type=s},{default:t(()=>[l(m,{label:"=",value:"="}),l(m,{label:"!=",value:"!="}),l(m,{label:">",value:">"}),l(m,{label:">=",value:">="}),l(m,{label:"<",value:"<"}),l(m,{label:"<=",value:"<="}),l(m,{label:"LIKE",value:"like"}),l(m,{label:"BETWEEN",value:"between"})]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"显示类型","min-width":"120"},{default:t(({row:a})=>[l(U,{modelValue:a.view_type,"onUpdate:modelValue":s=>a.view_type=s},{default:t(()=>[l(m,{label:"文本框",value:"input"}),l(m,{label:"文本域",value:"textarea"}),l(m,{label:"下拉框",value:"select"}),l(m,{label:"单选框",value:"radio"}),l(m,{label:"复选框",value:"checkbox"}),l(m,{label:"日期控件",value:"datetime"}),l(m,{label:"图片选择控件",value:"imageSelect"}),l(m,{label:"富文本控件",value:"editor"})]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"字典类型","min-width":"120"},{default:t(({row:a})=>[l(U,{modelValue:a.dict_type,"onUpdate:modelValue":s=>a.dict_type=s,clearable:"",disabled:!(a.view_type=="select"||a.view_type=="radio"||a.view_type=="checkbox"),placeholder:"字典类型"},{default:t(()=>[(p(!0),v(q,null,D(n(K).dict_type,(s,G)=>(p(),w(m,{key:G,label:s.name,value:s.type,disabled:!s.status},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","disabled"])]),_:1})]),_:1},8,["data"])]),_:1}),l(N,{label:"生成配置",name:"config"},{default:t(()=>[l(r,{label:"模板类型",prop:"template_type"},{default:t(()=>[l(B,{modelValue:n(o).template_type,"onUpdate:modelValue":e[10]||(e[10]=a=>n(o).template_type=a)},{default:t(()=>[l(y,{value:0},{default:t(()=>[...e[31]||(e[31]=[f("单表(curd)",-1)])]),_:1}),l(y,{value:1},{default:t(()=>[...e[32]||(e[32]=[f("树表(curd)",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"删除类型",prop:"delete.type"},{default:t(()=>[l(B,{modelValue:n(o).delete.type,"onUpdate:modelValue":e[11]||(e[11]=a=>n(o).delete.type=a)},{default:t(()=>[l(y,{value:0},{default:t(()=>[...e[33]||(e[33]=[f("物理删除",-1)])]),_:1}),l(y,{value:1},{default:t(()=>[...e[34]||(e[34]=[f("软删除",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),n(o).delete.type==1?(p(),w(r,{key:0,label:"删除字段",prop:"delete.name"},{default:t(()=>[l(U,{class:"w-80",modelValue:n(o).delete.name,"onUpdate:modelValue":e[12]||(e[12]=a=>n(o).delete.name=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1})):H("",!0),n(o).template_type==1?(p(),v(q,{key:1},[l(r,{label:"树表ID",prop:"treePrimary"},{default:t(()=>[u("div",null,[l(U,{class:"w-80",modelValue:n(o).tree.tree_id,"onUpdate:modelValue":e[13]||(e[13]=a=>n(o).tree.tree_id=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"]),e[35]||(e[35]=u("div",{class:"form-tips"},"指定树表的主要ID,一般为主键",-1))])]),_:1}),l(r,{label:"树表父ID",prop:"treeParent"},{default:t(()=>[u("div",null,[l(U,{class:"w-80",modelValue:n(o).tree.tree_pid,"onUpdate:modelValue":e[14]||(e[14]=a=>n(o).tree.tree_pid=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"]),e[36]||(e[36]=u("div",{class:"form-tips"},"指定树表的父ID,比如:parent_id",-1))])]),_:1}),l(r,{label:"树名称",prop:"treeName"},{default:t(()=>[l(U,{class:"w-80",modelValue:n(o).tree.tree_name,"onUpdate:modelValue":e[15]||(e[15]=a=>n(o).tree.tree_name=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1})],64)):H("",!0),l(r,{label:"类描述"},{default:t(()=>[u("div",nl,[u("div",null,[l(_,{modelValue:n(o).class_comment,"onUpdate:modelValue":e[16]||(e[16]=a=>n(o).class_comment=a),placeholder:"请输入文件描述",clearable:""},null,8,["modelValue"])]),e[37]||(e[37]=u("div",{class:"form-tips"},[u("div",null," 例:填写test,生成文件描述为test控制器(test逻辑/test模型) ")],-1))])]),_:1}),l(r,{label:"生成方式",prop:"generate_type"},{default:t(()=>[l(B,{modelValue:n(o).generate_type,"onUpdate:modelValue":e[17]||(e[17]=a=>n(o).generate_type=a)},{default:t(()=>[l(y,{value:0},{default:t(()=>[...e[38]||(e[38]=[f("压缩包下载",-1)])]),_:1}),l(y,{value:1},{default:t(()=>[...e[39]||(e[39]=[f("生成到模块",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"模块名",prop:"module_name"},{default:t(()=>[u("div",ul,[l(_,{modelValue:n(o).module_name,"onUpdate:modelValue":e[18]||(e[18]=a=>n(o).module_name=a),placeholder:"请输入模块名",clearable:""},null,8,["modelValue"]),e[40]||(e[40]=u("div",{class:"form-tips"},"生成文件所在模块",-1))])]),_:1}),l(r,{label:"类目录"},{default:t(()=>[u("div",dl,[u("div",null,[l(_,{modelValue:n(o).class_dir,"onUpdate:modelValue":e[19]||(e[19]=a=>n(o).class_dir=a),placeholder:"请输入文件所在目录",clearable:""},null,8,["modelValue"])]),e[41]||(e[41]=u("div",{class:"form-tips"},[u("div",null," 例:填写test,则在app/模块名/controller/test下生成控制器 ")],-1))])]),_:1}),l(r,{label:"父级菜单",prop:"menu.pid"},{default:t(()=>[l(fe,{class:"w-80",modelValue:n(o).menu.pid,"onUpdate:modelValue":e[20]||(e[20]=a=>n(o).menu.pid=a),data:n(K).menu,clearable:"","node-key":"id",props:{label:"name"},"default-expand-all":"",placeholder:"请选择父级菜单","check-strictly":""},null,8,["modelValue","data"])]),_:1}),l(r,{label:"菜单名称",prop:"menu.name"},{default:t(()=>[u("div",sl,[l(_,{modelValue:n(o).menu.name,"onUpdate:modelValue":e[21]||(e[21]=a=>n(o).menu.name=a),placeholder:"请输入菜单名称",clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"菜单构建",prop:"menu.type",required:""},{default:t(()=>[u("div",null,[l(B,{modelValue:n(o).menu.type,"onUpdate:modelValue":e[22]||(e[22]=a=>n(o).menu.type=a)},{default:t(()=>[l(y,{value:1},{default:t(()=>[...e[42]||(e[42]=[f("自动构建",-1)])]),_:1}),l(y,{value:0},{default:t(()=>[...e[43]||(e[43]=[f("手动添加",-1)])]),_:1})]),_:1},8,["modelValue"]),e[44]||(e[44]=u("div",{class:"form-tips"}," 自动构建:自动执行生成菜单sql。手动添加:自行添加菜单。 ",-1))])]),_:1})]),_:1}),l(N,{label:"关联配置",name:"relations"},{default:t(()=>[l(O,{type:"primary",onClick:e[23]||(e[23]=a=>W("add"))},{icon:t(()=>[l(be,{name:"el-icon-Plus"})]),default:t(()=>[e[45]||(e[45]=f(" 新增关联 ",-1))]),_:1}),u("div",ml,[l(M,{data:n(o).relations,size:"small"},{default:t(()=>[l(i,{prop:"type",label:"关联类型"},{default:t(({row:a})=>[l(X,{value:a.type,options:F},null,8,["value"])]),_:1}),l(i,{prop:"name",label:"关联名称"}),l(i,{prop:"model",label:"关联模型"}),l(i,{prop:"local_key",label:"关联键"},{default:t(({row:a})=>[l(X,{value:a.local_key,options:n(o).table_column,config:{label:"column_comment",value:"column_name"}},null,8,["value","options"])]),_:1}),l(i,{prop:"foreign_key",label:"外键"}),l(i,{label:"操作"},{default:t(({row:a,$index:s})=>[l(O,{link:"",type:"primary",onClick:G=>W("edit",a,s)},{default:t(()=>[...e[46]||(e[46]=[f(" 编辑 ",-1)])]),_:1},8,["onClick"]),l(O,{link:"",type:"danger",onClick:G=>ie(s)},{default:t(()=>[...e[47]||(e[47]=[f(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),n(x)?(p(),w(ze,{key:0,column:n(o).table_column,types:F,ref_key:"editRef",ref:Q,onAdd:me,onEdit:re,onClose:e[24]||(e[24]=a=>x.value=!1)},null,8,["column"])):H("",!0)])]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["model","rules"])]),_:1}),l(Ve,null,{default:t(()=>[l(O,{type:"primary",onClick:_e},{default:t(()=>[...e[48]||(e[48]=[f("保存",-1)])]),_:1})]),_:1})])}}}),aa=Fe(il,[["__scopeId","data-v-f4669353"]]);export{aa as default};
+import{_ as ye}from"./index-x1zzA0a7.js";import{O as ge,J as ke,D as Ue,m as we,l as Ee,B as qe,C as xe,M as Ce,N as De,H as Ae,P as Re,Q as $e,G as Ie,I as Te,W as Ne,i as Be}from"./element-plus-DFTWCWyi.js";import{f as j,ak as p,I as v,F as q,ap as D,A as Y,a as l,aN as t,J as u,G as w,O as f,H,n as Oe,w as Pe}from"./@vue/runtime-core-C6bnekPw.js";import{Q as Z}from"./@vue/shared-mAAVTE9n.js";import{y as n,a as C,n as E,r as h,q as ee,t as le}from"./@vue/reactivity-DiY1c2vO.js";import{c as Se,i as ae,_ as Fe}from"./index-DBREMm_z.js";import{l as te}from"./lodash-D3kF6u-c.js";import{m as Le}from"./menu-CvPcniJ1.js";import{d as Qe}from"./dict-BKviBR_7.js";import{t as Ge,g as He}from"./code-UKo2HpQE.js";import{u as je}from"./useDictOptions-Dl6xXBty.js";import{_ as ze}from"./relations-add.vue_vue_type_script_setup_true_lang-o4iTfF3G.js";import{u as Je,a as We}from"./vue-router-QlpZ4wdW.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";const Ke=j({__name:"index",props:{options:{default:()=>[]},value:{},config:{default:()=>({label:"name",value:"value"})}},setup(P){const c=P,S=Y(()=>c.value!==null&&typeof c.value<"u"?Array.isArray(c.value)?c.value:String(c.value).split(","):[]),A=Y(()=>c.options.filter(x=>S.value.includes(x[c.config.value])));return(x,F)=>(p(),v("div",null,[(p(!0),v(q,null,D(n(A),(o,g)=>(p(),v("span",{key:g},Z(g!=0?"、":"")+Z(o[P.config.label]),1))),128))]))}}),Me={class:"code-edit"},Xe={class:"w-80"},Ye={class:"w-80"},Ze={class:"w-80"},he={class:"w-80"},el={class:"header-checkbox"},ll={class:"header-checkbox"},al={class:"header-checkbox"},tl={class:"header-checkbox"},ol={class:"header-checkbox"},nl={class:"w-80"},ul={class:"w-80"},dl={class:"w-80"},sl={class:"w-80"},ml={class:"mt-4"},rl=j({name:"tableEdit"}),il=j({...rl,setup(P){const c=Je(),S=We(),A=E("column"),x=E(!1),F=[{name:"一对一",value:"has_one"},{name:"一对多",value:"has_many"}],o=h({id:"",table_name:"",table_comment:"",author:"",remark:"",template_type:0,generate_type:0,module_name:"",class_dir:"",class_comment:"",table_column:[],menu:{pid:0,name:"",type:0},tree:{tree_id:0,tree_pid:0,tree_name:0},delete:{name:"",type:0},relations:[]}),g=E(!1),R=E(!1),$=E(!1),I=E(!1),T=E(!1),oe=()=>{o.table_column.forEach(d=>{d.is_required=g.value?1:0})},ne=()=>{o.table_column.forEach(d=>{d.is_insert=R.value?1:0})},ue=()=>{o.table_column.forEach(d=>{d.is_update=$.value?1:0})},de=()=>{o.table_column.forEach(d=>{d.is_lists=I.value?1:0})},se=()=>{o.table_column.forEach(d=>{d.is_query=T.value?1:0})};let L=0;const z=ee(),Q=ee(),J=h({table_name:[{required:!0,message:"请输入表名称"}],table_comment:[{required:!0,message:"请输入表描述"}],module_name:[{required:!0,message:"请输入模块名"}],generate_type:[{required:!0,trigger:"change"}],template_type:[{required:!0,trigger:"change"}],"menu.pid":[{required:!0,message:"请选择父级菜单"}],"menu.name":[{required:!0,message:"请输入菜单名称"}],"delete.type":[{required:!0,trigger:"change"}],"delete.name":[{required:!0,message:"请选择删除字段"}]}),W=async(d,e,k)=>{var V,_;x.value=!0,await Oe(),e&&k!==void 0&&((V=Q.value)==null||V.setFormData(e),L=k),(_=Q.value)==null||_.open(d)},me=d=>{const e=te.cloneDeep(le(d));o.relations.push(e)},re=async d=>{const e=te.cloneDeep(le(d));console.log(L),o.relations.splice(L,1,e)},ie=d=>{o.relations.splice(d,1)},pe=async()=>{const d=await Ge({id:c.query.id});Object.keys(o).forEach(e=>{o[e]=d[e]}),Pe(()=>o.generate_type,e=>{e==1&&ae.confirm("生成到模块方式如遇同名文件会覆盖旧文件,确定要选择此方式吗?").catch(()=>{o.generate_type=0})})},{optionsData:K}=je({dict_type:{api:Qe},menu:{api:Le,transformData(d){const e={id:0,name:"顶级",children:[]};return e.children=d,[e]}}}),_e=async()=>{var d,e;try{await((d=z.value)==null?void 0:d.validate()),await He(o),S.back()}catch(k){for(const V in k)Object.keys(J).includes(V)&&ae.msgError((e=k[V][0])==null?void 0:e.message)}};return pe(),(d,e)=>{const k=ge,V=ke,_=xe,r=qe,N=Ee,i=De,b=Ae,m=$e,U=Re,M=Ce,y=Te,B=Ie,fe=Ne,be=Se,O=Be,X=Ke,ve=we,ce=Ue,Ve=ye;return p(),v("div",Me,[l(V,{class:"!border-none",shadow:"never"},{default:t(()=>[l(k,{content:"编辑数据表",onBack:e[0]||(e[0]=a=>d.$router.back())})]),_:1}),l(V,{class:"mt-4 !border-none",shadow:"never"},{default:t(()=>[l(ce,{ref_key:"formRef",ref:z,class:"ls-form",model:n(o),"label-width":"100px",rules:n(J)},{default:t(()=>[l(ve,{modelValue:n(A),"onUpdate:modelValue":e[25]||(e[25]=a=>C(A)?A.value=a:null)},{default:t(()=>[l(N,{label:"基础信息",name:"base"},{default:t(()=>[l(r,{label:"表名称",prop:"table_name"},{default:t(()=>[u("div",Xe,[l(_,{modelValue:n(o).table_name,"onUpdate:modelValue":e[1]||(e[1]=a=>n(o).table_name=a),placeholder:"请输入表名称",clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"表描述",prop:"table_comment"},{default:t(()=>[u("div",Ye,[l(_,{modelValue:n(o).table_comment,"onUpdate:modelValue":e[2]||(e[2]=a=>n(o).table_comment=a),placeholder:"请输入表描述",clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"作者"},{default:t(()=>[u("div",Ze,[l(_,{modelValue:n(o).author,"onUpdate:modelValue":e[3]||(e[3]=a=>n(o).author=a),clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"备注"},{default:t(()=>[u("div",he,[l(_,{modelValue:n(o).remark,"onUpdate:modelValue":e[4]||(e[4]=a=>n(o).remark=a),class:"w-full",type:"textarea",autosize:{minRows:4,maxRows:4},maxlength:"200","show-word-limit":"",clearable:""},null,8,["modelValue"])])]),_:1})]),_:1}),l(N,{label:"字段管理",name:"column"},{default:t(()=>[l(M,{data:n(o).table_column},{default:t(()=>[l(i,{label:"字段列名",prop:"column_name"}),l(i,{label:"字段描述",prop:"column_comment","min-width":"120"},{default:t(({row:a})=>[l(_,{modelValue:a.column_comment,"onUpdate:modelValue":s=>a.column_comment=s,clearable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"物理类型",prop:"column_type"}),l(i,{label:"必填",width:"80"},{header:t(()=>[u("div",el,[l(b,{modelValue:n(g),"onUpdate:modelValue":e[5]||(e[5]=a=>C(g)?g.value=a:null),onChange:oe},null,8,["modelValue"]),e[26]||(e[26]=u("span",null,"必填",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_required,"onUpdate:modelValue":s=>a.is_required=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"插入",width:"80"},{header:t(()=>[u("div",ll,[l(b,{modelValue:n(R),"onUpdate:modelValue":e[6]||(e[6]=a=>C(R)?R.value=a:null),onChange:ne},null,8,["modelValue"]),e[27]||(e[27]=u("span",null,"插入",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_insert,"onUpdate:modelValue":s=>a.is_insert=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"编辑",width:"80"},{header:t(()=>[u("div",al,[l(b,{modelValue:n($),"onUpdate:modelValue":e[7]||(e[7]=a=>C($)?$.value=a:null),onChange:ue},null,8,["modelValue"]),e[28]||(e[28]=u("span",null,"编辑",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_update,"onUpdate:modelValue":s=>a.is_update=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"列表",width:"80"},{header:t(()=>[u("div",tl,[l(b,{modelValue:n(I),"onUpdate:modelValue":e[8]||(e[8]=a=>C(I)?I.value=a:null),onChange:de},null,8,["modelValue"]),e[29]||(e[29]=u("span",null,"列表",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_lists,"onUpdate:modelValue":s=>a.is_lists=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"查询",width:"80"},{header:t(()=>[u("div",ol,[l(b,{modelValue:n(T),"onUpdate:modelValue":e[9]||(e[9]=a=>C(T)?T.value=a:null),onChange:se},null,8,["modelValue"]),e[30]||(e[30]=u("span",null,"查询",-1))])]),default:t(({row:a})=>[l(b,{modelValue:a.is_query,"onUpdate:modelValue":s=>a.is_query=s,"true-value":1,"false-value":0},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"查询方式"},{default:t(({row:a})=>[l(U,{modelValue:a.query_type,"onUpdate:modelValue":s=>a.query_type=s},{default:t(()=>[l(m,{label:"=",value:"="}),l(m,{label:"!=",value:"!="}),l(m,{label:">",value:">"}),l(m,{label:">=",value:">="}),l(m,{label:"<",value:"<"}),l(m,{label:"<=",value:"<="}),l(m,{label:"LIKE",value:"like"}),l(m,{label:"BETWEEN",value:"between"})]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"显示类型","min-width":"120"},{default:t(({row:a})=>[l(U,{modelValue:a.view_type,"onUpdate:modelValue":s=>a.view_type=s},{default:t(()=>[l(m,{label:"文本框",value:"input"}),l(m,{label:"文本域",value:"textarea"}),l(m,{label:"下拉框",value:"select"}),l(m,{label:"单选框",value:"radio"}),l(m,{label:"复选框",value:"checkbox"}),l(m,{label:"日期控件",value:"datetime"}),l(m,{label:"图片选择控件",value:"imageSelect"}),l(m,{label:"富文本控件",value:"editor"})]),_:1},8,["modelValue","onUpdate:modelValue"])]),_:1}),l(i,{label:"字典类型","min-width":"120"},{default:t(({row:a})=>[l(U,{modelValue:a.dict_type,"onUpdate:modelValue":s=>a.dict_type=s,clearable:"",disabled:!(a.view_type=="select"||a.view_type=="radio"||a.view_type=="checkbox"),placeholder:"字典类型"},{default:t(()=>[(p(!0),v(q,null,D(n(K).dict_type,(s,G)=>(p(),w(m,{key:G,label:s.name,value:s.type,disabled:!s.status},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","disabled"])]),_:1})]),_:1},8,["data"])]),_:1}),l(N,{label:"生成配置",name:"config"},{default:t(()=>[l(r,{label:"模板类型",prop:"template_type"},{default:t(()=>[l(B,{modelValue:n(o).template_type,"onUpdate:modelValue":e[10]||(e[10]=a=>n(o).template_type=a)},{default:t(()=>[l(y,{value:0},{default:t(()=>[...e[31]||(e[31]=[f("单表(curd)",-1)])]),_:1}),l(y,{value:1},{default:t(()=>[...e[32]||(e[32]=[f("树表(curd)",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"删除类型",prop:"delete.type"},{default:t(()=>[l(B,{modelValue:n(o).delete.type,"onUpdate:modelValue":e[11]||(e[11]=a=>n(o).delete.type=a)},{default:t(()=>[l(y,{value:0},{default:t(()=>[...e[33]||(e[33]=[f("物理删除",-1)])]),_:1}),l(y,{value:1},{default:t(()=>[...e[34]||(e[34]=[f("软删除",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),n(o).delete.type==1?(p(),w(r,{key:0,label:"删除字段",prop:"delete.name"},{default:t(()=>[l(U,{class:"w-80",modelValue:n(o).delete.name,"onUpdate:modelValue":e[12]||(e[12]=a=>n(o).delete.name=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1})):H("",!0),n(o).template_type==1?(p(),v(q,{key:1},[l(r,{label:"树表ID",prop:"treePrimary"},{default:t(()=>[u("div",null,[l(U,{class:"w-80",modelValue:n(o).tree.tree_id,"onUpdate:modelValue":e[13]||(e[13]=a=>n(o).tree.tree_id=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"]),e[35]||(e[35]=u("div",{class:"form-tips"},"指定树表的主要ID,一般为主键",-1))])]),_:1}),l(r,{label:"树表父ID",prop:"treeParent"},{default:t(()=>[u("div",null,[l(U,{class:"w-80",modelValue:n(o).tree.tree_pid,"onUpdate:modelValue":e[14]||(e[14]=a=>n(o).tree.tree_pid=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"]),e[36]||(e[36]=u("div",{class:"form-tips"},"指定树表的父ID,比如:parent_id",-1))])]),_:1}),l(r,{label:"树名称",prop:"treeName"},{default:t(()=>[l(U,{class:"w-80",modelValue:n(o).tree.tree_name,"onUpdate:modelValue":e[15]||(e[15]=a=>n(o).tree.tree_name=a),clearable:""},{default:t(()=>[(p(!0),v(q,null,D(n(o).table_column,a=>(p(),w(m,{key:a.id,value:a.column_name,label:`${a.column_name}:${a.column_comment}`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1})],64)):H("",!0),l(r,{label:"类描述"},{default:t(()=>[u("div",nl,[u("div",null,[l(_,{modelValue:n(o).class_comment,"onUpdate:modelValue":e[16]||(e[16]=a=>n(o).class_comment=a),placeholder:"请输入文件描述",clearable:""},null,8,["modelValue"])]),e[37]||(e[37]=u("div",{class:"form-tips"},[u("div",null," 例:填写test,生成文件描述为test控制器(test逻辑/test模型) ")],-1))])]),_:1}),l(r,{label:"生成方式",prop:"generate_type"},{default:t(()=>[l(B,{modelValue:n(o).generate_type,"onUpdate:modelValue":e[17]||(e[17]=a=>n(o).generate_type=a)},{default:t(()=>[l(y,{value:0},{default:t(()=>[...e[38]||(e[38]=[f("压缩包下载",-1)])]),_:1}),l(y,{value:1},{default:t(()=>[...e[39]||(e[39]=[f("生成到模块",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(r,{label:"模块名",prop:"module_name"},{default:t(()=>[u("div",ul,[l(_,{modelValue:n(o).module_name,"onUpdate:modelValue":e[18]||(e[18]=a=>n(o).module_name=a),placeholder:"请输入模块名",clearable:""},null,8,["modelValue"]),e[40]||(e[40]=u("div",{class:"form-tips"},"生成文件所在模块",-1))])]),_:1}),l(r,{label:"类目录"},{default:t(()=>[u("div",dl,[u("div",null,[l(_,{modelValue:n(o).class_dir,"onUpdate:modelValue":e[19]||(e[19]=a=>n(o).class_dir=a),placeholder:"请输入文件所在目录",clearable:""},null,8,["modelValue"])]),e[41]||(e[41]=u("div",{class:"form-tips"},[u("div",null," 例:填写test,则在app/模块名/controller/test下生成控制器 ")],-1))])]),_:1}),l(r,{label:"父级菜单",prop:"menu.pid"},{default:t(()=>[l(fe,{class:"w-80",modelValue:n(o).menu.pid,"onUpdate:modelValue":e[20]||(e[20]=a=>n(o).menu.pid=a),data:n(K).menu,clearable:"","node-key":"id",props:{label:"name"},"default-expand-all":"",placeholder:"请选择父级菜单","check-strictly":""},null,8,["modelValue","data"])]),_:1}),l(r,{label:"菜单名称",prop:"menu.name"},{default:t(()=>[u("div",sl,[l(_,{modelValue:n(o).menu.name,"onUpdate:modelValue":e[21]||(e[21]=a=>n(o).menu.name=a),placeholder:"请输入菜单名称",clearable:""},null,8,["modelValue"])])]),_:1}),l(r,{label:"菜单构建",prop:"menu.type",required:""},{default:t(()=>[u("div",null,[l(B,{modelValue:n(o).menu.type,"onUpdate:modelValue":e[22]||(e[22]=a=>n(o).menu.type=a)},{default:t(()=>[l(y,{value:1},{default:t(()=>[...e[42]||(e[42]=[f("自动构建",-1)])]),_:1}),l(y,{value:0},{default:t(()=>[...e[43]||(e[43]=[f("手动添加",-1)])]),_:1})]),_:1},8,["modelValue"]),e[44]||(e[44]=u("div",{class:"form-tips"}," 自动构建:自动执行生成菜单sql。手动添加:自行添加菜单。 ",-1))])]),_:1})]),_:1}),l(N,{label:"关联配置",name:"relations"},{default:t(()=>[l(O,{type:"primary",onClick:e[23]||(e[23]=a=>W("add"))},{icon:t(()=>[l(be,{name:"el-icon-Plus"})]),default:t(()=>[e[45]||(e[45]=f(" 新增关联 ",-1))]),_:1}),u("div",ml,[l(M,{data:n(o).relations,size:"small"},{default:t(()=>[l(i,{prop:"type",label:"关联类型"},{default:t(({row:a})=>[l(X,{value:a.type,options:F},null,8,["value"])]),_:1}),l(i,{prop:"name",label:"关联名称"}),l(i,{prop:"model",label:"关联模型"}),l(i,{prop:"local_key",label:"关联键"},{default:t(({row:a})=>[l(X,{value:a.local_key,options:n(o).table_column,config:{label:"column_comment",value:"column_name"}},null,8,["value","options"])]),_:1}),l(i,{prop:"foreign_key",label:"外键"}),l(i,{label:"操作"},{default:t(({row:a,$index:s})=>[l(O,{link:"",type:"primary",onClick:G=>W("edit",a,s)},{default:t(()=>[...e[46]||(e[46]=[f(" 编辑 ",-1)])]),_:1},8,["onClick"]),l(O,{link:"",type:"danger",onClick:G=>ie(s)},{default:t(()=>[...e[47]||(e[47]=[f(" 删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),n(x)?(p(),w(ze,{key:0,column:n(o).table_column,types:F,ref_key:"editRef",ref:Q,onAdd:me,onEdit:re,onClose:e[24]||(e[24]=a=>x.value=!1)},null,8,["column"])):H("",!0)])]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["model","rules"])]),_:1}),l(Ve,null,{default:t(()=>[l(O,{type:"primary",onClick:_e},{default:t(()=>[...e[48]||(e[48]=[f("保存",-1)])]),_:1})]),_:1})])}}}),aa=Fe(il,[["__scopeId","data-v-f4669353"]]);export{aa as default};
diff --git a/server/public/admin/assets/edit-U_naBmb0.js b/server/public/admin/assets/edit-l-loh2uY.js
similarity index 94%
rename from server/public/admin/assets/edit-U_naBmb0.js
rename to server/public/admin/assets/edit-l-loh2uY.js
index 78502d33..8175648a 100644
--- a/server/public/admin/assets/edit-U_naBmb0.js
+++ b/server/public/admin/assets/edit-l-loh2uY.js
@@ -1 +1 @@
-import{O as F,J as G,L,B as O,G as S,I as T,C as U,D as j,i as J}from"./element-plus-0wC3naml.js";import{_ as P}from"./index-9zND60WT.js";import{l as $}from"./lodash-D3kF6u-c.js";import{n as z,s as H}from"./message-CSrefGEU.js";import{j as M,i as Q}from"./index-E47--KT7.js";import{u as A,a as K}from"./vue-router-QlpZ4wdW.js";import{f as w,ak as p,I as c,a as t,aN as o,aP as W,G as X,J as l,O as m,F as Y,ap as Z}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,n as h,r as ee,q as te}from"./@vue/reactivity-DiY1c2vO.js";import{Q as d}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const oe={class:"w-80"},se={class:"flex-1"},ae={class:"w-full max-w-[320px]"},ne={class:"form-tips"},ie=w({name:"noticeEdit"}),Ae=w({...ie,setup(re){const f=A(),y=K(),_=h(!1),s=ee({id:"",scene_name:"",type:"",scene_desc:"",sms_notice:{status:0,template_id:"",content:"",tips:[]},oa_notice:{},mnp_notice:{},system_notice:{}}),k={"sms_notice.template_id":[{required:!0,message:"请输入模板ID",trigger:"blur"}],"sms_notice.content":[{required:!0,message:"请输入短信内容",trigger:"blur"}]},{removeTab:E}=M(),v=te(),V=async()=>{_.value=!0;const i=await z({id:f.query.id});Object.keys(i).forEach(e=>{s[e]=i[e]}),_.value=!1},x=async()=>{var e;await((e=v.value)==null?void 0:e.validate());const i={id:s.id,template:$.pick(s,["sms_notice","oa_notice","mnp_notice","system_notice"])};await H(i),Q.msgSuccess("操作成功"),E(),y.back()};return f.query.id&&V(),(i,e)=>{const D=F,u=G,r=O,b=T,R=S,g=U,B=j,I=J,q=P,C=L;return p(),c("div",null,[t(u,{class:"!border-none",shadow:"never"},{default:o(()=>[t(D,{content:"编辑通知设置",onBack:e[0]||(e[0]=n=>i.$router.back())})]),_:1}),W((p(),X(B,{ref_key:"formRef",ref:v,model:a(s),"label-width":"120px",rules:k},{default:o(()=>[t(u,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[e[4]||(e[4]=l("div",{class:"font-medium mb-7"},"通知名称",-1)),t(r,{label:"通知名称"},{default:o(()=>[m(d(a(s).scene_name),1)]),_:1}),t(r,{label:"通知类型"},{default:o(()=>[m(d(a(s).type),1)]),_:1}),t(r,{label:"通知业务"},{default:o(()=>[m(d(a(s).scene_desc),1)]),_:1})]),_:1}),t(u,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[e[7]||(e[7]=l("div",{class:"font-medium mb-7"},"短信通知",-1)),t(r,{label:"开启状态",prop:"sms_notice.status",required:""},{default:o(()=>[t(R,{modelValue:a(s).sms_notice.status,"onUpdate:modelValue":e[1]||(e[1]=n=>a(s).sms_notice.status=n)},{default:o(()=>[t(b,{value:"0"},{default:o(()=>[...e[5]||(e[5]=[m("关闭",-1)])]),_:1}),t(b,{value:"1"},{default:o(()=>[...e[6]||(e[6]=[m("开启",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(r,{label:"模板ID",prop:"sms_notice.template_id"},{default:o(()=>[l("div",oe,[t(g,{modelValue:a(s).sms_notice.template_id,"onUpdate:modelValue":e[2]||(e[2]=n=>a(s).sms_notice.template_id=n),placeholder:"请输入模板ID"},null,8,["modelValue"])])]),_:1}),t(r,{label:"短信内容",prop:"sms_notice.content"},{default:o(()=>[l("div",se,[l("div",ae,[t(g,{type:"textarea",autosize:{minRows:6,maxRows:6},modelValue:a(s).sms_notice.content,"onUpdate:modelValue":e[3]||(e[3]=n=>a(s).sms_notice.content=n)},null,8,["modelValue"])]),l("div",ne,[(p(!0),c(Y,null,Z(a(s).sms_notice.tips,(n,N)=>(p(),c("div",{key:N},d(n),1))),128))])])]),_:1})]),_:1})]),_:1},8,["model"])),[[C,a(_)]]),t(q,null,{default:o(()=>[t(I,{type:"primary",onClick:x},{default:o(()=>[...e[8]||(e[8]=[m("保存",-1)])]),_:1})]),_:1})])}}});export{Ae as default};
+import{O as F,J as G,L,B as O,G as S,I as T,C as U,D as j,i as J}from"./element-plus-DFTWCWyi.js";import{_ as P}from"./index-x1zzA0a7.js";import{l as $}from"./lodash-D3kF6u-c.js";import{n as z,s as H}from"./message-Dx96dhoI.js";import{j as M,i as Q}from"./index-DBREMm_z.js";import{u as A,a as K}from"./vue-router-QlpZ4wdW.js";import{f as w,ak as p,I as c,a as t,aN as o,aP as W,G as X,J as l,O as m,F as Y,ap as Z}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,n as h,r as ee,q as te}from"./@vue/reactivity-DiY1c2vO.js";import{Q as d}from"./@vue/shared-mAAVTE9n.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const oe={class:"w-80"},se={class:"flex-1"},ae={class:"w-full max-w-[320px]"},ne={class:"form-tips"},ie=w({name:"noticeEdit"}),Ae=w({...ie,setup(re){const f=A(),y=K(),_=h(!1),s=ee({id:"",scene_name:"",type:"",scene_desc:"",sms_notice:{status:0,template_id:"",content:"",tips:[]},oa_notice:{},mnp_notice:{},system_notice:{}}),k={"sms_notice.template_id":[{required:!0,message:"请输入模板ID",trigger:"blur"}],"sms_notice.content":[{required:!0,message:"请输入短信内容",trigger:"blur"}]},{removeTab:E}=M(),v=te(),V=async()=>{_.value=!0;const i=await z({id:f.query.id});Object.keys(i).forEach(e=>{s[e]=i[e]}),_.value=!1},x=async()=>{var e;await((e=v.value)==null?void 0:e.validate());const i={id:s.id,template:$.pick(s,["sms_notice","oa_notice","mnp_notice","system_notice"])};await H(i),Q.msgSuccess("操作成功"),E(),y.back()};return f.query.id&&V(),(i,e)=>{const D=F,u=G,r=O,b=T,R=S,g=U,B=j,I=J,q=P,C=L;return p(),c("div",null,[t(u,{class:"!border-none",shadow:"never"},{default:o(()=>[t(D,{content:"编辑通知设置",onBack:e[0]||(e[0]=n=>i.$router.back())})]),_:1}),W((p(),X(B,{ref_key:"formRef",ref:v,model:a(s),"label-width":"120px",rules:k},{default:o(()=>[t(u,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[e[4]||(e[4]=l("div",{class:"font-medium mb-7"},"通知名称",-1)),t(r,{label:"通知名称"},{default:o(()=>[m(d(a(s).scene_name),1)]),_:1}),t(r,{label:"通知类型"},{default:o(()=>[m(d(a(s).type),1)]),_:1}),t(r,{label:"通知业务"},{default:o(()=>[m(d(a(s).scene_desc),1)]),_:1})]),_:1}),t(u,{class:"!border-none mt-4",shadow:"never"},{default:o(()=>[e[7]||(e[7]=l("div",{class:"font-medium mb-7"},"短信通知",-1)),t(r,{label:"开启状态",prop:"sms_notice.status",required:""},{default:o(()=>[t(R,{modelValue:a(s).sms_notice.status,"onUpdate:modelValue":e[1]||(e[1]=n=>a(s).sms_notice.status=n)},{default:o(()=>[t(b,{value:"0"},{default:o(()=>[...e[5]||(e[5]=[m("关闭",-1)])]),_:1}),t(b,{value:"1"},{default:o(()=>[...e[6]||(e[6]=[m("开启",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(r,{label:"模板ID",prop:"sms_notice.template_id"},{default:o(()=>[l("div",oe,[t(g,{modelValue:a(s).sms_notice.template_id,"onUpdate:modelValue":e[2]||(e[2]=n=>a(s).sms_notice.template_id=n),placeholder:"请输入模板ID"},null,8,["modelValue"])])]),_:1}),t(r,{label:"短信内容",prop:"sms_notice.content"},{default:o(()=>[l("div",se,[l("div",ae,[t(g,{type:"textarea",autosize:{minRows:6,maxRows:6},modelValue:a(s).sms_notice.content,"onUpdate:modelValue":e[3]||(e[3]=n=>a(s).sms_notice.content=n)},null,8,["modelValue"])]),l("div",ne,[(p(!0),c(Y,null,Z(a(s).sms_notice.tips,(n,N)=>(p(),c("div",{key:N},d(n),1))),128))])])]),_:1})]),_:1})]),_:1},8,["model"])),[[C,a(_)]]),t(q,null,{default:o(()=>[t(I,{type:"primary",onClick:x},{default:o(()=>[...e[8]||(e[8]=[m("保存",-1)])]),_:1})]),_:1})])}}});export{Ae as default};
diff --git a/server/public/admin/assets/edit-C5KmTU_p.js b/server/public/admin/assets/edit-wVdfkaAz.js
similarity index 77%
rename from server/public/admin/assets/edit-C5KmTU_p.js
rename to server/public/admin/assets/edit-wVdfkaAz.js
index eec7d12f..47bea939 100644
--- a/server/public/admin/assets/edit-C5KmTU_p.js
+++ b/server/public/admin/assets/edit-wVdfkaAz.js
@@ -1 +1 @@
-import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-BxJc3obM.js";import"./element-plus-0wC3naml.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./role-DPqAO58h.js";import"./index-E47--KT7.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-nymJKQXP.js";export{o as default};
+import{_ as o}from"./edit.vue_vue_type_script_setup_true_lang-CZsj0pig.js";import"./element-plus-DFTWCWyi.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./@vue/runtime-core-C6bnekPw.js";import"./@vue/reactivity-DiY1c2vO.js";import"./@vue/shared-mAAVTE9n.js";import"./@element-plus/icons-vue-HOEUG8sr.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./dict-BKviBR_7.js";import"./index-DBREMm_z.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";import"./index-BwF7vczx.js";export{o as default};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C3YGQx3u.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BBq07rga.js
similarity index 95%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C3YGQx3u.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BBq07rga.js
index d1af7602..d2d64d77 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C3YGQx3u.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BBq07rga.js
@@ -1 +1 @@
-import{D as j,B as H,G as J,I as K,W as P,C as W,aj as $,h as z}from"./element-plus-0wC3naml.js";import{_ as Q}from"./picker.vue_vue_type_script_setup_true_lang-DBWe-4hk.js";import{a as X,b as Y,c as Z,d as h}from"./menu-CJerAkpY.js";import{_ as ee}from"./index-nymJKQXP.js";import{v as le,M as r,w as oe,x as te}from"./index-E47--KT7.js";import{f as ae,ak as i,I as se,a as t,aN as a,O as m,G as f,H as v,J as d,A as de}from"./@vue/runtime-core-C6bnekPw.js";import{n as U,r as ue,y as l,q as w}from"./@vue/reactivity-DiY1c2vO.js";const re={class:"edit-popup"},ne={class:"flex-1"},pe={class:"flex-1"},ie={class:"flex-1"},me={class:"flex-1"},fe={class:"flex-1"},Te=ae({__name:"edit",emits:["success","close"],setup(ve,{expose:x,emit:N}){const c=N,g=w(),y=w(),b=U("add"),C=de(()=>b.value=="edit"?"编辑菜单":"新增菜单"),T=U(le()),O=(u,e)=>{const n=u?T.value.filter(V=>V.toLowerCase().includes(u.toLowerCase())):T.value;e(n.map(V=>({value:V})))},o=ue({id:"",pid:0,type:r.CATALOGUE,icon:"",name:"",sort:0,paths:"",perms:"",component:"",selected:"",params:"",is_cache:1,is_show:1,is_disable:0}),A={pid:[{required:!0,message:"请选择父级菜单",trigger:["blur","change"]}],name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],paths:[{required:!0,message:"请输入路由地址",trigger:"blur"}],component:[{required:!0,message:"请输入组件地址",trigger:"blur"}]},k=U([]),B=async()=>{const u=await X({page_type:0}),e={id:0,name:"顶级",children:[]};e.children=oe(te(u.lists).filter(n=>n.type!=r.BUTTON)),k.value.push(e)},q=async()=>{var u,e;await((u=g.value)==null?void 0:u.validate()),b.value=="edit"?await Y(o):await Z(o),(e=y.value)==null||e.close(),c("success")},M=(u="add")=>{var e;b.value=u,(e=y.value)==null||e.open()},E=u=>{for(const e in o)u[e]!=null&&u[e]!=null&&(o[e]=u[e])},R=async u=>{const e=await h({id:u.id});E(e)},G=()=>{c("close")};return B(),x({open:M,setFormData:E,getDetail:R}),(u,e)=>{const n=K,V=J,p=H,I=P,_=W,L=Q,D=$,F=z,S=j;return i(),se("div",re,[t(ee,{ref_key:"popupRef",ref:y,title:l(C),async:!0,width:"550px",onConfirm:q,onClose:G},{default:a(()=>[t(S,{ref_key:"formRef",ref:g,model:l(o),"label-width":"80px",rules:A},{default:a(()=>[t(p,{label:"菜单类型",prop:"type",required:""},{default:a(()=>[t(V,{modelValue:l(o).type,"onUpdate:modelValue":e[0]||(e[0]=s=>l(o).type=s)},{default:a(()=>[t(n,{value:l(r).CATALOGUE},{default:a(()=>[...e[13]||(e[13]=[m("目录",-1)])]),_:1},8,["value"]),t(n,{value:l(r).MENU},{default:a(()=>[...e[14]||(e[14]=[m("菜单",-1)])]),_:1},8,["value"]),t(n,{value:l(r).BUTTON},{default:a(()=>[...e[15]||(e[15]=[m("按钮",-1)])]),_:1},8,["value"])]),_:1},8,["modelValue"])]),_:1}),t(p,{label:"父级菜单",prop:"pid"},{default:a(()=>[t(I,{class:"flex-1",modelValue:l(o).pid,"onUpdate:modelValue":e[1]||(e[1]=s=>l(o).pid=s),data:l(k),clearable:"","node-key":"id",props:{label:"name"},"default-expand-all":!0,placeholder:"请选择父级菜单","check-strictly":""},null,8,["modelValue","data"])]),_:1}),t(p,{label:"菜单名称",prop:"name"},{default:a(()=>[t(_,{modelValue:l(o).name,"onUpdate:modelValue":e[2]||(e[2]=s=>l(o).name=s),placeholder:"请输入菜单名称",clearable:""},null,8,["modelValue"])]),_:1}),l(o).type!=l(r).BUTTON?(i(),f(p,{key:0,label:"菜单图标",prop:"icon"},{default:a(()=>[t(L,{class:"flex-1",modelValue:l(o).icon,"onUpdate:modelValue":e[3]||(e[3]=s=>l(o).icon=s)},null,8,["modelValue"])]),_:1})):v("",!0),l(o).type!=l(r).BUTTON?(i(),f(p,{key:1,label:"路由路径",prop:"paths"},{default:a(()=>[d("div",ne,[t(_,{modelValue:l(o).paths,"onUpdate:modelValue":e[4]||(e[4]=s=>l(o).paths=s),placeholder:"请输入路由路径",clearable:""},null,8,["modelValue"]),e[16]||(e[16]=d("div",{class:"form-tips"}," 访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头 ",-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:2,label:"组件路径",prop:"component"},{default:a(()=>[d("div",pe,[t(D,{class:"w-full",modelValue:l(o).component,"onUpdate:modelValue":e[5]||(e[5]=s=>l(o).component=s),"fetch-suggestions":O,clearable:"",placeholder:"请输入组件路径"},null,8,["modelValue"]),e[17]||(e[17]=d("div",{class:"form-tips"}," 访问的组件路径,如:`user/setting`,默认在`views`目录下 ",-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:3,label:"选中菜单",prop:"selected"},{default:a(()=>[d("div",ie,[t(_,{modelValue:l(o).selected,"onUpdate:modelValue":e[6]||(e[6]=s=>l(o).selected=s),placeholder:"请输入路由路径",clearable:""},null,8,["modelValue"]),e[18]||(e[18]=d("div",{class:"form-tips"}," 访问详情页面,编辑页面时,菜单高亮显示,如`/consumer/lists` ",-1))])]),_:1})):v("",!0),l(o).type!=l(r).CATALOGUE?(i(),f(p,{key:4,label:"权限字符",prop:"perms"},{default:a(()=>[d("div",me,[t(_,{modelValue:l(o).perms,"onUpdate:modelValue":e[7]||(e[7]=s=>l(o).perms=s),placeholder:"请输入权限字符",clearable:""},null,8,["modelValue"]),e[19]||(e[19]=d("div",{class:"form-tips"}," 将作为server端API验权使用,如`auth.admin/user`,请谨慎修改 ",-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:5,label:"路由参数",prop:"params"},{default:a(()=>[d("div",null,[d("div",fe,[t(_,{modelValue:l(o).params,"onUpdate:modelValue":e[8]||(e[8]=s=>l(o).params=s),placeholder:"请输入路由参数",clearable:""},null,8,["modelValue"])]),e[20]||(e[20]=d("div",{class:"form-tips"},' 访问路由的默认传递参数,如:`{"id": 1, "name": "admin"}`或`id=1&name=admin` ',-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:6,label:"是否缓存",prop:"is_cache",required:""},{default:a(()=>[d("div",null,[t(V,{modelValue:l(o).is_cache,"onUpdate:modelValue":e[9]||(e[9]=s=>l(o).is_cache=s)},{default:a(()=>[t(n,{value:1},{default:a(()=>[...e[21]||(e[21]=[m("缓存",-1)])]),_:1}),t(n,{value:0},{default:a(()=>[...e[22]||(e[22]=[m("不缓存",-1)])]),_:1})]),_:1},8,["modelValue"]),e[23]||(e[23]=d("div",{class:"form-tips"},"选择缓存则会被`keep-alive`缓存",-1))])]),_:1})):v("",!0),l(o).type!=l(r).BUTTON?(i(),f(p,{key:7,label:"是否显示",prop:"is_show",required:""},{default:a(()=>[d("div",null,[t(V,{modelValue:l(o).is_show,"onUpdate:modelValue":e[10]||(e[10]=s=>l(o).is_show=s)},{default:a(()=>[t(n,{value:1},{default:a(()=>[...e[24]||(e[24]=[m("显示",-1)])]),_:1}),t(n,{value:0},{default:a(()=>[...e[25]||(e[25]=[m("隐藏",-1)])]),_:1})]),_:1},8,["modelValue"]),e[26]||(e[26]=d("div",{class:"form-tips"}," 选择隐藏则路由将不会出现在侧边栏,但仍然可以访问 ",-1))])]),_:1})):v("",!0),l(o).type!=l(r).BUTTON?(i(),f(p,{key:8,label:"菜单状态",prop:"is_disable",required:""},{default:a(()=>[d("div",null,[t(V,{modelValue:l(o).is_disable,"onUpdate:modelValue":e[11]||(e[11]=s=>l(o).is_disable=s)},{default:a(()=>[t(n,{value:0},{default:a(()=>[...e[27]||(e[27]=[m("正常",-1)])]),_:1}),t(n,{value:1},{default:a(()=>[...e[28]||(e[28]=[m("停用",-1)])]),_:1})]),_:1},8,["modelValue"]),e[29]||(e[29]=d("div",{class:"form-tips"},"选择停用则路由将不会出现在侧边栏,也不能被访问",-1))])]),_:1})):v("",!0),t(p,{label:"菜单排序",prop:"sort"},{default:a(()=>[d("div",null,[t(F,{modelValue:l(o).sort,"onUpdate:modelValue":e[12]||(e[12]=s=>l(o).sort=s),min:0,max:9999},null,8,["modelValue"]),e[30]||(e[30]=d("div",{class:"form-tips"},"数值越大越排前",-1))])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{Te as _};
+import{D as j,B as H,G as J,I as K,W as P,C as W,aj as $,h as z}from"./element-plus-DFTWCWyi.js";import{_ as Q}from"./picker.vue_vue_type_script_setup_true_lang-CqrG0MgW.js";import{a as X,b as Y,c as Z,d as h}from"./menu-CvPcniJ1.js";import{_ as ee}from"./index-BwF7vczx.js";import{v as le,M as r,w as oe,x as te}from"./index-DBREMm_z.js";import{f as ae,ak as i,I as se,a as t,aN as a,O as m,G as f,H as v,J as d,A as de}from"./@vue/runtime-core-C6bnekPw.js";import{n as U,r as ue,y as l,q as w}from"./@vue/reactivity-DiY1c2vO.js";const re={class:"edit-popup"},ne={class:"flex-1"},pe={class:"flex-1"},ie={class:"flex-1"},me={class:"flex-1"},fe={class:"flex-1"},Te=ae({__name:"edit",emits:["success","close"],setup(ve,{expose:x,emit:N}){const c=N,g=w(),y=w(),b=U("add"),C=de(()=>b.value=="edit"?"编辑菜单":"新增菜单"),T=U(le()),O=(u,e)=>{const n=u?T.value.filter(V=>V.toLowerCase().includes(u.toLowerCase())):T.value;e(n.map(V=>({value:V})))},o=ue({id:"",pid:0,type:r.CATALOGUE,icon:"",name:"",sort:0,paths:"",perms:"",component:"",selected:"",params:"",is_cache:1,is_show:1,is_disable:0}),A={pid:[{required:!0,message:"请选择父级菜单",trigger:["blur","change"]}],name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],paths:[{required:!0,message:"请输入路由地址",trigger:"blur"}],component:[{required:!0,message:"请输入组件地址",trigger:"blur"}]},k=U([]),B=async()=>{const u=await X({page_type:0}),e={id:0,name:"顶级",children:[]};e.children=oe(te(u.lists).filter(n=>n.type!=r.BUTTON)),k.value.push(e)},q=async()=>{var u,e;await((u=g.value)==null?void 0:u.validate()),b.value=="edit"?await Y(o):await Z(o),(e=y.value)==null||e.close(),c("success")},M=(u="add")=>{var e;b.value=u,(e=y.value)==null||e.open()},E=u=>{for(const e in o)u[e]!=null&&u[e]!=null&&(o[e]=u[e])},R=async u=>{const e=await h({id:u.id});E(e)},G=()=>{c("close")};return B(),x({open:M,setFormData:E,getDetail:R}),(u,e)=>{const n=K,V=J,p=H,I=P,_=W,L=Q,D=$,F=z,S=j;return i(),se("div",re,[t(ee,{ref_key:"popupRef",ref:y,title:l(C),async:!0,width:"550px",onConfirm:q,onClose:G},{default:a(()=>[t(S,{ref_key:"formRef",ref:g,model:l(o),"label-width":"80px",rules:A},{default:a(()=>[t(p,{label:"菜单类型",prop:"type",required:""},{default:a(()=>[t(V,{modelValue:l(o).type,"onUpdate:modelValue":e[0]||(e[0]=s=>l(o).type=s)},{default:a(()=>[t(n,{value:l(r).CATALOGUE},{default:a(()=>[...e[13]||(e[13]=[m("目录",-1)])]),_:1},8,["value"]),t(n,{value:l(r).MENU},{default:a(()=>[...e[14]||(e[14]=[m("菜单",-1)])]),_:1},8,["value"]),t(n,{value:l(r).BUTTON},{default:a(()=>[...e[15]||(e[15]=[m("按钮",-1)])]),_:1},8,["value"])]),_:1},8,["modelValue"])]),_:1}),t(p,{label:"父级菜单",prop:"pid"},{default:a(()=>[t(I,{class:"flex-1",modelValue:l(o).pid,"onUpdate:modelValue":e[1]||(e[1]=s=>l(o).pid=s),data:l(k),clearable:"","node-key":"id",props:{label:"name"},"default-expand-all":!0,placeholder:"请选择父级菜单","check-strictly":""},null,8,["modelValue","data"])]),_:1}),t(p,{label:"菜单名称",prop:"name"},{default:a(()=>[t(_,{modelValue:l(o).name,"onUpdate:modelValue":e[2]||(e[2]=s=>l(o).name=s),placeholder:"请输入菜单名称",clearable:""},null,8,["modelValue"])]),_:1}),l(o).type!=l(r).BUTTON?(i(),f(p,{key:0,label:"菜单图标",prop:"icon"},{default:a(()=>[t(L,{class:"flex-1",modelValue:l(o).icon,"onUpdate:modelValue":e[3]||(e[3]=s=>l(o).icon=s)},null,8,["modelValue"])]),_:1})):v("",!0),l(o).type!=l(r).BUTTON?(i(),f(p,{key:1,label:"路由路径",prop:"paths"},{default:a(()=>[d("div",ne,[t(_,{modelValue:l(o).paths,"onUpdate:modelValue":e[4]||(e[4]=s=>l(o).paths=s),placeholder:"请输入路由路径",clearable:""},null,8,["modelValue"]),e[16]||(e[16]=d("div",{class:"form-tips"}," 访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头 ",-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:2,label:"组件路径",prop:"component"},{default:a(()=>[d("div",pe,[t(D,{class:"w-full",modelValue:l(o).component,"onUpdate:modelValue":e[5]||(e[5]=s=>l(o).component=s),"fetch-suggestions":O,clearable:"",placeholder:"请输入组件路径"},null,8,["modelValue"]),e[17]||(e[17]=d("div",{class:"form-tips"}," 访问的组件路径,如:`user/setting`,默认在`views`目录下 ",-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:3,label:"选中菜单",prop:"selected"},{default:a(()=>[d("div",ie,[t(_,{modelValue:l(o).selected,"onUpdate:modelValue":e[6]||(e[6]=s=>l(o).selected=s),placeholder:"请输入路由路径",clearable:""},null,8,["modelValue"]),e[18]||(e[18]=d("div",{class:"form-tips"}," 访问详情页面,编辑页面时,菜单高亮显示,如`/consumer/lists` ",-1))])]),_:1})):v("",!0),l(o).type!=l(r).CATALOGUE?(i(),f(p,{key:4,label:"权限字符",prop:"perms"},{default:a(()=>[d("div",me,[t(_,{modelValue:l(o).perms,"onUpdate:modelValue":e[7]||(e[7]=s=>l(o).perms=s),placeholder:"请输入权限字符",clearable:""},null,8,["modelValue"]),e[19]||(e[19]=d("div",{class:"form-tips"}," 将作为server端API验权使用,如`auth.admin/user`,请谨慎修改 ",-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:5,label:"路由参数",prop:"params"},{default:a(()=>[d("div",null,[d("div",fe,[t(_,{modelValue:l(o).params,"onUpdate:modelValue":e[8]||(e[8]=s=>l(o).params=s),placeholder:"请输入路由参数",clearable:""},null,8,["modelValue"])]),e[20]||(e[20]=d("div",{class:"form-tips"},' 访问路由的默认传递参数,如:`{"id": 1, "name": "admin"}`或`id=1&name=admin` ',-1))])]),_:1})):v("",!0),l(o).type==l(r).MENU?(i(),f(p,{key:6,label:"是否缓存",prop:"is_cache",required:""},{default:a(()=>[d("div",null,[t(V,{modelValue:l(o).is_cache,"onUpdate:modelValue":e[9]||(e[9]=s=>l(o).is_cache=s)},{default:a(()=>[t(n,{value:1},{default:a(()=>[...e[21]||(e[21]=[m("缓存",-1)])]),_:1}),t(n,{value:0},{default:a(()=>[...e[22]||(e[22]=[m("不缓存",-1)])]),_:1})]),_:1},8,["modelValue"]),e[23]||(e[23]=d("div",{class:"form-tips"},"选择缓存则会被`keep-alive`缓存",-1))])]),_:1})):v("",!0),l(o).type!=l(r).BUTTON?(i(),f(p,{key:7,label:"是否显示",prop:"is_show",required:""},{default:a(()=>[d("div",null,[t(V,{modelValue:l(o).is_show,"onUpdate:modelValue":e[10]||(e[10]=s=>l(o).is_show=s)},{default:a(()=>[t(n,{value:1},{default:a(()=>[...e[24]||(e[24]=[m("显示",-1)])]),_:1}),t(n,{value:0},{default:a(()=>[...e[25]||(e[25]=[m("隐藏",-1)])]),_:1})]),_:1},8,["modelValue"]),e[26]||(e[26]=d("div",{class:"form-tips"}," 选择隐藏则路由将不会出现在侧边栏,但仍然可以访问 ",-1))])]),_:1})):v("",!0),l(o).type!=l(r).BUTTON?(i(),f(p,{key:8,label:"菜单状态",prop:"is_disable",required:""},{default:a(()=>[d("div",null,[t(V,{modelValue:l(o).is_disable,"onUpdate:modelValue":e[11]||(e[11]=s=>l(o).is_disable=s)},{default:a(()=>[t(n,{value:0},{default:a(()=>[...e[27]||(e[27]=[m("正常",-1)])]),_:1}),t(n,{value:1},{default:a(()=>[...e[28]||(e[28]=[m("停用",-1)])]),_:1})]),_:1},8,["modelValue"]),e[29]||(e[29]=d("div",{class:"form-tips"},"选择停用则路由将不会出现在侧边栏,也不能被访问",-1))])]),_:1})):v("",!0),t(p,{label:"菜单排序",prop:"sort"},{default:a(()=>[d("div",null,[t(F,{modelValue:l(o).sort,"onUpdate:modelValue":e[12]||(e[12]=s=>l(o).sort=s),min:0,max:9999},null,8,["modelValue"]),e[30]||(e[30]=d("div",{class:"form-tips"},"数值越大越排前",-1))])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{Te as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-YNgwqh5W.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BCQfswVh.js
similarity index 92%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-YNgwqh5W.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BCQfswVh.js
index 83f96eae..3505204a 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-YNgwqh5W.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BCQfswVh.js
@@ -1 +1 @@
-import{D as h,B as D,C as U,h as q,g as B}from"./element-plus-0wC3naml.js";import{a as I,b as N,c as j}from"./post-Dq6zumLO.js";import{_ as F}from"./index-nymJKQXP.js";import{f as A,ak as S,I as z,a as l,aN as n,J as f,A as J}from"./@vue/runtime-core-C6bnekPw.js";import{y as t,q as _,r as T,n as G}from"./@vue/reactivity-DiY1c2vO.js";const H={class:"edit-popup"},W=A({__name:"edit",emits:["success","close"],setup(K,{expose:b,emit:V}){const i=V,p=_(),m=_(),u=G("add"),v=J(()=>u.value=="edit"?"编辑岗位":"新增岗位"),o=T({id:"",name:"",code:"",sort:0,remark:"",status:1}),w={code:[{required:!0,message:"请输入岗位编码",trigger:["blur"]}],name:[{required:!0,message:"请输入岗位名称",trigger:["blur"]}]},g=async()=>{var a,e;await((a=p.value)==null?void 0:a.validate()),u.value=="edit"?await I(o):await N(o),(e=m.value)==null||e.close(),i("success")},x=(a="add")=>{var e;u.value=a,(e=m.value)==null||e.open()},c=a=>{for(const e in o)a[e]!=null&&a[e]!=null&&(o[e]=a[e])},k=async a=>{const e=await j({id:a.id});c(e)},y=()=>{i("close")};return b({open:x,setFormData:c,getDetail:k}),(a,e)=>{const d=U,r=D,R=q,E=B,C=h;return S(),z("div",H,[l(F,{ref_key:"popupRef",ref:m,title:t(v),async:!0,width:"550px",onConfirm:g,onClose:y},{default:n(()=>[l(C,{ref_key:"formRef",ref:p,model:t(o),"label-width":"84px",rules:w},{default:n(()=>[l(r,{label:"岗位名称",prop:"name"},{default:n(()=>[l(d,{modelValue:t(o).name,"onUpdate:modelValue":e[0]||(e[0]=s=>t(o).name=s),placeholder:"请输入岗位名称",clearable:"",maxlength:100},null,8,["modelValue"])]),_:1}),l(r,{label:"岗位编码",prop:"code"},{default:n(()=>[l(d,{modelValue:t(o).code,"onUpdate:modelValue":e[1]||(e[1]=s=>t(o).code=s),placeholder:"请输入岗位编码",clearable:""},null,8,["modelValue"])]),_:1}),l(r,{label:"排序",prop:"sort"},{default:n(()=>[f("div",null,[l(R,{modelValue:t(o).sort,"onUpdate:modelValue":e[2]||(e[2]=s=>t(o).sort=s),min:0,max:9999},null,8,["modelValue"]),e[5]||(e[5]=f("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),l(r,{label:"备注",prop:"remark"},{default:n(()=>[l(d,{modelValue:t(o).remark,"onUpdate:modelValue":e[3]||(e[3]=s=>t(o).remark=s),placeholder:"请输入备注",type:"textarea",autosize:{minRows:4,maxRows:6},maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1}),l(r,{label:"岗位状态",required:"",prop:"status"},{default:n(()=>[l(E,{modelValue:t(o).status,"onUpdate:modelValue":e[4]||(e[4]=s=>t(o).status=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{W as _};
+import{D as h,B as D,C as U,h as q,g as B}from"./element-plus-DFTWCWyi.js";import{a as I,b as N,c as j}from"./post-RziaWdiV.js";import{_ as F}from"./index-BwF7vczx.js";import{f as A,ak as S,I as z,a as l,aN as n,J as f,A as J}from"./@vue/runtime-core-C6bnekPw.js";import{y as t,q as _,r as T,n as G}from"./@vue/reactivity-DiY1c2vO.js";const H={class:"edit-popup"},W=A({__name:"edit",emits:["success","close"],setup(K,{expose:b,emit:V}){const i=V,p=_(),m=_(),u=G("add"),v=J(()=>u.value=="edit"?"编辑岗位":"新增岗位"),o=T({id:"",name:"",code:"",sort:0,remark:"",status:1}),w={code:[{required:!0,message:"请输入岗位编码",trigger:["blur"]}],name:[{required:!0,message:"请输入岗位名称",trigger:["blur"]}]},g=async()=>{var a,e;await((a=p.value)==null?void 0:a.validate()),u.value=="edit"?await I(o):await N(o),(e=m.value)==null||e.close(),i("success")},x=(a="add")=>{var e;u.value=a,(e=m.value)==null||e.open()},c=a=>{for(const e in o)a[e]!=null&&a[e]!=null&&(o[e]=a[e])},k=async a=>{const e=await j({id:a.id});c(e)},y=()=>{i("close")};return b({open:x,setFormData:c,getDetail:k}),(a,e)=>{const d=U,r=D,R=q,E=B,C=h;return S(),z("div",H,[l(F,{ref_key:"popupRef",ref:m,title:t(v),async:!0,width:"550px",onConfirm:g,onClose:y},{default:n(()=>[l(C,{ref_key:"formRef",ref:p,model:t(o),"label-width":"84px",rules:w},{default:n(()=>[l(r,{label:"岗位名称",prop:"name"},{default:n(()=>[l(d,{modelValue:t(o).name,"onUpdate:modelValue":e[0]||(e[0]=s=>t(o).name=s),placeholder:"请输入岗位名称",clearable:"",maxlength:100},null,8,["modelValue"])]),_:1}),l(r,{label:"岗位编码",prop:"code"},{default:n(()=>[l(d,{modelValue:t(o).code,"onUpdate:modelValue":e[1]||(e[1]=s=>t(o).code=s),placeholder:"请输入岗位编码",clearable:""},null,8,["modelValue"])]),_:1}),l(r,{label:"排序",prop:"sort"},{default:n(()=>[f("div",null,[l(R,{modelValue:t(o).sort,"onUpdate:modelValue":e[2]||(e[2]=s=>t(o).sort=s),min:0,max:9999},null,8,["modelValue"]),e[5]||(e[5]=f("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),l(r,{label:"备注",prop:"remark"},{default:n(()=>[l(d,{modelValue:t(o).remark,"onUpdate:modelValue":e[3]||(e[3]=s=>t(o).remark=s),placeholder:"请输入备注",type:"textarea",autosize:{minRows:4,maxRows:6},maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1}),l(r,{label:"岗位状态",required:"",prop:"status"},{default:n(()=>[l(E,{modelValue:t(o).status,"onUpdate:modelValue":e[4]||(e[4]=s=>t(o).status=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{W as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BRxNvBo2.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Bn53gSK4.js
similarity index 96%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BRxNvBo2.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Bn53gSK4.js
index 09fae55c..76e22978 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BRxNvBo2.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Bn53gSK4.js
@@ -1 +1 @@
-import{D as I,B as M,a2 as Y,P,Q as S,W as A,h as T,C as z}from"./element-plus-0wC3naml.js";import{a as G,b as L,c as Q}from"./finance-C48kuhTG.js";import{_ as W}from"./index-nymJKQXP.js";import{f as j,ak as c,I as f,a as n,aN as d,F as H,ap as J,G as K,A as X}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as h,n as Z,r as $}from"./@vue/reactivity-DiY1c2vO.js";const ee={class:"edit-popup"},de=j({__name:"edit",props:{mediaChannelOptions:{},deptOptions:{},defaultMediaChannelCode:{}},emits:["success","close"],setup(i,{expose:b,emit:g}){const k=i,u=g,p=h(),m=h(),s=Z("add"),V=X(()=>s.value==="edit"?"编辑账户消耗":"新增账户消耗"),w={value:"id",label:"name",children:"children"},e=$({id:"",cost_date:"",media_channel_code:"",dept_id:"",amount:0,remark:""}),C={cost_date:[{required:!0,message:"请选择日期",trigger:["change"]}],media_channel_code:[{required:!0,message:"请选择自媒体渠道",trigger:["change"]}],dept_id:[{required:!0,message:"请选择绑定部门",trigger:["change"]}],amount:[{required:!0,message:"请输入账户消耗金额",trigger:["blur","change"]}]},v=()=>{e.id="",e.cost_date="",e.media_channel_code=k.defaultMediaChannelCode||"",e.dept_id="",e.amount=0,e.remark=""},y=async()=>{var t,a;await((t=p.value)==null?void 0:t.validate()),s.value==="edit"?await G(e):await L(e),(a=m.value)==null||a.close(),u("success")},x=(t="add")=>{var a;s.value=t,v(),(a=m.value)==null||a.open()},_=t=>{e.id=t.id??"",e.cost_date=t.cost_date??"",e.media_channel_code=t.media_channel_code??"",e.dept_id=t.dept_id?Number(t.dept_id):"",e.amount=Number(t.amount??0),e.remark=t.remark??""},E=async t=>{const a=await Q({id:t.id});_(a)},D=()=>{u("close")};return b({open:x,setFormData:_,getDetail:E}),(t,a)=>{const R=Y,r=M,F=S,q=P,N=A,O=T,U=z,B=I;return c(),f("div",ee,[n(W,{ref_key:"popupRef",ref:m,title:l(V),async:!0,width:"560px",onConfirm:y,onClose:D},{default:d(()=>[n(B,{ref_key:"formRef",ref:p,model:l(e),"label-width":"100px",rules:C},{default:d(()=>[n(r,{label:"日期",prop:"cost_date"},{default:d(()=>[n(R,{modelValue:l(e).cost_date,"onUpdate:modelValue":a[0]||(a[0]=o=>l(e).cost_date=o),type:"date","value-format":"YYYY-MM-DD",placeholder:"请选择日期",disabled:l(s)==="edit"},null,8,["modelValue","disabled"])]),_:1}),n(r,{label:"自媒体渠道",prop:"media_channel_code"},{default:d(()=>[n(q,{modelValue:l(e).media_channel_code,"onUpdate:modelValue":a[1]||(a[1]=o=>l(e).media_channel_code=o),placeholder:"请选择自媒体渠道",class:"w-full",filterable:"",disabled:l(s)==="edit"},{default:d(()=>[(c(!0),f(H,null,J(i.mediaChannelOptions,o=>(c(),K(F,{key:o.code,label:o.name,value:o.code},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1}),n(r,{label:"部门",prop:"dept_id"},{default:d(()=>[n(N,{modelValue:l(e).dept_id,"onUpdate:modelValue":a[2]||(a[2]=o=>l(e).dept_id=o),data:i.deptOptions,"node-key":"id",props:w,"default-expand-all":!0,"check-strictly":"",placeholder:"请选择绑定部门",clearable:"",filterable:"",class:"w-full"},null,8,["modelValue","data"])]),_:1}),n(r,{label:"账户消耗",prop:"amount"},{default:d(()=>[n(O,{modelValue:l(e).amount,"onUpdate:modelValue":a[3]||(a[3]=o=>l(e).amount=o),min:0,step:.01,precision:2,class:"w-full"},null,8,["modelValue"])]),_:1}),n(r,{label:"备注",prop:"remark"},{default:d(()=>[n(U,{modelValue:l(e).remark,"onUpdate:modelValue":a[4]||(a[4]=o=>l(e).remark=o),type:"textarea",autosize:{minRows:4,maxRows:6},maxlength:"255","show-word-limit":"",placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{de as _};
+import{D as I,B as M,a2 as Y,P,Q as S,W as A,h as T,C as z}from"./element-plus-DFTWCWyi.js";import{a as G,b as L,c as Q}from"./finance-YaEgIEMc.js";import{_ as W}from"./index-BwF7vczx.js";import{f as j,ak as c,I as f,a as n,aN as d,F as H,ap as J,G as K,A as X}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as h,n as Z,r as $}from"./@vue/reactivity-DiY1c2vO.js";const ee={class:"edit-popup"},de=j({__name:"edit",props:{mediaChannelOptions:{},deptOptions:{},defaultMediaChannelCode:{}},emits:["success","close"],setup(i,{expose:b,emit:g}){const k=i,u=g,p=h(),m=h(),s=Z("add"),V=X(()=>s.value==="edit"?"编辑账户消耗":"新增账户消耗"),w={value:"id",label:"name",children:"children"},e=$({id:"",cost_date:"",media_channel_code:"",dept_id:"",amount:0,remark:""}),C={cost_date:[{required:!0,message:"请选择日期",trigger:["change"]}],media_channel_code:[{required:!0,message:"请选择自媒体渠道",trigger:["change"]}],dept_id:[{required:!0,message:"请选择绑定部门",trigger:["change"]}],amount:[{required:!0,message:"请输入账户消耗金额",trigger:["blur","change"]}]},v=()=>{e.id="",e.cost_date="",e.media_channel_code=k.defaultMediaChannelCode||"",e.dept_id="",e.amount=0,e.remark=""},y=async()=>{var t,a;await((t=p.value)==null?void 0:t.validate()),s.value==="edit"?await G(e):await L(e),(a=m.value)==null||a.close(),u("success")},x=(t="add")=>{var a;s.value=t,v(),(a=m.value)==null||a.open()},_=t=>{e.id=t.id??"",e.cost_date=t.cost_date??"",e.media_channel_code=t.media_channel_code??"",e.dept_id=t.dept_id?Number(t.dept_id):"",e.amount=Number(t.amount??0),e.remark=t.remark??""},E=async t=>{const a=await Q({id:t.id});_(a)},D=()=>{u("close")};return b({open:x,setFormData:_,getDetail:E}),(t,a)=>{const R=Y,r=M,F=S,q=P,N=A,O=T,U=z,B=I;return c(),f("div",ee,[n(W,{ref_key:"popupRef",ref:m,title:l(V),async:!0,width:"560px",onConfirm:y,onClose:D},{default:d(()=>[n(B,{ref_key:"formRef",ref:p,model:l(e),"label-width":"100px",rules:C},{default:d(()=>[n(r,{label:"日期",prop:"cost_date"},{default:d(()=>[n(R,{modelValue:l(e).cost_date,"onUpdate:modelValue":a[0]||(a[0]=o=>l(e).cost_date=o),type:"date","value-format":"YYYY-MM-DD",placeholder:"请选择日期",disabled:l(s)==="edit"},null,8,["modelValue","disabled"])]),_:1}),n(r,{label:"自媒体渠道",prop:"media_channel_code"},{default:d(()=>[n(q,{modelValue:l(e).media_channel_code,"onUpdate:modelValue":a[1]||(a[1]=o=>l(e).media_channel_code=o),placeholder:"请选择自媒体渠道",class:"w-full",filterable:"",disabled:l(s)==="edit"},{default:d(()=>[(c(!0),f(H,null,J(i.mediaChannelOptions,o=>(c(),K(F,{key:o.code,label:o.name,value:o.code},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1}),n(r,{label:"部门",prop:"dept_id"},{default:d(()=>[n(N,{modelValue:l(e).dept_id,"onUpdate:modelValue":a[2]||(a[2]=o=>l(e).dept_id=o),data:i.deptOptions,"node-key":"id",props:w,"default-expand-all":!0,"check-strictly":"",placeholder:"请选择绑定部门",clearable:"",filterable:"",class:"w-full"},null,8,["modelValue","data"])]),_:1}),n(r,{label:"账户消耗",prop:"amount"},{default:d(()=>[n(O,{modelValue:l(e).amount,"onUpdate:modelValue":a[3]||(a[3]=o=>l(e).amount=o),min:0,step:.01,precision:2,class:"w-full"},null,8,["modelValue"])]),_:1}),n(r,{label:"备注",prop:"remark"},{default:d(()=>[n(U,{modelValue:l(e).remark,"onUpdate:modelValue":a[4]||(a[4]=o=>l(e).remark=o),type:"textarea",autosize:{minRows:4,maxRows:6},maxlength:"255","show-word-limit":"",placeholder:"请输入备注"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{de as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BxJc3obM.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Bo8W-Bev.js
similarity index 94%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BxJc3obM.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Bo8W-Bev.js
index b7e66769..55f54da6 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BxJc3obM.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Bo8W-Bev.js
@@ -1 +1 @@
-import{D as h,B as k,C,h as g,P as D,Q as F}from"./element-plus-0wC3naml.js";import{a as I,b as U}from"./role-DPqAO58h.js";import{_ as B}from"./index-nymJKQXP.js";import{f as N,ak as q,I as A,a as o,aN as n,A as S}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,q as _,r as z,n as O}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"edit-popup"},M=N({__name:"edit",emits:["success","close"],setup(Q,{expose:f,emit:b}){const d=b,i=_(),r=_(),u=O("add"),v=S(()=>u.value=="edit"?"编辑角色":"新增角色"),l=z({id:"",name:"",desc:"",sort:0,data_scope:1,menu_id:[]}),V={name:[{required:!0,message:"请输入名称",trigger:["blur"]}]},w=async()=>{var t,e;await((t=i.value)==null?void 0:t.validate()),u.value=="edit"?await I(l):await U(l),(e=r.value)==null||e.close(),d("success")},x=()=>{d("close")};return f({open:(t="add")=>{var e;u.value=t,(e=r.value)==null||e.open()},setFormData:async t=>{for(const e in l)t[e]!=null&&t[e]!=null&&(l[e]=t[e])}}),(t,e)=>{const c=C,m=k,y=g,p=F,E=D,R=h;return q(),A("div",P,[o(B,{ref_key:"popupRef",ref:r,title:a(v),async:!0,width:"550px",onConfirm:w,onClose:x},{default:n(()=>[o(R,{class:"ls-form",ref_key:"formRef",ref:i,rules:V,model:a(l),"label-width":"60px"},{default:n(()=>[o(m,{label:"名称",prop:"name"},{default:n(()=>[o(c,{class:"ls-input",modelValue:a(l).name,"onUpdate:modelValue":e[0]||(e[0]=s=>a(l).name=s),placeholder:"请输入名称",clearable:""},null,8,["modelValue"])]),_:1}),o(m,{label:"备注",prop:"desc"},{default:n(()=>[o(c,{modelValue:a(l).desc,"onUpdate:modelValue":e[1]||(e[1]=s=>a(l).desc=s),type:"textarea",autosize:{minRows:4,maxRows:6},placeholder:"请输入备注",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(m,{label:"排序",prop:"sort"},{default:n(()=>[o(y,{modelValue:a(l).sort,"onUpdate:modelValue":e[2]||(e[2]=s=>a(l).sort=s),min:0,max:9999},null,8,["modelValue"])]),_:1}),o(m,{label:"数据范围",prop:"data_scope"},{default:n(()=>[o(E,{modelValue:a(l).data_scope,"onUpdate:modelValue":e[3]||(e[3]=s=>a(l).data_scope=s),placeholder:"请选择数据范围",class:"ls-input"},{default:n(()=>[o(p,{value:1,label:"全部数据(免隔离)"}),o(p,{value:2,label:"本部门及下级部门"}),o(p,{value:3,label:"仅本部门"}),o(p,{value:4,label:"仅本人"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{M as _};
+import{D as h,B as k,C,h as g,P as D,Q as F}from"./element-plus-DFTWCWyi.js";import{a as I,b as U}from"./role-DTNlgcHU.js";import{_ as B}from"./index-BwF7vczx.js";import{f as N,ak as q,I as A,a as o,aN as n,A as S}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,q as _,r as z,n as O}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"edit-popup"},M=N({__name:"edit",emits:["success","close"],setup(Q,{expose:f,emit:b}){const d=b,i=_(),r=_(),u=O("add"),v=S(()=>u.value=="edit"?"编辑角色":"新增角色"),l=z({id:"",name:"",desc:"",sort:0,data_scope:1,menu_id:[]}),V={name:[{required:!0,message:"请输入名称",trigger:["blur"]}]},w=async()=>{var t,e;await((t=i.value)==null?void 0:t.validate()),u.value=="edit"?await I(l):await U(l),(e=r.value)==null||e.close(),d("success")},x=()=>{d("close")};return f({open:(t="add")=>{var e;u.value=t,(e=r.value)==null||e.open()},setFormData:async t=>{for(const e in l)t[e]!=null&&t[e]!=null&&(l[e]=t[e])}}),(t,e)=>{const c=C,m=k,y=g,p=F,E=D,R=h;return q(),A("div",P,[o(B,{ref_key:"popupRef",ref:r,title:a(v),async:!0,width:"550px",onConfirm:w,onClose:x},{default:n(()=>[o(R,{class:"ls-form",ref_key:"formRef",ref:i,rules:V,model:a(l),"label-width":"60px"},{default:n(()=>[o(m,{label:"名称",prop:"name"},{default:n(()=>[o(c,{class:"ls-input",modelValue:a(l).name,"onUpdate:modelValue":e[0]||(e[0]=s=>a(l).name=s),placeholder:"请输入名称",clearable:""},null,8,["modelValue"])]),_:1}),o(m,{label:"备注",prop:"desc"},{default:n(()=>[o(c,{modelValue:a(l).desc,"onUpdate:modelValue":e[1]||(e[1]=s=>a(l).desc=s),type:"textarea",autosize:{minRows:4,maxRows:6},placeholder:"请输入备注",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(m,{label:"排序",prop:"sort"},{default:n(()=>[o(y,{modelValue:a(l).sort,"onUpdate:modelValue":e[2]||(e[2]=s=>a(l).sort=s),min:0,max:9999},null,8,["modelValue"])]),_:1}),o(m,{label:"数据范围",prop:"data_scope"},{default:n(()=>[o(E,{modelValue:a(l).data_scope,"onUpdate:modelValue":e[3]||(e[3]=s=>a(l).data_scope=s),placeholder:"请选择数据范围",class:"ls-input"},{default:n(()=>[o(p,{value:1,label:"全部数据(免隔离)"}),o(p,{value:2,label:"本部门及下级部门"}),o(p,{value:3,label:"仅本部门"}),o(p,{value:4,label:"仅本人"})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{M as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C3aOnTrX.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CZsj0pig.js
similarity index 91%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C3aOnTrX.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CZsj0pig.js
index eac5ab8a..53a78209 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-C3aOnTrX.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CZsj0pig.js
@@ -1 +1 @@
-import{D as R,B as E,C,G as q,I as D}from"./element-plus-0wC3naml.js";import{g as F,h as I}from"./dict-Nvtnb8GD.js";import{_ as T}from"./index-nymJKQXP.js";import{f as U,ak as B,I as N,a as t,aN as s,O as _,A}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,q as c,r as G,n as h}from"./@vue/reactivity-DiY1c2vO.js";const z={class:"edit-popup"},P=U({__name:"edit",emits:["success","close"],setup(O,{expose:y,emit:V}){const d=V,i=c(),m=c(),u=h("add"),v=A(()=>u.value=="edit"?"编辑字典类型":"新增字典类型"),o=G({id:"",name:"",type:"",status:1,remark:""}),b={name:[{required:!0,message:"请输入字典名称",trigger:["blur"]}],type:[{required:!0,message:"请输入字典类型",trigger:["blur"]}]},w=async()=>{var l,e;await((l=i.value)==null?void 0:l.validate()),u.value=="edit"?await F(o):await I(o),(e=m.value)==null||e.close(),d("success")},g=()=>{d("close")};return y({open:(l="add")=>{var e;u.value=l,(e=m.value)==null||e.open()},setFormData:l=>{for(const e in o)l[e]!=null&&l[e]!=null&&(o[e]=l[e])}}),(l,e)=>{const p=C,n=E,f=D,k=q,x=R;return B(),N("div",z,[t(T,{ref_key:"popupRef",ref:m,title:a(v),async:!0,width:"550px",onConfirm:w,onClose:g},{default:s(()=>[t(x,{class:"ls-form",ref_key:"formRef",ref:i,rules:b,model:a(o),"label-width":"84px"},{default:s(()=>[t(n,{label:"字典名称",prop:"name"},{default:s(()=>[t(p,{modelValue:a(o).name,"onUpdate:modelValue":e[0]||(e[0]=r=>a(o).name=r),placeholder:"请输入字典名称",clearable:""},null,8,["modelValue"])]),_:1}),t(n,{label:"字典类型",prop:"type"},{default:s(()=>[t(p,{modelValue:a(o).type,"onUpdate:modelValue":e[1]||(e[1]=r=>a(o).type=r),placeholder:"请输入字典类型",clearable:""},null,8,["modelValue"])]),_:1}),t(n,{label:"字典状态",required:"",prop:"status"},{default:s(()=>[t(k,{modelValue:a(o).status,"onUpdate:modelValue":e[2]||(e[2]=r=>a(o).status=r)},{default:s(()=>[t(f,{value:1},{default:s(()=>[...e[4]||(e[4]=[_("正常",-1)])]),_:1}),t(f,{value:0},{default:s(()=>[...e[5]||(e[5]=[_("停用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(n,{label:"备注",prop:"remark"},{default:s(()=>[t(p,{modelValue:a(o).remark,"onUpdate:modelValue":e[3]||(e[3]=r=>a(o).remark=r),type:"textarea",autosize:{minRows:4,maxRows:6},clearable:"",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{P as _};
+import{D as R,B as E,C,G as q,I as D}from"./element-plus-DFTWCWyi.js";import{g as F,h as I}from"./dict-BKviBR_7.js";import{_ as T}from"./index-BwF7vczx.js";import{f as U,ak as B,I as N,a as t,aN as s,O as _,A}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,q as c,r as G,n as h}from"./@vue/reactivity-DiY1c2vO.js";const z={class:"edit-popup"},P=U({__name:"edit",emits:["success","close"],setup(O,{expose:y,emit:V}){const d=V,i=c(),m=c(),u=h("add"),v=A(()=>u.value=="edit"?"编辑字典类型":"新增字典类型"),o=G({id:"",name:"",type:"",status:1,remark:""}),b={name:[{required:!0,message:"请输入字典名称",trigger:["blur"]}],type:[{required:!0,message:"请输入字典类型",trigger:["blur"]}]},w=async()=>{var l,e;await((l=i.value)==null?void 0:l.validate()),u.value=="edit"?await F(o):await I(o),(e=m.value)==null||e.close(),d("success")},g=()=>{d("close")};return y({open:(l="add")=>{var e;u.value=l,(e=m.value)==null||e.open()},setFormData:l=>{for(const e in o)l[e]!=null&&l[e]!=null&&(o[e]=l[e])}}),(l,e)=>{const p=C,n=E,f=D,k=q,x=R;return B(),N("div",z,[t(T,{ref_key:"popupRef",ref:m,title:a(v),async:!0,width:"550px",onConfirm:w,onClose:g},{default:s(()=>[t(x,{class:"ls-form",ref_key:"formRef",ref:i,rules:b,model:a(o),"label-width":"84px"},{default:s(()=>[t(n,{label:"字典名称",prop:"name"},{default:s(()=>[t(p,{modelValue:a(o).name,"onUpdate:modelValue":e[0]||(e[0]=r=>a(o).name=r),placeholder:"请输入字典名称",clearable:""},null,8,["modelValue"])]),_:1}),t(n,{label:"字典类型",prop:"type"},{default:s(()=>[t(p,{modelValue:a(o).type,"onUpdate:modelValue":e[1]||(e[1]=r=>a(o).type=r),placeholder:"请输入字典类型",clearable:""},null,8,["modelValue"])]),_:1}),t(n,{label:"字典状态",required:"",prop:"status"},{default:s(()=>[t(k,{modelValue:a(o).status,"onUpdate:modelValue":e[2]||(e[2]=r=>a(o).status=r)},{default:s(()=>[t(f,{value:1},{default:s(()=>[...e[4]||(e[4]=[_("正常",-1)])]),_:1}),t(f,{value:0},{default:s(()=>[...e[5]||(e[5]=[_("停用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(n,{label:"备注",prop:"remark"},{default:s(()=>[t(p,{modelValue:a(o).remark,"onUpdate:modelValue":e[3]||(e[3]=r=>a(o).remark=r),type:"textarea",autosize:{minRows:4,maxRows:6},clearable:"",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{P as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-n7cqpx9_.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Cw38i8Af.js
similarity index 94%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-n7cqpx9_.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Cw38i8Af.js
index 066be4be..56556902 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-n7cqpx9_.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-Cw38i8Af.js
@@ -1 +1 @@
-import{D as B,B as N,W as I,C as q,h as A,g as F}from"./element-plus-0wC3naml.js";import{d as S,a as M,b as T,c as G}from"./department-4lF54x8w.js";import{_ as H}from"./index-nymJKQXP.js";import{u as J}from"./useDictOptions-CypOxw17.js";import{f as O,ak as _,I as W,a as o,aN as r,G as $,H as j,J as V,A as z}from"./@vue/runtime-core-C6bnekPw.js";import{y as t,q as b,r as K,n as L}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"edit-popup"},ae=O({__name:"edit",emits:["success","close"],setup(Q,{expose:g,emit:v}){const p=v,c=b(),m=b(),u=L("add"),w=z(()=>u.value=="edit"?"编辑部门":"新增部门"),l=K({id:"",pid:"",name:"",leader:"",mobile:"",sort:0,status:1}),x={pid:[{required:!0,message:"请选择上级部门",trigger:["change"]}],name:[{required:!0,message:"请输入部门名称",trigger:["blur"]}],mobile:[{validator:(a,e,d)=>{if(e){const n=/^[1][3,4,5,6,7,8,9][0-9]{9}$/;if(console.log(n.test(e)),n.test(e))d();else return d(new Error("请输入正确的手机号"))}else return d()},trigger:["blur"]}]},{optionsData:k}=J({dept:{api:S}}),y=async()=>{var a,e;await((a=c.value)==null?void 0:a.validate()),u.value=="edit"?await M(l):await T(l),(e=m.value)==null||e.close(),p("success")},E=(a="add")=>{var e;u.value=a,(e=m.value)==null||e.open()},f=a=>{for(const e in l)a[e]!=null&&a[e]!=null&&(l[e]=a[e])},h=async a=>{const e=await G({id:a.id});f(e)},C=()=>{p("close")};return g({open:E,setFormData:f,getDetail:h}),(a,e)=>{const d=I,n=N,i=q,D=A,R=F,U=B;return _(),W("div",P,[o(H,{ref_key:"popupRef",ref:m,title:t(w),async:!0,width:"550px",onConfirm:y,onClose:C},{default:r(()=>[o(U,{ref_key:"formRef",ref:c,model:t(l),"label-width":"84px",rules:x},{default:r(()=>[t(l).pid!==0?(_(),$(n,{key:0,label:"上级部门",prop:"pid"},{default:r(()=>[o(d,{class:"flex-1",modelValue:t(l).pid,"onUpdate:modelValue":e[0]||(e[0]=s=>t(l).pid=s),data:t(k).dept,clearable:"","node-key":"id",props:{value:"id",label:"name"},"check-strictly":"","default-expand-all":!0,placeholder:"请选择上级部门"},null,8,["modelValue","data"])]),_:1})):j("",!0),o(n,{label:"部门名称",prop:"name"},{default:r(()=>[o(i,{modelValue:t(l).name,"onUpdate:modelValue":e[1]||(e[1]=s=>t(l).name=s),placeholder:"请输入部门名称",maxlength:100},null,8,["modelValue"])]),_:1}),o(n,{label:"负责人",prop:"leader"},{default:r(()=>[o(i,{modelValue:t(l).leader,"onUpdate:modelValue":e[2]||(e[2]=s=>t(l).leader=s),placeholder:"请输入负责人姓名",maxlength:30},null,8,["modelValue"])]),_:1}),o(n,{label:"联系电话",prop:"mobile"},{default:r(()=>[o(i,{modelValue:t(l).mobile,"onUpdate:modelValue":e[3]||(e[3]=s=>t(l).mobile=s),placeholder:"请输入联系电话"},null,8,["modelValue"])]),_:1}),o(n,{label:"排序",prop:"sort"},{default:r(()=>[V("div",null,[o(D,{modelValue:t(l).sort,"onUpdate:modelValue":e[4]||(e[4]=s=>t(l).sort=s),min:0,max:9999},null,8,["modelValue"]),e[6]||(e[6]=V("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),o(n,{label:"部门状态"},{default:r(()=>[o(R,{modelValue:t(l).status,"onUpdate:modelValue":e[5]||(e[5]=s=>t(l).status=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{ae as _};
+import{D as B,B as N,W as I,C as q,h as A,g as F}from"./element-plus-DFTWCWyi.js";import{d as S,a as M,b as T,c as G}from"./department-CrUndMAW.js";import{_ as H}from"./index-BwF7vczx.js";import{u as J}from"./useDictOptions-Dl6xXBty.js";import{f as O,ak as _,I as W,a as o,aN as r,G as $,H as j,J as V,A as z}from"./@vue/runtime-core-C6bnekPw.js";import{y as t,q as b,r as K,n as L}from"./@vue/reactivity-DiY1c2vO.js";const P={class:"edit-popup"},ae=O({__name:"edit",emits:["success","close"],setup(Q,{expose:g,emit:v}){const p=v,c=b(),m=b(),u=L("add"),w=z(()=>u.value=="edit"?"编辑部门":"新增部门"),l=K({id:"",pid:"",name:"",leader:"",mobile:"",sort:0,status:1}),x={pid:[{required:!0,message:"请选择上级部门",trigger:["change"]}],name:[{required:!0,message:"请输入部门名称",trigger:["blur"]}],mobile:[{validator:(a,e,d)=>{if(e){const n=/^[1][3,4,5,6,7,8,9][0-9]{9}$/;if(console.log(n.test(e)),n.test(e))d();else return d(new Error("请输入正确的手机号"))}else return d()},trigger:["blur"]}]},{optionsData:k}=J({dept:{api:S}}),y=async()=>{var a,e;await((a=c.value)==null?void 0:a.validate()),u.value=="edit"?await M(l):await T(l),(e=m.value)==null||e.close(),p("success")},E=(a="add")=>{var e;u.value=a,(e=m.value)==null||e.open()},f=a=>{for(const e in l)a[e]!=null&&a[e]!=null&&(l[e]=a[e])},h=async a=>{const e=await G({id:a.id});f(e)},C=()=>{p("close")};return g({open:E,setFormData:f,getDetail:h}),(a,e)=>{const d=I,n=N,i=q,D=A,R=F,U=B;return _(),W("div",P,[o(H,{ref_key:"popupRef",ref:m,title:t(w),async:!0,width:"550px",onConfirm:y,onClose:C},{default:r(()=>[o(U,{ref_key:"formRef",ref:c,model:t(l),"label-width":"84px",rules:x},{default:r(()=>[t(l).pid!==0?(_(),$(n,{key:0,label:"上级部门",prop:"pid"},{default:r(()=>[o(d,{class:"flex-1",modelValue:t(l).pid,"onUpdate:modelValue":e[0]||(e[0]=s=>t(l).pid=s),data:t(k).dept,clearable:"","node-key":"id",props:{value:"id",label:"name"},"check-strictly":"","default-expand-all":!0,placeholder:"请选择上级部门"},null,8,["modelValue","data"])]),_:1})):j("",!0),o(n,{label:"部门名称",prop:"name"},{default:r(()=>[o(i,{modelValue:t(l).name,"onUpdate:modelValue":e[1]||(e[1]=s=>t(l).name=s),placeholder:"请输入部门名称",maxlength:100},null,8,["modelValue"])]),_:1}),o(n,{label:"负责人",prop:"leader"},{default:r(()=>[o(i,{modelValue:t(l).leader,"onUpdate:modelValue":e[2]||(e[2]=s=>t(l).leader=s),placeholder:"请输入负责人姓名",maxlength:30},null,8,["modelValue"])]),_:1}),o(n,{label:"联系电话",prop:"mobile"},{default:r(()=>[o(i,{modelValue:t(l).mobile,"onUpdate:modelValue":e[3]||(e[3]=s=>t(l).mobile=s),placeholder:"请输入联系电话"},null,8,["modelValue"])]),_:1}),o(n,{label:"排序",prop:"sort"},{default:r(()=>[V("div",null,[o(D,{modelValue:t(l).sort,"onUpdate:modelValue":e[4]||(e[4]=s=>t(l).sort=s),min:0,max:9999},null,8,["modelValue"]),e[6]||(e[6]=V("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),o(n,{label:"部门状态"},{default:r(()=>[o(R,{modelValue:t(l).status,"onUpdate:modelValue":e[5]||(e[5]=s=>t(l).status=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{ae as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CAjYh8N9.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CwKzaRbZ.js
similarity index 93%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CAjYh8N9.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CwKzaRbZ.js
index 389f01dd..59a94d31 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CAjYh8N9.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-CwKzaRbZ.js
@@ -1 +1 @@
-import{D as I,B as S,C as w,G as x,I as T}from"./element-plus-0wC3naml.js";import{b as q,c as A}from"./message-CSrefGEU.js";import{_ as K}from"./index-nymJKQXP.js";import{f as U,ak as n,I as Y,a,aN as o,J as B,G as i,H as _,O as c}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as y,r as N}from"./@vue/reactivity-DiY1c2vO.js";import{Q as F}from"./@vue/shared-mAAVTE9n.js";const G={class:"edit-popup"},M=U({__name:"edit",emits:["success"],setup(H,{expose:g,emit:E}){const V=E,d=y(),m=y(),t=N({name:"",type:"",sign:"",app_key:"",app_id:"",secret_key:"",secret_id:"",status:0}),k={sign:[{required:!0,message:"请输入短信签名",trigger:"blur"}],app_id:[{required:!0,message:"请输入APP_ID",trigger:"blur"}],app_key:[{required:!0,message:"请输入APP_KEY",trigger:"blur"}],secret_key:[{required:!0,message:"请输入SECRET_KEY",trigger:"blur"}],secret_id:[{required:!0,message:"请输入SECRET_ID",trigger:"blur"}]},b=async()=>{var s,e;await((s=d.value)==null?void 0:s.validate()),await q(t),(e=m.value)==null||e.close(),V("success")},C=async()=>{const s=await A({type:t.type});for(const e in s)t[e]=s[e]},R=s=>{var e;t.type=s,(e=m.value)==null||e.open(),C()},P=()=>{var s;(s=d.value)==null||s.resetFields()};return g({open:R}),(s,e)=>{const p=S,u=w,f=T,D=x,v=I;return n(),Y("div",G,[a(K,{ref_key:"popupRef",ref:m,title:"设置短信",async:!0,width:"550px",onConfirm:b,onClose:P},{default:o(()=>[a(v,{ref_key:"formRef",ref:d,model:l(t),"label-width":"120px",rules:k},{default:o(()=>[a(p,{label:"短信渠道"},{default:o(()=>[B("div",null,F(l(t).name),1)]),_:1}),a(p,{label:"短信签名",prop:"sign"},{default:o(()=>[a(u,{modelValue:l(t).sign,"onUpdate:modelValue":e[0]||(e[0]=r=>l(t).sign=r),placeholder:"请输入短信签名"},null,8,["modelValue"])]),_:1}),l(t).type=="ali"?(n(),i(p,{key:0,label:"APP_KEY",prop:"app_key"},{default:o(()=>[a(u,{modelValue:l(t).app_key,"onUpdate:modelValue":e[1]||(e[1]=r=>l(t).app_key=r),placeholder:"请输入APP_KEY"},null,8,["modelValue"])]),_:1})):_("",!0),l(t).type=="tencent"?(n(),i(p,{key:1,label:"APP_ID",prop:"app_id"},{default:o(()=>[a(u,{modelValue:l(t).app_id,"onUpdate:modelValue":e[2]||(e[2]=r=>l(t).app_id=r),placeholder:"请输入APP_ID"},null,8,["modelValue"])]),_:1})):_("",!0),l(t).type=="tencent"?(n(),i(p,{key:2,label:"SECRET_ID",prop:"secret_id"},{default:o(()=>[a(u,{modelValue:l(t).secret_id,"onUpdate:modelValue":e[3]||(e[3]=r=>l(t).secret_id=r),placeholder:"请输入SECRET_ID"},null,8,["modelValue"])]),_:1})):_("",!0),a(p,{label:"SECRET_KEY",prop:"secret_key"},{default:o(()=>[a(u,{modelValue:l(t).secret_key,"onUpdate:modelValue":e[4]||(e[4]=r=>l(t).secret_key=r),placeholder:"请输入SECRET_KEY"},null,8,["modelValue"])]),_:1}),a(p,{label:"状态",prop:"status"},{default:o(()=>[a(D,{modelValue:l(t).status,"onUpdate:modelValue":e[5]||(e[5]=r=>l(t).status=r)},{default:o(()=>[a(f,{value:0},{default:o(()=>[...e[6]||(e[6]=[c("关闭",-1)])]),_:1}),a(f,{value:1},{default:o(()=>[...e[7]||(e[7]=[c("开启",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},512)])}}});export{M as _};
+import{D as I,B as S,C as w,G as x,I as T}from"./element-plus-DFTWCWyi.js";import{b as q,c as A}from"./message-Dx96dhoI.js";import{_ as K}from"./index-BwF7vczx.js";import{f as U,ak as n,I as Y,a,aN as o,J as B,G as i,H as _,O as c}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as y,r as N}from"./@vue/reactivity-DiY1c2vO.js";import{Q as F}from"./@vue/shared-mAAVTE9n.js";const G={class:"edit-popup"},M=U({__name:"edit",emits:["success"],setup(H,{expose:g,emit:E}){const V=E,d=y(),m=y(),t=N({name:"",type:"",sign:"",app_key:"",app_id:"",secret_key:"",secret_id:"",status:0}),k={sign:[{required:!0,message:"请输入短信签名",trigger:"blur"}],app_id:[{required:!0,message:"请输入APP_ID",trigger:"blur"}],app_key:[{required:!0,message:"请输入APP_KEY",trigger:"blur"}],secret_key:[{required:!0,message:"请输入SECRET_KEY",trigger:"blur"}],secret_id:[{required:!0,message:"请输入SECRET_ID",trigger:"blur"}]},b=async()=>{var s,e;await((s=d.value)==null?void 0:s.validate()),await q(t),(e=m.value)==null||e.close(),V("success")},C=async()=>{const s=await A({type:t.type});for(const e in s)t[e]=s[e]},R=s=>{var e;t.type=s,(e=m.value)==null||e.open(),C()},P=()=>{var s;(s=d.value)==null||s.resetFields()};return g({open:R}),(s,e)=>{const p=S,u=w,f=T,D=x,v=I;return n(),Y("div",G,[a(K,{ref_key:"popupRef",ref:m,title:"设置短信",async:!0,width:"550px",onConfirm:b,onClose:P},{default:o(()=>[a(v,{ref_key:"formRef",ref:d,model:l(t),"label-width":"120px",rules:k},{default:o(()=>[a(p,{label:"短信渠道"},{default:o(()=>[B("div",null,F(l(t).name),1)]),_:1}),a(p,{label:"短信签名",prop:"sign"},{default:o(()=>[a(u,{modelValue:l(t).sign,"onUpdate:modelValue":e[0]||(e[0]=r=>l(t).sign=r),placeholder:"请输入短信签名"},null,8,["modelValue"])]),_:1}),l(t).type=="ali"?(n(),i(p,{key:0,label:"APP_KEY",prop:"app_key"},{default:o(()=>[a(u,{modelValue:l(t).app_key,"onUpdate:modelValue":e[1]||(e[1]=r=>l(t).app_key=r),placeholder:"请输入APP_KEY"},null,8,["modelValue"])]),_:1})):_("",!0),l(t).type=="tencent"?(n(),i(p,{key:1,label:"APP_ID",prop:"app_id"},{default:o(()=>[a(u,{modelValue:l(t).app_id,"onUpdate:modelValue":e[2]||(e[2]=r=>l(t).app_id=r),placeholder:"请输入APP_ID"},null,8,["modelValue"])]),_:1})):_("",!0),l(t).type=="tencent"?(n(),i(p,{key:2,label:"SECRET_ID",prop:"secret_id"},{default:o(()=>[a(u,{modelValue:l(t).secret_id,"onUpdate:modelValue":e[3]||(e[3]=r=>l(t).secret_id=r),placeholder:"请输入SECRET_ID"},null,8,["modelValue"])]),_:1})):_("",!0),a(p,{label:"SECRET_KEY",prop:"secret_key"},{default:o(()=>[a(u,{modelValue:l(t).secret_key,"onUpdate:modelValue":e[4]||(e[4]=r=>l(t).secret_key=r),placeholder:"请输入SECRET_KEY"},null,8,["modelValue"])]),_:1}),a(p,{label:"状态",prop:"status"},{default:o(()=>[a(D,{modelValue:l(t).status,"onUpdate:modelValue":e[5]||(e[5]=r=>l(t).status=r)},{default:o(()=>[a(f,{value:0},{default:o(()=>[...e[6]||(e[6]=[c("关闭",-1)])]),_:1}),a(f,{value:1},{default:o(()=>[...e[7]||(e[7]=[c("开启",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},512)])}}});export{M as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-3m13EY17.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DAbW78Jr.js
similarity index 93%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-3m13EY17.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DAbW78Jr.js
index 2265434d..e5040fde 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-3m13EY17.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DAbW78Jr.js
@@ -1 +1 @@
-import{D as G,B as H,C as J,W as L,P,Q,g as W}from"./element-plus-0wC3naml.js";import{_ as z}from"./picker-DlbAZkDm.js";import{d as K}from"./department-4lF54x8w.js";import{j as M}from"./post-Dq6zumLO.js";import{b as X,d as Y,e as Z}from"./admin-DO1zWq80.js";import{r as $}from"./role-DPqAO58h.js";import{_ as h}from"./index-nymJKQXP.js";import{u as ee}from"./useDictOptions-CypOxw17.js";import{f as le,ak as i,I as V,a as t,aN as d,J as u,F as j,ap as k,G as p,H as U,A as oe}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,q as C,r as q,n as ae}from"./@vue/reactivity-DiY1c2vO.js";const te={class:"edit-popup"},Ve=le({__name:"edit",emits:["success","close"],setup(re,{expose:D,emit:R}){const v=R,w=C(),m=C(),f=ae("add"),A=oe(()=>f.value=="edit"?"编辑管理员":"新增管理员"),l=q({id:"",account:"",name:"",dept_id:[],jobs_id:[],role_id:[],avatar:"",password:"",password_confirm:"",disable:0,multipoint_login:1,root:0}),g=(n,e,r)=>{l.password&&(e||r(new Error("请再次输入密码")),e!==l.password&&r(new Error("两次输入密码不一致!"))),r()},_=q({account:[{required:!0,message:"请输入账号",trigger:["blur"]}],name:[{required:!0,message:"请输入名称",trigger:["blur"]}],role_id:[{required:!0,validator:(n,e,r)=>{l.root||l.role_id.length?r():r(new Error("请选择角色"))}}],password:[{required:!0,message:"请输入密码",trigger:["blur"]}],password_confirm:[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:g,trigger:"blur"}]}),{optionsData:c}=ee({role:{api:$},jobs:{api:M},dept:{api:K}}),B=async()=>{var n,e;await((n=w.value)==null?void 0:n.validate()),f.value=="edit"?await X(l):await Y(l),(e=m.value)==null||e.close(),v("success")},F=(n="add")=>{var e;f.value=n,(e=m.value)==null||e.open()},I=async n=>{_.password=[],_.password_confirm=[{validator:g,trigger:"blur"}];const e=await Z({id:n.id});for(const r in l)e[r]!=null&&e[r]!=null&&(l[r]=e[r])},N=()=>{v("close")};return D({open:F,setFormData:I}),(n,e)=>{const r=J,s=H,S=z,O=L,y=Q,E=P,x=W,T=G;return i(),V("div",te,[t(h,{ref_key:"popupRef",ref:m,title:o(A),async:!0,width:"550px",onConfirm:B,onClose:N},{default:d(()=>[t(T,{ref_key:"formRef",ref:w,model:o(l),"label-width":"84px",rules:o(_)},{default:d(()=>[t(s,{label:"账号",prop:"account"},{default:d(()=>[t(r,{modelValue:o(l).account,"onUpdate:modelValue":e[0]||(e[0]=a=>o(l).account=a),disabled:o(l).root==1,placeholder:"请输入账号",clearable:""},null,8,["modelValue","disabled"])]),_:1}),t(s,{label:"头像"},{default:d(()=>[u("div",null,[u("div",null,[t(S,{modelValue:o(l).avatar,"onUpdate:modelValue":e[1]||(e[1]=a=>o(l).avatar=a),limit:1},null,8,["modelValue"])]),e[10]||(e[10]=u("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1}),t(s,{label:"名称",prop:"name"},{default:d(()=>[t(r,{modelValue:o(l).name,"onUpdate:modelValue":e[2]||(e[2]=a=>o(l).name=a),placeholder:"请输入名称",clearable:""},null,8,["modelValue"])]),_:1}),t(s,{label:"归属部门",prop:"dept_id"},{default:d(()=>[t(O,{class:"flex-1",modelValue:o(l).dept_id,"onUpdate:modelValue":e[3]||(e[3]=a=>o(l).dept_id=a),data:o(c).dept,clearable:"",multiple:"","node-key":"id",props:{value:"id",label:"name",disabled(a){return a.status!==1}},"check-strictly":"","default-expand-all":!0,placeholder:"请选择上级部门"},null,8,["modelValue","data","props"])]),_:1}),t(s,{label:"岗位",prop:"jobs_id"},{default:d(()=>[t(E,{class:"flex-1",modelValue:o(l).jobs_id,"onUpdate:modelValue":e[4]||(e[4]=a=>o(l).jobs_id=a),clearable:"",multiple:"",placeholder:"请选择岗位"},{default:d(()=>[(i(!0),V(j,null,k(o(c).jobs,(a,b)=>(i(),p(y,{key:b,label:a.name,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(l).root!=1?(i(),p(s,{key:0,label:"角色",prop:"role_id"},{default:d(()=>[t(E,{modelValue:o(l).role_id,"onUpdate:modelValue":e[5]||(e[5]=a=>o(l).role_id=a),disabled:o(l).root==1,class:"flex-1",multiple:"",placeholder:"请选择角色",clearable:""},{default:d(()=>[(i(!0),V(j,null,k(o(c).role,(a,b)=>(i(),p(y,{key:b,label:a.name,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1})):U("",!0),t(s,{label:"密码",prop:"password"},{default:d(()=>[t(r,{modelValue:o(l).password,"onUpdate:modelValue":e[6]||(e[6]=a=>o(l).password=a),"show-password":"",clearable:"",placeholder:"请输入密码"},null,8,["modelValue"])]),_:1}),t(s,{label:"确认密码",prop:"password_confirm"},{default:d(()=>[t(r,{modelValue:o(l).password_confirm,"onUpdate:modelValue":e[7]||(e[7]=a=>o(l).password_confirm=a),"show-password":"",clearable:"",placeholder:"请输入确认密码"},null,8,["modelValue"])]),_:1}),o(l).root!=1?(i(),p(s,{key:1,label:"管理员状态"},{default:d(()=>[t(x,{modelValue:o(l).disable,"onUpdate:modelValue":e[8]||(e[8]=a=>o(l).disable=a),"active-value":0,"inactive-value":1},null,8,["modelValue"])]),_:1})):U("",!0),t(s,{label:"多处登录"},{default:d(()=>[u("div",null,[t(x,{modelValue:o(l).multipoint_login,"onUpdate:modelValue":e[9]||(e[9]=a=>o(l).multipoint_login=a),"active-value":1,"inactive-value":0},null,8,["modelValue"]),e[11]||(e[11]=u("div",{class:"form-tips"},"允许多人同时在线登录",-1))])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])])}}});export{Ve as _};
+import{D as G,B as H,C as J,W as L,P,Q,g as W}from"./element-plus-DFTWCWyi.js";import{_ as z}from"./picker-BCRrEZaA.js";import{d as K}from"./department-CrUndMAW.js";import{j as M}from"./post-RziaWdiV.js";import{b as X,d as Y,e as Z}from"./admin-DVVxI3fN.js";import{r as $}from"./role-DTNlgcHU.js";import{_ as h}from"./index-BwF7vczx.js";import{u as ee}from"./useDictOptions-Dl6xXBty.js";import{f as le,ak as i,I as V,a as t,aN as d,J as u,F as j,ap as k,G as p,H as U,A as oe}from"./@vue/runtime-core-C6bnekPw.js";import{y as o,q as C,r as q,n as ae}from"./@vue/reactivity-DiY1c2vO.js";const te={class:"edit-popup"},Ve=le({__name:"edit",emits:["success","close"],setup(re,{expose:D,emit:R}){const v=R,w=C(),m=C(),f=ae("add"),A=oe(()=>f.value=="edit"?"编辑管理员":"新增管理员"),l=q({id:"",account:"",name:"",dept_id:[],jobs_id:[],role_id:[],avatar:"",password:"",password_confirm:"",disable:0,multipoint_login:1,root:0}),g=(n,e,r)=>{l.password&&(e||r(new Error("请再次输入密码")),e!==l.password&&r(new Error("两次输入密码不一致!"))),r()},_=q({account:[{required:!0,message:"请输入账号",trigger:["blur"]}],name:[{required:!0,message:"请输入名称",trigger:["blur"]}],role_id:[{required:!0,validator:(n,e,r)=>{l.root||l.role_id.length?r():r(new Error("请选择角色"))}}],password:[{required:!0,message:"请输入密码",trigger:["blur"]}],password_confirm:[{required:!0,message:"请输入确认密码",trigger:["blur"]},{validator:g,trigger:"blur"}]}),{optionsData:c}=ee({role:{api:$},jobs:{api:M},dept:{api:K}}),B=async()=>{var n,e;await((n=w.value)==null?void 0:n.validate()),f.value=="edit"?await X(l):await Y(l),(e=m.value)==null||e.close(),v("success")},F=(n="add")=>{var e;f.value=n,(e=m.value)==null||e.open()},I=async n=>{_.password=[],_.password_confirm=[{validator:g,trigger:"blur"}];const e=await Z({id:n.id});for(const r in l)e[r]!=null&&e[r]!=null&&(l[r]=e[r])},N=()=>{v("close")};return D({open:F,setFormData:I}),(n,e)=>{const r=J,s=H,S=z,O=L,y=Q,E=P,x=W,T=G;return i(),V("div",te,[t(h,{ref_key:"popupRef",ref:m,title:o(A),async:!0,width:"550px",onConfirm:B,onClose:N},{default:d(()=>[t(T,{ref_key:"formRef",ref:w,model:o(l),"label-width":"84px",rules:o(_)},{default:d(()=>[t(s,{label:"账号",prop:"account"},{default:d(()=>[t(r,{modelValue:o(l).account,"onUpdate:modelValue":e[0]||(e[0]=a=>o(l).account=a),disabled:o(l).root==1,placeholder:"请输入账号",clearable:""},null,8,["modelValue","disabled"])]),_:1}),t(s,{label:"头像"},{default:d(()=>[u("div",null,[u("div",null,[t(S,{modelValue:o(l).avatar,"onUpdate:modelValue":e[1]||(e[1]=a=>o(l).avatar=a),limit:1},null,8,["modelValue"])]),e[10]||(e[10]=u("div",{class:"form-tips"},"建议尺寸:100*100px,支持jpg,jpeg,png格式",-1))])]),_:1}),t(s,{label:"名称",prop:"name"},{default:d(()=>[t(r,{modelValue:o(l).name,"onUpdate:modelValue":e[2]||(e[2]=a=>o(l).name=a),placeholder:"请输入名称",clearable:""},null,8,["modelValue"])]),_:1}),t(s,{label:"归属部门",prop:"dept_id"},{default:d(()=>[t(O,{class:"flex-1",modelValue:o(l).dept_id,"onUpdate:modelValue":e[3]||(e[3]=a=>o(l).dept_id=a),data:o(c).dept,clearable:"",multiple:"","node-key":"id",props:{value:"id",label:"name",disabled(a){return a.status!==1}},"check-strictly":"","default-expand-all":!0,placeholder:"请选择上级部门"},null,8,["modelValue","data","props"])]),_:1}),t(s,{label:"岗位",prop:"jobs_id"},{default:d(()=>[t(E,{class:"flex-1",modelValue:o(l).jobs_id,"onUpdate:modelValue":e[4]||(e[4]=a=>o(l).jobs_id=a),clearable:"",multiple:"",placeholder:"请选择岗位"},{default:d(()=>[(i(!0),V(j,null,k(o(c).jobs,(a,b)=>(i(),p(y,{key:b,label:a.name,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(l).root!=1?(i(),p(s,{key:0,label:"角色",prop:"role_id"},{default:d(()=>[t(E,{modelValue:o(l).role_id,"onUpdate:modelValue":e[5]||(e[5]=a=>o(l).role_id=a),disabled:o(l).root==1,class:"flex-1",multiple:"",placeholder:"请选择角色",clearable:""},{default:d(()=>[(i(!0),V(j,null,k(o(c).role,(a,b)=>(i(),p(y,{key:b,label:a.name,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1})):U("",!0),t(s,{label:"密码",prop:"password"},{default:d(()=>[t(r,{modelValue:o(l).password,"onUpdate:modelValue":e[6]||(e[6]=a=>o(l).password=a),"show-password":"",clearable:"",placeholder:"请输入密码"},null,8,["modelValue"])]),_:1}),t(s,{label:"确认密码",prop:"password_confirm"},{default:d(()=>[t(r,{modelValue:o(l).password_confirm,"onUpdate:modelValue":e[7]||(e[7]=a=>o(l).password_confirm=a),"show-password":"",clearable:"",placeholder:"请输入确认密码"},null,8,["modelValue"])]),_:1}),o(l).root!=1?(i(),p(s,{key:1,label:"管理员状态"},{default:d(()=>[t(x,{modelValue:o(l).disable,"onUpdate:modelValue":e[8]||(e[8]=a=>o(l).disable=a),"active-value":0,"inactive-value":1},null,8,["modelValue"])]),_:1})):U("",!0),t(s,{label:"多处登录"},{default:d(()=>[u("div",null,[t(x,{modelValue:o(l).multipoint_login,"onUpdate:modelValue":e[9]||(e[9]=a=>o(l).multipoint_login=a),"active-value":1,"inactive-value":0},null,8,["modelValue"]),e[11]||(e[11]=u("div",{class:"form-tips"},"允许多人同时在线登录",-1))])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])])}}});export{Ve as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BdtkGJu8.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DK2-d75P.js
similarity index 95%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BdtkGJu8.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DK2-d75P.js
index fa322005..36f72530 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BdtkGJu8.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DK2-d75P.js
@@ -1 +1 @@
-import{D as B,B as D,I as U,C as Y,G}from"./element-plus-0wC3naml.js";import{r as g}from"./index-E47--KT7.js";import{_ as T}from"./index-nymJKQXP.js";import{f as h,ak as _,I as S,a as o,aN as r,J as u,O as f,G as F,H as b,A as H}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as E,r as J}from"./@vue/reactivity-DiY1c2vO.js";import{Q as V}from"./@vue/shared-mAAVTE9n.js";function le(){return g.get({url:"/setting.storage/lists"})}function L(d){return g.post({url:"/setting.storage/setup",params:d})}function Q(d){return g.get({url:"/setting.storage/detail",params:d})}const j={class:"edit-popup"},z={class:"form-tips"},M={key:0},P={class:"flex-1"},W={class:"flex-1"},ae=h({__name:"edit",emits:["success"],setup(d,{expose:v,emit:C}){const R=C,p=E(),m=E(),t=J({engine:"",bucket:"",access_key:"",secret_key:"",domain:"",region:"",status:0}),q=[{name:"本地存储",type:"local",tips:"本地存储方式不需要配置其他参数"},{name:"七牛云存储",type:"qiniu",tips:"切换七牛云存储后,素材库需要重新上传至七牛云"},{name:"阿里云OSS",type:"aliyun",tips:"切换阿里云OSS后,素材库需要重新上传至阿里云OSS"},{name:"腾讯云OSS",type:"qcloud",tips:"切换腾讯云OSS后,素材库需要重新上传至腾讯云OSS"}],x={bucket:[{required:!0,message:"请输入存储空间名称",trigger:"blur"}],access_key:[{required:!0,message:"请输入ACCESS_KEY",trigger:"blur"}],secret_key:[{required:!0,message:"请输入SECRET_KEY",trigger:"blur"}],domain:[{required:!0,message:"请输入空间域名",trigger:"blur"}],region:[{required:!0,message:"请输入REGION",trigger:"blur"}]},k=H(()=>q.find(s=>s.type==t.engine)),O=async()=>{var s,e;await((s=p.value)==null?void 0:s.validate()),await L(t),(e=m.value)==null||e.close(),R("success")},K=async()=>{const s=await Q({engine:t.engine});for(const e in s)t[e]=s[e]},w=s=>{var e;t.engine=s,(e=m.value)==null||e.open(),K()},I=()=>{var s;(s=p.value)==null||s.resetFields()};return v({open:w}),(s,e)=>{const c=U,n=D,i=Y,N=G,A=B;return _(),S("div",j,[o(T,{ref_key:"popupRef",ref:m,title:"设置存储",async:!0,width:"550px",onConfirm:O,onClose:I},{default:r(()=>[o(A,{ref_key:"formRef",ref:p,model:l(t),"label-width":"120px",rules:x},{default:r(()=>[o(n,{label:"存储方式",prop:"engine"},{default:r(()=>{var a;return[u("div",null,[o(c,{checked:""},{default:r(()=>{var y;return[f(V((y=l(k))==null?void 0:y.name),1)]}),_:1}),u("div",z,V((a=l(k))==null?void 0:a.tips),1)])]}),_:1}),l(t).engine!=="local"?(_(),S("div",M,[o(n,{label:" 存储空间名称",prop:"bucket"},{default:r(()=>[u("div",P,[o(i,{modelValue:l(t).bucket,"onUpdate:modelValue":e[0]||(e[0]=a=>l(t).bucket=a),placeholder:"请输入存储空间名称(Bucket)",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"ACCESS_KEY",prop:"access_key"},{default:r(()=>[o(i,{modelValue:l(t).access_key,"onUpdate:modelValue":e[1]||(e[1]=a=>l(t).access_key=a),placeholder:"请输入ACCESS_KEY(AK)",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"SECRET_KEY",prop:"secret_key"},{default:r(()=>[o(i,{modelValue:l(t).secret_key,"onUpdate:modelValue":e[2]||(e[2]=a=>l(t).secret_key=a),placeholder:"请输入SECRET_KEY(SK)",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"空间域名",prop:"domain"},{default:r(()=>[u("div",W,[u("div",null,[o(i,{modelValue:l(t).domain,"onUpdate:modelValue":e[3]||(e[3]=a=>l(t).domain=a),placeholder:"请输入空间域名(Domain)",clearable:""},null,8,["modelValue"])]),e[6]||(e[6]=u("div",{class:"form-tips"}," 请补全http://或https://,例如https://static.cloud.com ",-1))])]),_:1}),l(t).engine=="qcloud"?(_(),F(n,{key:0,label:"REGION",prop:"region"},{default:r(()=>[o(i,{modelValue:l(t).region,"onUpdate:modelValue":e[4]||(e[4]=a=>l(t).region=a),placeholder:"请输入region",clearable:""},null,8,["modelValue"])]),_:1})):b("",!0)])):b("",!0),o(n,{label:"状态",prop:"status"},{default:r(()=>[o(N,{modelValue:l(t).status,"onUpdate:modelValue":e[5]||(e[5]=a=>l(t).status=a)},{default:r(()=>[o(c,{value:0},{default:r(()=>[...e[7]||(e[7]=[f("关闭",-1)])]),_:1}),o(c,{value:1},{default:r(()=>[...e[8]||(e[8]=[f("开启",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},512)])}}});export{ae as _,le as s};
+import{D as B,B as D,I as U,C as Y,G}from"./element-plus-DFTWCWyi.js";import{r as g}from"./index-DBREMm_z.js";import{_ as T}from"./index-BwF7vczx.js";import{f as h,ak as _,I as S,a as o,aN as r,J as u,O as f,G as F,H as b,A as H}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as E,r as J}from"./@vue/reactivity-DiY1c2vO.js";import{Q as V}from"./@vue/shared-mAAVTE9n.js";function le(){return g.get({url:"/setting.storage/lists"})}function L(d){return g.post({url:"/setting.storage/setup",params:d})}function Q(d){return g.get({url:"/setting.storage/detail",params:d})}const j={class:"edit-popup"},z={class:"form-tips"},M={key:0},P={class:"flex-1"},W={class:"flex-1"},ae=h({__name:"edit",emits:["success"],setup(d,{expose:v,emit:C}){const R=C,p=E(),m=E(),t=J({engine:"",bucket:"",access_key:"",secret_key:"",domain:"",region:"",status:0}),q=[{name:"本地存储",type:"local",tips:"本地存储方式不需要配置其他参数"},{name:"七牛云存储",type:"qiniu",tips:"切换七牛云存储后,素材库需要重新上传至七牛云"},{name:"阿里云OSS",type:"aliyun",tips:"切换阿里云OSS后,素材库需要重新上传至阿里云OSS"},{name:"腾讯云OSS",type:"qcloud",tips:"切换腾讯云OSS后,素材库需要重新上传至腾讯云OSS"}],x={bucket:[{required:!0,message:"请输入存储空间名称",trigger:"blur"}],access_key:[{required:!0,message:"请输入ACCESS_KEY",trigger:"blur"}],secret_key:[{required:!0,message:"请输入SECRET_KEY",trigger:"blur"}],domain:[{required:!0,message:"请输入空间域名",trigger:"blur"}],region:[{required:!0,message:"请输入REGION",trigger:"blur"}]},k=H(()=>q.find(s=>s.type==t.engine)),O=async()=>{var s,e;await((s=p.value)==null?void 0:s.validate()),await L(t),(e=m.value)==null||e.close(),R("success")},K=async()=>{const s=await Q({engine:t.engine});for(const e in s)t[e]=s[e]},w=s=>{var e;t.engine=s,(e=m.value)==null||e.open(),K()},I=()=>{var s;(s=p.value)==null||s.resetFields()};return v({open:w}),(s,e)=>{const c=U,n=D,i=Y,N=G,A=B;return _(),S("div",j,[o(T,{ref_key:"popupRef",ref:m,title:"设置存储",async:!0,width:"550px",onConfirm:O,onClose:I},{default:r(()=>[o(A,{ref_key:"formRef",ref:p,model:l(t),"label-width":"120px",rules:x},{default:r(()=>[o(n,{label:"存储方式",prop:"engine"},{default:r(()=>{var a;return[u("div",null,[o(c,{checked:""},{default:r(()=>{var y;return[f(V((y=l(k))==null?void 0:y.name),1)]}),_:1}),u("div",z,V((a=l(k))==null?void 0:a.tips),1)])]}),_:1}),l(t).engine!=="local"?(_(),S("div",M,[o(n,{label:" 存储空间名称",prop:"bucket"},{default:r(()=>[u("div",P,[o(i,{modelValue:l(t).bucket,"onUpdate:modelValue":e[0]||(e[0]=a=>l(t).bucket=a),placeholder:"请输入存储空间名称(Bucket)",clearable:""},null,8,["modelValue"])])]),_:1}),o(n,{label:"ACCESS_KEY",prop:"access_key"},{default:r(()=>[o(i,{modelValue:l(t).access_key,"onUpdate:modelValue":e[1]||(e[1]=a=>l(t).access_key=a),placeholder:"请输入ACCESS_KEY(AK)",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"SECRET_KEY",prop:"secret_key"},{default:r(()=>[o(i,{modelValue:l(t).secret_key,"onUpdate:modelValue":e[2]||(e[2]=a=>l(t).secret_key=a),placeholder:"请输入SECRET_KEY(SK)",clearable:""},null,8,["modelValue"])]),_:1}),o(n,{label:"空间域名",prop:"domain"},{default:r(()=>[u("div",W,[u("div",null,[o(i,{modelValue:l(t).domain,"onUpdate:modelValue":e[3]||(e[3]=a=>l(t).domain=a),placeholder:"请输入空间域名(Domain)",clearable:""},null,8,["modelValue"])]),e[6]||(e[6]=u("div",{class:"form-tips"}," 请补全http://或https://,例如https://static.cloud.com ",-1))])]),_:1}),l(t).engine=="qcloud"?(_(),F(n,{key:0,label:"REGION",prop:"region"},{default:r(()=>[o(i,{modelValue:l(t).region,"onUpdate:modelValue":e[4]||(e[4]=a=>l(t).region=a),placeholder:"请输入region",clearable:""},null,8,["modelValue"])]),_:1})):b("",!0)])):b("",!0),o(n,{label:"状态",prop:"status"},{default:r(()=>[o(N,{modelValue:l(t).status,"onUpdate:modelValue":e[5]||(e[5]=a=>l(t).status=a)},{default:r(()=>[o(c,{value:0},{default:r(()=>[...e[7]||(e[7]=[f("关闭",-1)])]),_:1}),o(c,{value:1},{default:r(()=>[...e[8]||(e[8]=[f("开启",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},512)])}}});export{ae as _,le as s};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DItGEiu-.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-SN25urAl.js
similarity index 95%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DItGEiu-.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-SN25urAl.js
index 5167eeb9..5ef5bb42 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-DItGEiu-.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-SN25urAl.js
@@ -1 +1 @@
-import{D as C,B as D,C as I,h as N,G as U,I as q}from"./element-plus-0wC3naml.js";import{a as B,b as F}from"./dict-Nvtnb8GD.js";import{_ as A}from"./index-nymJKQXP.js";import{f as G,ak as T,I as z,a as o,aN as t,J as _,O as c,A as J}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,q as v,r as O,n as S}from"./@vue/reactivity-DiY1c2vO.js";const j={class:"edit-popup"},Y=G({__name:"edit",emits:["success","close"],setup(H,{expose:V,emit:b}){const p=b,i=v(),m=v(),d=S("add"),w=J(()=>d.value=="edit"?"编辑字典数据":"新增字典数据"),l=O({id:"",type_value:"",name:"",value:"",sort:0,status:1,remark:"",type_id:0}),x={name:[{required:!0,message:"请输入数据名称",trigger:["blur"]}],value:[{required:!0,message:"请输入数据值",trigger:["blur"]}]},k=async()=>{var s,e;await((s=i.value)==null?void 0:s.validate()),d.value=="edit"?await B(l):await F(l),(e=m.value)==null||e.close(),p("success")},y=()=>{p("close")};return V({open:(s="add")=>{var e;d.value=s,(e=m.value)==null||e.open()},setFormData:s=>{for(const e in l)s[e]!=null&&s[e]!=null&&(l[e]=s[e])}}),(s,e)=>{const n=I,u=D,g=N,f=q,R=U,E=C;return T(),z("div",j,[o(A,{ref_key:"popupRef",ref:m,title:a(w),async:!0,width:"550px",onConfirm:k,onClose:y},{default:t(()=>[o(E,{class:"ls-form",ref_key:"formRef",ref:i,rules:x,model:a(l),"label-width":"84px"},{default:t(()=>[o(u,{label:"字典类型"},{default:t(()=>[o(n,{"model-value":a(l).type_value,placeholder:"请输入字典类型",disabled:""},null,8,["model-value"])]),_:1}),o(u,{label:"数据名称",prop:"name"},{default:t(()=>[o(n,{modelValue:a(l).name,"onUpdate:modelValue":e[0]||(e[0]=r=>a(l).name=r),placeholder:"请输入数据名称",clearable:""},null,8,["modelValue"])]),_:1}),o(u,{label:"数据值",prop:"value"},{default:t(()=>[o(n,{modelValue:a(l).value,"onUpdate:modelValue":e[1]||(e[1]=r=>a(l).value=r),placeholder:"请输入数据值",clearable:""},null,8,["modelValue"])]),_:1}),o(u,{label:"排序",prop:"sort"},{default:t(()=>[_("div",null,[o(g,{modelValue:a(l).sort,"onUpdate:modelValue":e[2]||(e[2]=r=>a(l).sort=r),min:0,max:9999},null,8,["modelValue"]),e[5]||(e[5]=_("div",{class:"form-tips"},"数值越大越排前",-1))])]),_:1}),o(u,{label:"状态",required:"",prop:"status"},{default:t(()=>[o(R,{modelValue:a(l).status,"onUpdate:modelValue":e[3]||(e[3]=r=>a(l).status=r)},{default:t(()=>[o(f,{value:1},{default:t(()=>[...e[6]||(e[6]=[c("正常",-1)])]),_:1}),o(f,{value:0},{default:t(()=>[...e[7]||(e[7]=[c("停用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(u,{label:"备注",prop:"remark"},{default:t(()=>[o(n,{modelValue:a(l).remark,"onUpdate:modelValue":e[4]||(e[4]=r=>a(l).remark=r),type:"textarea",autosize:{minRows:4,maxRows:6},clearable:"",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{Y as _};
+import{D as C,B as D,C as I,h as N,G as U,I as q}from"./element-plus-DFTWCWyi.js";import{a as B,b as F}from"./dict-BKviBR_7.js";import{_ as A}from"./index-BwF7vczx.js";import{f as G,ak as T,I as z,a as o,aN as t,J as _,O as c,A as J}from"./@vue/runtime-core-C6bnekPw.js";import{y as a,q as v,r as O,n as S}from"./@vue/reactivity-DiY1c2vO.js";const j={class:"edit-popup"},Y=G({__name:"edit",emits:["success","close"],setup(H,{expose:V,emit:b}){const p=b,i=v(),m=v(),d=S("add"),w=J(()=>d.value=="edit"?"编辑字典数据":"新增字典数据"),l=O({id:"",type_value:"",name:"",value:"",sort:0,status:1,remark:"",type_id:0}),x={name:[{required:!0,message:"请输入数据名称",trigger:["blur"]}],value:[{required:!0,message:"请输入数据值",trigger:["blur"]}]},k=async()=>{var s,e;await((s=i.value)==null?void 0:s.validate()),d.value=="edit"?await B(l):await F(l),(e=m.value)==null||e.close(),p("success")},y=()=>{p("close")};return V({open:(s="add")=>{var e;d.value=s,(e=m.value)==null||e.open()},setFormData:s=>{for(const e in l)s[e]!=null&&s[e]!=null&&(l[e]=s[e])}}),(s,e)=>{const n=I,u=D,g=N,f=q,R=U,E=C;return T(),z("div",j,[o(A,{ref_key:"popupRef",ref:m,title:a(w),async:!0,width:"550px",onConfirm:k,onClose:y},{default:t(()=>[o(E,{class:"ls-form",ref_key:"formRef",ref:i,rules:x,model:a(l),"label-width":"84px"},{default:t(()=>[o(u,{label:"字典类型"},{default:t(()=>[o(n,{"model-value":a(l).type_value,placeholder:"请输入字典类型",disabled:""},null,8,["model-value"])]),_:1}),o(u,{label:"数据名称",prop:"name"},{default:t(()=>[o(n,{modelValue:a(l).name,"onUpdate:modelValue":e[0]||(e[0]=r=>a(l).name=r),placeholder:"请输入数据名称",clearable:""},null,8,["modelValue"])]),_:1}),o(u,{label:"数据值",prop:"value"},{default:t(()=>[o(n,{modelValue:a(l).value,"onUpdate:modelValue":e[1]||(e[1]=r=>a(l).value=r),placeholder:"请输入数据值",clearable:""},null,8,["modelValue"])]),_:1}),o(u,{label:"排序",prop:"sort"},{default:t(()=>[_("div",null,[o(g,{modelValue:a(l).sort,"onUpdate:modelValue":e[2]||(e[2]=r=>a(l).sort=r),min:0,max:9999},null,8,["modelValue"]),e[5]||(e[5]=_("div",{class:"form-tips"},"数值越大越排前",-1))])]),_:1}),o(u,{label:"状态",required:"",prop:"status"},{default:t(()=>[o(R,{modelValue:a(l).status,"onUpdate:modelValue":e[3]||(e[3]=r=>a(l).status=r)},{default:t(()=>[o(f,{value:1},{default:t(()=>[...e[6]||(e[6]=[c("正常",-1)])]),_:1}),o(f,{value:0},{default:t(()=>[...e[7]||(e[7]=[c("停用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(u,{label:"备注",prop:"remark"},{default:t(()=>[o(n,{modelValue:a(l).remark,"onUpdate:modelValue":e[4]||(e[4]=r=>a(l).remark=r),type:"textarea",autosize:{minRows:4,maxRows:6},clearable:"",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{Y as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BsajSW9y.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-W1DUlHN3.js
similarity index 97%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BsajSW9y.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-W1DUlHN3.js
index 2c168687..f20eeb66 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-BsajSW9y.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_lang-W1DUlHN3.js
@@ -1 +1 @@
-import{D as F,B as G,C as A,G as O,I as S,h as T,g as z}from"./element-plus-0wC3naml.js";import{f as H,h as J,i as j}from"./wx_oa-CMZpCm8a.js";import{_ as K}from"./index-nymJKQXP.js";import{f as L,ak as p,I as M,a as o,aN as a,J as n,G as c,H as v,O as i,A as P}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as x,r as Q,n as W}from"./@vue/reactivity-DiY1c2vO.js";const X={class:"edit-popup"},Y={class:"flex-1"},Z={class:"flex-1"},$={class:"flex-1"},h={class:"flex-1"},ee={class:"flex-1"},te={class:"flex-1"},le={class:"flex-1"},ue=L({__name:"edit",emits:["success","close"],setup(oe,{expose:b,emit:k}){const V=k,g=x(),f=x(),_=W("add"),R=P(()=>_.value=="edit"?"编辑":"新增"),t=Q({id:"",name:"",reply_type:0,content_type:1,keyword:"",content:"",matching_type:1,status:1,sort:0,reply_num:1}),E={name:[{required:!0,message:"请输入规则名称",trigger:["blur"]}],keyword:[{required:!0,message:"请输入关键词",trigger:["blur"]}],matching_type:[{required:!0,message:"请选择匹配方式",trigger:["blur"]}],content_type:[{required:!0,message:"请选择回复类型",trigger:["blur"]}],content:[{required:!0,message:"请输入回复内容",trigger:["blur"]}]},U=async()=>{var r,e;await((r=g.value)==null?void 0:r.validate()),_.value=="edit"?await H(t):await J(t),(e=f.value)==null||e.close(),V("success")},q=(r="add",e=0)=>{var u;_.value=r,t.reply_type=e,(u=f.value)==null||u.open()},w=r=>{for(const e in t)r[e]!=null&&r[e]!=null&&(t[e]=r[e])},C=async r=>{const e=await j({id:r.id});w(e)},N=()=>{V("close")};return b({open:q,setFormData:w,getDetail:C}),(r,e)=>{const u=A,d=G,m=S,y=O,B=T,D=z,I=F;return p(),M("div",X,[o(K,{ref_key:"popupRef",ref:f,title:l(R),async:!0,width:"500px",onConfirm:U,onClose:N},{default:a(()=>[o(I,{ref_key:"formRef",ref:g,model:l(t),"label-width":"84px",rules:E,class:"pr-10"},{default:a(()=>[o(d,{label:"规则名称",prop:"name"},{default:a(()=>[n("div",Y,[o(u,{modelValue:l(t).name,"onUpdate:modelValue":e[0]||(e[0]=s=>l(t).name=s),placeholder:"请输入规则名称"},null,8,["modelValue"]),e[8]||(e[8]=n("div",{class:"form-tips"},"方便通过名称管理关注回复内容",-1))])]),_:1}),l(t).reply_type==2?(p(),c(d,{key:0,label:"关键词",prop:"keyword"},{default:a(()=>[n("div",Z,[o(u,{modelValue:l(t).keyword,"onUpdate:modelValue":e[1]||(e[1]=s=>l(t).keyword=s),placeholder:"请输入关键词"},null,8,["modelValue"]),e[9]||(e[9]=n("div",{class:"form-tips"},"方便通过名称管理关注回复内容",-1))])]),_:1})):v("",!0),l(t).reply_type==2?(p(),c(d,{key:1,label:"匹配方式",prop:"matching_type"},{default:a(()=>[n("div",$,[o(y,{modelValue:l(t).matching_type,"onUpdate:modelValue":e[2]||(e[2]=s=>l(t).matching_type=s)},{default:a(()=>[o(m,{value:1},{default:a(()=>[...e[10]||(e[10]=[i("全匹配",-1)])]),_:1}),o(m,{value:2},{default:a(()=>[...e[11]||(e[11]=[i("模糊匹配",-1)])]),_:1})]),_:1},8,["modelValue"]),e[12]||(e[12]=n("div",{class:"form-tips"},"模糊匹配时,关键词部分匹配用户输入的内容即可",-1))])]),_:1})):v("",!0),o(d,{label:"回复类型",prop:"content_type",min:0},{default:a(()=>[n("div",h,[o(y,{modelValue:l(t).content_type,"onUpdate:modelValue":e[3]||(e[3]=s=>l(t).content_type=s)},{default:a(()=>[o(m,{value:1},{default:a(()=>[...e[13]||(e[13]=[i("文本",-1)])]),_:1})]),_:1},8,["modelValue"]),e[14]||(e[14]=n("div",{class:"form-tips"},"暂时只支持文本类型",-1))])]),_:1}),o(d,{label:"回复内容",prop:"content"},{default:a(()=>[n("div",ee,[o(u,{modelValue:l(t).content,"onUpdate:modelValue":e[4]||(e[4]=s=>l(t).content=s),autosize:{minRows:4,maxRows:4},type:"textarea",maxlength:"200","show-word-limit":"",placeholder:"请输入回复内容"},null,8,["modelValue"])])]),_:1}),o(d,{label:"排序"},{default:a(()=>[n("div",te,[o(B,{modelValue:l(t).sort,"onUpdate:modelValue":e[5]||(e[5]=s=>l(t).sort=s),min:0,max:9999},null,8,["modelValue"])])]),_:1}),l(t).reply_type==2?(p(),c(d,{key:2,label:"回复数量",prop:"reply_num",required:""},{default:a(()=>[n("div",le,[o(y,{modelValue:l(t).reply_num,"onUpdate:modelValue":e[6]||(e[6]=s=>l(t).reply_num=s)},{default:a(()=>[o(m,{value:1},{default:a(()=>[...e[15]||(e[15]=[i("回复匹配首词条",-1)])]),_:1})]),_:1},8,["modelValue"]),e[16]||(e[16]=n("div",{class:"form-tips"}," 设置关键词匹配多条时回复的数量,暂时支持回复一条内容 ",-1))])]),_:1})):v("",!0),o(d,{label:"启用状态"},{default:a(()=>[o(D,{modelValue:l(t).status,"onUpdate:modelValue":e[7]||(e[7]=s=>l(t).status=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{ue as _};
+import{D as F,B as G,C as A,G as O,I as S,h as T,g as z}from"./element-plus-DFTWCWyi.js";import{f as H,h as J,i as j}from"./wx_oa-sVQft6O9.js";import{_ as K}from"./index-BwF7vczx.js";import{f as L,ak as p,I as M,a as o,aN as a,J as n,G as c,H as v,O as i,A as P}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as x,r as Q,n as W}from"./@vue/reactivity-DiY1c2vO.js";const X={class:"edit-popup"},Y={class:"flex-1"},Z={class:"flex-1"},$={class:"flex-1"},h={class:"flex-1"},ee={class:"flex-1"},te={class:"flex-1"},le={class:"flex-1"},ue=L({__name:"edit",emits:["success","close"],setup(oe,{expose:b,emit:k}){const V=k,g=x(),f=x(),_=W("add"),R=P(()=>_.value=="edit"?"编辑":"新增"),t=Q({id:"",name:"",reply_type:0,content_type:1,keyword:"",content:"",matching_type:1,status:1,sort:0,reply_num:1}),E={name:[{required:!0,message:"请输入规则名称",trigger:["blur"]}],keyword:[{required:!0,message:"请输入关键词",trigger:["blur"]}],matching_type:[{required:!0,message:"请选择匹配方式",trigger:["blur"]}],content_type:[{required:!0,message:"请选择回复类型",trigger:["blur"]}],content:[{required:!0,message:"请输入回复内容",trigger:["blur"]}]},U=async()=>{var r,e;await((r=g.value)==null?void 0:r.validate()),_.value=="edit"?await H(t):await J(t),(e=f.value)==null||e.close(),V("success")},q=(r="add",e=0)=>{var u;_.value=r,t.reply_type=e,(u=f.value)==null||u.open()},w=r=>{for(const e in t)r[e]!=null&&r[e]!=null&&(t[e]=r[e])},C=async r=>{const e=await j({id:r.id});w(e)},N=()=>{V("close")};return b({open:q,setFormData:w,getDetail:C}),(r,e)=>{const u=A,d=G,m=S,y=O,B=T,D=z,I=F;return p(),M("div",X,[o(K,{ref_key:"popupRef",ref:f,title:l(R),async:!0,width:"500px",onConfirm:U,onClose:N},{default:a(()=>[o(I,{ref_key:"formRef",ref:g,model:l(t),"label-width":"84px",rules:E,class:"pr-10"},{default:a(()=>[o(d,{label:"规则名称",prop:"name"},{default:a(()=>[n("div",Y,[o(u,{modelValue:l(t).name,"onUpdate:modelValue":e[0]||(e[0]=s=>l(t).name=s),placeholder:"请输入规则名称"},null,8,["modelValue"]),e[8]||(e[8]=n("div",{class:"form-tips"},"方便通过名称管理关注回复内容",-1))])]),_:1}),l(t).reply_type==2?(p(),c(d,{key:0,label:"关键词",prop:"keyword"},{default:a(()=>[n("div",Z,[o(u,{modelValue:l(t).keyword,"onUpdate:modelValue":e[1]||(e[1]=s=>l(t).keyword=s),placeholder:"请输入关键词"},null,8,["modelValue"]),e[9]||(e[9]=n("div",{class:"form-tips"},"方便通过名称管理关注回复内容",-1))])]),_:1})):v("",!0),l(t).reply_type==2?(p(),c(d,{key:1,label:"匹配方式",prop:"matching_type"},{default:a(()=>[n("div",$,[o(y,{modelValue:l(t).matching_type,"onUpdate:modelValue":e[2]||(e[2]=s=>l(t).matching_type=s)},{default:a(()=>[o(m,{value:1},{default:a(()=>[...e[10]||(e[10]=[i("全匹配",-1)])]),_:1}),o(m,{value:2},{default:a(()=>[...e[11]||(e[11]=[i("模糊匹配",-1)])]),_:1})]),_:1},8,["modelValue"]),e[12]||(e[12]=n("div",{class:"form-tips"},"模糊匹配时,关键词部分匹配用户输入的内容即可",-1))])]),_:1})):v("",!0),o(d,{label:"回复类型",prop:"content_type",min:0},{default:a(()=>[n("div",h,[o(y,{modelValue:l(t).content_type,"onUpdate:modelValue":e[3]||(e[3]=s=>l(t).content_type=s)},{default:a(()=>[o(m,{value:1},{default:a(()=>[...e[13]||(e[13]=[i("文本",-1)])]),_:1})]),_:1},8,["modelValue"]),e[14]||(e[14]=n("div",{class:"form-tips"},"暂时只支持文本类型",-1))])]),_:1}),o(d,{label:"回复内容",prop:"content"},{default:a(()=>[n("div",ee,[o(u,{modelValue:l(t).content,"onUpdate:modelValue":e[4]||(e[4]=s=>l(t).content=s),autosize:{minRows:4,maxRows:4},type:"textarea",maxlength:"200","show-word-limit":"",placeholder:"请输入回复内容"},null,8,["modelValue"])])]),_:1}),o(d,{label:"排序"},{default:a(()=>[n("div",te,[o(B,{modelValue:l(t).sort,"onUpdate:modelValue":e[5]||(e[5]=s=>l(t).sort=s),min:0,max:9999},null,8,["modelValue"])])]),_:1}),l(t).reply_type==2?(p(),c(d,{key:2,label:"回复数量",prop:"reply_num",required:""},{default:a(()=>[n("div",le,[o(y,{modelValue:l(t).reply_num,"onUpdate:modelValue":e[6]||(e[6]=s=>l(t).reply_num=s)},{default:a(()=>[o(m,{value:1},{default:a(()=>[...e[15]||(e[15]=[i("回复匹配首词条",-1)])]),_:1})]),_:1},8,["modelValue"]),e[16]||(e[16]=n("div",{class:"form-tips"}," 设置关键词匹配多条时回复的数量,暂时支持回复一条内容 ",-1))])]),_:1})):v("",!0),o(d,{label:"启用状态"},{default:a(()=>[o(D,{modelValue:l(t).status,"onUpdate:modelValue":e[7]||(e[7]=s=>l(t).status=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{ue as _};
diff --git a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-CzxfOEt7.js b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-DPHyz3nQ.js
similarity index 90%
rename from server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-CzxfOEt7.js
rename to server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-DPHyz3nQ.js
index 54d5475f..e0b1e27f 100644
--- a/server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-CzxfOEt7.js
+++ b/server/public/admin/assets/edit.vue_vue_type_script_setup_true_name_articleColumnEdit_lang-DPHyz3nQ.js
@@ -1 +1 @@
-import{D,B,C as I,h as N,g as F}from"./element-plus-0wC3naml.js";import{d as U,e as q,f as A}from"./article-DJnP6RZd.js";import{_ as S}from"./index-nymJKQXP.js";import{f,ak as J,I as T,a,aN as n,J as c,A as j}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as _,r as z,n as G}from"./@vue/reactivity-DiY1c2vO.js";const H={class:"edit-popup"},K=f({name:"articleColumnEdit"}),X=f({...K,emits:["success","close"],setup(L,{expose:v,emit:w}){const u=w,d=_(),r=_(),i=G("add"),V=j(()=>i.value=="edit"?"编辑栏目":"新增栏目"),o=z({id:"",name:"",sort:0,is_show:1}),C={name:[{required:!0,message:"请输入栏目名称",trigger:["blur"]}]},b=async()=>{var t,e;await((t=d.value)==null?void 0:t.validate()),i.value=="edit"?await U(o):await q(o),(e=r.value)==null||e.close(),u("success")},h=(t="add")=>{var e;i.value=t,(e=r.value)==null||e.open()},p=t=>{for(const e in o)t[e]!=null&&t[e]!=null&&(o[e]=t[e])},E=async t=>{const e=await A({id:t.id});p(e)},x=()=>{u("close")};return v({open:h,setFormData:p,getDetail:E}),(t,e)=>{const y=I,m=B,g=N,k=F,R=D;return J(),T("div",H,[a(S,{ref_key:"popupRef",ref:r,title:l(V),async:!0,width:"550px",onConfirm:b,onClose:x},{default:n(()=>[a(R,{ref_key:"formRef",ref:d,model:l(o),"label-width":"84px",rules:C},{default:n(()=>[a(m,{label:"栏目名称",prop:"name"},{default:n(()=>[a(y,{modelValue:l(o).name,"onUpdate:modelValue":e[0]||(e[0]=s=>l(o).name=s),placeholder:"请输入栏目名称",clearable:""},null,8,["modelValue"])]),_:1}),a(m,{label:"排序",prop:"sort"},{default:n(()=>[c("div",null,[a(g,{modelValue:l(o).sort,"onUpdate:modelValue":e[1]||(e[1]=s=>l(o).sort=s),min:0,max:9999},null,8,["modelValue"]),e[3]||(e[3]=c("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),a(m,{label:"状态",prop:"is_show"},{default:n(()=>[a(k,{modelValue:l(o).is_show,"onUpdate:modelValue":e[2]||(e[2]=s=>l(o).is_show=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{X as _};
+import{D,B,C as I,h as N,g as F}from"./element-plus-DFTWCWyi.js";import{d as U,e as q,f as A}from"./article-BnVIxFkr.js";import{_ as S}from"./index-BwF7vczx.js";import{f,ak as J,I as T,a,aN as n,J as c,A as j}from"./@vue/runtime-core-C6bnekPw.js";import{y as l,q as _,r as z,n as G}from"./@vue/reactivity-DiY1c2vO.js";const H={class:"edit-popup"},K=f({name:"articleColumnEdit"}),X=f({...K,emits:["success","close"],setup(L,{expose:v,emit:w}){const u=w,d=_(),r=_(),i=G("add"),V=j(()=>i.value=="edit"?"编辑栏目":"新增栏目"),o=z({id:"",name:"",sort:0,is_show:1}),C={name:[{required:!0,message:"请输入栏目名称",trigger:["blur"]}]},b=async()=>{var t,e;await((t=d.value)==null?void 0:t.validate()),i.value=="edit"?await U(o):await q(o),(e=r.value)==null||e.close(),u("success")},h=(t="add")=>{var e;i.value=t,(e=r.value)==null||e.open()},p=t=>{for(const e in o)t[e]!=null&&t[e]!=null&&(o[e]=t[e])},E=async t=>{const e=await A({id:t.id});p(e)},x=()=>{u("close")};return v({open:h,setFormData:p,getDetail:E}),(t,e)=>{const y=I,m=B,g=N,k=F,R=D;return J(),T("div",H,[a(S,{ref_key:"popupRef",ref:r,title:l(V),async:!0,width:"550px",onConfirm:b,onClose:x},{default:n(()=>[a(R,{ref_key:"formRef",ref:d,model:l(o),"label-width":"84px",rules:C},{default:n(()=>[a(m,{label:"栏目名称",prop:"name"},{default:n(()=>[a(y,{modelValue:l(o).name,"onUpdate:modelValue":e[0]||(e[0]=s=>l(o).name=s),placeholder:"请输入栏目名称",clearable:""},null,8,["modelValue"])]),_:1}),a(m,{label:"排序",prop:"sort"},{default:n(()=>[c("div",null,[a(g,{modelValue:l(o).sort,"onUpdate:modelValue":e[1]||(e[1]=s=>l(o).sort=s),min:0,max:9999},null,8,["modelValue"]),e[3]||(e[3]=c("div",{class:"form-tips"},"默认为0, 数值越大越排前",-1))])]),_:1}),a(m,{label:"状态",prop:"is_show"},{default:n(()=>[a(k,{modelValue:l(o).is_show,"onUpdate:modelValue":e[2]||(e[2]=s=>l(o).is_show=s),"active-value":1,"inactive-value":0},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])])}}});export{X as _};
diff --git a/server/public/admin/assets/element-plus-0wC3naml.js b/server/public/admin/assets/element-plus-DFTWCWyi.js
similarity index 99%
rename from server/public/admin/assets/element-plus-0wC3naml.js
rename to server/public/admin/assets/element-plus-DFTWCWyi.js
index 0d4761d5..55557418 100644
--- a/server/public/admin/assets/element-plus-0wC3naml.js
+++ b/server/public/admin/assets/element-plus-DFTWCWyi.js
@@ -9,4 +9,4 @@ import{q as ht,T as bn,s as Ke,v as Bi,l as Li,w as Ot,o as Kd,a as Ai,r as vl,c
m 0 ${C?"":"-"}${w}
a ${w} ${w} 0 1 1 0 ${C?"-":""}${w*2}
a ${w} ${w} 0 1 1 0 ${C?"":"-"}${w*2}
- `}),c=y(()=>2*Math.PI*i.value),u=y(()=>n.type==="dashboard"?.75:1),f=y(()=>`${-1*c.value*(1-u.value)/2}px`),p=y(()=>({strokeDasharray:`${c.value*u.value}px, ${c.value}px`,strokeDashoffset:f.value})),h=y(()=>({strokeDasharray:`${c.value*u.value*(n.percentage/100)}px, ${c.value}px`,strokeDashoffset:f.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),m=y(()=>{let w;return n.color?w=S(n.percentage):w=t[n.status]||t.default,w}),d=y(()=>n.status==="warning"?ws:n.type==="line"?n.status==="success"?ks:Cl:n.status==="success"?Na:Fn),v=y(()=>n.type==="line"?12+n.strokeWidth*.4:n.width*.111111+2),g=y(()=>n.format(n.percentage));function b(w){const C=100/w.length;return w.map((N,T)=>He(N)?{color:N,percentage:(T+1)*C}:N).sort((N,T)=>N.percentage-T.percentage)}const S=w=>{var C;const{color:k}=n;if(Qe(k))return k(w);if(He(k))return k;{const N=b(k);for(const T of N)if(T.percentage>w)return T.color;return(C=N[N.length-1])==null?void 0:C.color}};return(w,C)=>(E(),L("div",{class:$([o(l).b(),o(l).m(e.type),o(l).is(e.status),{[o(l).m("without-text")]:!e.showText,[o(l).m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[e.type==="line"?(E(),L("div",{key:0,class:$(o(l).b("bar"))},[H("div",{class:$(o(l).be("bar","outer")),style:Fe({height:`${e.strokeWidth}px`})},[H("div",{class:$([o(l).be("bar","inner"),{[o(l).bem("bar","inner","indeterminate")]:e.indeterminate},{[o(l).bem("bar","inner","striped")]:e.striped},{[o(l).bem("bar","inner","striped-flow")]:e.stripedFlow}]),style:Fe(a.value)},[(e.showText||w.$slots.default)&&e.textInside?(E(),L("div",{key:0,class:$(o(l).be("bar","innerText"))},[X(w.$slots,"default",{percentage:e.percentage},()=>[H("span",null,he(g.value),1)])],2)):G("v-if",!0)],6)],6)],2)):(E(),L("div",{key:1,class:$(o(l).b("circle")),style:Fe({height:`${e.width}px`,width:`${e.width}px`})},[(E(),L("svg",gw,[H("path",{class:$(o(l).be("circle","track")),d:r.value,stroke:`var(${o(l).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":e.strokeLinecap,"stroke-width":s.value,fill:"none",style:Fe(p.value)},null,14,bw),H("path",{class:$(o(l).be("circle","path")),d:r.value,stroke:m.value,fill:"none",opacity:e.percentage?1:0,"stroke-linecap":e.strokeLinecap,"stroke-width":s.value,style:Fe(h.value)},null,14,yw)]))],6)),(e.showText||w.$slots.default)&&!e.textInside?(E(),L("div",{key:2,class:$(o(l).e("text")),style:Fe({fontSize:`${v.value}px`})},[X(w.$slots,"default",{percentage:e.percentage},()=>[e.status?(E(),Z(o(we),{key:1},{default:j(()=>[(E(),Z(_e(d.value)))]),_:1})):(E(),L("span",Cw,he(g.value),1))])],6)):G("v-if",!0)],10,hw))}});const kw=Ge(ww),Sw=["start","center","end","space-around","space-between","space-evenly"],Ew=["top","middle","bottom"],$w=me({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:Sw,default:"start"},align:{type:String,values:Ew}});var Nw=ie({name:"ElRow",__name:"row",props:$w,setup(e){const t=e,n=ce("row"),l=y(()=>t.gutter);et(vc,{gutter:l});const a=y(()=>{const i={};return t.gutter&&(i.marginRight=i.marginLeft=`-${t.gutter/2}px`),i}),s=y(()=>[n.b(),n.is(`justify-${t.justify}`,t.justify!=="start"),n.is(`align-${t.align}`,!!t.align)]);return(i,r)=>(E(),Z(_e(e.tag),{class:$(s.value),style:Fe(a.value)},{default:j(()=>[X(i.$slots,"default")]),_:3},8,["class","style"]))}});const l$=Ge(Nw),Tw="horizontal",Pw=({atEndEdge:e,atStartEdge:t,layout:n},l)=>{let a,s=0;const i=c=>c<0&&t.value||c>0&&e.value;return{hasReachedEdge:i,onWheel:c=>{vv(a);let{deltaX:u,deltaY:f}=c;c.shiftKey&&f!==0&&(u=f,f=0);const p=n.value===Tw?u:f;i(p)||(s+=p,!Rs()&&p!==0&&c.preventDefault(),a=Is(()=>{l(s),s=0}))}}},Iw=me({animated:Boolean,count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:q([Number,Object])}}),xw=me({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}});var mo=ie({name:"ElSkeletonItem",__name:"skeleton-item",props:xw,setup(e){const t=ce("skeleton");return(n,l)=>(E(),L("div",{class:$([o(t).e("item"),o(t).e(e.variant)])},[e.variant==="image"?(E(),Z(o(df),{key:0})):G("v-if",!0)],2))}});const Ow=(e,t=0)=>{if(t===0)return e;const n=gt(t)&&!!t.initVal,l=I(n);let a=null;const s=r=>{if(it(r)){l.value=e.value;return}a&&clearTimeout(a),a=setTimeout(()=>{l.value=e.value},r)},i=r=>{r==="leading"?Ae(t)?s(t):s(t.leading):gt(t)?s(t.trailing):l.value=!1};return Ze(()=>i("leading")),le(()=>e.value,r=>{i(r?"leading":"trailing")}),l};var Rw=ie({name:"ElSkeleton",__name:"skeleton",props:Iw,setup(e,{expose:t}){const n=e,l=ce("skeleton"),a=Ow(Nt(n,"loading"),n.throttle);return t({uiLoading:a}),(s,i)=>o(a)?(E(),L("div",ct({key:0,class:[o(l).b(),o(l).is("animated",e.animated)]},s.$attrs),[(E(!0),L(Re,null,rt(e.count,r=>(E(),L(Re,{key:r},[o(a)?X(s.$slots,"template",{key:r},()=>[U(mo,{class:$(o(l).is("first")),variant:"p"},null,8,["class"]),(E(!0),L(Re,null,rt(e.rows,c=>(E(),Z(mo,{key:c,class:$([o(l).e("paragraph"),o(l).is("last",c===e.rows&&e.rows>1)]),variant:"p"},null,8,["class"]))),128))]):G("v-if",!0)],64))),128))],16)):X(s.$slots,"default",va(ct({key:1},s.$attrs)))}});const a$=Ge(Rw,{SkeletonItem:mo});At(mo);const Mw=me({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),Dw={[dt]:(e,t)=>[e,t].every(Ae)},td="ElSteps";var Bw=ie({name:"ElSteps",__name:"steps",props:Mw,emits:Dw,setup(e,{emit:t}){const n=e,l=t,a=ce("steps"),{children:s,addChild:i,removeChild:r,ChildrenSorter:c}=Zu(qe(),"ElStep");return le(s,()=>{s.value.forEach((u,f)=>{u.setIndex(f)})}),et(td,{props:n,steps:s,addStep:i,removeStep:r}),le(()=>n.active,(u,f)=>{l(dt,u,f)}),(u,f)=>(E(),L("div",{class:$([o(a).b(),o(a).m(e.simple?"simple":e.direction)])},[X(u.$slots,"default"),U(o(c))],2))}});const Lw=me({title:{type:String,default:""},icon:{type:Ct},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}});var nd=ie({name:"ElStep",__name:"item",props:Lw,setup(e){const t=e,n=ce("step"),l=I(-1),a=I({}),s=I(""),i=be(td),r=qe();let c=0,u=0;Ze(()=>{le([()=>i.props.active,()=>i.props.processStatus,()=>i.props.finishStatus],([P],[x])=>{u=x||0,c=P-u,N(P)},{immediate:!0})});const f=y(()=>t.status||s.value),p=y(()=>{const P=i.steps.value[l.value-1];return P?P.internalStatus.value:"wait"}),h=y(()=>i.props.alignCenter),m=y(()=>i.props.direction==="vertical"),d=y(()=>i.props.simple),v=y(()=>i.steps.value.length),g=y(()=>{var P;return((P=i.steps.value[v.value-1])==null?void 0:P.uid)===r.uid}),b=y(()=>d.value?"":i.props.space),S=y(()=>[n.b(),n.is(d.value?"simple":i.props.direction),n.is("flex",g.value&&!b.value&&!h.value),n.is("center",h.value&&!m.value&&!d.value)]),w=y(()=>{const P={flexBasis:Ae(b.value)?`${b.value}px`:b.value?b.value:`${100/(v.value-(h.value?0:1))}%`};return m.value||g.value&&(P.maxWidth=`${100/v.value}%`),P}),C=P=>{l.value=P},k=P=>{const x=P==="wait",W={transitionDelay:`${Math.abs(c)===1?0:c>0?(l.value+1-u)*150:-(l.value+1-i.props.active)*150}ms`},A=P===i.props.processStatus||x?0:100;W.borderWidth=A&&!d.value?"1px":0,W[i.props.direction==="vertical"?"height":"width"]=`${A}%`,a.value=W},N=P=>{P>l.value?s.value=i.props.finishStatus:P===l.value&&p.value!=="error"?s.value=i.props.processStatus:s.value="wait";const x=i.steps.value[l.value-1];x&&x.calcProgress(s.value)},T={uid:r.uid,getVnode:()=>r.vnode,currentStatus:f,internalStatus:s,setIndex:C,calcProgress:k};return i.addStep(T),Et(()=>{i.removeStep(T)}),(P,x)=>(E(),L("div",{style:Fe(w.value),class:$(S.value)},[G(" icon & line "),H("div",{class:$([o(n).e("head"),o(n).is(f.value)])},[d.value?G("v-if",!0):(E(),L("div",{key:0,class:$(o(n).e("line"))},[H("i",{class:$(o(n).e("line-inner")),style:Fe(a.value)},null,6)],2)),H("div",{class:$([o(n).e("icon"),o(n).is(e.icon||P.$slots.icon?"icon":"text")])},[X(P.$slots,"icon",{},()=>[e.icon?(E(),Z(o(we),{key:0,class:$(o(n).e("icon-inner"))},{default:j(()=>[(E(),Z(_e(e.icon)))]),_:1},8,["class"])):f.value==="success"?(E(),Z(o(we),{key:1,class:$([o(n).e("icon-inner"),o(n).is("status")])},{default:j(()=>[U(o(Na))]),_:1},8,["class"])):f.value==="error"?(E(),Z(o(we),{key:2,class:$([o(n).e("icon-inner"),o(n).is("status")])},{default:j(()=>[U(o(Fn))]),_:1},8,["class"])):d.value?G("v-if",!0):(E(),L("div",{key:3,class:$(o(n).e("icon-inner"))},he(l.value+1),3))])],2)],2),G(" title & description "),H("div",{class:$(o(n).e("main"))},[H("div",{class:$([o(n).e("title"),o(n).is(f.value)])},[X(P.$slots,"title",{},()=>[ut(he(e.title),1)])],2),d.value?(E(),L("div",{key:0,class:$(o(n).e("arrow"))},null,2)):(E(),L("div",{key:1,class:$([o(n).e("description"),o(n).is(f.value)])},[X(P.$slots,"description",{},()=>[ut(he(e.description),1)])],2))],2)],6))}});const o$=Ge(Bw,{Step:nd}),s$=At(nd),ld=e=>["",...Gn].includes(e),Aw=me({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:void 0},loading:Boolean,size:{type:String,validator:ld},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:Ct},activeActionIcon:{type:Ct},activeIcon:{type:Ct},inactiveIcon:{type:Ct},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:q(Function)},id:String,tabindex:{type:[String,Number]},...Dn(["ariaLabel"])}),Fw={[Ye]:e=>yt(e)||He(e)||Ae(e),[dt]:e=>yt(e)||He(e)||Ae(e),[On]:e=>yt(e)||He(e)||Ae(e)},Vw=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex"],zw=["aria-hidden"],Kw={key:1},Hw={key:1},Ww=["aria-hidden"],pi="ElSwitch";var jw=ie({name:pi,__name:"switch",props:Aw,emits:Fw,setup(e,{expose:t,emit:n}){const l=e,a=n,{formItem:s}=yn(),i=Gt(),r=ce("switch"),{inputId:c}=ll(l,{formItemContext:s}),u=Dt(y(()=>{if(l.loading)return!0})),f=I(l.modelValue!==!1),p=ln(),h=y(()=>[r.b(),r.m(i.value),r.is("disabled",u.value),r.is("checked",b.value)]),m=y(()=>[r.e("label"),r.em("label","left"),r.is("active",!b.value)]),d=y(()=>[r.e("label"),r.em("label","right"),r.is("active",b.value)]),v=y(()=>({width:Bt(l.width)}));le(()=>l.modelValue,()=>{f.value=!0});const g=y(()=>f.value?l.modelValue:!1),b=y(()=>g.value===l.activeValue);[l.activeValue,l.inactiveValue].includes(g.value)||(a(Ye,l.inactiveValue),a(dt,l.inactiveValue),a(On,l.inactiveValue)),le(b,k=>{var N;p.value.checked=k,l.validateEvent&&((N=s==null?void 0:s.validate)==null||N.call(s,"change").catch(T=>void 0))});const S=()=>{const k=b.value?l.inactiveValue:l.activeValue;a(Ye,k),a(dt,k),a(On,k),Ee(()=>{p.value.checked=b.value})},w=()=>{if(u.value)return;const{beforeChange:k}=l;if(!k){S();return}const N=k();[ha(N),yt(N)].includes(!0)||qt(pi,"beforeChange must return type `Promise` or `boolean`"),ha(N)?N.then(P=>{P&&S()}).catch(P=>{}):N&&S()},C=()=>{var k,N;(N=(k=p.value)==null?void 0:k.focus)==null||N.call(k)};return Ze(()=>{p.value.checked=b.value}),t({focus:C,checked:b}),(k,N)=>(E(),L("div",{class:$(h.value),onClick:Ke(w,["prevent"])},[H("input",{id:o(c),ref_key:"input",ref:p,class:$(o(r).e("input")),type:"checkbox",role:"switch","aria-checked":b.value,"aria-disabled":o(u),"aria-label":e.ariaLabel,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:o(u),tabindex:e.tabindex,onChange:S,onKeydown:Ot(w,["enter"])},null,42,Vw),!e.inlinePrompt&&(e.inactiveIcon||e.inactiveText||k.$slots.inactive)?(E(),L("span",{key:0,class:$(m.value)},[X(k.$slots,"inactive",{},()=>[e.inactiveIcon?(E(),Z(o(we),{key:0},{default:j(()=>[(E(),Z(_e(e.inactiveIcon)))]),_:1})):G("v-if",!0),!e.inactiveIcon&&e.inactiveText?(E(),L("span",{key:1,"aria-hidden":b.value},he(e.inactiveText),9,zw)):G("v-if",!0)])],2)):G("v-if",!0),H("span",{class:$(o(r).e("core")),style:Fe(v.value)},[e.inlinePrompt?(E(),L("div",{key:0,class:$(o(r).e("inner"))},[b.value?(E(),L("div",{key:1,class:$(o(r).e("inner-wrapper"))},[X(k.$slots,"active",{},()=>[e.activeIcon?(E(),Z(o(we),{key:0},{default:j(()=>[(E(),Z(_e(e.activeIcon)))]),_:1})):G("v-if",!0),!e.activeIcon&&e.activeText?(E(),L("span",Hw,he(e.activeText),1)):G("v-if",!0)])],2)):(E(),L("div",{key:0,class:$(o(r).e("inner-wrapper"))},[X(k.$slots,"inactive",{},()=>[e.inactiveIcon?(E(),Z(o(we),{key:0},{default:j(()=>[(E(),Z(_e(e.inactiveIcon)))]),_:1})):G("v-if",!0),!e.inactiveIcon&&e.inactiveText?(E(),L("span",Kw,he(e.inactiveText),1)):G("v-if",!0)])],2))],2)):G("v-if",!0),H("div",{class:$(o(r).e("action"))},[e.loading?(E(),Z(o(we),{key:0,class:$(o(r).is("loading"))},{default:j(()=>[U(o(qn))]),_:1},8,["class"])):b.value?X(k.$slots,"active-action",{key:1},()=>[e.activeActionIcon?(E(),Z(o(we),{key:0},{default:j(()=>[(E(),Z(_e(e.activeActionIcon)))]),_:1})):G("v-if",!0)]):b.value?G("v-if",!0):X(k.$slots,"inactive-action",{key:2},()=>[e.inactiveActionIcon?(E(),Z(o(we),{key:0},{default:j(()=>[(E(),Z(_e(e.inactiveActionIcon)))]),_:1})):G("v-if",!0)])],2)],6),!e.inlinePrompt&&(e.activeIcon||e.activeText||k.$slots.active)?(E(),L("span",{key:1,class:$(d.value)},[X(k.$slots,"active",{},()=>[e.activeIcon?(E(),Z(o(we),{key:0},{default:j(()=>[(E(),Z(_e(e.activeIcon)))]),_:1})):G("v-if",!0),!e.activeIcon&&e.activeText?(E(),L("span",{key:1,"aria-hidden":!b.value},he(e.activeText),9,Ww)):G("v-if",!0)])],2)):G("v-if",!0)],2))}});const r$=Ge(jw),qo=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},Yw=function(e,t,n,l,a){if(!t&&!l&&(!a||Pe(a)&&!a.length))return e;He(n)?n=n==="descending"?-1:1:n=n&&n<0?-1:1;const s=l?null:function(r,c){return a?Zi(tn(a),u=>He(u)?En(r,u):u(r,c,e)):(t!=="$key"&>(r)&&"$value"in r&&(r=r.$value),[gt(r)?t?En(r,t):null:r])},i=function(r,c){var u,f,p,h,m,d;if(l)return l(r.value,c.value);for(let v=0,g=(f=(u=r.key)==null?void 0:u.length)!=null?f:0;v((d=c.key)==null?void 0:d[v]))return 1}return 0};return e.map((r,c)=>({value:r,index:c,key:s?s(r,c):null})).sort((r,c)=>{let u=i(r,c);return u||(u=r.index-c.index),u*+n}).map(r=>r.value)},ad=function(e,t){let n=null;return e.columns.forEach(l=>{l.id===t&&(n=l)}),n},Uw=function(e,t){let n=null;for(let l=0;l{if(!e)throw new Error("Row is required when get row identity");if(He(t)){if(!t.includes("."))return`${e[t]}`;const n=t.split(".");let l=e;for(const a of n)l=l[a];return`${l}`}else if(Qe(t))return t.call(null,e);return""},Yl=function(e,t,n=!1,l="children"){const a=e||[],s={};return a.forEach((i,r)=>{if(s[nn(i,t)]={row:i,index:r},n){const c=i[l];Pe(c)&&Object.assign(s,Yl(c,t,!0,l))}}),s};function qw(e,t){const n={};let l;for(l in e)n[l]=e[l];for(l in t)if(Ut(t,l)){const a=t[l];it(a)||(n[l]=a)}return n}function cr(e){return e===""||it(e)||(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function od(e){return e===""||it(e)||(e=cr(e),Number.isNaN(e)&&(e=80)),e}function Gw(e){return Ae(e)?e:He(e)?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function _w(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...l)=>t(n(...l)))}function ho(e,t,n,l,a,s,i){let r=s??0,c=!1;const f=(()=>{if(!i)return e.indexOf(t);const v=nn(t,i);return e.findIndex(g=>nn(g,i)===v)})(),p=f!==-1,h=a==null?void 0:a.call(null,t,r),m=v=>{v==="add"?e.push(t):e.splice(f,1),c=!0},d=v=>{let g=0;const b=(l==null?void 0:l.children)&&v[l.children];return b&&Pe(b)&&(g+=b.length,b.forEach(S=>{g+=d(S)})),g};return(!a||h)&&(yt(n)?n&&!p?m("add"):!n&&p&&m("remove"):m(p?"remove":"add")),!(l!=null&&l.checkStrictly)&&(l!=null&&l.children)&&Pe(t[l.children])&&t[l.children].forEach(v=>{const g=ho(e,v,n??!p,l,a,r+1,i);r+=d(v)+1,g&&(c=g)}),c}function Xw(e,t,n="children",l="hasChildren",a=!1){const s=r=>!(Pe(r)&&r.length);function i(r,c,u){t(r,c,u),c.forEach(f=>{if(f[l]&&a){t(f,null,u+1);return}const p=f[n];s(p)||i(f,p,u+1)})}e.forEach(r=>{if(r[l]&&a){t(r,null,0);return}const c=r[n];s(c)||i(r,c,0)})}const Jw=(e,t,n,l)=>{const a={strategy:"fixed",...e.popperOptions},s=Qe(l==null?void 0:l.tooltipFormatter)?l.tooltipFormatter({row:n,column:l,cellValue:dl(n,l.property).value}):void 0;return jt(s)?{slotContent:s,content:null,...e,popperOptions:a}:{slotContent:null,content:s??t,...e,popperOptions:a}};let rn=null;function Zw(e,t,n,l,a,s){var i;const r=Jw(e,t,n,l),c={...r,slotContent:void 0};if((rn==null?void 0:rn.trigger)===a){const d=(i=rn.vm)==null?void 0:i.component;Ji(d==null?void 0:d.props,c),d&&r.slotContent&&(d.slots.content=()=>[r.slotContent]);return}rn==null||rn();const u=s==null?void 0:s.refs.tableWrapper,f=u==null?void 0:u.dataset.prefix,p=U(Rn,{virtualTriggering:!0,virtualRef:a,appendTo:u,placement:"top",transition:"none",offset:0,hideAfter:0,...c},r.slotContent?{content:()=>r.slotContent}:void 0);p.appContext={...s.appContext,...s};const h=document.createElement("div");vl(p,h),p.component.exposed.onOpen();const m=u==null?void 0:u.querySelector(`.${f}-scrollbar__wrap`);rn=()=>{var d,v;(v=(d=p.component)==null?void 0:d.exposed)!=null&&v.onClose&&p.component.exposed.onClose(),vl(null,h);const g=rn;m==null||m.removeEventListener("scroll",g),g.trigger=void 0,g.vm=void 0,rn=null},rn.trigger=a??void 0,rn.vm=p,m==null||m.addEventListener("scroll",rn)}function sd(e){return e.children?Zi(e.children,sd):[e]}function hi(e,t){return e+t.colSpan}const rd=(e,t,n,l)=>{let a=0,s=e;const i=n.states.columns.value;if(l){const c=sd(l[e]);a=i.slice(0,i.indexOf(c[0])).reduce(hi,0),s=a+c.reduce(hi,0)-1}else a=e;let r;switch(t){case"left":s=i.length-n.states.rightFixedLeafColumnsLength.value&&(r="right");break;default:s=i.length-n.states.rightFixedLeafColumnsLength.value&&(r="right")}return r?{direction:r,start:a,after:s}:{}},dr=(e,t,n,l,a,s=0)=>{const i=[],{direction:r,start:c,after:u}=rd(t,n,l,a);if(r){const f=r==="left";i.push(`${e}-fixed-column--${r}`),f&&u+s===l.states.fixedLeafColumnsLength.value-1?i.push("is-last-column"):!f&&c-s===l.states.columns.value.length-l.states.rightFixedLeafColumnsLength.value&&i.push("is-first-column")}return i};function gi(e,t){return e+(wo(t.realWidth)||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const fr=(e,t,n,l)=>{const{direction:a,start:s=0,after:i=0}=rd(e,t,n,l);if(!a)return;const r={},c=a==="left",u=n.states.columns.value;return c?r.left=u.slice(0,s).reduce(gi,0):r.right=u.slice(i+1).reverse().reduce(gi,0),r},na=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function id(e){return e.some(t=>jt(t)?!(t.type===Il||t.type===Re&&!id(t.children)):!0)?e:null}function Qw(e){const t=qe(),n=I(!1),l=I([]),a=(u,f)=>{var p;const h=t.store.states.rowExpandable.value;return(p=h==null?void 0:h(u,f))!=null?p:!0};return{updateExpandRows:()=>{const u=e.data.value||[],f=e.rowKey.value;if(n.value)l.value=t.store.states.rowExpandable.value?u.filter(a):u.slice();else if(f){const p=Yl(l.value,f);l.value=u.filter((h,m)=>{const d=nn(h,f);return!!p[d]&&a(h,m)})}else l.value=[]},toggleRowExpansion:(u,f)=>{const h=(e.data.value||[]).indexOf(u);if(h>-1&&!a(u,h))return;ho(l.value,u,f,void 0,void 0,void 0,e.rowKey.value)&&t.emit("expand-change",u,l.value.slice())},setExpandRowKeys:u=>{t.store.assertRowKey();const f=e.data.value||[],p=e.rowKey.value,h=Yl(f,p);l.value=u.reduce((m,d)=>{const v=h[d];return v&&a(v.row,v.index)&&m.push(v.row),m},[])},isRowExpanded:u=>{const f=e.rowKey.value;return f?!!Yl(l.value,f)[nn(u,f)]:l.value.includes(u)},states:{expandRows:l,defaultExpandAll:n}}}function ek(e){const t=qe(),n=I(null),l=I(null),a=u=>{t.store.assertRowKey(),n.value=u,i(u)},s=()=>{n.value=null},i=u=>{var f;const{data:p,rowKey:h}=e,m=l.value;let d=null;h.value&&(d=(f=(o(p)||[]).find(v=>nn(v,h.value)===u))!=null?f:null),l.value=d??null,t.emit("current-change",l.value,m)};return{setCurrentRowKey:a,restoreCurrentRowKey:s,setCurrentRowByKey:i,updateCurrentRow:u=>{const f=l.value;if(u&&u!==f){l.value=u,t.emit("current-change",l.value,f);return}!u&&f&&(l.value=null,t.emit("current-change",null,f))},updateCurrentRowData:()=>{const u=e.rowKey.value,f=e.data.value||[],p=l.value;if(p&&!f.includes(p))if(u){const h=nn(p,u);i(h)}else l.value=null,t.emit("current-change",null,p);else n.value&&(i(n.value),s())},states:{_currentRowKey:n,currentRow:l}}}function tk(e){const t=I([]),n=I({}),l=I(16),a=I(!1),s=I({}),i=I("hasChildren"),r=I("children"),c=I(!1),u=qe(),f=y(()=>{if(!e.rowKey.value)return{};const C=e.data.value||[];return h(C)}),p=y(()=>{const C=e.rowKey.value,k=Object.keys(s.value),N={};return k.length&&k.forEach(T=>{if(s.value[T].length){const P={children:[]};s.value[T].forEach(x=>{const D=nn(x,C);P.children.push(D),x[i.value]&&!N[D]&&(N[D]={children:[]})}),N[T]=P}}),N}),h=C=>{const k=e.rowKey.value,N={};return Xw(C,(T,P,x)=>{const D=nn(T,k);Pe(P)?N[D]={children:P.map(W=>nn(W,k)),level:x}:a.value&&(N[D]={children:[],lazy:!0,level:x})},r.value,i.value,a.value),N},m=(C=!1,k)=>{var N,T;k||(k=(N=u.store)==null?void 0:N.states.defaultExpandAll.value);const P=f.value,x=p.value,D=Object.keys(P),W={};if(D.length){const A=o(n),V=[],_=(ve,O)=>{if(C)return t.value?k||t.value.includes(O):!!(k||ve!=null&&ve.expanded);{const R=k||t.value&&t.value.includes(O);return!!(ve!=null&&ve.expanded||R)}};D.forEach(ve=>{const O=A[ve],R={...P[ve]};if(R.expanded=_(O,ve),R.lazy){const{loaded:B=!1,loading:M=!1}=O||{};R.loaded=!!B,R.loading=!!M,V.push(ve)}W[ve]=R});const oe=Object.keys(x);a.value&&oe.length&&V.length&&oe.forEach(ve=>{var O;const R=A[ve],B=x[ve].children;if(V.includes(ve)){if(((O=W[ve].children)==null?void 0:O.length)!==0)throw new Error("[ElTable]children must be an empty array.");W[ve].children=B}else{const{loaded:M=!1,loading:F=!1}=R||{};W[ve]={lazy:!0,loaded:!!M,loading:!!F,expanded:_(R,ve),children:B,level:void 0}}})}n.value=W,(T=u.store)==null||T.updateTableScrollY()};le(()=>t.value,()=>{m(!0)}),le(()=>f.value,()=>{m()}),le(()=>p.value,()=>{m()});const d=C=>{t.value=C,m()},v=C=>a.value&&C&&"loaded"in C&&!C.loaded,g=(C,k)=>{u.store.assertRowKey();const N=e.rowKey.value,T=nn(C,N),P=T&&n.value[T];if(T&&P&&"expanded"in P){const x=P.expanded;k=it(k)?!P.expanded:k,n.value[T].expanded=k,x!==k&&u.emit("expand-change",C,k),k&&v(P)&&S(C,T,P),u.store.updateTableScrollY()}},b=C=>{u.store.assertRowKey();const k=e.rowKey.value,N=nn(C,k),T=n.value[N];v(T)?S(C,N,T):g(C,void 0)},S=(C,k,N)=>{const{load:T}=u.props;T&&!n.value[k].loaded&&(n.value[k].loading=!0,T(C,N,P=>{if(!Pe(P))throw new TypeError("[ElTable] data must be an array");n.value[k].loading=!1,n.value[k].loaded=!0,n.value[k].expanded=!0,P.length&&(s.value[k]=P),u.emit("expand-change",C,!0)}))};return{loadData:S,loadOrToggle:b,toggleTreeExpansion:g,updateTreeExpandKeys:d,updateTreeData:m,updateKeyChildren:(C,k)=>{const{lazy:N,rowKey:T}=u.props;if(N){if(!T)throw new Error("[Table] rowKey is required in updateKeyChild");s.value[C]&&(s.value[C]=k)}},normalize:h,states:{expandRowKeys:t,treeData:n,indent:l,lazy:a,lazyTreeNodeMap:s,lazyColumnIdentifier:i,childrenColumnName:r,checkStrictly:c}}}const nk=(e,t)=>{const n=t.sortingColumn;return!n||He(n.sortable)?e:Yw(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},to=e=>{const t=[];return e.forEach(n=>{n.children&&n.children.length>0?t.push.apply(t,to(n.children)):t.push(n)}),t};function lk(){var e;const t=qe(),{size:n}=Mn((e=t.proxy)==null?void 0:e.$props),l=I(null),a=I([]),s=I([]),i=I(!1),r=I([]),c=I([]),u=I([]),f=I([]),p=I([]),h=I([]),m=I([]),d=I([]),v=[],g=I(0),b=I(0),S=I(0),w=I(!1),C=I([]),k=I(!1),N=I(!1),T=I(null),P=I(null),x=I({}),D=I(null),W=I(null),A=I(null),V=I(null),_=I(null),oe=y(()=>l.value?Yl(C.value,l.value):void 0);le(a,()=>{var Me;t.state&&(B(!1),t.props.tableLayout==="auto"&&((Me=t.refs.tableHeaderRef)==null||Me.updateFixedColumnStyle()))},{deep:!0});const ve=()=>{if(!l.value)throw new Error("[ElTable] prop row-key is required")},O=Me=>{var nt;(nt=Me.children)==null||nt.forEach(Je=>{Je.fixed=Me.fixed,O(Je)})},R=()=>{r.value.forEach(Ce=>{O(Ce)}),f.value=r.value.filter(Ce=>[!0,"left"].includes(Ce.fixed));const Me=r.value.find(Ce=>Ce.type==="selection");let nt;Me&&Me.fixed!=="right"&&!f.value.includes(Me)&&r.value.indexOf(Me)===0&&f.value.length&&(f.value.unshift(Me),nt=!0),p.value=r.value.filter(Ce=>Ce.fixed==="right");const Je=r.value.filter(Ce=>(nt?Ce.type!=="selection":!0)&&!Ce.fixed);c.value=Array.from(f.value).concat(Je).concat(p.value);const te=to(Je),ge=to(f.value),Q=to(p.value);g.value=te.length,b.value=ge.length,S.value=Q.length,u.value=Array.from(ge).concat(te).concat(Q),i.value=f.value.length>0||p.value.length>0},B=(Me,nt=!1)=>{Me&&R(),nt?t.state.doLayout():t.state.debouncedUpdateLayout()},M=Me=>oe.value?!!oe.value[nn(Me,l.value)]:C.value.includes(Me),F=()=>{w.value=!1;const Me=C.value;C.value=[],Me.length&&t.emit("selection-change",[])},K=()=>{var Me,nt;let Je;if(l.value){Je=[];const te=(nt=(Me=t==null?void 0:t.store)==null?void 0:Me.states)==null?void 0:nt.childrenColumnName.value,ge=Yl(a.value,l.value,!0,te);for(const Q in oe.value)Ut(oe.value,Q)&&!ge[Q]&&Je.push(oe.value[Q].row)}else Je=C.value.filter(te=>!a.value.includes(te));if(Je.length){const te=C.value.filter(ge=>!Je.includes(ge));C.value=te,t.emit("selection-change",te.slice())}},z=()=>(C.value||[]).slice(),J=(Me,nt,Je=!0,te=!1)=>{var ge,Q,Ce,Ve;const mt={children:(Q=(ge=t==null?void 0:t.store)==null?void 0:ge.states)==null?void 0:Q.childrenColumnName.value,checkStrictly:(Ve=(Ce=t==null?void 0:t.store)==null?void 0:Ce.states)==null?void 0:Ve.checkStrictly.value};if(ho(C.value,Me,nt,mt,te?void 0:T.value,a.value.indexOf(Me),l.value)){const Cn=(C.value||[]).slice();Je&&t.emit("select",Cn,Me),t.emit("selection-change",Cn)}},ne=()=>{var Me,nt;const Je=N.value?!w.value:!(w.value||C.value.length);w.value=Je;let te=!1,ge=0;const Q=(nt=(Me=t==null?void 0:t.store)==null?void 0:Me.states)==null?void 0:nt.rowKey.value,{childrenColumnName:Ce}=t.store.states,Ve={children:Ce.value,checkStrictly:!1};a.value.forEach((mt,Lt)=>{const Cn=Lt+ge;ho(C.value,mt,Je,Ve,T.value,Cn,Q)&&(te=!0),ge+=se(nn(mt,Q))}),te&&t.emit("selection-change",C.value?C.value.slice():[]),t.emit("select-all",(C.value||[]).slice())},fe=()=>{var Me;if(((Me=a.value)==null?void 0:Me.length)===0){w.value=!1;return}const{childrenColumnName:nt}=t.store.states;let Je=0,te=0;const ge=Ce=>{var Ve;for(const mt of Ce){const Lt=T.value&&T.value.call(null,mt,Je);if(M(mt))te++;else if(!T.value||Lt)return!1;if(Je++,(Ve=mt[nt.value])!=null&&Ve.length&&!ge(mt[nt.value]))return!1}return!0},Q=ge(a.value||[]);w.value=te===0?!1:Q},se=Me=>{var nt;if(!t||!t.store)return 0;const{treeData:Je}=t.store.states;let te=0;const ge=(nt=Je.value[Me])==null?void 0:nt.children;return ge&&(te+=ge.length,ge.forEach(Q=>{te+=se(Q)})),te},Se=(Me,nt)=>{const Je={};return tn(Me).forEach(te=>{x.value[te.id]=nt,Je[te.columnKey||te.id]=nt}),Je},ue=(Me,nt,Je)=>{W.value&&W.value!==Me&&(W.value.order=null),W.value=Me,A.value=nt,V.value=Je},ee=()=>{let Me=o(s);Object.keys(x.value).forEach(nt=>{const Je=x.value[nt];if(!Je||Je.length===0)return;const te=ad({columns:u.value},nt);te&&te.filterMethod&&(Me=Me.filter(ge=>Je.some(Q=>te.filterMethod.call(null,Q,ge,te))))}),D.value=Me},Y=()=>{var Me;a.value=nk((Me=D.value)!=null?Me:[],{sortingColumn:W.value,sortProp:A.value,sortOrder:V.value})},re=(Me=void 0)=>{Me!=null&&Me.filter||ee(),Y()},$e=Me=>{const{tableHeaderRef:nt}=t.refs;if(!nt)return;const Je=Object.assign({},nt.filterPanels),te=Object.keys(Je);if(te.length)if(He(Me)&&(Me=[Me]),Pe(Me)){const ge=Me.map(Q=>Uw({columns:u.value},Q));te.forEach(Q=>{const Ce=ge.find(Ve=>Ve.id===Q);Ce&&(Ce.filteredValue=[])}),t.store.commit("filterChange",{column:ge,values:[],silent:!0,multi:!0})}else te.forEach(ge=>{const Q=u.value.find(Ce=>Ce.id===ge);Q&&(Q.filteredValue=[])}),x.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},Le=()=>{W.value&&(ue(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:tt,toggleRowExpansion:je,updateExpandRows:lt,states:pt,isRowExpanded:vt}=Qw({data:a,rowKey:l}),{updateTreeExpandKeys:wt,toggleTreeExpansion:Xt,updateTreeData:Jt,updateKeyChildren:zt,loadOrToggle:pn,states:mn}=tk({data:a,rowKey:l}),{updateCurrentRowData:Zt,updateCurrentRow:xe,setCurrentRowKey:We,states:De}=ek({data:a,rowKey:l});return{assertRowKey:ve,updateColumns:R,scheduleLayout:B,isSelected:M,clearSelection:F,cleanSelection:K,getSelectionRows:z,toggleRowSelection:J,_toggleAllSelection:ne,toggleAllSelection:null,updateAllSelected:fe,updateFilters:Se,updateCurrentRow:xe,updateSort:ue,execFilter:ee,execSort:Y,execQuery:re,clearFilter:$e,clearSort:Le,toggleRowExpansion:je,setExpandRowKeysAdapter:Me=>{tt(Me),wt(Me)},setCurrentRowKey:We,toggleRowExpansionAdapter:(Me,nt)=>{u.value.some(({type:te})=>te==="expand")?je(Me,nt):Xt(Me,nt)},isRowExpanded:vt,updateExpandRows:lt,updateCurrentRowData:Zt,loadOrToggle:pn,updateTreeData:Jt,updateKeyChildren:zt,states:{tableSize:n,rowKey:l,data:a,_data:s,isComplex:i,_columns:r,originColumns:c,columns:u,fixedColumns:f,rightFixedColumns:p,leafColumns:h,fixedLeafColumns:m,rightFixedLeafColumns:d,updateOrderFns:v,leafColumnsLength:g,fixedLeafColumnsLength:b,rightFixedLeafColumnsLength:S,isAllSelected:w,selection:C,reserveSelection:k,selectOnIndeterminate:N,selectable:T,rowExpandable:P,filters:x,filteredData:D,sortingColumn:W,sortProp:A,sortOrder:V,hoverRow:_,...pt,...mn,...De}}}function vs(e,t){return e.map(n=>{var l;return n.id===t.id?t:((l=n.children)!=null&&l.length&&(n.children=vs(n.children,t)),n)})}function ps(e){e.forEach(t=>{var n,l;t.no=(n=t.getColumnIndex)==null?void 0:n.call(t),(l=t.children)!=null&&l.length&&ps(t.children)}),e.sort((t,n)=>t.no-n.no)}function ak(){const e=qe(),t=lk(),n=ce("table"),{t:l}=at();return{ns:n,t:l,...t,mutations:{setData(r,c){const u=o(r._data)!==c;r.data.value=c,r._data.value=c,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),o(r.reserveSelection)?e.store.assertRowKey():u?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(r,c,u,f){var p;const h=o(r._columns);let m=[];u?(u&&!u.children&&(u.children=[]),(p=u.children)==null||p.push(c),m=vs(h,u)):(h.push(c),m=h),ps(m),r._columns.value=m,r.updateOrderFns.push(f),c.type==="selection"&&(r.selectable.value=c.selectable,r.reserveSelection.value=c.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(r,c){var u;((u=c.getColumnIndex)==null?void 0:u.call(c))!==c.no&&(ps(r._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(r,c,u,f){var p;const h=o(r._columns)||[];if(u)(p=u.children)==null||p.splice(u.children.findIndex(d=>d.id===c.id),1),Ee(()=>{var d;((d=u.children)==null?void 0:d.length)===0&&delete u.children}),r._columns.value=vs(h,u);else{const d=h.indexOf(c);d>-1&&(h.splice(d,1),r._columns.value=h)}const m=r.updateOrderFns.indexOf(f);m>-1&&r.updateOrderFns.splice(m,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(r,c){const{prop:u,order:f,init:p}=c;if(u){const h=o(r.columns).find(m=>m.property===u);h&&(h.order=f,e.store.updateSort(h,u,f),e.store.commit("changeSortCondition",{init:p}))}},changeSortCondition(r,c){const{sortingColumn:u,sortProp:f,sortOrder:p}=r,h=o(u),m=o(f),d=o(p);wo(d)&&(r.sortingColumn.value=null,r.sortProp.value=null);const v={filter:!0};e.store.execQuery(v),(!c||!(c.silent||c.init))&&e.emit("sort-change",{column:h,prop:m,order:d}),e.store.updateTableScrollY()},filterChange(r,c){const{column:u,values:f,silent:p}=c,h=e.store.updateFilters(u,f);e.store.execQuery(),p||e.emit("filter-change",h),e.store.updateTableScrollY()},toggleAllSelection(){var r,c;(c=(r=e.store).toggleAllSelection)==null||c.call(r)},rowSelectedChanged(r,c){e.store.toggleRowSelection(c),e.store.updateAllSelected()},setHoverRow(r,c){r.hoverRow.value=c},setCurrentRow(r,c){e.store.updateCurrentRow(c)}},commit:function(r,...c){const u=e.store.mutations;if(u[r])u[r].apply(e,[e.store.states,...c]);else throw new Error(`Action not found: ${r}`)},updateTableScrollY:function(){Ee(()=>e.layout.updateScrollY.apply(e.layout))}}}const vr={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",rowExpandable:"rowExpandable",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"},"treeProps.checkStrictly":{key:"checkStrictly",default:!1}};function ok(e,t){if(!e)throw new Error("Table is required.");const n=ak();return n.toggleAllSelection=Jl(n._toggleAllSelection,10),Object.keys(vr).forEach(l=>{ud(cd(t,l),l,n)}),sk(n,t),n}function sk(e,t){Object.keys(vr).forEach(n=>{le(()=>cd(t,n),l=>{ud(l,n,e)})})}function ud(e,t,n){let l=e,a=vr[t];gt(a)&&(l=l||a.default,a=a.key),n.states[a].value=l}function cd(e,t){if(t.includes(".")){const n=t.split(".");let l=e;return n.forEach(a=>{l=l[a]}),l}else return e[t]}var rk=Object.defineProperty,ik=(e,t,n)=>t in e?rk(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,en=(e,t,n)=>ik(e,typeof t!="symbol"?t+"":t,n);class uk{constructor(t){en(this,"observers"),en(this,"table"),en(this,"store"),en(this,"columns"),en(this,"fit"),en(this,"showHeader"),en(this,"height"),en(this,"scrollX"),en(this,"scrollY"),en(this,"bodyWidth"),en(this,"fixedWidth"),en(this,"rightFixedWidth"),en(this,"tableHeight"),en(this,"headerHeight"),en(this,"appendHeight"),en(this,"footerHeight"),en(this,"gutterWidth"),this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=I(null),this.scrollX=I(!1),this.scrollY=I(!1),this.bodyWidth=I(null),this.fixedWidth=I(null),this.rightFixedWidth=I(null),this.gutterWidth=0;for(const n in t)Ut(t,n)&&(Ln(this[n])?this[n].value=t[n]:this[n]=t[n]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){const t=this.height.value;if(wo(t))return!1;const n=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(n!=null&&n.wrapRef)){let l=!0;const a=this.scrollY.value;return l=n.wrapRef.scrollHeight>n.wrapRef.clientHeight,this.scrollY.value=l,a!==l}return!1}setHeight(t,n="height"){if(!st)return;const l=this.table.vnode.el;if(t=Gw(t),this.height.value=Number(t),!l&&(t||t===0)){Ee(()=>this.setHeight(t,n));return}l&&Ae(t)?(l.style[n]=`${t}px`,this.updateElsHeight()):l&&He(t)&&(l.style[n]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(l=>{l.isColumnGroup?t.push.apply(t,l.columns):t.push(l)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let n=t;for(;n.tagName!=="DIV";){if(getComputedStyle(n).display==="none")return!0;n=n.parentElement}return!1}updateColumnsWidth(){var t;if(!st)return;const n=this.fit,l=(t=this.table.vnode.el)==null?void 0:t.clientWidth;let a=0;const s=this.getFlattenColumns(),i=s.filter(u=>!Ae(u.width));if(s.forEach(u=>{Ae(u.width)&&u.realWidth&&(u.realWidth=null)}),i.length>0&&n){if(s.forEach(u=>{a+=Number(u.width||u.minWidth||80)}),a<=l){this.scrollX.value=!1;const u=l-a;if(i.length===1)i[0].realWidth=Number(i[0].minWidth||80)+u;else{const f=i.reduce((m,d)=>m+Number(d.minWidth||80),0),p=u/f;let h=0;i.forEach((m,d)=>{if(d===0)return;const v=Math.floor(Number(m.minWidth||80)*p);h+=v,m.realWidth=Number(m.minWidth||80)+v}),i[0].realWidth=Number(i[0].minWidth||80)+u-h}}else this.scrollX.value=!0,i.forEach(u=>{u.realWidth=Number(u.minWidth)});this.bodyWidth.value=Math.max(a,l),this.table.state.resizeState.value.width=this.bodyWidth.value}else s.forEach(u=>{!u.width&&!u.minWidth?u.realWidth=80:u.realWidth=Number(u.width||u.minWidth),a+=u.realWidth}),this.scrollX.value=a>l,this.bodyWidth.value=a;const r=this.store.states.fixedColumns.value;if(r.length>0){let u=0;r.forEach(f=>{u+=Number(f.realWidth||f.width)}),this.fixedWidth.value=u}const c=this.store.states.rightFixedColumns.value;if(c.length>0){let u=0;c.forEach(f=>{u+=Number(f.realWidth||f.width)}),this.rightFixedWidth.value=u}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&this.observers.splice(n,1)}notifyObservers(t){this.observers.forEach(l=>{var a,s;switch(t){case"columns":(a=l.state)==null||a.onColumnsChange(this);break;case"scrollable":(s=l.state)==null||s.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}var ck=ie({name:"ElTableFilterPanel",components:{ElCheckbox:Rl,ElCheckboxGroup:ch,ElScrollbar:el,ElTooltip:Rn,ElIcon:we,ArrowDown:wl,ArrowUp:Ss},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:bt.appendTo},setup(e){const t=qe(),{t:n}=at(),l=ce("table-filter"),a=t==null?void 0:t.parent;e.column&&!a.filterPanels.value[e.column.id]&&(a.filterPanels.value[e.column.id]=t);const s=I(null),i=I(null),r=I(0),c=y(()=>e.column&&e.column.filters),u=y(()=>e.column&&e.column.filterClassName?`${l.b()} ${e.column.filterClassName}`:l.b()),f=y({get:()=>{var T;return(((T=e.column)==null?void 0:T.filteredValue)||[])[0]},set:T=>{p.value&&(Nn(T)?p.value.splice(0,1):p.value.splice(0,1,T))}}),p=y({get(){return e.column?e.column.filteredValue||[]:[]},set(T){var P;e.column&&((P=e.upDataColumn)==null||P.call(e,"filteredValue",T))}}),h=y(()=>e.column?e.column.filterMultiple:!0),m=T=>T.value===f.value,d=()=>{var T;(T=s.value)==null||T.onClose()},v=()=>{S(p.value),d()},g=()=>{p.value=[],S(p.value),d()},b=(T,P)=>{f.value=T,r.value=P,Nn(T)?S([]):S(p.value),d()},S=T=>{var P,x;(P=e.store)==null||P.commit("filterChange",{column:e.column,values:T}),(x=e.store)==null||x.updateAllSelected()},w=()=>{var T,P;(T=i.value)==null||T.focus(),!h.value&&k(),e.column&&((P=e.upDataColumn)==null||P.call(e,"filterOpened",!0))},C=()=>{var T;e.column&&((T=e.upDataColumn)==null||T.call(e,"filterOpened",!1))},k=()=>{if(Nn(f)){r.value=0;return}const T=(c.value||[]).findIndex(P=>P.value===f.value);r.value=T>=0?T+1:0};return{multiple:h,filterClassName:u,filteredValue:p,filterValue:f,filters:c,handleConfirm:v,handleReset:g,handleSelect:b,isPropAbsent:Nn,isActive:m,t:n,ns:l,tooltipRef:s,rootRef:i,checkedIndex:r,handleShowTooltip:w,handleHideTooltip:C,handleKeydown:T=>{var P,x;const D=St(T),W=(c.value?c.value.length:0)+1;let A=r.value,V=!0;switch(D){case de.down:case de.right:A=(A+1)%W;break;case de.up:case de.left:A=(A-1+W)%W;break;case de.tab:d(),V=!1;break;case de.enter:case de.space:if(A===0)b(null,0);else{const _=(c.value||[])[A-1];_.value&&b(_.value,A)}break;default:V=!1;break}V&&T.preventDefault(),r.value=A,(x=(P=i.value)==null?void 0:P.querySelector(`.${l.e("list-item")}:nth-child(${A+1})`))==null||x.focus()}}}});const dk=["disabled"],fk=["tabindex","aria-checked"],vk=["tabindex","aria-checked","onClick"],pk=["aria-label"];function mk(e,t,n,l,a,s){const i=ot("el-checkbox"),r=ot("el-checkbox-group"),c=ot("el-scrollbar"),u=ot("arrow-up"),f=ot("arrow-down"),p=ot("el-icon"),h=ot("el-tooltip");return E(),Z(h,{ref:"tooltipRef",offset:0,placement:e.placement,"show-arrow":!1,trigger:"click",role:"dialog",teleported:"",effect:"light",pure:"",loop:"","popper-class":e.filterClassName,persistent:"","append-to":e.appendTo,onShow:e.handleShowTooltip,onHide:e.handleHideTooltip},{content:j(()=>[e.multiple?(E(),L("div",{key:0,ref:"rootRef",tabindex:"-1",class:$(e.ns.e("multiple"))},[H("div",{class:$(e.ns.e("content"))},[U(c,{"wrap-class":e.ns.e("wrap")},{default:j(()=>[U(r,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=m=>e.filteredValue=m),class:$(e.ns.e("checkbox-group"))},{default:j(()=>[(E(!0),L(Re,null,rt(e.filters,m=>(E(),Z(i,{key:m.value,value:m.value},{default:j(()=>[ut(he(m.text),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),H("div",{class:$(e.ns.e("bottom"))},[H("button",{class:$(e.ns.is("disabled",e.filteredValue.length===0)),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...m)=>e.handleConfirm&&e.handleConfirm(...m))},he(e.t("el.table.confirmFilter")),11,dk),H("button",{type:"button",onClick:t[2]||(t[2]=(...m)=>e.handleReset&&e.handleReset(...m))},he(e.t("el.table.resetFilter")),1)],2)],2)):(E(),L("ul",{key:1,ref:"rootRef",tabindex:"-1",role:"radiogroup",class:$(e.ns.e("list")),onKeydown:t[4]||(t[4]=(...m)=>e.handleKeydown&&e.handleKeydown(...m))},[H("li",{role:"radio",class:$([e.ns.e("list-item"),e.ns.is("active",e.isPropAbsent(e.filterValue))]),tabindex:e.checkedIndex===0?0:-1,"aria-checked":e.isPropAbsent(e.filterValue),onClick:t[3]||(t[3]=m=>e.handleSelect(null,0))},he(e.t("el.table.clearFilter")),11,fk),(E(!0),L(Re,null,rt(e.filters,(m,d)=>(E(),L("li",{key:m.value,role:"radio",class:$([e.ns.e("list-item"),e.ns.is("active",e.isActive(m))]),tabindex:e.checkedIndex===d+1?0:-1,"aria-checked":e.isActive(m),onClick:v=>e.handleSelect(m.value,d+1)},he(m.text),11,vk))),128))],34))]),default:j(()=>{var m;return[H("button",{type:"button",class:$(`${e.ns.namespace.value}-table__column-filter-trigger`),"aria-label":e.t("el.table.filterLabel",{column:((m=e.column)==null?void 0:m.label)||""})},[U(p,null,{default:j(()=>[X(e.$slots,"filter-icon",{},()=>{var d;return[(d=e.column)!=null&&d.filterOpened?(E(),Z(u,{key:0})):(E(),Z(f,{key:1}))]})]),_:3})],10,pk)]}),_:3},8,["placement","popper-class","append-to","onShow","onHide"])}var hk=_t(ck,[["render",mk]]);function pr(e){const t=qe();Cs(()=>{n.value.addObserver(t)}),Ze(()=>{l(n.value),a(n.value)}),Bl(()=>{l(n.value),a(n.value)}),bo(()=>{n.value.removeObserver(t)});const n=y(()=>{const s=e.layout;if(!s)throw new Error("Can not find table layout.");return s}),l=s=>{var i;const r=((i=e.vnode.el)==null?void 0:i.querySelectorAll("colgroup > col"))||[];if(!r.length)return;const c=s.getFlattenColumns(),u={};c.forEach(f=>{u[f.id]=f});for(let f=0,p=r.length;f