|
@@ -160,9 +160,9 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
Record<string, { id: number | string; hospId?: string; itemCode: string; code: string; name: string; value: number; sort: number }[]>
|
|
Record<string, { id: number | string; hospId?: string; itemCode: string; code: string; name: string; value: number; sort: number }[]>
|
|
|
>({});
|
|
>({});
|
|
|
|
|
|
|
|
- // 评价项目弹窗(右侧“添加”)
|
|
|
|
|
|
|
+ // 评价项目弹窗(右侧"添加")
|
|
|
const [evalItemModalOpen, set_evalItemModalOpen] = useState(false);
|
|
const [evalItemModalOpen, set_evalItemModalOpen] = useState(false);
|
|
|
- const [evalItemDict, set_evalItemDict] = useState<{ key: string; title: string }[]>([]);
|
|
|
|
|
|
|
+ const [evalItemDict, set_evalItemDict] = useState<{ key: string; code: string; value: string; title: string }[]>([]);
|
|
|
const [evalItemTargetKeys, set_evalItemTargetKeys] = useState<string[]>([]);
|
|
const [evalItemTargetKeys, set_evalItemTargetKeys] = useState<string[]>([]);
|
|
|
const [evalItemSelectedKeys, set_evalItemSelectedKeys] = useState<string[]>([]);
|
|
const [evalItemSelectedKeys, set_evalItemSelectedKeys] = useState<string[]>([]);
|
|
|
// 评价项权重编辑态
|
|
// 评价项权重编辑态
|
|
@@ -255,7 +255,12 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
// 获取评价项目字典
|
|
// 获取评价项目字典
|
|
|
const fetchEvaluationItemsDict = async () => {
|
|
const fetchEvaluationItemsDict = async () => {
|
|
|
const resp: any = await getDictByDictTypeAndSysid('1547394914533380096', 'EVALUATION_ITEM');
|
|
const resp: any = await getDictByDictTypeAndSysid('1547394914533380096', 'EVALUATION_ITEM');
|
|
|
- const list = (resp?.dataVoList || []).map((x: any) => ({ key: String(x.code || x.value), title: String(x.name) }));
|
|
|
|
|
|
|
+ const list = (resp?.dataVoList || []).map((x: any) => ({
|
|
|
|
|
+ key: String(x.code || x.value),
|
|
|
|
|
+ code: String(x.code),
|
|
|
|
|
+ value: String(x.value),
|
|
|
|
|
+ title: String(x.name)
|
|
|
|
|
+ }));
|
|
|
set_evalItemDict(list);
|
|
set_evalItemDict(list);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -271,7 +276,8 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
const list = (await getServiceEvaluationItem(serviceCode)) || [];
|
|
const list = (await getServiceEvaluationItem(serviceCode)) || [];
|
|
|
const normalizePercent = (v: any): number => {
|
|
const normalizePercent = (v: any): number => {
|
|
|
const n = Number(v);
|
|
const n = Number(v);
|
|
|
- return Number.isFinite(n) && n >= 0 ? n : 0;
|
|
|
|
|
|
|
+ // 接口返回的是小数(如0.2),需要转换为百分比(20)
|
|
|
|
|
+ return Number.isFinite(n) && n >= 0 ? n * 100 : 0;
|
|
|
};
|
|
};
|
|
|
const mapped = (list || []).map((it: any, idx: number) => ({
|
|
const mapped = (list || []).map((it: any, idx: number) => ({
|
|
|
id: it.id, // 保留 id 字段,用于删除等操作
|
|
id: it.id, // 保留 id 字段,用于删除等操作
|
|
@@ -396,7 +402,9 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
<a key="opt" onClick={async () => {
|
|
<a key="opt" onClick={async () => {
|
|
|
set_bindItemCode(record.itemCode);
|
|
set_bindItemCode(record.itemCode);
|
|
|
// 获取该评价项已有的选项
|
|
// 获取该评价项已有的选项
|
|
|
- const existingOptions = await getEvaluationSelect(record.itemCode);
|
|
|
|
|
|
|
+ const current: any = currentCategory as any;
|
|
|
|
|
+ const serviceType = String(current?.code || current?.name || '');
|
|
|
|
|
+ const existingOptions = await getEvaluationSelect(record.itemCode, serviceType);
|
|
|
const existingKeys = (existingOptions || []).map((item: any) => String(item.code));
|
|
const existingKeys = (existingOptions || []).map((item: any) => String(item.code));
|
|
|
set_selectTargetKeys(existingKeys);
|
|
set_selectTargetKeys(existingKeys);
|
|
|
set_selectSelectedKeys([]);
|
|
set_selectSelectedKeys([]);
|
|
@@ -577,7 +585,9 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
const res = await deleteEvaluationSelect(row.id);
|
|
const res = await deleteEvaluationSelect(row.id);
|
|
|
if (res !== false) {
|
|
if (res !== false) {
|
|
|
// 删除成功,重新加载该评价项的选项列表
|
|
// 删除成功,重新加载该评价项的选项列表
|
|
|
- const list = await getEvaluationSelect(parentCode);
|
|
|
|
|
|
|
+ const current: any = currentCategory as any;
|
|
|
|
|
+ const serviceType = String(current?.code || current?.name || '');
|
|
|
|
|
+ const list = await getEvaluationSelect(parentCode, serviceType);
|
|
|
set_serviceOptionsMap((old) => ({
|
|
set_serviceOptionsMap((old) => ({
|
|
|
...old,
|
|
...old,
|
|
|
[parentCode]: (list || []) as any,
|
|
[parentCode]: (list || []) as any,
|
|
@@ -630,7 +640,8 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
|
|
|
|
|
// 加载数据
|
|
// 加载数据
|
|
|
if (node && node.nodeType === 'service') {
|
|
if (node && node.nodeType === 'service') {
|
|
|
- const list = await getEvaluationSelect(record.itemCode);
|
|
|
|
|
|
|
+ const serviceType = String(node.code || node.name || '');
|
|
|
|
|
+ const list = await getEvaluationSelect(record.itemCode, serviceType);
|
|
|
set_serviceOptionsMap((old: Record<string, { id: number | string; hospId?: string; itemCode: string; code: string; name: string; value: number; sort: number }[]>) => ({
|
|
set_serviceOptionsMap((old: Record<string, { id: number | string; hospId?: string; itemCode: string; code: string; name: string; value: number; sort: number }[]>) => ({
|
|
|
...old,
|
|
...old,
|
|
|
[record.itemCode]: (list || []) as { id: number | string; hospId?: string; itemCode: string; code: string; name: string; value: number; sort: number }[],
|
|
[record.itemCode]: (list || []) as { id: number | string; hospId?: string; itemCode: string; code: string; name: string; value: number; sort: number }[],
|
|
@@ -846,7 +857,7 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
>
|
|
>
|
|
|
<Transfer
|
|
<Transfer
|
|
|
className="tree-transfer"
|
|
className="tree-transfer"
|
|
|
- listStyle={{ height: 540 }}
|
|
|
|
|
|
|
+ listStyle={{ height: 600, overflowY: 'auto' }}
|
|
|
dataSource={(function buildFlat(){
|
|
dataSource={(function buildFlat(){
|
|
|
const res: any[] = [];
|
|
const res: any[] = [];
|
|
|
const walk = (list: SystemTreeNode[], parentChecked: boolean)=>{
|
|
const walk = (list: SystemTreeNode[], parentChecked: boolean)=>{
|
|
@@ -983,19 +994,19 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
await loadServiceEvalItems(String(current.code || current.name));
|
|
await loadServiceEvalItems(String(current.code || current.name));
|
|
|
}
|
|
}
|
|
|
}}
|
|
}}
|
|
|
- width={560}
|
|
|
|
|
|
|
+ width={800}
|
|
|
destroyOnClose
|
|
destroyOnClose
|
|
|
>
|
|
>
|
|
|
<Transfer
|
|
<Transfer
|
|
|
titles={[`待选项`,`已选项`]}
|
|
titles={[`待选项`,`已选项`]}
|
|
|
dataSource={evalItemDict}
|
|
dataSource={evalItemDict}
|
|
|
rowKey={(item)=> item.key}
|
|
rowKey={(item)=> item.key}
|
|
|
- render={(item)=> item.title}
|
|
|
|
|
|
|
+ render={(item)=> item.value ? `${item.code} - ${item.title}(${item.value})` : `${item.code} - ${item.title}`}
|
|
|
targetKeys={evalItemTargetKeys}
|
|
targetKeys={evalItemTargetKeys}
|
|
|
selectedKeys={evalItemSelectedKeys}
|
|
selectedKeys={evalItemSelectedKeys}
|
|
|
onChange={(next)=> set_evalItemTargetKeys(next as string[])}
|
|
onChange={(next)=> set_evalItemTargetKeys(next as string[])}
|
|
|
onSelectChange={(l,r)=> set_evalItemSelectedKeys([...(l as string[]), ...(r as string[])])}
|
|
onSelectChange={(l,r)=> set_evalItemSelectedKeys([...(l as string[]), ...(r as string[])])}
|
|
|
- listStyle={{ height: 460, width: 'calc(50% - 32px)' }}
|
|
|
|
|
|
|
+ listStyle={{ height: 460, width: 'calc(50% - 24px)' }}
|
|
|
operationStyle={{ margin: '0 12px', display: 'flex', alignItems: 'center' }}
|
|
operationStyle={{ margin: '0 12px', display: 'flex', alignItems: 'center' }}
|
|
|
showSearch
|
|
showSearch
|
|
|
locale={{ itemUnit:'项', itemsUnit:'项', searchPlaceholder:'请输入' }}
|
|
locale={{ itemUnit:'项', itemsUnit:'项', searchPlaceholder:'请输入' }}
|
|
@@ -1016,7 +1027,9 @@ const ServiceEvaluatePage: React.FC = () => {
|
|
|
set_selectTargetKeys([]);
|
|
set_selectTargetKeys([]);
|
|
|
set_selectSelectedKeys([]);
|
|
set_selectSelectedKeys([]);
|
|
|
// 重新加载该评价项的选项数据
|
|
// 重新加载该评价项的选项数据
|
|
|
- const list = await getEvaluationSelect(bindItemCode);
|
|
|
|
|
|
|
+ const current: any = currentCategory as any;
|
|
|
|
|
+ const serviceType = String(current?.code || current?.name || '');
|
|
|
|
|
+ const list = await getEvaluationSelect(bindItemCode, serviceType);
|
|
|
set_serviceOptionsMap((old) => ({
|
|
set_serviceOptionsMap((old) => ({
|
|
|
...old,
|
|
...old,
|
|
|
[bindItemCode]: (list || []) as any,
|
|
[bindItemCode]: (list || []) as any,
|