WXL
2023-12-28 2ef938e02a1c64c7e7c641d46a2db91e4cdd1b75
指标完成
已添加2个文件
已删除66个文件
已修改11个文件
9809 ■■■■ 文件已修改
src/api/AiCentre/Followup.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Problemspeaking.js 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/indicator.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/patient/homepage.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_applydisease.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_dict_disease.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_dict_drug.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_dict_inspect.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_dict_physicalpackage.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_dict_surgery.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_dict_test.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_organization.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_person.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_pushtemplate.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_sequence.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_smsaccount.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_tag.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_tagcategory.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_template.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_templatecategory.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_base_wxaccount.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_archive.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_archivecontact.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_archivetag.vue 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_apointment.vue 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_bloodsugar.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_drug.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_hypertension.vue 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_inhosp.vue 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_inspection.vue 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_inspection_item.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_operation.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_outhosp.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_physical.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_registration.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_list_pat_med_weight.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_applydisease.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_dict_disease.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_dict_drug.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_dict_inspect.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_dict_physicalpackage.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_dict_surgery.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_dict_test.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_organization.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_person.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_pushtemplate.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_sequence.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_smsaccount.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_tag.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_tagcategory.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_template.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_templatecategory.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_base_wxaccount.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_archive.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_archivecontact.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_archivetag.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_apointment.vue 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_bloodsugar.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_drug.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_hypertension.vue 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_inhosp.vue 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_inspection.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_inspection_item.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_operation.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_outhosp.vue 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_physical.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_registration.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_maint_pat_med_weight.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_query_base_applydisease.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/comp/smartor3/dwo/dw_query_pat_archive.vue 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/getters.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/profile/index.vue 88 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/intention/index.vue 292 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/configurat/index.vue 565 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/templateku/index.vue 780 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/index.vue 739 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/repositoryai/verbaltrick/particulars/index.vue 1042 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/AiCentre/Followup.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
import request from "@/utils/request";
// æŸ¥è¯¢éšè®¿æ¨¡ç‰ˆåˆ—表
export function getFollowuplist(data) {
  return request({
    url: "/smartor/template/list",
    method: "post",
    data: data,
  });
}
// éšè®¿æ¨¡ç‰ˆè¯¦æƒ…
export function Followupinfo(Id) {
  return request({
    url: "/smartor/template/" + Id,
    method: "get",
  });
}
// åˆ é™¤éšè®¿æ¨¡ç‰ˆ
export function delFollowupinfo(Id) {
    return request({
      url: "/smartor/template/remove/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæˆ–修改随访模版
export function compileFollowup(data) {
    return request({
      url: "/smartor/template/saveOrUpdateScript",
      method: "post",
      data: data,
    });
  }
    // æŸ¥è¯¢éšè®¿æ¨¡ç‰ˆè¯¦æƒ…列表
export function getvFollowup(data) {
    return request({
        url: "/smartor/template/selectInfoByCondition",
      method: "post",
      data: data,
    });
  }
  // æ–°å¢žéšè®¿æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function addFollowupclassify(data) {
    return request({
      url: "/smartor/templateassort/addtree",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤éšè®¿æ¨¡ç‰ˆåˆ†ç±»
export function delFollowupclassify(Id) {
  return request({
    url: "/smartor/templateassort/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢éšè®¿æ¨¡ç‰ˆåˆ†ç±»æ ‘
  export function getFollowupclassify(data) {
    return request({
      url: "/smartor/templateassort/selectIvrLibaTemplateAssortList",
      method: "post",
      data: data,
    });
  }
src/api/AiCentre/Problemspeaking.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
import request from "@/utils/request";
// æŸ¥è¯¢éšè®¿é—®é¢˜åˆ—表
export function getverbaltricklist(data) {
  return request({
    url: "/smartor/script/list",
    method: "post",
    data: data,
  });
}
// éšè®¿é—®é¢˜è¯¦æƒ…
export function verbaltrickinfo(Id) {
  return request({
    url: "/smartor/script/getInfo/" + Id,
    method: "get",
  });
}
// åˆ é™¤éšè®¿é—®é¢˜
export function delverbaltrickinfo(Id) {
    return request({
      url: "/smartor/script/remove/" + Id,
      method: "get",
    });
  }
// æ–°å¢žæˆ–修改随访问题
export function compileverbaltrick(data) {
    return request({
      url: "/smartor/script/saveOrUpdateScript",
      method: "post",
      data: data,
    });
  }
  // æŸ¥è¯¢éšè®¿é—®é¢˜è¯¦æƒ…列表
export function getverbaltrick(data) {
    return request({
      url: "/smartor/script/selectInfoByCondition",
      method: "post",
      data: data,
    });
  }
  // ä¿®æ”¹éšè®¿é—®é¢˜åˆ†ç±»
export function compileverbaltrickclassify(data) {
  return request({
    url: "/smartor/scriptassort/edit",
    method: "post",
    data: data,
  });
}
  // æ–°å¢žéšè®¿é—®é¢˜åˆ†ç±»
  export function addbaltrickclassify(data) {
    return request({
      url: "/smartor/scriptassort/addtree",
      method: "post",
      data: data,
    });
  }
  // åˆ é™¤éšè®¿é—®é¢˜åˆ†ç±»
export function delbaltrickclassify(Id) {
  return request({
    url: "/smartor/scriptassort/remove/" + Id,
    method: "get",
  });
}
  // æŸ¥è¯¢éšè®¿é—®é¢˜åˆ†ç±»æ ‘
  export function getbaltrickclassify(data) {
    return request({
      url: "/smartor/scriptassort/selectIvrLibaScriptAssortList",
      method: "post",
      data: data,
    });
  }
src/api/AiCentre/index.js
@@ -1 +1,3 @@
export * from './indicator'
export * from './Problemspeaking'
export * from './Followup'
src/api/AiCentre/indicator.js
@@ -8,6 +8,14 @@
    data: data,
  });
}
// æŸ¥è¯¢æŒ‡æ ‡åŠå…¶å…³è”选项
export function gettargetInfolist(data) {
  return request({
    url: "/smartor/target/list",
    method: "post",
    data: data,
  });
}
// æŒ‡æ ‡è¯¦æƒ…
export function particulartarget(Id) {
  return request({
@@ -77,3 +85,43 @@
    method: "get",
  });
}
// æŸ¥è¯¢æŒ‡æ ‡åˆ†ç±»
export function selectIvrLibaTargetAssortList(data) {
  return request({
    url: "/smartor/assort/selectIvrLibaTargetAssortList",
    method: "post",
    data:data,
  });
}
// æ–°å¢žæŒ‡æ ‡åˆ†ç±»
export function addselectIvrLibaTargetAssort(data) {
  return request({
    url: "/smartor/assort/add",
    method: "post",
    data:data,
  });
}
// åˆ é™¤æŒ‡æ ‡åˆ†ç±»
export function delselectIvrLibaTargetAssort(id) {
  return request({
    url: "/smartor/assort/remove/" + id,
    method: "get",
  });
}
// æ–°å¢žæŒ‡æ ‡åˆ†ç±»æ ‘
export function addtreeselectIvrLibaTargetAssort(data) {
  return request({
    url: "/smartor/assort/addtree",
    method: "post",
    data:data,
  });
}
// æ–°å¢žæŒ‡æ ‡åˆ†ç±»æ ‘
export function gettagerlist(data) {
  return request({
    url: "/smartor/target/list",
    method: "post",
    data:data,
  });
}
src/api/patient/homepage.js
@@ -20,7 +20,7 @@
// ä¿®æ”¹æ‚£è€…档案
export function alterpatient(data) {
  return request({
    url: '/smartor/patarchive/edit',
    url: '/smartor/patarchive/saveOrUpdatePatInfo',
    method: 'post',
    data: data
  })
src/comp/smartor3/dwo/dw_list_base_applydisease.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_dict_disease.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_dict_drug.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_dict_inspect.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_dict_physicalpackage.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_dict_surgery.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_dict_test.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_organization.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_person.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_pushtemplate.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_sequence.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_smsaccount.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_tag.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_tagcategory.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_template.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_templatecategory.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_base_wxaccount.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_archive.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_archivecontact.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_archivetag.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_apointment.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_bloodsugar.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_drug.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_hypertension.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_inhosp.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_inspection.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_inspection_item.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_operation.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_outhosp.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_physical.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_registration.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_list_pat_med_weight.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_applydisease.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_dict_disease.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_dict_drug.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_dict_inspect.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_dict_physicalpackage.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_dict_surgery.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_dict_test.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_organization.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_person.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_pushtemplate.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_sequence.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_smsaccount.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_tag.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_tagcategory.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_template.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_templatecategory.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_base_wxaccount.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_archive.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_archivecontact.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_archivetag.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_apointment.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_bloodsugar.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_drug.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_hypertension.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_inhosp.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_inspection.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_inspection_item.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_operation.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_outhosp.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_physical.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_registration.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_maint_pat_med_weight.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_query_base_applydisease.vue
ÎļþÒÑɾ³ý
src/comp/smartor3/dwo/dw_query_pat_archive.vue
ÎļþÒÑɾ³ý
src/store/getters.js
@@ -88,10 +88,56 @@
      },
    },
  ],
  // ä¼˜å…ˆæ‰§è¡Œ
  precedencetype: (state) => [
    {
      value: '0',
      label: "语音优先",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
    {
      value: '1',
      label: "文字优先",
      raw: {
        cssClass: "",
        listClass: "",
      },
    },
  ],
    // é€‚用院区
    courtyardlist: (state) => [
      {
        value: '1',
        label: "之江院区",
        raw: {
          cssClass: "",
          listClass: "",
        },
      },
      {
        value: '2',
        label: "庆春院区",
        raw: {
          cssClass: "",
          listClass: "",
        },
      },
      {
        value: '3',
        label: "余杭院区",
        raw: {
          cssClass: "",
          listClass: "",
        },
      },
    ],
 // è¯­è¨€
 languagelist: (state) => [
  {
    value: "1",
    value: "普通话",
    label: "普通话",
    raw: {
      cssClass: "",
@@ -99,7 +145,7 @@
    },
  },
  {
    value: "2",
    value: "粤语",
    label: "粤语",
    raw: {
      cssClass: "",
@@ -107,7 +153,7 @@
    },
  },
  {
    value: "3",
    value: "英语",
    label: "英语",
    raw: {
      cssClass: "",
@@ -115,4 +161,5 @@
    },
  },
],};
export default getters;
src/views/patient/patient/index.vue
@@ -259,7 +259,7 @@
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <span v-for="item in scope.row.tagList">{{ item.tagname }} </span>
                </template>
              </el-table-column>
              <el-table-column
src/views/patient/patient/profile/index.vue
@@ -145,27 +145,30 @@
            <el-col :span="24"
              ><div class="xinz-inf">
                <el-tag
                  :key="tag"
                  :key="tag.tagid"
                  type="success"
                  v-for="tag in dynamicTags"
                  closable
                  :disable-transitions="false"
                  @close="handleClose(tag)"
                >
                  {{ tag }}
                  {{ tag.tagname }}
                </el-tag>
                <el-select
                  v-model="inputValue"
                  v-if="inputVisible"
                  @change="handleInputConfirm"
                  :remote-method="remoteMethod"
                  remote
                  filterable
                  allow-create
                  default-first-option
                  placeholder="请选择"
                  placeholder="请选择/查询"
                  :loading="loading"
                >
                  <el-option
                    v-for="item in options"
                    :key="item.tagname"
                    :key="item.tagid"
                    :label="item.tagname"
                    :value="item.tagname"
                  >
@@ -650,6 +653,7 @@
      titletb: "新增联系方式",
      activeTab: "userinfo",
      id: "",
      loading: false,
      activeName: "health", //一类导航
      sonactiveName: "outpatient", //健康监测导航
      sontwoactiveName: "blood", //医疗档案导航
@@ -789,6 +793,9 @@
        this.tableData = response.rows;
      });
    },
    processElement(element) {
      return { ...element, isoperation: 0 };
    },
    // èŽ·å–åŸºç¡€ä¿¡æ¯
    getuserinfo() {
      const queryParams = {
@@ -799,7 +806,8 @@
      // æ‚£è€…基础信息
      messagelistpatient(queryParams).then((response) => {
        this.userform = response.rows[0];
        this.dynamicTags = response.rows[0].tagList;
        // this.dynamicTags = response.rows[0].tagList;
        this.dynamicTags = response.rows[0].tagList.map(this.processElement);
      });
      // ç—…史信息
      getmedicalhistory({ pid: this.id }).then((res) => {
@@ -810,7 +818,8 @@
    },
    // ä¿å­˜æ‚£è€…档案
    savefile() {
      this.userform.tagList = this.dynamicTags;
      // this.userform.tagList = this.dynamicTags;
      this.userform.isoperation = 2;
      alterpatient(this.userform).then((res) => {
        if (res.code == 200) {
          this.$modal.msgSuccess("基础信息保存成功");
@@ -818,7 +827,7 @@
          this.$modal.msgError("基础信息修改失败");
        }
      });
      // ç—…史
      // ç—…史是
      this.medicalhistory();
    },
    // ç—…史
@@ -920,12 +929,18 @@
        .catch(() => {});
    },
    tableRowClassName({ row, rowIndex }) {
      console.log(row);
      if (row.isdefault == "1") {
        return "warning-row";
      }
      return "";
    },
    // tab切换
    handleClick(tab, event) {
      console.log(tab, event);
    },
    // è”系方式新增
    Addanumber() {},
    // æ ‡ç­¾--------------------------
    /** æŸ¥è¯¢æ ‡ç­¾åˆ—表 */
    gettabList() {
      const tagqueryParams = {
@@ -937,28 +952,59 @@
        this.options = response.rows;
      });
    },
    // tab切换
    handleClick(tab, event) {
      console.log(tab, event);
    remoteMethod(value) {
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
        tagname: value,
        tagcategoryid: "0",
      };
      this.loading = true;
      setTimeout(() => {
        this.loading = false;
        listtag(illnessqueryParams).then((response) => {
          this.options = response.rows;
        });
      }, 200);
    },
    // è”系方式新增
    Addanumber() {},
    handleClose(tag) {
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.userform.tagList[lindex].isoperation = 3;
    },
    showInput() {
      this.inputVisible = true;
      this.$nextTick((_) => {
        this.$refs.saveTagInput.$refs.input.focus();
      });
      // this.$nextTick((_) => {
      //   this.$refs.saveTagInput.$refs.input.focus();
      // });
    },
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      let tagvalue = {};
      let tagname = this.inputValue;
      if (tagname) {
        listtag({
          pageNum: 1,
          pageSize: 1000,
          tagcategoryid: "0",
          tagname: tagname,
        }).then((res) => {
          if (res.rows[0]) {
            tagvalue = res.rows[0];
            tagvalue.isoperation = 1;
          } else {
            tagvalue = {
              tagname: tagname,
              isoperation: 1,
            };
          }
          console.log(tagvalue);
          this.userform.tagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
          console.log(this.userform.tagList);
          console.log(this.dynamicTags);
        });
      }
      this.inputVisible = false;
      this.inputValue = "";
@@ -1452,7 +1498,7 @@
}
.xinz-inf {
  font-size: 18px;
  white-space: nowrap;
  // white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
src/views/repositoryai/intention/index.vue
@@ -13,56 +13,35 @@
          class="input-with-select"
          size="medium "
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
      <div class="head-container" style="margin-top: 20px">
        <el-tree
          :data="deptOptions"
          :props="defaultProps"
          :expand-on-click-node="false"
          :filter-node-method="filterNode"
          ref="tree"
          node-key="id"
          default-expand-all
          highlight-current
          @node-click="handleNodeClick"
        >
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
              </el-button>
            </span>
          </span>
        </el-tree>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -642,28 +621,30 @@
      </span>
    </el-dialog>
    <!-- æ·»åŠ ç±»åˆ«å¼¹æ¡† -->
    <el-dialog
      :title="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
    <el-dialog title="新增类别" width="30%" :visible.sync="dialogFormVisible">
      <div style="text-align: center; margin-bottom: 20px">
        <el-radio-group v-model="radio">
          <el-radio-button label="主分类"></el-radio-button>
          <el-radio-button label="子分类"></el-radio-button>
        </el-radio-group>
      </div>
      <el-divider></el-divider>
      <el-form :model="classifyform">
        <el-form-item label="请选择指标大类">
          <el-select v-model="classifyform.broadheading" placeholder="请选择">
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'">
          <el-select v-model="classifyform.pid" placeholder="请选择">
            <el-option
              v-for="item in editableTabs"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in deptOptions"
              :key="item.id"
              :label="item.indexAssortName"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
        </el-form-item>
@@ -672,20 +653,6 @@
        <el-button @click="dialogFormVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -709,6 +676,9 @@
  getillness,
  deltargetillness,
  addtargetillness,
  selectIvrLibaTargetAssortList,
  addtreeselectIvrLibaTargetAssort,
  delselectIvrLibaTargetAssort,
} from "@/api/AiCentre/index";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
@@ -743,6 +713,7 @@
      dialogFormVisible: false, //修改添加类别弹框
      deleteVisible: false, //分类删除弹框
      deletefenl: "高血压", //删除项
      radio: "主分类",
      testvalue: "",
      testgovalue: "",
      classifyform: {
@@ -765,6 +736,11 @@
      indexform: {},
      numberlb: 22,
      numberlbs: 2,
      deptOptions: [],
      defaultProps: {
        children: "ivrLibaTargetAssortList",
        label: "indexAssortName",
      },
      sidecolumnform: {}, //添加类别表单
      dialogFormVisible: false, //添加类别弹框
      sidecolumnval: "", //类别搜索
@@ -781,29 +757,7 @@
      mode: [],
      optionstag: [],
      targetoptionList: [],
      //类别列表
      editableTabs: [
        {
          title: "指标分类一",
          number: "1",
        },
        {
          title: "指标分类二",
          number: "2",
        },
        {
          title: "指标分类三",
          number: "2",
        },
        {
          title: "指标分类四",
          number: "2",
        },
        {
          title: "指标分类五",
          number: "2",
        },
      ],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
@@ -819,10 +773,16 @@
      rules: {},
    };
  },
  watch: {},
  watch: {
    // æ ¹æ®åç§°ç­›é€‰éƒ¨é—¨æ ‘
    sidecolumnval(val) {
      this.$refs.tree.filter(val);
    },
  },
  created() {
    this.getList();
    this.gettabList();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.valuetype = store.getters.valuetype;
    this.languagelist = store.getters.languagelist;
@@ -840,36 +800,14 @@
        this.loading = false;
      });
    },
    processElement(element) {
      return { ...element, isoperation: 1 };
    },
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    deletefenlei(row) {
      if (this.deleteVisible) {
@@ -886,16 +824,6 @@
      }
    },
    // ä¾§è¾¹--------------
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    },
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
@@ -963,7 +891,7 @@
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑疾病成功");
      this.$modal.msgSuccess("编辑成功");
    },
    // æ ‡ç­¾-----------------
@@ -1004,6 +932,7 @@
              isoperation: 1,
            };
          }
          console.log(tagvalue);
          this.indexform.baseTagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
          console.log(this.indexform.baseTagList);
@@ -1070,10 +999,79 @@
      console.log(this.testuserList);
    },
    // ---------------------
    //搜索类别
    sidecolumnss() {},
    // åˆ‡æ¢å…±äº«/本地
    tophandleClick() {},
    /** æŸ¥è¯¢éƒ¨é—¨ä¸‹æ‹‰æ ‘结构 */
    getDeptTree() {
      selectIvrLibaTargetAssortList({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
    },
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.indexAssortName &&
        this.radio == "子分类"
      ) {
        const index = this.deptOptions.findIndex(
          (obj) => obj.id == this.classifyform.pid
        );
        calssvalue = this.deptOptions[index];
        console.log(calssvalue);
        calssvalue.ivrLibaTargetAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.indexAssortName) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTargetAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addtreeselectIvrLibaTargetAssort(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .then(function () {
            return delselectIvrLibaTargetAssort(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delselectIvrLibaTargetAssort(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
      this.getList();
    },
    // å–消按钮
    cancel() {
      this.indexopen = false;
@@ -1340,6 +1338,22 @@
    font-size: 20px;
  }
}
::v-deep .el-tree-node__content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  height: 46px;
  font-size: 20px;
  cursor: pointer;
}
::v-deep .el-button--mini.is-circle {
  padding: 7px;
  margin: 0;
  color: red;
}
.button-text {
  color: rgb(70, 204, 238);
}
src/views/repositoryai/templateku/configurat/index.vue
@@ -29,26 +29,28 @@
          <el-row>
            <el-col :span="12">
              <el-form-item label="模版名称" prop="region">
                <div style="width: 30%">
                  <el-input v-model="ruleForm.name"></el-input>
                <div>
                  <el-input
                    v-model="ruleForm.templateName"
                    placeholder="请输入名称"
                  ></el-input>
                </div>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="随访模版分类" prop="region">
                <el-select
                  v-model="ruleForm.classify"
                  v-model="ruleForm.assortid"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    v-for="item in indexAssortlist"
                    :key="item.id"
                    :label="item.indexAssortName"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
@@ -56,28 +58,33 @@
            </el-col>
          </el-row>
          <el-form-item label="模版简介" prop="name">
          <el-form-item label="模版简介" prop="note">
            <div style="width: 50%">
              <el-input type="textarea" v-model="ruleForm.name"></el-input>
              <el-input
                type="textarea"
                placeholder="请输入简介"
                v-model="ruleForm.note"
              ></el-input>
            </div>
          </el-form-item>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="版本号" prop="name">
                <el-input v-model="currentVersion"></el-input> </el-form-item
            <el-col :span="10">
              <el-form-item label="版本号" prop="version">
                <el-input
                  v-model="ruleForm.version"
                  placeholder="默认1.0.1"
                ></el-input> </el-form-item
            ></el-col>
            <el-col :span="9">
            <el-col :span="12">
              <el-form-item label="可用状态" prop="region">
                <el-select
                  v-model="ruleForm.classify"
                  v-model="ruleForm.usestate"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                  placeholder="请选择"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in options"
                    v-for="item in usable"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -86,93 +93,34 @@
                </el-select> </el-form-item
            ></el-col>
          </el-row>
          <el-form-item label="通知变量" prop="name">
            <el-row v-for="item in variablelist">
              <el-col :span="4">
                <el-input v-model="item.variable"></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input v-model="item.value"></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
                  type="success"
                  icon="el-icon-plus"
                  circle
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                  type="danger"
                  icon="el-icon-delete"
                  circle
                  @click="delvariable(item)"
                ></el-button>
              </el-col>
            </el-row>
          </el-form-item>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClose(tag)"
              >
                {{ tag }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                  allow-create
                  default-first-option
                placeholder="请选择"
              >
                <el-option
                v-for="item in optionstag"
                  :key="item.tagname"
                    :label="item.tagname"
                    :value="item.tagname"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
                >+ æ–°å¢žæ ‡ç­¾</el-button
              >
            </div>
          </el-form-item>
          <el-row :gutter="20">
            <el-col :span="6">
            <el-col :span="10">
              <el-form-item label="语言" prop="name">
                <el-select
                  v-model="ruleForm.language"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                  placeholder="请选择语言"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in languagelist"
                    :key="item.value"
                    :key="item.label"
                    :label="item.label"
                    :value="item.value"
                    :value="item.label"
                  >
                  </el-option>
                </el-select> </el-form-item
            ></el-col>
            <el-col :span="9">
              <el-form-item label="播报优先" prop="region">
                <el-radio-group v-model="ruleForm.classify">
                  <el-radio :label="3">语言合成优先</el-radio>
                  <el-radio :label="6">语言文件优先</el-radio>
            <el-col :span="12">
              <el-form-item label="播报优先" prop="playType">
                <el-radio-group v-model="ruleForm.playType">
                  <el-radio
                    v-for="item in precedencetype"
                    :label="item.value"
                    >{{ item.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item></el-col
            >
@@ -188,7 +136,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in xjxsoptions"
                v-for="item in mode"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -196,38 +144,103 @@
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="适用疾病" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.illness"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类(多选)"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag.tagname"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClosetag(tag)"
              >
              </el-option>
            </el-select>
                {{ tag.tagname }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                remote
                reserve-keyword
                default-first-option
                :remote-method="remoteMethodtag"
                :loading="loading"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagid"
                  :label="item.tagname"
                  :value="item.tagname"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
                >+ æ–°å¢žæ ‡ç­¾</el-button
              >
            </div>
          </el-form-item>
          <el-form-item label="适用疾病" prop="region">
            <div class="xinz-inf">
              <el-tag
                :key="item.icd10name"
                type="warning"
                v-for="item in illnesslist"
                closable
                :disable-transitions="false"
                @close="handleCloseillness(item)"
              >
                {{ item.icd10name }}
              </el-tag>
              <el-select
                v-model="inputValueillness"
                v-if="inputVisibleillness"
                @change="illnessConfirm"
                :remote-method="remoteMethod"
                filterable
                remote
                allow-create
                default-first-option
                placeholder="请选择/查询"
                :loading="loading"
              >
                <el-option
                  v-for="item in optionsillness"
                  :key="item.icdid"
                  :label="item.icdname"
                  :value="item.icdid"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="inputVisibleillness = true"
                >+ æ–°å¢žç–¾ç—…</el-button
              >
            </div>
          </el-form-item>
          <el-form-item label="适用院区" prop="region">
            <el-select
              v-model="ruleForm.courtyard"
              v-model="campusvalue"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                v-for="item in courtyardlist"
                :key="item.label"
                :label="item.label"
                :value="item.value"
                :value="item.label"
              >
              </el-option>
            </el-select>
@@ -235,7 +248,7 @@
          <el-form-item label="适用科室" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.administrative"
              v-model="deptNamesvalue"
              size="medium"
              multiple
              filterable
@@ -243,10 +256,10 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                :key="item.value"
                v-for="item in administrativelist"
                :key="item.label"
                :label="item.label"
                :value="item.value"
                :value="item.label"
              >
              </el-option>
            </el-select>
@@ -254,7 +267,7 @@
          <el-form-item label="通用库" prop="region">
            <el-select
              style="width: 500px"
              v-model="ruleForm.way"
              v-model="ruleForm.waya"
              size="medium"
              multiple
              filterable
@@ -262,7 +275,7 @@
            >
              <el-option
                class="ruleFormaa"
                v-for="item in xjxsoptions"
                v-for="item in generallist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -274,14 +287,14 @@
            <el-col :span="8">
              <el-form-item label="随访前处理" prop="name">
                <el-select
                  v-model="ruleForm.languageq"
                  v-model="ruleForm.prefollowup"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                  placeholder="请选择"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in xjxsoptions"
                    v-for="item in prefollowuplist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -292,14 +305,14 @@
            <el-col :span="9">
              <el-form-item label="随访后处理" prop="region">
                <el-select
                  v-model="ruleForm.languageh"
                  v-model="ruleForm.postfollowup"
                  size="medium"
                  filterable
                  placeholder="请选择分类"
                >
                  <el-option
                    class="ruleFormaa"
                    v-for="item in xjxsoptions"
                    v-for="item in postfollowuplist"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -309,14 +322,14 @@
            ></el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="8">
            <el-col :span="10">
              <el-form-item label="静默时间(秒)" prop="name">
                <div style="width: 40%">
                  <el-input
                    v-model="ruleForm.name"
                  ></el-input></div></el-form-item
            ></el-col>
            <el-col :span="8">
            <el-col :span="10">
              <el-form-item label="无匹配重复(次)" prop="region">
                <div style="width: 40%">
                  <el-input v-model="ruleForm.name"></el-input>
@@ -467,10 +480,10 @@
                <div class="topicxq" v-for="item in 2">
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="处理">
                      ><el-form-item label="选项名">
                        <el-input
                          type="text"
                          placeholder="(默认)无声"
                          placeholder="请输入"
                          v-model="queryParams.text"
                          show-word-limit
                        >
@@ -480,7 +493,7 @@
                      ><el-form-item label="节点ID">
                        <el-input
                          type="text"
                          placeholder="请输入分值"
                          placeholder="请输入节点"
                          v-model="queryParams.text"
                          show-word-limit
                        >
@@ -489,10 +502,10 @@
                  </el-row>
                  <el-row :gutter="10">
                    <el-col :span="12"
                      ><el-form-item label="选中提示">
                      ><el-form-item label="处理">
                        <el-input
                          type="text"
                          placeholder="请输入内容"
                          placeholder="(默认)无声"
                          v-model="queryParams.text"
                          maxlength="10"
                          show-word-limit
@@ -503,14 +516,14 @@
                      ><el-form-item label="选中跳转">
                        <el-input
                          type="text"
                          placeholder="请输入题号"
                          placeholder="请输入题目节点"
                          v-model="queryParams.text"
                          show-word-limit
                        >
                        </el-input> </el-form-item
                    ></el-col>
                  </el-row>
                  <el-form-item label="语音文本">
                  <el-form-item label="匹配正则">
                    <el-input
                      style="width: 24vw"
                      type="textarea"
@@ -640,13 +653,11 @@
            <el-select
              v-model="ruleForm.classify"
              size="medium"
              multiple
              filterable
              placeholder="请选择分类"
            >
              <el-option
                class="ruleFormaa"
                v-for="item in options"
                v-for="item in themelist"
                :key="item.value"
                :label="item.label"
                :value="item.value"
@@ -708,91 +719,76 @@
<script>
import { listtag } from "@/api/system/label";
import store from "@/store";
import {
  getFollowupclassify,
  delFollowupclassify,
  addFollowupclassify,
  addtargetillness,
  getvFollowup,
  compileFollowup,
  delFollowupinfo,
  Followupinfo,
  getFollowuplist,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
export default {
  data() {
    return {
      sidecolumnrabs: "left", //方向
      Editprogress: 2, //编辑进度
      currentVersion: "1.2.3", //当前版本
      Editprogress: 1, //编辑进度
      loading: false, // é®ç½©å±‚
      drawer: false, //控制展开
      radio: "false", //单选题选中
      radios: [], //多选题选中
      radioas: "", //填空题答案
      dynamicTags: ["标签一", "标签二", "标签三"],
      inputVisible: false,
      campusvalue: [], //院区临时存储
      labelInfovalue: [], //标签临时存储
      deptNamesvalue: [], //科室临时存储
      dynamicTags: [],
      indexAssortlist: [],
      inputValue: "",
      inputValueillness: "",
      topicobj: {},
      // æ€»æ¡æ•°
      total: 1,
      ruleForm: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        templatevalue: "",
        data2: "",
      },
      id: "",
      ruleForm: {},
      rules: {},
      rulesa: {},
      optionstag:[],
      xjxsoptions: [
        {
          value: "选项1",
          label: "图文",
        },
        {
          value: "选项2",
          label: "视频",
        },
        {
          value: "选项3",
          label: "音频",
        },
      ],
      optionstag: [],
      prefollowuplist: [],
      postfollowuplist: [],
      generallist: [{ value: "1", label: "随访通用库一" }],
      fileList: [
        {
          name: "food.jpeg",
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      options: [
        {
          value: "选项1",
          label: "疾病随访模版",
        },
        {
          value: "选项2",
          label: "入院随访模版",
        },
        {
          value: "选项3",
          label: "手术随访模版",
        },
        {
          value: "选项4",
          label: "护理随访模版",
        },
      administrativelist: [
        { value: "1", label: "心外科" },
        { value: "2", label: "心内科" },
      ],
      languagelist: [
        {
          value: "1",
          label: "普通话",
        },
        {
          value: "2",
          label: "粤语",
        },
        {
          value: "3",
          label: "英文",
        },
      ],
      themelist: [],
      languagelist: [],
      courtyardlist: [],
      precedencetype: [],
      usable: [],
      mode: [],
      inputVisible: false,
      inputVisibleillness: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "ivrLibaTemplateAssortList",
        label: "indexAssortName",
      },
      variablelist: [
        {
          variable: "paitent",
@@ -846,19 +842,59 @@
  created() {
    this.gettabList();
    this.getvFollowup();
    this.auxiliary();
    this.mode = store.getters.mode;
    this.usable = store.getters.usable;
    this.languagelist = store.getters.languagelist;
    this.courtyardlist = store.getters.courtyardlist;
    this.precedencetype = store.getters.precedencetype;
  },
  methods: {
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // èŽ·å–è¡¨å•æ•°æ®
    getvFollowup() {
      this.id = this.$route.query.id;
      getvFollowup({ id: this.id }).then((res) => {
        this.ruleForm = res.data;
      });
      getillnesslist({
        pageNum: 1,
        pageSize: 100,
      }).then((response) => {
        this.optionsillness = response.rows;
      });
      getillness({ outid: this.id, type: 3 }).then((res) => {
        this.illnesslist = res.rows;
      });
    },
    // é™„属数据表
    auxiliary() {
      // åˆ†ç±»
      getFollowupclassify({}).then((res) => {
        this.indexAssortlist = res.rows;
      });
      // ç–¾ç—…列
    },
    submitForm(formName) {
      this.rules = this.rulesa;
      if (this.ruleForm.id) {
        this.ruleForm.isoperation = 2;
      } else {
        this.ruleForm.isoperation = 2;
      }
      this.ruleForm.campus = JSON.stringify(this.illnesslist);
      this.ruleForm.deptNames = this.deptNamesvalue.join(",");
      this.ruleForm.labelInfo = JSON.stringify(this.dynamicTags);
      //   æäº¤
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("submit!");
          compileFollowup(this.ruleForm).then((res) => {
            this.$modal.msgSuccess("修改成功");
          });
        } else {
          console.log("error submit!!");
          return false;
@@ -910,22 +946,7 @@
    },
    // ä¿®æ”¹é¢˜ç›®ä¿¡æ¯
    Submittopicobj() {},
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
        variable: "",
        value: "",
      });
    },
    // åˆ é™¤å˜é‡
    delvariable(item) {
      const index = this.variablelist.indexOf(item);
      if (index !== -1) {
        this.variablelist.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
      } else {
        console.log("未找到该对象");
      }
    },
    // æŽ§åˆ¶æ–‡ä»¶
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
@@ -950,23 +971,54 @@
        this.optionstag = response.rows;
      });
    },
    handleClose(tag) {
    handleClosetag(tag) {
      console.log(tag);
      console.log(this.dynamicTags.indexOf(tag));
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.ruleForm.ivrLibaTemplateTargetList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      let tagvalue = {};
      let tagname = this.inputValue;
      if (tagname) {
        listtag({
          pageNum: 1,
          pageSize: 1000,
          tagcategoryid: "0",
          tagname: tagname,
        }).then((res) => {
          if (res.rows[0]) {
            tagvalue = res.rows[0];
            tagvalue.isoperation = 1;
          } else {
            tagvalue = {
              tagname: tagname,
              isoperation: 1,
            };
          }
          this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
        });
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    remoteMethodtag(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          listtag({ tagname: query, tagcategoryid: "0" }).then((res) => {
            this.optionstag = res.rows;
          });
        }, 200);
      } else {
        this.optionstag = [];
      }
    },
    showInput() {
      this.inputVisible = true;
      // è‡ªåŠ¨èŽ·å–ç„¦ç‚¹
      // this.$nextTick((_) => {
      //   this.$refs.saveTagInput.$refs.input.focus();
      // });
    },
    //测试表单 ---------------------------------
    addzbiao() {},
@@ -1009,6 +1061,61 @@
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // ç–¾ç—…-----------------------
    handleCloseillness(tag) {
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
      if (tag.id) {
        this.illnesslistapi.push(tag.id);
      }
    },
    remoteMethod(value) {
      console.log(value);
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
        icdname: value,
      };
      this.loading = true;
      setTimeout(() => {
        this.loading = false;
        getillnesslist(illnessqueryParams).then((response) => {
          this.optionsillness = response.rows;
        });
      }, 200);
    },
    illnessConfirm(item) {
      let opeavalue = {};
      let tagname = this.inputValueillness;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.id;
        opeavalue.type = 3;
        opeavalue.icd10id = opeavalue.icdid;
        opeavalue.icd10name = opeavalue.icdname;
        opeavalue.icd10code = opeavalue.icdcode;
        if (tagname) {
          this.illnesslist.push(opeavalue);
        }
      });
      console.log(this.illnesslist);
      this.inputVisibleillness = false;
      this.inputValueillness = "";
    },
    // ä¿å­˜
    confirmillness() {
      this.illnesslist.forEach((item, index) => {
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
  },
};
</script>
@@ -1018,7 +1125,7 @@
  display: flex;
}
.sidecolumn {
  width: 300px;
  width: 250px;
  min-height: 100vh;
  text-align: center;
  //   display: flex;
src/views/repositoryai/templateku/index.vue
@@ -6,91 +6,41 @@
        <div class="top-wj">模版类型</div>
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div>
      </div>
      <div class="center-ss">
      <div class="center-ss">
        <el-input
          placeholder="请输入内容"
          v-model="sidecolumnval"
          class="input-with-select"
          size="medium "
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <!-- <el-tabs tab-position="right">
          <el-tab-pane :label="`全部 (${numberlb})`"></el-tab-pane>
          <el-tab-pane
            class="tab-paness"
            :key="item.title"
            v-for="(item, index) in editableTabs"
          >
            <span slot="label">
              {{
                item.title + " (" + item.number + ")"
              }}&nbsp&nbsp&nbsp<el-popover
                placement="top-start"
                width="100"
                trigger="hover"
              >
                <div style="text-align: center">
                  <el-button type="text" @click="popoveramend(item)"
                    >修改</el-button
                  ><el-button type="text" @click="deletefenlei(item)"
                    ><span style="color: rgb(173, 55, 55)"
                      >删除</span
                    ></el-button
                  >
                </div>
                <i slot="reference" class="el-icon-share"></i> </el-popover
            ></span>
          </el-tab-pane>
        </el-tabs> -->
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
      <div class="head-container" style="margin-top: 20px">
        <el-tree
          :data="deptOptions"
          :props="defaultProps"
          :expand-on-click-node="false"
          :filter-node-method="filterNode"
          ref="tree"
          node-key="id"
          default-expand-all
          highlight-current
          @node-click="handleNodeClick"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
              </el-button>
            </span>
          </span>
        </el-tree>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -214,25 +164,21 @@
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                label="序号"
                align="center"
                key="userId"
                prop="userId"
              />
              <el-table-column label="序号" align="center" key="id" prop="id" />
              <el-table-column
                label="模版名称"
                align="center"
                key="userName"
                prop="userName"
                key="templateName"
                prop="templateName"
                width="200"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="主要内容"
                align="center"
                key="nickName"
                prop="nickName"
                width="300"
                key="note"
                prop="note"
                width="200"
                :show-overflow-tooltip="true"
              />
@@ -241,40 +187,87 @@
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                width="400"
              /><el-table-column
                label="适用科室"
                align="center"
                key="bphonenumber"
                prop="bphonenumber"
                width="120"
              />
              <el-table-column
                label="标签"
                align="center"
                key="tagList"
                prop="tagList"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <el-button
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="适用科室"
                align="center"
                key="deptNames"
                prop="deptNames"
                width="120"
              >
                <template slot-scope="scope">
                  <div v-if="scope.row.deptNames">
                    <span v-for="item in scope.row.deptNames.split(",")"
                      >{{ item }}
                    </span>
                  </div>
                  <div v-else>''</div>
                </template>
              </el-table-column>
              <el-table-column
                label="宣教方式"
                label="标签"
                align="center"
                key="way"
                prop="way"
                width="120"
              />
                key="labelInfo"
                prop="labelInfo"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope" >
                  <div v-if="scope.row.labelInfo">
                    <span v-for="item in JSON.parse(scope.row.labelInfo)"
                      >{{ item.tagname }}</span>
                  </div>
                  <div v-else>
                    <span>无</span>
                  </div>
                  </span>
                </template>
              </el-table-column>
              <el-table-column
                label="适用院区"
                align="center"
                key="campus"
                prop="campus"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope"  >
                  <div v-if="scope.row.campus">
                    <span v-for="item in JSON.parse(scope.row.campus)">{{ item.label }} </span>
                  </div>
                  <div v-else>
                    <span>无</span>
                  </div>
                </template>
              </el-table-column>
              <el-table-column
                label="资料形式"
                align="center"
                key="formal"
                prop="formal"
                key="playType"
                prop="playType"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag
                    :options="precedencetype"
                    :value="scope.row.playType"
                  />
                </template>
              </el-table-column>
              <el-table-column
                label="版本号"
                align="center"
@@ -285,18 +278,13 @@
              <el-table-column
                label="最近修改"
                align="center"
                key="Recentrevision"
                prop="Recentrevision"
                key="updateTime"
                prop="updateTime"
                width="120"
              />
              <el-table-column label="可用状态" align="center" key="status">
              <el-table-column label="可用状态" align="center" key="usestate">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                  <dict-tag :options="qyoptions" :value="scope.row.usestate" />
                </template>
              </el-table-column>
@@ -307,7 +295,6 @@
                class-name="small-padding fixed-width"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
@@ -349,21 +336,32 @@
            />
          </el-col>
        </el-row>
      </div>
    </div>
    <!-- æ·»åŠ ç±»åˆ«å¼¹æ¡† -->
    <el-dialog
      :title="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
    <el-dialog title="新增类别" width="30%" :visible.sync="dialogFormVisible">
      <div style="text-align: center; margin-bottom: 20px">
        <el-radio-group v-model="radio">
          <el-radio-button label="主分类"></el-radio-button>
          <el-radio-button label="子分类"></el-radio-button>
        </el-radio-group>
      </div>
      <el-divider></el-divider>
      <el-form :model="classifyform">
        <el-form-item
          :label="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'">
          <el-select v-model="classifyform.pid" placeholder="请选择">
            <el-option
              v-for="item in deptOptions"
              :key="item.id"
              :label="item.indexAssortName"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
        </el-form-item>
@@ -373,34 +371,76 @@
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
    <!-- æ·»åŠ ç–¾ç—…å¯¹è¯æ¡† -->
    <el-dialog title="指标疾病" :visible.sync="illnessVisible" width="50%">
      <div>
        <div class="xinz-infs">
          <el-tag
            :key="item.icd10name"
            type="warning"
            v-for="item in illnesslist"
            closable
            :disable-transitions="false"
            @close="handleCloseillness(item)"
          >
            {{ item.icd10name }}
          </el-tag>
          <el-select
            v-model="inputValue"
            v-if="inputVisible"
            @change="illnessConfirm"
            :remote-method="remoteMethod"
            filterable
            remote
            allow-create
            default-first-option
            placeholder="请选择/查询"
            :loading="loading"
          >
            <el-option
              v-for="item in optionsillness"
              :key="item.icdid"
              :label="item.icdname"
              :value="item.icdid"
            >
            </el-option>
          </el-select>
          <el-button
            v-else
            class="button-new-tag"
            size="small"
            @click="showInput"
            >+ æ–°å¢žç–¾ç—…</el-button
          >
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
        <el-button @click="illnessVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="confirmillness">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import store from "@/store";
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
} from "@/api/system/user";
  getFollowupclassify,
  delFollowupclassify,
  addFollowupclassify,
  addtargetillness,
  getvFollowup,
  compileFollowup,
  delFollowupinfo,
  Followupinfo,
  getFollowuplist,
  getillnesslist,
  illnesslistget,
  getillness,
} from "@/api/AiCentre/index";
export default {
  name: "questionnaire",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  name: "templateku",
  data() {
    return {
      topactiveName: "Local", //顶部选择
@@ -427,17 +467,7 @@
        categoryname: "",
      }, //类别表单
      // è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: 1,
          userName: "血常规、尿常规",
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          bphonenumber: "选择",
          cphonenumber: "普通话",
          status: "0",
        },
      ],
      userList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
@@ -448,6 +478,7 @@
      postOptions: [],
      // è§’色选项
      roleOptions: [],
      precedencetype: [],
      // æ·»åŠ ã€ä¿®æ”¹å‚æ•°
      indexform: {},
      numberlb: 22,
@@ -455,170 +486,61 @@
      sidecolumnform: {}, //添加类别表单
      dialogFormVisible: false, //添加类别弹框
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      indexopenty: false, //弹框展示否
      propss: { multiple: true },
      languagelist: [
        {
          value: 1,
          label: "短信",
        },
        {
          value: 2,
          label: "电话",
        },
        {
          value: 3,
          label: "小程序",
        },
      ], //语言列表
      qyoptions: [
        {
          value: 1,
          label: "可用",
        },
        {
          value: 2,
          label: "停用",
        },
      ],
      // æ’­æŠ¥æ–¹å¼
      qyoptionbo: [
        {
          value: 1,
          label: "语音优先",
        },
        {
          value: 2,
          label: "文字优先",
        },
      ],
      qyoptionbo: [],
      //类别列表
      editableTabs: [
        {
          title: "模版分类一",
          number: "1",
        },
        {
          title: "模版分类二",
          number: "2",
        },
        {
          title: "模版分类三",
          number: "2",
        },
      ],
      editableTabs: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
      // è¡¨å•校验
      rules: {
        userName: [
          { required: true, message: "主旨不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        nickName: [
          { required: true, message: "用户昵称不能为空", trigger: "blur" },
        ],
        password: [
          { required: true, message: "用户密码不能为空", trigger: "blur" },
          {
            min: 5,
            max: 20,
            message: "用户密码长度必须介于 5 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        email: [
          {
            type: "email",
            message: "请输入正确的邮箱地址",
            trigger: ["blur", "change"],
          },
        ],
        phonenumber: [
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        IDnumber: [
          {
            pattern:
              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
            message: "请输入正确的身份证号码",
            trigger: "blur",
          },
        ],
      rules: {},
      indexid: null,
      inputValue: "",
      radio: "主分类",
      inputVisible: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "ivrLibaTemplateAssortList",
        label: "indexAssortName",
      },
      mode: [],
      languagelist: [],
      qyoptions: [],
    };
  },
  watch: {},
  watch: {
    // æ ¹æ®åç§°ç­›é€‰éƒ¨é—¨æ ‘
    sidecolumnval(val) {
      this.$refs.tree.filter(val);
    },
  },
  created() {
    this.getList();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
    this.precedencetype = store.getters.precedencetype;
  },
  methods: {
    /** æŸ¥è¯¢ç”¨æˆ·åˆ—表 */
    /** æŸ¥è¯¢ä¿¡æ¯ */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
      getFollowuplist(this.queryParams).then((res) => {
        console.log(res);
        console.log(this.userList);
        this.userList = res.rows;
        this.total = res.total;
      });
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    deletefenlei(row) {
      if (this.deleteVisible) {
        // deletetagcategory(this.idds).then((response) => {
        //   console.log(response);
        //   this.gitclasify();
        // });
        this.deleteVisible = false;
        this.idds = "";
      } else {
        this.deleteVisible = true;
        this.idds = row.tagcategoryid;
        this.deletefenl = row.title;
      }
    },
    // å¤åˆ¶æ¨¡ç‰ˆ
    copyfn() {},
    // ä¸‹è½½æ¨¡ç‰ˆ
@@ -627,40 +549,10 @@
    compileUpdate(row) {
      this.$router.push({
        path: "/knowledge/templateku/configurat/",
        query: { id: "1" },
        query: { id: row.id },
      });
        // this.$router.push({
        //   path: "/knowledge/templateku/particulars/",
        //   query: { id: "1" },
        // });
    },
    // é¢˜ç›®çŠ¶æ€ä¿®æ”¹
    handleStatusChange(row) {
      let text = row.status === "0" ? "启用" : "停用";
      this.$modal
        .confirm('确认要"' + text + '""' + row.userName + '"用户吗?')
        .then(function () {
          return changeUserStatus(row.userId, row.status);
        })
        .then(() => {
          this.$modal.msgSuccess(text + "成功");
        })
        .catch(function () {
          row.status = row.status === "0" ? "1" : "0";
        });
    },
        // ä¾§è¾¹--------------
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    },
    //搜索类别
    sidecolumnss() {},
    // ä¾¿æ·æ ‡ç­¾
@@ -669,8 +561,6 @@
    tophandleClick() {},
    // å–消按钮
    cancel() {
      this.indexopen = false;
      this.indexopenty = false;
      this.reset();
    },
@@ -707,39 +597,176 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.userId);
      this.ids = selection.map((item) => item.id);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.title = "新增模版";
      if (this.topactiveName == "Local") {
        this.indexopen = true;
      } else {
        this.indexopenty = true;
      }
    },
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    handleAdd() {},
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      const userids = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .confirm('是否确认删除用户编号为"' + userids + '"的数据项?')
        .then(function () {
          return delUser(userIds);
          return delFollowupinfo(userids);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    },
    // åˆ†ç±»æ ‘-----------------------------------------
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    // æŸ¥è¯¢æ ‘
    getDeptTree() {
      getFollowupclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.indexAssortName &&
        this.radio == "子分类"
      ) {
        const index = this.deptOptions.findIndex(
          (obj) => obj.id == this.classifyform.pid
        );
        calssvalue = this.deptOptions[index];
        calssvalue.ivrLibaTemplateAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.indexAssortName) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaTemplateAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addFollowupclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .then(function () {
            return delFollowupclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delFollowupclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
      this.getList();
    },
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
      this.indexid = row.id;
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
      };
      getillnesslist(illnessqueryParams).then((response) => {
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: row.id, type: 3 }).then((res) => {
        this.illnesslist = res.rows;
        console.log(res);
      });
    },
    handleCloseillness(tag) {
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
      if (tag.id) {
        this.illnesslistapi.push(tag.id);
      }
    },
    remoteMethod(value) {
      console.log(value);
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
        icdname: value,
      };
      this.loading = true;
      setTimeout(() => {
        this.loading = false;
        getillnesslist(illnessqueryParams).then((response) => {
          this.optionsillness = response.rows;
        });
      }, 200);
    },
    illnessConfirm(item) {
      let opeavalue = {};
      let tagname = this.inputValue;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.indexid;
        opeavalue.type = 3;
        opeavalue.icd10id = opeavalue.icdid;
        opeavalue.icd10name = opeavalue.icdname;
        opeavalue.icd10code = opeavalue.icdcode;
        if (tagname) {
          this.illnesslist.push(opeavalue);
        }
      });
      console.log(this.illnesslist);
      this.inputVisible = false;
      this.inputValue = "";
    },
    confirmillness() {
      this.illnesslist.forEach((item, index) => {
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
    showInput() {
      this.inputVisible = true;
    },
  },
};
@@ -853,6 +880,29 @@
    font-size: 20px;
  }
}
.xinz-infs {
  font-size: 18px;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
  .button-new-tag {
    margin-left: 10px;
    height: 32px;
    line-height: 30px;
    padding-top: 0;
    padding-bottom: 0;
  }
  .input-new-tag {
    width: 90px;
    margin-left: 10px;
    vertical-align: bottom;
  }
}
.leftvlues {
  //   display: flex;
  //   flex: 1;
@@ -868,6 +918,22 @@
    font-size: 20px;
  }
}
::v-deep .el-tree-node__content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  height: 46px;
  font-size: 20px;
  cursor: pointer;
}
::v-deep .el-button--mini.is-circle {
  padding: 7px;
  margin: 0;
  color: red;
}
.button-text {
  color: rgb(70, 204, 238);
}
src/views/repositoryai/verbaltrick/index.vue
@@ -13,56 +13,34 @@
          class="input-with-select"
          size="medium "
        >
          <el-button
            @click="sidecolumnss"
            slot="append"
            icon="el-icon-search"
          ></el-button>
        </el-input>
      </div>
      <div class="bottom-fl">
        <el-menu
          default-active="3"
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          @select="handleSelect"
      <div class="head-container" style="margin-top: 20px">
        <el-tree
          :data="deptOptions"
          :props="defaultProps"
          :expand-on-click-node="false"
          :filter-node-method="filterNode"
          ref="tree"
          node-key="id"
          default-expand-all
          highlight-current
          @node-click="handleNodeClick"
        >
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>分类一</span>
            </template>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
            <el-menu-item index="1-3">选项3</el-menu-item>
            <el-menu-item index="1-4">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span>分类二</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
            <el-menu-item index="2-2">选项2</el-menu-item>
            <el-menu-item index="2-3">选项3</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-document"></i>
              <span>分类三</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>分类四</span>
            </template>
            <el-menu-item index="2-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
              <el-button
                type="text"
                icon="el-icon-delete"
                circle
                size="mini"
                @click="() => remove(node, data)"
              >
              </el-button>
            </span>
          </span>
        </el-tree>
      </div>
    </div>
    <!-- å³ä¾§æ•°æ® -->
@@ -192,24 +170,19 @@
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column
                label="序号"
                align="center"
                key="userId"
                prop="userId"
              />
              <el-table-column label="序号" align="center" key="id" prop="id" />
              <el-table-column
                label="问题主题"
                align="center"
                key="userName"
                prop="userName"
                key="questiontitle"
                prop="questiontitle"
                :show-overflow-tooltip="true"
              />
              <el-table-column
                label="问题文本"
                align="center"
                key="nickName"
                prop="nickName"
                key="questiontext"
                prop="questiontext"
                width="200"
                :show-overflow-tooltip="true"
              />
@@ -217,94 +190,79 @@
              <el-table-column
                label="问题语音"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                key="questionvoice"
                prop="questionvoice"
                width="200"
              /><el-table-column
                label="关联指标"
                align="center"
                key="bphonenumbers"
                prop="bphonenumbers"
                key="targetname"
                prop="targetname"
                width="120"
              />
              /><el-table-column
                label="正常值范围"
                align="center"
                key="scope"
                prop="scope"
                width="120"
              />
              /><el-table-column
                label="问题描述"
                align="center"
                key="describe"
                prop="describe"
                width="120"
              />
              /><el-table-column
                label="适用方式"
                align="center"
                key="application"
                prop="application"
                width="120"
              />
              /><el-table-column
                label="适用疾病"
                align="center"
                key="Applicable"
                prop="Applicable"
                width="120"
              />
              <el-table-column
                label="标签"
                align="center"
                key="tagList"
                prop="tagList"
                width="160"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <span v-for="item in scope.row.tagList">{{ item }} </span>
                  <dict-tag :options="mode" :value="scope.row.suitWay" />
                </template>
              </el-table-column>
              <el-table-column
                label="适用疾病"
                align="center"
                key="suitDisease"
                prop="suitDisease"
                width="120"
              >
                <template slot-scope="scope">
                  <el-button
                    size="medium"
                    type="text"
                    @click="illnessUpdate(scope.row)"
                    v-hasPermi="['system:user:edit']"
                    ><span class="button-textxg"
                      ><i class="el-icon-date"></i>详情</span
                    ></el-button
                  >
                </template>
              </el-table-column>
              <el-table-column
                label="语言"
                align="center"
                key="indicator"
                prop="indicator"
                key="language"
                prop="language"
                width="120"
              />
              <el-table-column
                label="版本"
                align="center"
                key="versions"
                prop="versions"
                key="version"
                prop="version"
                width="120"
              />
              <el-table-column
                label="可用"
                align="center"
                key="usable"
                prop="usable"
                key="usestate"
                prop="usestate"
                width="120"
              />
              >
                <template slot-scope="scope">
                  <dict-tag :options="qyoptions" :value="scope.row.usestate" />
                </template>
              </el-table-column>
              <el-table-column
                label="最近修改"
                align="center"
                key="Recentrevision"
                prop="Recentrevision"
                key="modifytime"
                prop="modifytime"
                width="120"
              />
              <el-table-column label="是否可用" align="center" key="status">
                <template slot-scope="scope">
                  <el-switch
                    v-model="scope.row.status"
                    active-value="0"
                    inactive-value="1"
                    @change="handleStatusChange(scope.row)"
                  ></el-switch>
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
@@ -334,7 +292,7 @@
                  <el-button
                    size="medium"
                    type="text"
                    @click="handleDelete(scope.row)"
                    @click="preview(scope.row)"
                    v-hasPermi="['system:user:remove']"
                    ><span class="button-text"
                      ><i class="el-icon-view"></i>预览</span
@@ -356,28 +314,30 @@
      </div>
    </div>
    <!-- æ·»åŠ ç±»åˆ«å¼¹æ¡† -->
    <el-dialog
      :title="amendtag ? '修改类别' : '新增类别'"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
    <el-dialog title="新增类别" width="30%" :visible.sync="dialogFormVisible">
      <div style="text-align: center; margin-bottom: 20px">
        <el-radio-group v-model="radio">
          <el-radio-button label="主分类"></el-radio-button>
          <el-radio-button label="子分类"></el-radio-button>
        </el-radio-group>
      </div>
      <el-divider></el-divider>
      <el-form :model="classifyform">
        <el-form-item label="请选择问卷大类">
          <el-select v-model="classifyform.broadheading" placeholder="请选择">
        <el-form-item label="请选择问题大类" v-if="radio == '子分类'">
          <el-select v-model="classifyform.pid" placeholder="请选择">
            <el-option
              v-for="item in editableTabs"
              :key="item.title"
              :label="item.title"
              :value="item.title"
              v-for="item in deptOptions"
              :key="item.id"
              :label="item.indexAssortName"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="amendtag ? '请输入新的类别名称' : '请输入类别名称'"
        >
        <el-form-item label="请输入类别名称">
          <el-input
            v-model="classifyform.categoryname"
            v-model="classifyform.indexAssortName"
            autocomplete="off"
          ></el-input>
        </el-form-item>
@@ -387,18 +347,52 @@
        <el-button type="primary" @click="submitsidecolumn">ç¡® å®š</el-button>
      </div>
    </el-dialog>
    <!-- åˆ é™¤ç±»åˆ«ç¡®è®¤æ¡† -->
    <el-dialog title="警告" :visible.sync="deleteVisible" width="40%">
      <div style="font-size: 20px; color: rgb(247, 76, 76)">
        æ˜¯å¦ç¡®è®¤åˆ é™¤åˆ†ç±»ï¼š[<span>{{ deletefenl }}</span
        >]?
      </div>
      <div style="font-size: 20px">
        æ­¤æ“ä½œä¼šå°†è¯¥ç±»åˆ«ä¸‹æ‰€æœ‰æ¨¡å—转移至[未分类],是否继续删除此分类?
    <!-- æ·»åŠ ç–¾ç—…å¯¹è¯æ¡† -->
    <el-dialog title="指标疾病" :visible.sync="illnessVisible" width="50%">
      <div>
        <div class="xinz-infs">
          <el-tag
            :key="item.icd10name"
            type="warning"
            v-for="item in illnesslist"
            closable
            :disable-transitions="false"
            @close="handleCloseillness(item)"
          >
            {{ item.icd10name }}
          </el-tag>
          <el-select
            v-model="inputValue"
            v-if="inputVisible"
            @change="illnessConfirm"
            :remote-method="remoteMethod"
            filterable
            remote
            allow-create
            default-first-option
            placeholder="请选择/查询"
            :loading="loading"
          >
            <el-option
              v-for="item in optionsillness"
              :key="item.icdid"
              :label="item.icdname"
              :value="item.icdid"
            >
            </el-option>
          </el-select>
          <el-button
            v-else
            class="button-new-tag"
            size="small"
            @click="showInput"
            >+ æ–°å¢žç–¾ç—…</el-button
          >
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="deleteVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="deletefenlei">ç¡® å®š</el-button>
        <el-button @click="illnessVisible = false">取 æ¶ˆ</el-button>
        <el-button type="primary" @click="confirmillness">ç¡® å®š</el-button>
      </span>
    </el-dialog>
  </div>
@@ -406,18 +400,25 @@
<script>
import {
  listUser,
  getUser,
  delUser,
  addUser,
  updateUser,
} from "@/api/system/user";
  getverbaltricklist,
  verbaltrickinfo,
  delverbaltrickinfo,
  getverbaltrick,
  getillnesslist,
  illnesslistget,
  getillness,
  deltargetillness,
  addtargetillness,
  getbaltrickclassify,
  delbaltrickclassify,
  addbaltrickclassify,
} from "@/api/AiCentre/index";
import store from "@/store";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
  name: "questionnaire",
  dicts: ["sys_normal_disable", "sys_user_sex"],
  components: { Treeselect },
  data() {
    return {
@@ -439,8 +440,18 @@
      idds: "",
      amendtag: false, //是否修改类别
      dialogFormVisible: false, //修改添加类别弹框
      deleteVisible: false, //分类删除弹框
      deletefenl: "高血压", //删除项
      indexid: null,
      inputValue: "",
      inputVisible: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
      optionsillness: [],
      illnesslistapi: [],
      illnesslist: [],
      defaultProps: {
        children: "ivrLibaScriptAssortList",
        label: "indexAssortName",
      },
      classifyform: {
        categoryname: "",
      }, //类别表单
@@ -475,221 +486,70 @@
      sidecolumnval: "", //类别搜索
      indexopen: false, //弹框展示否
      propss: { multiple: true },
      languagelist: [
        {
          value: 1,
          label: "普通话",
        },
        {
          value: 2,
          label: "粤语",
        },
        {
          value: 3,
          label: "英语",
        },
      ], //语言列表
      qyoptions: [
        {
          value: 1,
          label: "可用",
        },
        {
          value: 2,
          label: "禁用",
        },
      ],
      //类别列表
      editableTabs: [
        {
          title: "问题分类一",
          number: "1",
        },
        {
          title: "问题分类二",
          number: "2",
        },
        {
          title: "问题分类三",
          number: "2",
        },
        {
          title: "问题分类四",
          number: "2",
        },
        {
          title: "问题分类五",
          number: "2",
        },
      ],
      radio: "主分类",
      usable: [],
      mode: [],
      languagelist: [],
      qyoptions: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
      // è¡¨å•校验
      rules: {
        userName: [
          { required: true, message: "主旨不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "用户名称长度必须介于 2 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        nickName: [
          { required: true, message: "用户昵称不能为空", trigger: "blur" },
        ],
        password: [
          { required: true, message: "用户密码不能为空", trigger: "blur" },
          {
            min: 5,
            max: 20,
            message: "用户密码长度必须介于 5 å’Œ 20 ä¹‹é—´",
            trigger: "blur",
          },
        ],
        email: [
          {
            type: "email",
            message: "请输入正确的邮箱地址",
            trigger: ["blur", "change"],
          },
        ],
        phonenumber: [
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur",
          },
        ],
        IDnumber: [
          {
            pattern:
              /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
            message: "请输入正确的身份证号码",
            trigger: "blur",
          },
        ],
      },
      rules: {},
    };
  },
  watch: {},
  watch: {
    // æ ¹æ®åç§°ç­›é€‰éƒ¨é—¨æ ‘
    sidecolumnval(val) {
      this.$refs.tree.filter(val);
    },
  },
  created() {
    this.getList();
    this.getDeptTree();
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
  },
  methods: {
    /** æŸ¥è¯¢ç”¨æˆ·åˆ—表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
        console.log(this.userList);
      this.loading = true;
      getverbaltricklist(this.queryParams).then((res) => {
        this.userList = res.rows;
        this.loading = false;
        this.total=res.total
      });
    },
    // æ·»åŠ ã€ä¿®æ”¹ç±»åˆ«
    submitsidecolumn() {
      if (this.amendtag) {
        this.classifyform.tagcategoryid = this.idds;
        // toamendtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      } else {
        // addtagcategory(this.addDateRange(this.classifyform)).then(
        //   (response) => {
        //     console.log(response);
        //     this.gitclasify();
        //   }
        // );
      }
      this.classifyform = {
        categoryname: "",
      };
      this.idds = "";
      this.dialogFormVisible = false;
    },
    //删除分类
    deletefenlei(row) {
      if (this.deleteVisible) {
        // deletetagcategory(this.idds).then((response) => {
        //   console.log(response);
        //   this.gitclasify();
        // });
        this.deleteVisible = false;
        this.idds = "";
      } else {
        this.deleteVisible = true;
        this.idds = row.tagcategoryid;
        this.deletefenl = row.title;
      }
    },
    compileUpdate(row) {
      this.$router.push({
        path: "/knowledge/verbaltrick/particulars/",
        query: { id: "1" },
        query: { id: row.id },
      });
    },
    // é¢˜ç›®çŠ¶æ€ä¿®æ”¹
    handleStatusChange(row) {
      let text = row.status === "0" ? "可用" : "停用";
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.id || this.ids;
      this.$modal
        .confirm('确认要"' + text + '""' + row.userName + '"用户吗?')
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return changeUserStatus(row.userId, row.status);
          return delverbaltrickinfo(userIds);
        })
        .then(() => {
          this.$modal.msgSuccess(text + "成功");
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(function () {
          row.status = row.status === "0" ? "1" : "0";
        });
        .catch(() => {});
    },
    // ä¾§è¾¹--------------
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
    },
    //搜索类别
    sidecolumnss() {},
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto() {},
    // å–消按钮
    cancel() {
      this.indexopen = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        userId: undefined,
        deptId: undefined,
        userName: undefined,
        nickName: undefined,
        password: undefined,
        phonenumber: undefined,
        email: undefined,
        sex: undefined,
        status: "0",
        remark: undefined,
        postIds: [],
        roleIds: [],
      };
      this.form = {};
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
@@ -707,7 +567,7 @@
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.userId);
      this.ids = selection.map((item) => item.id);
      this.single = selection.length != 1;
      this.multiple = !selection.length;
    },
@@ -715,49 +575,161 @@
    handleAdd() {
      this.$router.push({
        path: "/knowledge/verbaltrick/particulars/",
        query: { id: "1" },
        query: { id: "" },
      });
    },
    // åˆ†ç±»æ ‘-----------------------------------------
    // ä¿®æ”¹åˆ†ç±»å¼¹æ¡†
    popoveramend(tagcategoryid) {
      this.idds = tagcategoryid;
      this.amendtag = true;
      this.dialogFormVisible = true;
    },
    /** æ›´æ–°/修改提交按钮 */
    submitForm: function () {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.userId != undefined) {
            updateUser(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.indexopen = false;
              this.getList();
            });
          } else {
            addUser(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.indexopen = false;
              this.getList();
            });
          }
        }
    // æŸ¥è¯¢æ ‘
    getDeptTree() {
      getbaltrickclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const userIds = row.userId || this.ids;
      this.$modal
        .confirm('是否确认删除用户编号为"' + userIds + '"的数据项?')
        .then(function () {
          return delUser(userIds);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    // æ·»åŠ ç±»åˆ«æ ‘
    submitsidecolumn() {
      let calssvalue = {};
      if (
        this.classifyform.pid &&
        this.classifyform.indexAssortName &&
        this.radio == "子分类"
      ) {
        const index = this.deptOptions.findIndex(
          (obj) => obj.id == this.classifyform.pid
        );
        calssvalue = this.deptOptions[index];
        calssvalue.ivrLibaScriptAssortList.push(this.classifyform);
      } else if (this.radio == "主分类" && this.classifyform.indexAssortName) {
        this.classifyform.pid = null;
        this.classifyform.ivrLibaScriptAssortList = [];
      } else {
        return this.$modal.msgError("请填写完整信息");
      }
      addbaltrickclassify(this.classifyform).then((res) => {
        this.getDeptTree();
        this.$modal.msgSuccess("新增成功");
      });
    },
    remove(a, b) {
      if (b.pid) {
        this.$modal
          .confirm('是否确认删除分类项为"' + b.indexAssortName + '"的数据项?')
          .then(function () {
            return delbaltrickclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      } else {
        this.$modal
          .confirm(
            '是否确认删除一级分类"' +
              b.indexAssortName +
              '"?删除后其下分类将归类‘未分类’'
          )
          .then(() => {
            return delbaltrickclassify(b.id);
          })
          .then(() => {
            this.getDeptTree();
            this.$modal.msgSuccess("删除成功");
          })
          .catch(() => {});
      }
    },
    // ç­›é€‰èŠ‚ç‚¹
    filterNode(value, data) {
      if (!value) return true;
      return data.indexAssortName.indexOf(value) !== -1;
    },
    handleNodeClick(data) {
      this.queryParams.assortid = data.id;
      this.getList();
    },
    // é¢„览
    preview(row) {},
    // ç–¾ç—…-----------------------
    illnessUpdate(row) {
      this.illnessVisible = true;
      this.indexid = row.id;
      this.illnesslistapi = [];
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
      };
      getillnesslist(illnessqueryParams).then((response) => {
        console.log(response);
        this.optionsillness = response.rows;
      });
      getillness({ outid: row.id, type: 2 }).then((res) => {
        this.illnesslist = res.rows;
        console.log(res);
      });
    },
    handleCloseillness(tag) {
      this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
      if (tag.id) {
        this.illnesslistapi.push(tag.id);
      }
    },
    remoteMethod(value) {
      console.log(value);
      const illnessqueryParams = {
        pageNum: 1,
        pageSize: 100,
        icdname: value,
      };
      this.loading = true;
      setTimeout(() => {
        this.loading = false;
        getillnesslist(illnessqueryParams).then((response) => {
          this.optionsillness = response.rows;
        });
      }, 200);
    },
    illnessConfirm(item) {
      let opeavalue = {};
      let tagname = this.inputValue;
      illnesslistget(item).then((res) => {
        opeavalue = res.data;
        opeavalue.outid = this.indexid;
        opeavalue.type = 2;
        opeavalue.icd10id = opeavalue.icdid;
        opeavalue.icd10name = opeavalue.icdname;
        opeavalue.icd10code = opeavalue.icdcode;
        if (tagname) {
          this.illnesslist.push(opeavalue);
        }
      });
      console.log(this.illnesslist);
      this.inputVisible = false;
      this.inputValue = "";
    },
    confirmillness() {
      this.illnesslist.forEach((item, index) => {
        if (!item.id) {
          addtargetillness(item).then((res) => {});
        }
      });
      if (this.illnesslistapi.length) {
        deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
      }
      this.illnessVisible = false;
      this.$modal.msgSuccess("编辑成功");
    },
    showInput() {
      this.inputVisible = true;
    },
  },
};
@@ -801,6 +773,29 @@
  .bottom-fl {
    margin-top: 30px;
    display: center !important;
  }
}
.xinz-infs {
  font-size: 18px;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 48px;
  .el-tag + .el-tag {
    margin-left: 10px;
  }
  .button-new-tag {
    margin-left: 10px;
    height: 32px;
    line-height: 30px;
    padding-top: 0;
    padding-bottom: 0;
  }
  .input-new-tag {
    width: 90px;
    margin-left: 10px;
    vertical-align: bottom;
  }
}
.qrcode-dialo {
@@ -856,6 +851,22 @@
  display: block;
  font-size: 20px;
}
::v-deep .el-tree-node__content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  height: 46px;
  font-size: 20px;
  cursor: pointer;
}
::v-deep .el-button--mini.is-circle {
  padding: 7px;
  margin: 0;
  color: red;
}
.leftvlue {
  //   display: flex;
  //   flex: 1;
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -39,7 +39,10 @@
            </el-col>
            <el-col :span="12">
              <el-form-item label="可用状态" prop="status">
                <el-select v-model="indexform.status" placeholder="请选择状态">
                <el-select
                  v-model="indexform.isAvailable"
                  placeholder="请选择状态"
                >
                  <el-option
                    v-for="item in qyoptions"
                    :key="item.value"
@@ -51,190 +54,100 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="问题主旨" prop="nickName">
                <el-input
                  v-model="indexform.nickName"
                  placeholder="请输入问题主旨"
                  maxlength="80"
                />
              <el-form-item label="问题分类" prop="status">
                <el-select
                  v-model="indexform.assortid"
                  placeholder="请选择状态"
                >
                  <el-option
                    v-for="item in questionclass"
                    :key="item.id"
                    :label="item.indexAssortName"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="5">
              <el-form-item label="版本号" prop="nickName">
              <el-form-item label="版本号" prop="version">
                <el-input
                  v-model="indexform.nickName"
                  v-model="indexform.version"
                  placeholder="请输入"
                  maxlength="80"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <div
                style="display: flex; margin-left: 100px; margin-bottom: 10px"
          <el-row :gutter="20">
            <el-col :span="20">
              <el-form-item label="问题主旨" prop="questiontitle">
                <el-input
                  v-model="indexform.questiontitle"
                  placeholder="请输入问题主旨"
                  maxlength="80"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag.tagname"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClosetag(tag)"
              >
                <div class="tsgname" @click="tsgnameto()">医院名称</div>
                <div class="tsgname" @click="tsgnameto()">医院电话</div>
                <div class="tsgname" @click="tsgnameto()">医院姓名</div>
                <div class="tsgname" @click="tsgnameto()">随访姓名</div>
                <div class="tsgname" @click="tsgnameto()">随访电话</div>
                <div class="tsgname" @click="tsgnameto()">性别</div>
                <div class="tsgname" @click="tsgnameto()">年龄</div>
                <div class="tsgname" @click="tsgnameto()">地址</div>
              </div>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题文本" prop="verbaltricktext">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="indexform.userName"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="问题语音" prop="verbaltrickyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                {{ tag.tagname }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                remote
                reserve-keyword
                default-first-option
                :remote-method="remoteMethodtag"
                :loading="loading"
                placeholder="请选择"
              >
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagid"
                  :label="item.tagname"
                  :value="item.tagname"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
                <!-- <el-input v-model="indexform.userName" maxlength="30" /> -->
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="无匹配文本" prop="matchtext">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="indexform.userName"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="无匹配语音" prop="matchyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="无声文本" prop="silenttext">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="indexform.userName"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="无声语音" prop="silentyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="通用库文本" prop="librarytext">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="indexform.userName"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="通用库语音" prop="libraryy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="听不清文本" prop="vaguetext">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  v-model="indexform.userName"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="听不清语音" prop="vagueyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
                >+ æ–°å¢žæ ‡ç­¾</el-button
              >
            </div>
          </el-form-item>
          <el-form-item label="通知变量" prop="name">
            <el-row v-for="item in variablelist">
              <el-col :span="4">
                <el-input v-model="item.variable"></el-input>
                <el-input
                  v-model="item.name"
                  placeholder="请输入变量名"
                ></el-input>
              </el-col>
              <el-col :span="8" :offset="1">
                <el-input v-model="item.value"></el-input>
                <el-input
                  v-model="item.value"
                  placeholder="请输入变量内容"
                ></el-input>
              </el-col>
              <el-col :span="4" :offset="1">
                <el-button
@@ -244,6 +157,7 @@
                  @click="addvariable(item)"
                ></el-button>
                <el-button
                v-if="item"
                  type="danger"
                  icon="el-icon-delete"
                  circle
@@ -253,17 +167,6 @@
            </el-row>
          </el-form-item>
          <el-row>
            <el-col :span="24">
              <el-form-item label="指标说明">
                <el-input
                  v-model="indexform.remark"
                  type="textarea"
                  placeholder="请输入内容"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="仅限院区" prop="region">
@@ -287,23 +190,191 @@
            <el-col :span="12">
              <el-form-item label="关联指标" prop="region">
                <el-select
                  v-model="indexform.relevance"
                  size="medium"
                  v-model="indexform.targetid"
                  filterable
                  placeholder="请选择分类"
                  remote
                  reserve-keyword
                  placeholder="请输入关键词"
                  :remote-method="remoteMethod"
                  :loading="loading"
                >
                  <el-option
                    class="indexformaa"
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                    v-for="item in targetlist"
                    :key="item.targetid"
                    :label="item.targetname"
                    :value="item.targetid"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <div
                style="display: flex; margin-left: 100px; margin-bottom: 10px"
              >
                <div
                  v-for="item in variablelist"
                  class="tsgname"
                  @click="tsgnameto(item)"
                >
                  {{ item.name }}
                </div>
              </div>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题文本" prop="questiontext">
                <el-input
                  type="textarea"
                  :rows="2"
                  placeholder="请输入内容"
                  id="questiontext"
                  v-model.sync="indexform.questiontext"
                  @focus="handleInput('questiontext')"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="问题语音" prop="verbaltrickyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
                <!-- <el-input v-model="indexform.userName" maxlength="30" /> -->
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="无匹配文本" prop="nomatchtext">
                <el-input
                  type="textarea"
                  :rows="2"
                  id="nomatchtext"
                  placeholder="请输入内容"
                  v-model.sync="indexform.nomatchtext"
                  @focus="handleInput('nomatchtext')"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="无匹配语音" prop="matchyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="无声文本" prop="sliencetext">
                <el-input
                  type="textarea"
                  :rows="2"
                  id="sliencetext"
                  placeholder="请输入内容"
                  v-model.sync="indexform.sliencetext"
                  @focus="handleInput('sliencetext')"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="无声语音" prop="silentyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="通用库文本" prop="submoduletext">
                <el-input
                  type="textarea"
                  :rows="2"
                  id="submoduletext"
                  placeholder="请输入内容"
                  v-model.sync="indexform.submoduletext"
                  @focus="handleInput('submoduletext')"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="通用库语音" prop="libraryy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="听不清文本" prop="noclearlytext">
                <el-input
                  type="textarea"
                  id="noclearlytext"
                  :rows="2"
                  placeholder="请输入内容"
                  @focus="handleInput('noclearlytext')"
                  v-model.sync="indexform.noclearlytext"
                  maxlength="30"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="听不清语音" prop="vagueyy">
                <el-upload
                  class="upload-demo"
                  action="https://jsonplaceholder.typicode.com/posts/"
                  :on-change="handleChange"
                  :file-list="fileList"
                  :limit="1"
                  :on-exceed="handleExceed"
                >
                  <el-button size="small" type="primary">点击上传</el-button>
                </el-upload>
              </el-form-item>
            </el-col></el-row
          >
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="nextstep">ç¡® å®š</el-button>
@@ -324,156 +395,48 @@
            <el-col :span="12">
              <el-form-item label="指标名称" prop="deptId">
                <el-input
                  v-model="indexform.name"
                  placeholder="请输入指标种类"
                  maxlength="40"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="版本号" prop="deptId">
                <el-input
                  v-model="indexform.versions"
                  placeholder="请输入指标种类"
                  v-model="indexform.targetname"
                  placeholder="请输入指标名称"
                  maxlength="40"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="语言" prop="deptId">
                <el-select
                  v-model="indexform.language"
                  placeholder="请选择语言"
                >
                  <el-option
                    v-for="index in languagelist"
                    :key="index.value"
                    :label="index.label"
                    :value="index.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="是否可用" prop="deptId">
                <el-select v-model="indexform.useofstate" placeholder="请选择">
                  <el-option
                    v-for="index in qyoptions"
                    :key="index.value"
                    :label="index.label"
                    :value="index.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="指标描述" prop="nickName">
                <el-input
                  v-model="indexform.nickName"
                  placeholder="请输入指标描述"
                  maxlength="40"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
                :key="tag"
                type="success"
                v-for="tag in dynamicTags"
                closable
                :disable-transitions="false"
                @close="handleClose(tag)"
              >
                {{ tag }}
              </el-tag>
              <el-select
                v-model="inputValue"
                v-if="inputVisible"
                @change="handleInputConfirm"
                filterable
                allow-create
                default-first-option
                placeholder="请选择"
              >
                <el-option
                  v-for="item in optionstag"
                  :key="item.tagname"
                  :label="item.tagname"
                  :value="item.tagname"
                >
                </el-option>
              </el-select>
              <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
                >+ æ–°å¢žæ ‡ç­¾</el-button
              >
            </div>
          </el-form-item>
          <el-row>
            <el-col :span="24">
              <el-form-item label="值类型">
                <el-radio-group v-model="indexform.resource">
                  <el-radio label="选项"></el-radio>
                  <el-radio label="文本"></el-radio>
                  <el-radio label="数值"></el-radio>
                </el-radio-group>
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="适用疾病" prop="userName">
                <el-select v-model="indexform.useofstate" placeholder="请选择">
                  <el-option
                    v-for="index in qyoptions"
                    :key="index.value"
                    :label="index.label"
                    :value="index.value"
                  ></el-option>
                </el-select>
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="适用方式" prop="email">
                <el-select v-model="indexform.useofstate" placeholder="请选择">
                  <el-option
                    v-for="index in qyoptions"
                    :key="index.value"
                    :label="index.label"
                    :value="index.value"
                  ></el-option>
                </el-select>
              <el-form-item label="值类型">
                <el-radio-group v-model="indexform.isenable">
                  <el-radio :label="1">选项</el-radio>
                  <el-radio :label="2">文本</el-radio>
                  <el-radio :label="3">数值</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
          </el-row>
            </el-col></el-row
          >
          <el-card class="box-card" style="margin-bottom: 20px">
            <el-table v-loading="loading" :data="testuserList">
            <el-table
              v-loading="loading"
              :data="indexform.ivrLibaScriptTargetoptionList"
            >
              <el-table-column
                label="序号"
                align="center"
                key="userid"
                prop="userid"
                key="guid"
                prop="guid"
                width="50"
              />
              <el-table-column
                label="指标选项"
                align="center"
                key="nickName"
                prop="nickName"
                key="targetvalue"
                prop="targetvalue"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <el-input
                    v-model="scope.row.nickName"
                    v-model="scope.row.targetvalue"
                    placeholder="请输入内容"
                  ></el-input>
                </template>
@@ -481,14 +444,14 @@
              <el-table-column
                label="解析规则"
                align="center"
                key="aphonenumber"
                prop="aphonenumber"
                key="targetregex"
                prop="targetregex"
                width="460"
                :show-overflow-tooltip="true"
              >
                <template slot-scope="scope">
                  <el-input
                    v-model="scope.row.aphonenumber"
                    v-model="scope.row.targetregex"
                    placeholder="请输入内容"
                  ></el-input>
                </template>
@@ -531,7 +494,7 @@
          </el-card>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="测试输入" prop="nickName">
              <el-form-item label="测试输入" prop="targetvalue">
                <el-input
                  v-model="testvalue"
                  placeholder="请输入测试内容"
@@ -554,8 +517,8 @@
          </el-input>
        </div>
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button>
        <el-button @click="Saveproblem('ruleForm')">保存指标数据</el-button>
        <el-button type="info" @click="closeFm()">关闭</el-button>
        <el-button @click="Saveproblem()">保存指标数据</el-button>
      </div>
    </div>
  </div>
@@ -563,6 +526,17 @@
<script>
import { listtag } from "@/api/system/label";
import {
  getverbaltricklist,
  verbaltrickinfo,
  delverbaltrickinfo,
  compileverbaltrick,
  getverbaltrick,
  getbaltrickclassify,
  gettargetInfolist,
  gettargetInfo,
} from "@/api/AiCentre/index";
import store from "@/store";
export default {
  data() {
@@ -572,142 +546,44 @@
      radio: "false", //单选题选中
      radios: [], //多选题选中
      radioas: "", //填空题答案
      dynamicTags: ["标签一", "标签二", "标签三"],
      dynamicTags: [],
      inputVisible: false,
      inputValue: "",
      testvalue: "",
      testgovalue: "",
      topicobj: {},
      indexform: {},
      mode: [],
      questionclass: [],
      currentInputId: "",
      // æ€»æ¡æ•°
      total: 1,
      ruleForm: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        templatevalue: "",
        data2: "",
      },
      rules: {},
      rulesa: {},
      optionstag: [],
      xjxsoptions: [
      targetlist: [
        {
          value: "选项1",
          label: "图文",
        },
        {
          value: "选项2",
          label: "视频",
        },
        {
          value: "选项3",
          label: "音频",
        },
      ],
      rules: {},
      rulesa: {},
      optionstag: [],
      fileList: [
        {
          name: "food.jpeg",
          url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
        },
      ],
      qyoptions: [
        {
          value: 1,
          label: "可用",
        },
        {
          value: 2,
          label: "禁用",
        },
      ],
      options: [
        {
          value: "选项1",
          label: "疾病指标",
        },
        {
          value: "选项2",
          label: "入院指标",
        },
        {
          value: "选项3",
          label: "手术指标",
        },
        {
          value: "选项4",
          label: "护理指标",
        },
      ],
      qyoptions: [],
      options: [],
      variablelist: [
        {
          variable: "paitent",
          value: "表示患者的标识",
        },
      ],
      testuserList: [
        {
          userid: 1,
          nickName: "贫血",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
        },
        {
          userid: 2,
          nickName: "正常",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
        },
        {
          userid: 55,
          nickName: "非正常",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
        },
        {
          userid: 4,
          nickName: "a正常",
          aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
          status: "0",
        },
      ],
      addvalue: "添加题目",
      // é¢˜ç›®è¡¨æ ¼æ•°æ®
      userList: [
        {
          userid: "1",
          userName: "一号指标",
        },
        {
          userid: "2",
          userName: "二号指标",
        },
        {
          userid: "3",
          userName: "三号指标",
        },
        {
          userid: "4",
          userName: "四号指标",
        },
      ],
      languagelist: [
        {
          value: 1,
          label: "普通话",
        },
        {
          value: 2,
          label: "粤语",
        },
        {
          value: 3,
          label: "英语",
        },
      ], //语言列表
      languagelist: [], //语言列表
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
@@ -723,24 +599,86 @@
  created() {
    this.gettabList();
    this.getverbaltrick();
    this.mode = store.getters.mode;
    this.valuetype = store.getters.valuetype;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
  },
  methods: {
    submitForm(formName) {
      this.rules = this.rulesa;
      //   æäº¤
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("submit!");
        } else {
          console.log("error submit!!");
          return false;
        }
    // èŽ·å–è¯¦æƒ…æ•°æ®
    getverbaltrick() {
      let id = this.$route.query.id;
      getverbaltrick({ id: id }).then((res) => {
        this.indexform = res.data;
        this.indexform.assortid = parseInt(this.indexform.assortid);
        this.variablelist = JSON.parse(this.indexform.parameter)?JSON.parse(this.indexform.parameter):[{name:'',value:''}];
        this.dynamicTags = this.indexform.ivrLibaScriptTagList.map(
          this.processElement
        );
        this.targetlist = [
          {
            targetid: this.indexform.targetid,
            targetname: this.indexform.targetname,
          },
        ];
        console.log(this.targetlist);
      });
      // æ ‘
      getbaltrickclassify({}).then((res) => {
        this.questionclass = res.rows;
        console.log(res);
      });
    },
    // ä¿å­˜è¯¦ç»†ä¿¡æ¯
    Saveproblem() {
      if (this.indexform.id) {
        this.indexform.isoperation = 2;
        this.indexform.parameter = JSON.stringify(this.variablelist);
        compileverbaltrick(this.indexform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("修改成功");
          }
        });
      } else {
        this.indexform.isoperation = 1;
        compileverbaltrick(this.indexform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("新增成功");
          }
        });
      }
    },
    remoteMethod(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          gettargetInfolist({ targetname: query }).then((res) => {
            this.targetlist = res.rows;
          });
        }, 200);
      } else {
        this.targetlist = [];
      }
    },
    // ä¸‹ä¸€æ­¥
    nextstep() {
      if (this.Editprogress <= 1 && this.indexform.relevance) {
      if (this.Editprogress <= 1 && this.indexform.targetid) {
        if (this.indexform.ivrLibaScriptTargetoptionList.length) {
          return this.Editprogress++;
        }
        gettargetInfo({ targetID: this.indexform.targetid }).then((res) => {
          this.indexform.isenable = res.rows[0].isenable;
          this.indexform.targetname = res.rows[0].targetname;
          res.rows[0].targetoptionList.forEach((item) => {
            item.isoperation = 1;
            this.indexform.ivrLibaScriptTargetoptionList.push(item);
          });
        });
        return this.Editprogress++;
      } else {
        this.$message.warning("请先选择关联指标");
@@ -767,40 +705,7 @@
          });
        });
    },
    // ä¿å­˜é¢˜ç›®ä¿¡æ¯
    Saveproblem() {},
    /** æŸ¥è¯¢é¢˜ç›®åˆ—表 */
    getList() {
      //   this.loading = true;
      listUser().then((response) => {
        console.log(response);
        // this.userList = response.data;
        // this.total = response.total;
        // this.loading = false;
        console.log(this.userList);
      });
      //   const { rows } = await listUser();
      //   console.log(rows);
      //   this.list = rows;
    },
    // ä¿®æ”¹é¢˜ç›®ä¿¡æ¯
    Submittopicobj() {},
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
        variable: "",
        value: "",
      });
    },
    // åˆ é™¤å˜é‡
    delvariable(item) {
      const index = this.variablelist.indexOf(item);
      if (index !== -1) {
        this.variablelist.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
      } else {
        console.log("未找到该对象");
      }
    },
    // æ–‡ä»¶----------------------
    // æŽ§åˆ¶æ–‡ä»¶
    handleChange(file, fileList) {
      this.fileList = fileList.slice(-3);
@@ -825,74 +730,187 @@
        this.optionstag = response.rows;
      });
    },
    handleClose(tag) {
    handleClosetag(tag) {
      console.log(tag);
      console.log(this.dynamicTags.indexOf(tag));
      const lindex = this.dynamicTags.indexOf(tag);
      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
      this.indexform.ivrLibaScriptTagList[lindex].isoperation = 3;
    },
    handleInputConfirm() {
      let inputValue = this.inputValue;
      if (inputValue) {
        this.dynamicTags.push(inputValue);
      let tagvalue = {};
      let tagname = this.inputValue;
      if (tagname) {
        listtag({
          pageNum: 1,
          pageSize: 1000,
          tagcategoryid: "0",
          tagname: tagname,
        }).then((res) => {
          if (res.rows[0]) {
            tagvalue = res.rows[0];
            tagvalue.isoperation = 1;
          } else {
            tagvalue = {
              tagname: tagname,
              isoperation: 1,
            };
          }
          this.indexform.ivrLibaScriptTagList.push(tagvalue);
          this.dynamicTags.push(tagvalue);
        });
      }
      this.inputVisible = false;
      this.inputValue = "";
    },
    remoteMethodtag(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          listtag({ tagname: query, tagcategoryid: "0" }).then((res) => {
            this.optionstag = res.rows;
          });
        }, 200);
      } else {
        this.optionstag = [];
      }
    },
    showInput() {
      this.inputVisible = true;
      // è‡ªåŠ¨èŽ·å–ç„¦ç‚¹
      // this.$nextTick((_) => {
      //   this.$refs.saveTagInput.$refs.input.focus();
      // });
    },
    // --------------------------
    //测试表单 --------------------------
    gettagerlist() {
      gettagerlist({ targetname: this.targetname }).then((response) => {
        console.log(response);
        this.optionstag = response.rows;
      });
    },
    addoption() {
      this.testuserList.push({
        userid: 1,
        nickName: "贫血",
        aphonenumber: "(?!不.*|没.*|未.*)^.*([贫平凭血]|贫血|评学|评学),10",
      this.indexform.ivrLibaScriptTargetoptionList.push({
        guid: 1,
        isoperation: 1,
        targetvalue: "",
        targetregex: "",
      });
      this.sortFn();
    },
    deloption() {
      const index = this.testuserList.indexOf(item);
      const index = this.indexform.ivrLibaScriptTargetoptionList.indexOf(item);
      if (index !== -1) {
        this.testuserList.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
        this.indexform.ivrLibaScriptTargetoptionList.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
        this.sortFn();
      } else {
        console.log("未找到该对象");
      }
    },
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    processElement(element) {
      return { ...element, isoperation: 1 };
    },
    syioption(row) {
      const index = this.getIndexInArray(this.testuserList, row);
      const item = this.testuserList.splice(index, 1)[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
      this.testuserList.splice(index - 1, 0, item); // å°†item插入到索引位置的前一位
      const index = this.getIndexInArray(
        this.indexform.ivrLibaScriptTargetoptionList,
        row
      );
      const item = this.indexform.ivrLibaScriptTargetoptionList.splice(
        index,
        1
      )[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
      this.indexform.ivrLibaScriptTargetoptionList.splice(index - 1, 0, item); // å°†item插入到索引位置的前一位
      this.sortFn();
    },
    xiayioption(row) {
      const index = this.getIndexInArray(this.testuserList, row);
      const item = this.testuserList.splice(index, 1)[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
      this.testuserList.splice(index + 1, 0, item); // å°†item插入到索引位置的前一位
      const index = this.getIndexInArray(
        this.indexform.ivrLibaScriptTargetoptionList,
        row
      );
      const item = this.indexform.ivrLibaScriptTargetoptionList.splice(
        index,
        1
      )[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
      this.indexform.ivrLibaScriptTargetoptionList.splice(index + 1, 0, item); // å°†item插入到索引位置的前一位
      this.sortFn();
    },
    sortFn() {
      this.testuserList = this.testuserList.map((item, index) => {
        return {
          userid: index + 1,
          nickName: item.nickName,
          aphonenumber: item.aphonenumber,
        };
      });
      console.log(this.testuserList);
      this.indexform.ivrLibaScriptTargetoptionList =
        this.indexform.ivrLibaScriptTargetoptionList.map((item, index) => {
          return {
            guid: index + 1,
            targetvalue: item.targetvalue,
            targetregex: item.targetregex,
          };
        });
      console.log(this.indexform.ivrLibaScriptTargetoptionList);
    },
    // ---------------------
    // æŸ¥è¯¢é¢˜åº“
    handleQuery() {},
    resetQuery() {},
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // ä¾¿æ·æ ‡ç­¾
    tsgnameto() {},
    tsgnameto(row) {
      let inputValueArr = "";
      let el = document.querySelector("#" + this.currentInputId);
      //el.selectionStart; è¿™å°±æ˜¯å½“前光标所在的位置(字符串中字符的index)
      if (this.currentInputId == "questiontext") {
        inputValueArr = this.indexform.questiontext.split("");
      } else if (this.currentInputId == "nomatchtext") {
        inputValueArr = this.indexform.nomatchtext.split("");
      } else if (this.currentInputId == "sliencetext") {
        inputValueArr = this.indexform.sliencetext.split("");
      } else if (this.currentInputId == "noclearlytext") {
        inputValueArr = this.indexform.noclearlytext.split("");
      } else if (this.currentInputId == "submoduletext") {
        inputValueArr = this.indexform.submoduletext.split("");
      } else {
        return;
      }
      //将输入框内容切成数组,方便后续操作
      // inputValueArr = this.inputValue.split("");
      // æ‹¿åˆ°é€‰ä¸­æ–‡å­—的长度(后续可以用来替换选中的文字)
      let selectLength = el.selectionEnd - el.selectionStart;
      // å°†è¦æ’å…¥/替换的文字插入/替换(value.name是要插入/替换的字符串)
      inputValueArr.splice(el.selectionStart, selectLength, `${row.value}`);
      // æŠŠæ•°ç»„重新转换为字符串并赋值
      inputValueArr = inputValueArr.join("");
      console.log(inputValueArr);
      if (this.currentInputId == "questiontext") {
        this.indexform.questiontext = inputValueArr;
      } else if (this.currentInputId == "nomatchtext") {
        this.indexform.nomatchtext = inputValueArr;
      } else if (this.currentInputId == "sliencetext") {
        this.indexform.sliencetext = inputValueArr;
      } else if (this.currentInputId == "noclearlytext") {
        this.indexform.noclearlytext = inputValueArr;
      } else if (this.currentInputId == "submoduletext") {
        this.indexform.submoduletext = inputValueArr;
      } else {
        return;
      }
    },
    // æ–°å¢žå˜é‡
    addvariable() {
      this.variablelist.push({
        variable: "",
        value: "",
      });
    },
    // åˆ é™¤å˜é‡
    delvariable(item) {
      const index = this.variablelist.indexOf(item);
      if (index !== -1) {
        this.variablelist.splice(index, 1); // ä»Žç´¢å¼•位置删除一个元素
      } else {
        console.log("未找到该对象");
      }
    },
    // è¾“入获取id
    handleInput(id) {
      this.currentInputId = id;
      console.log("输入框的值已更新:", this.currentInputId);
      // åœ¨è¿™é‡Œæ‰§è¡Œæ›´æ–°æ•°æ®çš„逻辑
    },
  },
};
</script>