|
@@ -2,7 +2,7 @@
|
|
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
|
|
<head>
|
|
|
<th:block th:include="include :: header('随访SOP表修改')" />
|
|
|
- <th:block th:include="include :: datetimepicker-css" />
|
|
|
+<!-- <th:block th:include="include :: datetimepicker-css" />-->
|
|
|
<th:block th:include="include :: select2-css" />
|
|
|
<th:block th:include="include :: layout-latest-css" />
|
|
|
</head>
|
|
@@ -13,8 +13,7 @@
|
|
|
<div class="ibox-title">
|
|
|
<div class="ibox-tools" style="margin-top: -11px; float: left; ">
|
|
|
<label class="control-label">最后更新时间:</label>
|
|
|
- <input type="hidden" id="id" name="id" th:value="${Template.id}">
|
|
|
- <input type="hidden" id="templateId" name="templateId" th:value="${Template.templateId}">
|
|
|
+<!-- <input type="hidden" id="templateId" name="templateId" th:value="${Template.templateId}">-->
|
|
|
<input name="lastUpdateTime" class="styled-input input-field" type="text" style="border: none" th:value="${Template.updatedTime}" readonly>
|
|
|
<span><input type="text" style="border: none;font-size: 13px;width: 60px;color: orangered;" class="styled-input"
|
|
|
th:value="${Template.status == 0 ? '已创建' : (Template.status == 1 ? '启用中' : '禁用中')}"
|
|
@@ -30,22 +29,27 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="ibox-content">
|
|
|
-
|
|
|
<form id="form-SDtpYypzFollowUpSop-edit">
|
|
|
- <div class="customize-form-group-row">
|
|
|
- <label class="control-label is-required">随访SOP:</label>
|
|
|
- <input name="phoneNumber" placeholder="随访SOP模版名称" class="styled-input input-field"
|
|
|
- type="text" th:value="${Template.templateName}" required>
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="customize-form-group-row">
|
|
|
- <label class="control-label is-required">业务归属: :</label>
|
|
|
- <select name="businessBelonging" class="styled-input input-field" th:with="type=${@dict.getType('sys_select_dtp_ywgs')}" disabled>
|
|
|
- <option value="">业务归属</option>
|
|
|
- <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}" th:selected="${Template.businessBelonging == dict.dictLabel}"></option>
|
|
|
- </select>
|
|
|
- </div>
|
|
|
- <form id="form-syyp-durg">
|
|
|
+ <div class="customize-form-group-row">
|
|
|
+ <label class="col-sm-1 control-label is-required">模版名称:</label>
|
|
|
+ <input type="hidden" id="id" name="id" th:value="${Template.id}">
|
|
|
+ <input name="templateName" id="templateName" placeholder="随访SOP模版名称" class="styled-input"
|
|
|
+ type="text" th:value="${Template.templateName}" required>
|
|
|
+ </div>
|
|
|
+ <div class="customize-form-group-row">
|
|
|
+ <label class="col-sm-1 control-label is-required">业务归属: :</label>
|
|
|
+ <select name="businessBelonging" id="businessBelonging" class="styled-input" th:with="type=${@dict.getType('sys_select_dtp_ywgs')}" disabled>
|
|
|
+ <option value="">业务归属</option>
|
|
|
+ <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictLabel}" th:selected="${Template.businessBelonging == dict.dictLabel}"></option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
+ <div class="customize-form-group-row">
|
|
|
+ <label class="col-sm-1 control-label is-required">模版ID:</label>
|
|
|
+ <input name="templateId" id="templateId" placeholder="模版ID" class="styled-input" style="background:#eee;color: #999"
|
|
|
+ type="text" th:value="${Template.templateId}" readonly>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ <form id="form-syyp-durg">
|
|
|
<div class="ibox" id="data-ibox" style="overflow: auto;">
|
|
|
<div class="ibox-title" style="width: 100%;">适用药品:已选择 <span id="drug-count">0</span> 种药品</div>
|
|
|
<table class="fixed-layout-table table1" id="drugInfoTable">
|
|
@@ -63,8 +67,8 @@
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
- </form>
|
|
|
- <form id="form-jdpz-nodes" >
|
|
|
+ </form>
|
|
|
+ <form id="form-jdpz-nodes" >
|
|
|
<div class="customize-form-group-row">
|
|
|
<label class="control-label is-required">节点配置:</label>
|
|
|
<div class="col-sm-6">
|
|
@@ -79,7 +83,6 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </form>
|
|
|
</form>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -93,7 +96,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<th:block th:include="include :: footer" />
|
|
|
-<th:block th:include="include :: datetimepicker-js" />
|
|
|
+<!--<th:block th:include="include :: datetimepicker-js" />-->
|
|
|
<th:block th:include="include :: select2-js" />
|
|
|
<th:block th:include="include :: bootstrap-table-fixed-columns-js" />
|
|
|
<th:block th:include="include :: layout-latest-js" />
|
|
@@ -121,6 +124,21 @@
|
|
|
deleteRow(productCode);
|
|
|
});
|
|
|
|
|
|
+ // 获取 Template.status 的值
|
|
|
+ var status = $('#switchFlag').val();
|
|
|
+ debugger;
|
|
|
+ // 根据 status 设置开关的状态和样式
|
|
|
+ if (status === '启用中') {
|
|
|
+ // 设置开关为开启状态
|
|
|
+ $('#switchFlag2').prop('checked', true);
|
|
|
+ // 应用绿色样式
|
|
|
+ $('.toggle-switch span').addClass('on');
|
|
|
+ } else {
|
|
|
+ // 设置开关为关闭状态
|
|
|
+ $('#switchFlag2').prop('checked', false);
|
|
|
+ // 移除绿色样式
|
|
|
+ $('.toggle-switch span').removeClass('on');
|
|
|
+ }
|
|
|
|
|
|
//在初始化的时候赋值给 表格 获取到查询出来的药品 drugs 并赋值给 表格
|
|
|
var tableBody = $('#drugInfoTable tbody');
|
|
@@ -185,25 +203,25 @@
|
|
|
});
|
|
|
|
|
|
function submitHandler() {
|
|
|
- var businessBelonging=$("#businessBelonging").val();
|
|
|
+ var switchFlag=$("#switchFlag").val();
|
|
|
var templateName=$("#templateName").val();
|
|
|
if(templateName=="" || templateName==undefined){
|
|
|
- $.modal.alertWarning("请输入SOP名称");
|
|
|
- return;
|
|
|
- }
|
|
|
- if(businessBelonging=="" || businessBelonging==undefined){
|
|
|
- $.modal.alertWarning("请选择业务归属");
|
|
|
+ $.modal.alertWarning("请输入SOP模版名称");
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
applicableDrug= getTableData();
|
|
|
if(applicableDrug.length==0){
|
|
|
$.modal.alertWarning("请添加药品");
|
|
|
return;
|
|
|
}
|
|
|
+ debugger;
|
|
|
var prefix = ctx + "dtp/sdtpyypzfollowupsop";
|
|
|
var data = $("#form-SDtpYypzFollowUpSop-edit").serializeArray();
|
|
|
data.push({name:"nodesData",value:JSON.stringify(collectNodesData())});
|
|
|
data.push({name:"applicableDrug",value:JSON.stringify(applicableDrug)});
|
|
|
+ data.push({name:"switchFlag",value:switchFlag});
|
|
|
+
|
|
|
console.log("data="+data)
|
|
|
$.operate.saveTab(prefix + "/sDtpYypzFollowUpSopEdit", data);
|
|
|
}
|
|
@@ -269,6 +287,7 @@
|
|
|
row.remove();
|
|
|
}
|
|
|
function collectNodesData() {
|
|
|
+ debugger;
|
|
|
// 获取所有节点
|
|
|
const nodes = document.querySelectorAll('.tabs-container .tab-pane');
|
|
|
// 创建一个空数组来保存所有节点的数据
|
|
@@ -279,7 +298,7 @@
|
|
|
// 创建一个空对象来保存当前节点的数据
|
|
|
const nodeData = {};
|
|
|
var nodeIdStr=node.id;
|
|
|
- var nodeId= nodeIdStr.substring(4);
|
|
|
+ var nodeId = parseInt(nodeIdStr.substring(4)); // 提取并转换为整数
|
|
|
console.log("nodeId="+nodeId);
|
|
|
// 获取节点内的所有输入字段
|
|
|
const inputs = node.querySelectorAll('input, select');
|
|
@@ -480,7 +499,7 @@
|
|
|
levelTwoSelect.className = 'styled-input';
|
|
|
|
|
|
if (filterConditions) {
|
|
|
- // 假设这里有一个函数可以填充二级下拉菜单的内容 到这里
|
|
|
+ // 假设这里有一个函数可以填充二级下拉菜单的内容
|
|
|
populateLevelTwoSelect(levelTwoSelect, filterConditions[0].traits);
|
|
|
levelTwoSelect.value = filterConditions[0].traitValue;
|
|
|
}
|
|
@@ -862,6 +881,16 @@
|
|
|
document.getElementById('level-three'+id).style.display = 'block';
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ function duanxin(carNum){
|
|
|
+ var chudaSelect = $('#rwdz'+carNum).val();
|
|
|
+ if (chudaSelect === '触达任务') {
|
|
|
+ var divElement = document.getElementById("rwdzform" + carNum); // 获取 div 引用
|
|
|
+ divElement.style.display = "none";
|
|
|
+ var divElementID = document.getElementById("rwdzID" + carNum); // 获取 div 引用
|
|
|
+ divElementID.style.display = "block";
|
|
|
+ }
|
|
|
+ }
|
|
|
function bindTabEvents(carNum) {
|
|
|
console.log("carNum"+carNum);
|
|
|
var flag = true ;
|
|
@@ -965,7 +994,9 @@
|
|
|
|
|
|
// 绑定 change 事件
|
|
|
$(document).on('change', '#rwdz'+carNum, function(e) {
|
|
|
+ debugger;
|
|
|
var chudaSelect = $(this).val();
|
|
|
+ console.log("chudaSelect="+chudaSelect);
|
|
|
var roleSelect = document.getElementById("js"+carNum);
|
|
|
|
|
|
// 清空当前的所有选项
|
|
@@ -997,30 +1028,46 @@
|
|
|
option.value = "系统";
|
|
|
option.text = "系统";
|
|
|
roleSelect.appendChild(option);
|
|
|
- selectedOption.push("duanxiqudan" + carNum);
|
|
|
- // 选中短信
|
|
|
- document.getElementById("duanxiqudan" + carNum).checked = true;
|
|
|
- }else if (chudaSelect === '') {
|
|
|
- var elementsToDelete = [];
|
|
|
- elementsToDelete.push('duanxiqudan' + carNum);
|
|
|
- elementsToDelete.push('yaoshigzt' + carNum);
|
|
|
- var filteredArray = selectedOption.filter(item => !elementsToDelete.includes(item));
|
|
|
- console.log("filteredArray="+filteredArray);
|
|
|
- // 取消选中
|
|
|
- document.getElementById("duanxiqudan" + carNum).checked = false;
|
|
|
- document.getElementById("yaoshigzt" + carNum).checked = false;
|
|
|
}
|
|
|
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
- $(function(){
|
|
|
- $("#datetimepicker-demo-3").datetimepicker({
|
|
|
- format: 'HH:mm:ss',
|
|
|
- autoclose: true
|
|
|
- });
|
|
|
+ // $(function(){
|
|
|
+ // $("#datetimepicker-demo-3").datetimepicker({
|
|
|
+ // format: 'HH:mm:ss',
|
|
|
+ // autoclose: true
|
|
|
+ // });
|
|
|
+ // });
|
|
|
+
|
|
|
+ document.addEventListener('DOMContentLoaded', function () {
|
|
|
+ const inputElement = document.getElementById('datetimepicker-demo-3');
|
|
|
+ console.log('DOM fully loaded and parsed');
|
|
|
+ if (inputElement) {
|
|
|
+ inputElement.addEventListener('input', function (e) {
|
|
|
+ // 正则表达式匹配 hh:mm:ss 格式
|
|
|
+ console.log('DOM 正则表达式匹配 hh:mm:ss 格式');
|
|
|
+ const timePattern = /^([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}$/;
|
|
|
+ let inputValue = e.target.value;
|
|
|
+
|
|
|
+ // 如果输入不符合格式,限制输入
|
|
|
+ if (!timePattern.test(inputValue) && inputValue.length > 0) {
|
|
|
+ // 移除最后一个字符
|
|
|
+ inputValue = inputValue.slice(0, -1);
|
|
|
+ e.target.value = inputValue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自动添加冒号
|
|
|
+ if ((inputValue.length === 2 || inputValue.length === 5) && !inputValue.endsWith(':')) {
|
|
|
+ inputValue += ':';
|
|
|
+ e.target.value = inputValue;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
});
|
|
|
+
|
|
|
+
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
|
|
|
|
// 监听点击事件,激活指定的选项卡
|
|
@@ -1033,31 +1080,6 @@
|
|
|
var clickedA = $(e.target);
|
|
|
var new_id = clickedA[0].id
|
|
|
carNum=new_id.substring(2);
|
|
|
- var Select = document.getElementById("rwdz"+carNum);
|
|
|
- if (Select) { // 确保元素存在
|
|
|
- var selectedOption = Select.options[Select.selectedIndex];
|
|
|
- console.log(selectedOption.text); // 输出选中文本
|
|
|
- if(selectedOption.text =='请选择'){
|
|
|
- document.getElementById("duanxiqudan" + carNum).checked = false;
|
|
|
- }else {
|
|
|
- document.getElementById("duanxiqudan" + carNum).checked = true;
|
|
|
- }
|
|
|
- }
|
|
|
- var Select = document.getElementById("rwdz" + carNum);
|
|
|
- if (Select) { // 确保元素存在
|
|
|
- var selectedOption = Select.options[Select.selectedIndex];
|
|
|
- console.log(selectedOption.text); // 输出选中文本
|
|
|
- if(selectedOption.text =='请选择'){
|
|
|
- document.getElementById("yaoshigzt" + carNum).checked = false;
|
|
|
- }else {
|
|
|
- document.getElementById("yaoshigzt" + carNum).checked = true;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- // // 将目标内容区滚动到视口中央
|
|
|
- // $('html, body').animate({
|
|
|
- // scrollTop: $(target).offset().top - ($(window).height() / 2)
|
|
|
- // }, 500); // 500毫秒动画时间
|
|
|
});
|
|
|
// 初始绑定
|
|
|
bindTabEvents(carNum);
|
|
@@ -1069,13 +1091,8 @@
|
|
|
count++;
|
|
|
|
|
|
// 生成 ibox 容器
|
|
|
- if(count===1){
|
|
|
- c = "active";
|
|
|
- t = "true"
|
|
|
- }else{
|
|
|
- c="";
|
|
|
- t="false"
|
|
|
- }
|
|
|
+ var c = count === 1 ? "active" : "";
|
|
|
+ var t = count === 1 ? "true" : "false";
|
|
|
var addNode = '<div id="tab-' + count + '" class="tab-pane '+c+'">' +
|
|
|
'<div class="panel-body">'+
|
|
|
'<strong>激活节点:</strong>'+
|
|
@@ -1137,6 +1154,7 @@
|
|
|
'<option value="">请选择</option>' +
|
|
|
'<option value="用药指导">用药指导</option>' +
|
|
|
'<option value="脱落召回">脱落召回</option>' +
|
|
|
+ '<option value="常规随访">常规随访</option>' +
|
|
|
'</select>' +
|
|
|
'<p>'+
|
|
|
'</p>'+
|
|
@@ -1165,8 +1183,11 @@
|
|
|
'</div><p>'+
|
|
|
'</p>'+
|
|
|
'<strong>     </strong>下发渠道 '+
|
|
|
- '<input type="radio" id="duanxiqudan' + count + '" name="deliveryChannel" class="form-check-radio" value="短信"> 短信 ' +
|
|
|
- '<input type="radio" id="yaoshigzt' + count + '" name="deliveryChannel" class="form-check-radio" value="药师工作台"> 药师工作台 ' +
|
|
|
+ '<select name="deliveryChannel" id="xfqd' + count + '" class="styled-input">'+
|
|
|
+ ' <option value="">请选择下发渠道</option>'+
|
|
|
+ '<option value="短信">短信</option>'+
|
|
|
+ '<option value="药师工作台">药师工作台</option>'+
|
|
|
+ '</select>'+
|
|
|
'</div>'+
|
|
|
'</div>';
|
|
|
// 添加到容器
|
|
@@ -1174,7 +1195,7 @@
|
|
|
'节点' + count +'</span><span class="close-tab" onclick="deleteNode(\'' + count + '\')"><i class="fa fa-times"></i></span></a></li>';
|
|
|
$('#addNode').append(addNode);
|
|
|
$('#addNodeSelect').append(NodeSelect);
|
|
|
-// 主动重新绑定事件
|
|
|
+ // 主动重新绑定事件
|
|
|
bindTabEvents(count);
|
|
|
}
|
|
|
function doSubmit2(index, layero) {
|
|
@@ -1296,204 +1317,437 @@
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
function echoNodes() {
|
|
|
- count = 0; // 重置计数器
|
|
|
+ count = 0; // 重置计数器
|
|
|
NodeList.forEach(function (node) {
|
|
|
count++;
|
|
|
|
|
|
-
|
|
|
// 生成 ibox 容器
|
|
|
var c = count === 1 ? "active" : "";
|
|
|
var t = count === 1 ? "true" : "false";
|
|
|
-
|
|
|
+ try {
|
|
|
+ // 确保 filterCondition 是有效的 JSON 字符串并解析为数组
|
|
|
+ node.filterCondition = Array.isArray(node.filterCondition)
|
|
|
+ ? node.filterCondition
|
|
|
+ : JSON.parse(node.filterCondition || '[]');
|
|
|
+ } catch (e) {
|
|
|
+ console.error('Invalid JSON in filterCondition:', e);
|
|
|
+ node.filterCondition = []; // 如果解析失败,设置为空数组
|
|
|
+ }
|
|
|
// 动态选择所有列并映射到更具描述性的名称
|
|
|
var columnsData = {
|
|
|
+ filterCondition: node.filterCondition || [], // 确保有默认值
|
|
|
+ createTaskExecutionTimes: node.createTaskExecutionTimes,
|
|
|
+ createTaskEvery: node.createTaskEvery || "",
|
|
|
activateStructures: node.activateStructures || "",
|
|
|
- activateWhichDay: node.activateWhichDay || "",
|
|
|
- activateNodeRule: node.activateNodeRule || "单次节点",
|
|
|
+ activateWhichDay: node.activateWhichDay,
|
|
|
+ activateNodeRule: node.activateNodeRule || "",
|
|
|
createTaskStructures: node.createTaskStructures || "",
|
|
|
- createTaskDi: node.createTaskDi || "",
|
|
|
+ createTaskDi: node.createTaskDi,
|
|
|
taskActionMode: node.taskActionMode || "创建",
|
|
|
taskActionTaskType: node.taskActionTaskType || "",
|
|
|
taskActionRole: node.taskActionRole || "",
|
|
|
- generationDaysAfter: node.generationDaysAfter || "",
|
|
|
+ generationDaysAfter: node.generationDaysAfter,
|
|
|
generationHMS: node.generationHMS || "",
|
|
|
followUpSubject: node.followUpSubject || "",
|
|
|
- taskValidity: node.taskValidity || "",
|
|
|
+ taskValidity: node.taskValidity,
|
|
|
taskMaterial: node.taskMaterial || "表单",
|
|
|
useForm: node.useForm || "",
|
|
|
smsId: node.smsId || "",
|
|
|
- deliveryChannel: node.deliveryChannel || "短信"
|
|
|
+ deliveryChannel: node.deliveryChannel || ""
|
|
|
};
|
|
|
|
|
|
// 构建节点HTML片段
|
|
|
- var addNodeHtml = `
|
|
|
- <div id="tab-${count}" class="tab-pane ${c}">
|
|
|
- <div class="panel-body">
|
|
|
- <strong>激活节点:</strong>
|
|
|
- 按
|
|
|
- <select name="activateStructures" id="jhjd${count}" class="styled-input">
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="创建计划" ${columnsData.activateStructures === '创建计划' ? 'selected' : ''}>创建计划</option>
|
|
|
- </select>
|
|
|
- 第
|
|
|
- <input type="number" name="activateWhichDay" placeholder="规格" class="styled-input" value="${columnsData.activateWhichDay}">
|
|
|
- 天激活
|
|
|
- <select name="activateNodeRule" id="ts${count}" class="styled-input">
|
|
|
- <option value="单次节点" ${columnsData.activateNodeRule === '单次节点' ? 'selected' : ''}>单次节点</option>
|
|
|
- <option value="周期节点" ${columnsData.activateNodeRule === '周期节点' ? 'selected' : ''}>周期节点</option>
|
|
|
+ var addNodeHtml = `
|
|
|
+ <div id="tab-${count}" class="tab-pane ${c}">
|
|
|
+ <div class="panel-body">
|
|
|
+ <strong>激活节点:</strong>
|
|
|
+ 按
|
|
|
+ <select name="activateStructures" id="jhjd${count}" class="styled-input">
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="创建计划" ${node.activateStructures === '创建计划' ? 'selected' : ''}>创建计划</option>
|
|
|
+ </select>
|
|
|
+ 第
|
|
|
+ <input type="number" name="activateWhichDay" placeholder="规则" class="styled-input" value="${node.activateWhichDay}">
|
|
|
+ 天激活
|
|
|
+ <select name="activateNodeRule" id="ts${count}" class="styled-input">
|
|
|
+ <option value="单次节点" ${node.activateNodeRule === '单次节点' ? 'selected' : ''}>单次节点</option>
|
|
|
+ <option value="周期节点" ${node.activateNodeRule === '周期节点' ? 'selected' : ''}>周期节点</option>
|
|
|
</select>
|
|
|
- <p></p id="sctask">
|
|
|
+ <p id="sctask${count}"></p>
|
|
|
<strong>生成任务:</strong>
|
|
|
按
|
|
|
<select name="createTaskStructures" id="scrw${count}" class="styled-input">
|
|
|
<option value="">请选择</option>
|
|
|
- <option value="时间条件" ${columnsData.createTaskStructures === '时间条件' ? 'selected' : ''}>时间条件</option>
|
|
|
- <option value="事件条件" ${columnsData.createTaskStructures === '事件条件' ? 'selected' : ''}>事件条件</option>
|
|
|
+ <option value="时间条件" ${node.createTaskStructures === '时间条件' ? 'selected' : ''}>时间条件</option>
|
|
|
+ <option value="事件条件" ${node.createTaskStructures === '事件条件' ? 'selected' : ''}>事件条件</option>
|
|
|
</select>
|
|
|
- <span id="span${count}">第
|
|
|
- <input type="number" id="createTaskDi${count}" name="createTaskDi" placeholder="请输入" class="styled-input" value="${columnsData.createTaskDi}">
|
|
|
- 天生成任务 </span> <a href="#" onclick="toTask()" id="toTask">添加过滤条件</a>
|
|
|
+ <span id="span${count}"></span>
|
|
|
+ <a href="#" onclick="toTask()" id="toTask${count}">添加过滤条件</a>
|
|
|
<div id="filtersContainer${count}" name="filtersContainer"></div>
|
|
|
- <p></p>
|
|
|
- <strong>任务动作:   </strong>
|
|
|
- <select name="taskActionMode" id="cj${count}" class="styled-input">
|
|
|
- <option value="创建" ${columnsData.taskActionMode === '创建' ? 'selected' : ''}>创建</option>
|
|
|
- </select>
|
|
|
-  
|
|
|
- <select name="taskActionTaskType" id="rwdz${count}" class="styled-input">
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="表单任务" ${columnsData.taskActionTaskType === '表单任务' ? 'selected' : ''}>表单任务</option>
|
|
|
- <option value="触达任务" ${columnsData.taskActionTaskType === '触达任务' ? 'selected' : ''}>触达任务</option>
|
|
|
- </select>
|
|
|
- 类型,由角色
|
|
|
- <select name="taskActionRole" id="js${count}" class="styled-input">
|
|
|
- <option value=""></option>
|
|
|
- <option value="药师" ${columnsData.taskActionRole === '药师' ? 'selected' : ''}>药师</option>
|
|
|
- <option value="系统" ${columnsData.taskActionRole === '系统' ? 'selected' : ''}>系统</option>
|
|
|
- </select>
|
|
|
- 执行
|
|
|
- <p></p>
|
|
|
- <strong>执行任务:</strong>生成后第
|
|
|
- <input type="number" name="generationDaysAfter" placeholder="请输入" class="styled-input" value="${columnsData.generationDaysAfter}">
|
|
|
- 天
|
|
|
- <input type="text" name="generationHMS" placeholder="请输入时间(时分秒)" id="datetimepicker-demo-3" class="styled-input" value="${columnsData.generationHMS}">
|
|
|
- 执行任务
|
|
|
- <p></p>
|
|
|
- <strong>     </strong>随访主题
|
|
|
- <select name="followUpSubject" id="sfzt${count}" class="styled-input">
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="用药指导" ${columnsData.followUpSubject === '用药指导' ? 'selected' : ''}>用药指导</option>
|
|
|
- <option value="脱落召回" ${columnsData.followUpSubject === '脱落召回' ? 'selected' : ''}>脱落召回</option>
|
|
|
- </select>
|
|
|
- <p></p>
|
|
|
- <strong>    </strong>任务有效期
|
|
|
- <input type="number" name="taskValidity" placeholder="请输入" class="styled-input" value="${columnsData.taskValidity}"> 天
|
|
|
- <p></p>
|
|
|
- <strong>     </strong>任务素材
|
|
|
- <select name="taskMaterial" id="1-${count}" class="styled-input">
|
|
|
- <option value="表单" ${columnsData.taskMaterial === '表单' ? 'selected' : ''}>表单</option>
|
|
|
- <option value="表单2" ${columnsData.taskMaterial === '表单2' ? 'selected' : ''}>表单2</option>
|
|
|
- </select>
|
|
|
- <p></p><div id="rwdzform${count}" class="myDivrwdz">
|
|
|
- <strong>     </strong>使用表单
|
|
|
- <select name="useForm" id="2-${count}" class="styled-input">
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="单任务表单" ${columnsData.useForm === '单任务表单' ? 'selected' : ''}>单任务表单</option>
|
|
|
- <option value="随访任务表单" ${columnsData.useForm === '随访任务表单' ? 'selected' : ''}>随访任务表单</option>
|
|
|
- <option value="脱落召回随访表单" ${columnsData.useForm === '脱落召回随访表单' ? 'selected' : ''}>脱落召回随访表单</option>
|
|
|
- </select>
|
|
|
- </div><p></p><div id="rwdzID${count}" class="myDivrwdz">
|
|
|
- <strong>     </strong>短信ID 
|
|
|
- <input type="text" name="smsId" class="styled-input" placeholder="请输入短信ID" value="${columnsData.smsId}">
|
|
|
- </div><p></p>
|
|
|
- <strong>     </strong>下发渠道
|
|
|
- <input type="radio" id="duanxiqudan${count}" name="deliveryChannel" class="form-check-radio" value="短信" ${columnsData.deliveryChannel === '短信' ? 'checked' : ''}> 短信
|
|
|
- <input type="radio" id="yaoshigzt${count}" name="deliveryChannel" class="form-check-radio" value="药师工作台" ${columnsData.deliveryChannel === '药师工作台' ? 'checked' : ''}> 药师工作台
|
|
|
+ <p></p>
|
|
|
+ <strong>任务动作:   </strong>
|
|
|
+ <select name="taskActionMode" id="cj${count}" class="styled-input">
|
|
|
+ <option value="创建" ${node.taskActionMode === '创建' ? 'selected' : ''}>创建</option>
|
|
|
+ </select>
|
|
|
+  
|
|
|
+ <select name="taskActionTaskType" id="rwdz${count}" class="styled-input">
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="表单任务" ${node.taskActionTaskType === '表单任务' ? 'selected' : ''}>表单任务</option>
|
|
|
+ <option value="触达任务" ${node.taskActionTaskType === '触达任务' ? 'selected' : ''}>触达任务</option>
|
|
|
+ </select>
|
|
|
+ 类型,由角色
|
|
|
+ <select name="taskActionRole" id="js${count}" class="styled-input">
|
|
|
+ <option value=""></option>
|
|
|
+ <option value="药师" ${node.taskActionRole === '药师' ? 'selected' : ''}>药师</option>
|
|
|
+ <option value="系统" ${node.taskActionRole === '系统' ? 'selected' : ''}>系统</option>
|
|
|
+ </select>
|
|
|
+ 执行
|
|
|
+ <p></p>
|
|
|
+ <strong>执行任务:</strong>生成后第
|
|
|
+ <input type="number" name="generationDaysAfter" placeholder="请输入" class="styled-input" value="${node.generationDaysAfter}">
|
|
|
+ 天
|
|
|
+ <input type="text" name="generationHMS" placeholder="请输入时间(时分秒)" id="datetimepicker-demo-3" class="styled-input" value="${node.generationHMS}">
|
|
|
+ 执行任务
|
|
|
+ <p></p>
|
|
|
+ <strong>     </strong>随访主题
|
|
|
+ <select name="followUpSubject" id="sfzt${count}" class="styled-input">
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="用药指导" ${node.followUpSubject === '用药指导' ? 'selected' : ''}>用药指导</option>
|
|
|
+ <option value="脱落召回" ${node.followUpSubject === '脱落召回' ? 'selected' : ''}>脱落召回</option>
|
|
|
+ <option value="常规随访" ${node.followUpSubject === '常规随访' ? 'selected' : ''}>常规随访</option>
|
|
|
+ </select>
|
|
|
+ <p></p>
|
|
|
+ <strong>    </strong>任务有效期
|
|
|
+ <input type="number" name="taskValidity" placeholder="请输入" class="styled-input" value="${node.taskValidity}"> 天
|
|
|
+ <p></p>
|
|
|
+ <strong>     </strong>任务素材
|
|
|
+ <select name="taskMaterial" id="1-${count}" class="styled-input">
|
|
|
+ <option value="表单" ${node.taskMaterial === '表单' ? 'selected' : ''}>表单</option>
|
|
|
+ <option value="表单2" ${node.taskMaterial === '表单2' ? 'selected' : ''}>表单2</option>
|
|
|
+ </select>
|
|
|
+ <p></p><div id="rwdzform${count}" class="myDivrwdz">
|
|
|
+ <strong>     </strong>使用表单
|
|
|
+ <select name="useForm" id="2-${count}" class="styled-input">
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="单任务表单" ${node.useForm === '单任务表单' ? 'selected' : ''}>单任务表单</option>
|
|
|
+ <option value="随访任务表单" ${node.useForm === '随访任务表单' ? 'selected' : ''}>随访任务表单</option>
|
|
|
+ <option value="脱落召回随访表单" ${node.useForm === '脱落召回随访表单' ? 'selected' : ''}>脱落召回随访表单</option>
|
|
|
+ </select>
|
|
|
+ </div><p></p><div id="rwdzID${count}" class="myDivrwdz">
|
|
|
+ <strong>     </strong>短信ID 
|
|
|
+ <input type="text" name="smsId" class="styled-input" placeholder="请输入短信ID" value="${node.smsId}">
|
|
|
+ </div><p></p>
|
|
|
+ <strong>     </strong>下发渠道
|
|
|
+ <select name="deliveryChannel" id="xfqd${count}" class="styled-input">
|
|
|
+ <option value="">请选择下发渠道</option>
|
|
|
+ <option value="短信" ${node.deliveryChannel === '短信' ? 'selected' : ''}>短信</option>
|
|
|
+ <option value="药师工作台" ${node.deliveryChannel === '药师工作台' ? 'selected' : ''}>药师工作台</option>
|
|
|
+ </select>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- `;
|
|
|
- // 添加到容器
|
|
|
- var NodeSelect = `
|
|
|
- <li id="li-${count}" class="${c}">
|
|
|
- <a data-toggle="tab" href="#tab-${count}" aria-expanded="${t}">
|
|
|
- <span class="your-class-for-nodes" id="jd${count}">
|
|
|
- 节点${count}
|
|
|
- </span>
|
|
|
- <span class="close-tab" onclick="deleteNode('${count}')">
|
|
|
- <i class="fa fa-times"></i>
|
|
|
- </span>
|
|
|
- </a>
|
|
|
- </li>
|
|
|
- `;
|
|
|
+ `;
|
|
|
+ // 添加到容器
|
|
|
+ var NodeSelect = `
|
|
|
+ <li id="li-${count}" class="${c}">
|
|
|
+ <a data-toggle="tab" href="#tab-${count}" aria-expanded="${t}">
|
|
|
+ <span class="your-class-for-nodes" id="jd${count}">
|
|
|
+ 节点${count}
|
|
|
+ </span>
|
|
|
+ <span class="close-tab" onclick="deleteNode('${count}')">
|
|
|
+ <i class="fa fa-times"></i>
|
|
|
+ </span>
|
|
|
+ </a>
|
|
|
+ </li>
|
|
|
+ `;
|
|
|
$('#addNode').append(addNodeHtml);
|
|
|
$('#addNodeSelect').append(NodeSelect);
|
|
|
|
|
|
+ updateTaskCreationUI(count,columnsData);
|
|
|
+ duanxin(count);
|
|
|
// 主动重新绑定事件
|
|
|
bindTabEvents(count);
|
|
|
+ // 动态加载过滤条件
|
|
|
+ loadFilterConditions(count, columnsData.filterCondition);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 绑定 onchange 事件监听器以响应用户交互
|
|
|
+ for (var i = 1; i <= count; i++) {
|
|
|
+ document.getElementById('ts' + i).addEventListener('change', function() {
|
|
|
+ updateTaskCreationUI(this.id.replace('ts', ''), getNodeData(this.id.replace('ts', '')));
|
|
|
+ });
|
|
|
+ document.getElementById('scrw' + i).addEventListener('change', function() {
|
|
|
+ updateTaskCreationUI(this.id.replace('scrw', ''), getNodeData(this.id.replace('scrw', '')));
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- // ...(之前构建节点HTML片段的代码)
|
|
|
- // 尝试处理 filterCondition BLOB 数据
|
|
|
- let parsedFilterConditions = null;
|
|
|
- try {
|
|
|
- debugger;
|
|
|
- if (typeof node.filterCondition === 'object' && node.filterCondition instanceof Blob) {
|
|
|
- // 创建一个 FileReader 来读取 BLOB 数据
|
|
|
- const reader = new FileReader();
|
|
|
- reader.onload = function(e) {
|
|
|
- try {
|
|
|
- // 假设 BLOB 内容是 UTF-8 编码的 JSON 字符串
|
|
|
- parsedFilterConditions = JSON.parse(e.target.result);
|
|
|
-
|
|
|
- // 回显过滤条件
|
|
|
- if (parsedFilterConditions && parsedFilterConditions.length > 0) {
|
|
|
- parsedFilterConditions.forEach((condition) => {
|
|
|
- toTask2(count, [condition]); // 注意:每次传递单个条件对象
|
|
|
- });
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- console.error("解析 filterCondition 失败: ", e);
|
|
|
- parsedFilterConditions = [];
|
|
|
- }
|
|
|
- };
|
|
|
- reader.readAsText(node.filterCondition, 'UTF-8'); // 指定编码方式为 UTF-8
|
|
|
- } else if (typeof node.filterCondition === 'string') {
|
|
|
- // 如果已经是字符串,则直接解析
|
|
|
- parsedFilterConditions = JSON.parse(node.filterCondition);
|
|
|
-
|
|
|
- // 回显过滤条件
|
|
|
- if (parsedFilterConditions && parsedFilterConditions.length > 0) {
|
|
|
- parsedFilterConditions.forEach((condition) => {
|
|
|
- toTask2(count, [condition]); // 注意:每次传递单个条件对象
|
|
|
- });
|
|
|
- }
|
|
|
- } else if (Array.isArray(node.filterCondition)) {
|
|
|
- parsedFilterConditions = node.filterCondition;
|
|
|
-
|
|
|
- // 回显过滤条件
|
|
|
- if (parsedFilterConditions && parsedFilterConditions.length > 0) {
|
|
|
- parsedFilterConditions.forEach((condition) => {
|
|
|
- toTask2(count, [condition]); // 注意:每次传递单个条件对象
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- console.error("处理 filterCondition BLOB 数据失败: ", e);
|
|
|
- parsedFilterConditions = [];
|
|
|
+ }
|
|
|
+ function updateTaskCreationUI(count, node) {
|
|
|
+ var activateNodeRule = node.activateNodeRule;
|
|
|
+ var createTaskStructures = node.createTaskStructures;
|
|
|
+ var spanElement = document.getElementById('span' + count);
|
|
|
+
|
|
|
+ if (activateNodeRule === '周期节点') {
|
|
|
+ if (createTaskStructures === '时间条件') {
|
|
|
+ spanElement.innerHTML = `
|
|
|
+ 每
|
|
|
+ <input type="number" name="createTaskEvery" placeholder="请输入" class="styled-input" value="${node.createTaskEvery || ''}">
|
|
|
+ 天生成任务,共执行
|
|
|
+ <input type="number" name="createTaskExecutionTimes" placeholder="请输入" class="styled-input" value="${node.createTaskExecutionTimes || ''}">
|
|
|
+ 次
|
|
|
+ `;
|
|
|
+ } else if (createTaskStructures === '事件条件') {
|
|
|
+ spanElement.innerHTML = `
|
|
|
+ 当
|
|
|
+ <select name="createTaskWhen" id="scrw-t${count}" class="styled-input">
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="最近订单D值" ${node.createTaskWhen === '最近订单D值' ? 'selected' : ''}>最近订单D值(剩余用药天数)</option>
|
|
|
+ <option value="其他值" ${node.createTaskWhen === '其他值' ? 'selected' : ''}>其他值</option>
|
|
|
+ </select>
|
|
|
+ 为
|
|
|
+ <input type="number" name="createTaskTriggerValue" placeholder="请输入" class="styled-input" value="${node.createTaskTriggerValue || ''}">
|
|
|
+ 触发动作
|
|
|
+ 共执行
|
|
|
+ <input type="number" name="createTaskExecutionTimes" placeholder="请输入" class="styled-input" value="${node.createTaskExecutionTimes || ''}">
|
|
|
+ 次
|
|
|
+ `;
|
|
|
}
|
|
|
+ } else if (activateNodeRule === '单次节点') {
|
|
|
+ spanElement.innerHTML = `
|
|
|
+ 第
|
|
|
+ <input type="number" id="createTaskDi${count}" name="createTaskDi" placeholder="请输入" class="styled-input" value="${node.createTaskDi || ''}">
|
|
|
+ 天生成任务
|
|
|
+ `;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取节点数据的辅助函数
|
|
|
+ function getNodeData(count) {
|
|
|
+ return {
|
|
|
+ activateNodeRule: document.getElementById('ts' + count).value,
|
|
|
+ createTaskStructures: document.getElementById('scrw' + count).value,
|
|
|
+ createTaskEvery: document.querySelector(`#span${count} input[name="createTaskEvery"]`)?.value,
|
|
|
+ createTaskExecutionTimes: document.querySelector(`#span${count} input[name="createTaskExecutionTimes"]`)?.value,
|
|
|
+ createTaskWhen: document.querySelector(`#span${count} select[name="createTaskWhen"]`)?.value,
|
|
|
+ createTaskTriggerValue: document.querySelector(`#span${count} input[name="createTaskTriggerValue"]`)?.value,
|
|
|
+ createTaskDi: document.querySelector(`#span${count} input[name="createTaskDi"]`)?.value
|
|
|
+ };
|
|
|
+ }
|
|
|
+ //动态加载过滤条件
|
|
|
+ function loadFilterConditions(count, filterConditions) {
|
|
|
+ var filtersContainer = document.getElementById('filtersContainer' + count);
|
|
|
+
|
|
|
+ // 确保 filterConditions 是一个数组
|
|
|
+ if (!Array.isArray(filterConditions)) {
|
|
|
+ console.warn('filterConditions is not an array:', filterConditions);
|
|
|
+ filterConditions = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 打印调试信息
|
|
|
+ console.log('Loading filter conditions:', filterConditions);
|
|
|
+
|
|
|
+ filterConditions.forEach(condition => {
|
|
|
+ selectCount = condition.rowIndex || Date.now(); // 使用 rowIndex 或当前时间戳作为 selectCount 的值
|
|
|
+
|
|
|
+ var filterRow = document.createElement('div');
|
|
|
+ filterRow.className = 'filter-row';
|
|
|
+
|
|
|
+ // 创建并初始化一级下拉列表 特征
|
|
|
+ var levelOneSelect = document.createElement('select');
|
|
|
+ levelOneSelect.id = 'level-one' + selectCount;
|
|
|
+ levelOneSelect.name = 'trait';
|
|
|
+ levelOneSelect.className = 'styled-input';
|
|
|
+ levelOneSelect.innerHTML = `
|
|
|
+ <option value="" disabled ${condition.traits ? '' : 'selected'}>请选择一级分类</option>
|
|
|
+ <option value="patient-feature" ${condition.traits === 'patient-feature' ? 'selected' : ''}>患者特征</option>
|
|
|
+ <option value="patient-did-feature" ${condition.traits === 'patient-did-feature' ? 'selected' : ''}>患者Did特征</option>
|
|
|
+ `;
|
|
|
+ filterRow.appendChild(levelOneSelect);
|
|
|
+ // filtersContainer.appendChild(filterRow);
|
|
|
+
|
|
|
+ // 创建并初始化二级下拉列表
|
|
|
+ var levelTwoContainer = document.createElement('div');
|
|
|
+ levelTwoContainer.className = 'styled-input';
|
|
|
+
|
|
|
+ var levelTwoSelect = document.createElement('select');
|
|
|
+ levelTwoSelect.id = 'level-two' + selectCount;
|
|
|
+ levelTwoSelect.name = 'traitValue';
|
|
|
+ levelTwoSelect.className = 'styled-input';
|
|
|
+ levelTwoSelect.innerHTML = generateLevelTwoOptions(condition.traitValue); // 设置默认值
|
|
|
+
|
|
|
+ filterRow.appendChild(levelTwoSelect);
|
|
|
+ // filtersContainer.appendChild(levelTwoContainer);
|
|
|
+
|
|
|
+ // 创建并初始化三级下拉列表
|
|
|
+ var levelThreeContainer = document.createElement('div');
|
|
|
+ levelThreeContainer.id = 'level-three-container' + selectCount;
|
|
|
+ levelThreeContainer.className = 'styled-input';
|
|
|
+ levelThreeContainer.style.display = 'none';
|
|
|
+
|
|
|
+ var levelThreeSelect = document.createElement('select');
|
|
|
+ levelThreeSelect.id = 'level-three' + selectCount;
|
|
|
+ levelThreeSelect.name = 'judgingCondition';
|
|
|
+ levelThreeSelect.className = 'styled-input';
|
|
|
+ levelThreeSelect.innerHTML = `
|
|
|
+ <option value="" disabled ${condition.judgingCondition ? '' : 'selected'}>请选择判断条件</option>
|
|
|
+ <option value="等于" ${condition.judgingCondition === '等于' ? 'selected' : ''}>等于</option>
|
|
|
+ <option value="不等于" ${condition.judgingCondition === '不等于' ? 'selected' : ''}>不等于</option>
|
|
|
+ <!-- 添加更多判断条件选项 -->
|
|
|
+ `;
|
|
|
+ filterRow.appendChild(levelThreeSelect);
|
|
|
+ debugger;
|
|
|
+ // 创建并初始化四级输入框只输入数字
|
|
|
+ if (condition.judgingCondition === '等于' || condition.judgingCondition === '不等于') {
|
|
|
+ var levelFourInput = document.createElement('input');
|
|
|
+ levelFourInput.id = 'level-four-inputNumber' + selectCount;
|
|
|
+ levelFourInput.name = 'judgmentInputValue';
|
|
|
+ levelFourInput.className = 'styled-input';
|
|
|
+ // levelFourInput.type = 'number';
|
|
|
+ levelFourInput.type = 'text'; // 明确指定类型,即使默认是 text
|
|
|
+ levelFourInput.value = condition.judgmentValue;
|
|
|
+
|
|
|
+ filterRow.appendChild(levelFourInput);
|
|
|
+ // $('#level-four-inputNumber'+selectCount).val(condition.judgmentValue);
|
|
|
+ // 使用 setAttribute 方法赋值
|
|
|
+ levelFourInput.setAttribute('value', condition.judgmentValue); // 使用 setAttribute 方法赋值
|
|
|
+ } else {
|
|
|
+ var levelFourSelect = document.createElement('select');
|
|
|
+ levelFourSelect.id = 'level-four-input' + selectCount;
|
|
|
+ levelFourSelect.name = 'judgmentSelectValue';
|
|
|
+ levelFourSelect.className = 'styled-input';
|
|
|
+ levelFourSelect.innerHTML = generateLevelFourOptions(condition.judgmentValue); // 假设有一个函数生成四级下拉选项
|
|
|
+ filterRow.appendChild(levelFourSelect);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建移除按钮
|
|
|
+ var removeButton = document.createElement('button');
|
|
|
+ removeButton.textContent = '删除';
|
|
|
+ removeButton.className = 'remove-buttonx';
|
|
|
+ removeButton.onclick = () => {
|
|
|
+ filtersContainer.removeChild(filterRow);
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ filterRow.innerHTML+= "<p class='grey-text'>如满足左侧设定逻辑,则不会执行任务动作</p>";
|
|
|
+ filterRow.appendChild(removeButton);
|
|
|
+ // 将新创建的 filterRow 添加到 filtersContainer 中
|
|
|
+ filtersContainer.appendChild(filterRow);
|
|
|
+
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
+ // 创建过滤条件行
|
|
|
+ function createFilterRow(selectCount, condition) {
|
|
|
+ var filterRow = document.createElement('div');
|
|
|
+ filterRow.className = 'filter-row';
|
|
|
|
|
|
+ // 创建并初始化一级下拉列表 特征
|
|
|
+ var levelOneSelect = document.createElement('select');
|
|
|
+ levelOneSelect.id = 'level-one' + selectCount;
|
|
|
+ levelOneSelect.name = 'trait';
|
|
|
+ levelOneSelect.className = 'styled-input';
|
|
|
+ levelOneSelect.innerHTML = `
|
|
|
+ <option value="" disabled ${condition.traits ? '' : 'selected'}>请选择一级分类</option>
|
|
|
+ <option value="patient-feature" ${condition.traits === 'patient-feature' ? 'selected' : ''}>患者特征</option>
|
|
|
+ <option value="patient-did-feature" ${condition.traits === 'patient-did-feature' ? 'selected' : ''}>患者Did特征</option>
|
|
|
+ `;
|
|
|
+ filterRow.appendChild(levelOneSelect);
|
|
|
|
|
|
+ // 创建二级、三级、四级的容器和相关元素,但初始时不显示它们 特征值
|
|
|
+ var levelTwoContainer = document.createElement('div');
|
|
|
+ levelTwoContainer.id = 'level-two-container' + selectCount;
|
|
|
+ levelTwoContainer.className = 'styled-input';
|
|
|
+ levelTwoContainer.style.display = 'none';
|
|
|
|
|
|
+ // 创建并初始化二级下拉列表
|
|
|
+ var levelTwoSelect = document.createElement('select');
|
|
|
+ levelTwoSelect.id = 'level-two' + selectCount;
|
|
|
+ levelTwoSelect.name = 'traitValue';
|
|
|
+ levelTwoSelect.className = 'styled-input';
|
|
|
+ levelTwoSelect.innerHTML = generateLevelTwoOptions(condition.traitValue);
|
|
|
+ levelTwoContainer.appendChild(levelTwoSelect);
|
|
|
+ filterRow.appendChild(levelTwoContainer);
|
|
|
+
|
|
|
+ // 创建并初始化三级下拉列表
|
|
|
+ var levelThreeContainer = document.createElement('div');
|
|
|
+ levelThreeContainer.id = 'level-three-container' + selectCount;
|
|
|
+ levelThreeContainer.className = 'styled-input';
|
|
|
+ levelThreeContainer.style.display = 'none';
|
|
|
+
|
|
|
+ var levelThreeSelect = document.createElement('select');
|
|
|
+ levelThreeSelect.id = 'level-three' + selectCount;
|
|
|
+ levelThreeSelect.name = 'judgingCondition';
|
|
|
+ levelThreeSelect.className = 'styled-input';
|
|
|
+ levelThreeSelect.innerHTML = `
|
|
|
+ <option value="" disabled ${condition.judgingCondition ? '' : 'selected'}>请选择判断条件</option>
|
|
|
+ <option value="等于" ${condition.judgingCondition === '等于' ? 'selected' : ''}>等于</option>
|
|
|
+ <option value="不等于" ${condition.judgingCondition === '不等于' ? 'selected' : ''}>不等于</option>
|
|
|
+ <!-- 添加更多判断条件选项 -->
|
|
|
+ `;
|
|
|
+ levelThreeContainer.appendChild(levelThreeSelect);
|
|
|
+ filterRow.appendChild(levelThreeContainer);
|
|
|
+
|
|
|
+ // 创建并初始化四级输入框或下拉框
|
|
|
+ var levelFourContainer = document.createElement('div');
|
|
|
+ levelFourContainer.id = 'level-four-container' + selectCount;
|
|
|
+ levelFourContainer.className = 'styled-input';
|
|
|
+ levelFourContainer.style.display = 'none';
|
|
|
+
|
|
|
+ if (condition.judgingCondition === '等于' || condition.judgingCondition === '不等于') {
|
|
|
+ var levelFourInput = document.createElement('input');
|
|
|
+ levelFourInput.id = 'level-four-inputNumber' + selectCount;
|
|
|
+ levelFourInput.name = 'judgmentInputValue';
|
|
|
+ levelFourInput.className = 'styled-input';
|
|
|
+ levelFourInput.type = 'number';
|
|
|
+ levelFourInput.value = condition.judgmentValue || '';
|
|
|
+ levelFourContainer.appendChild(levelFourInput);
|
|
|
+ } else {
|
|
|
+ var levelFourSelect = document.createElement('select');
|
|
|
+ levelFourSelect.id = 'level-four-input' + selectCount;
|
|
|
+ levelFourSelect.name = 'judgmentSelectValue';
|
|
|
+ levelFourSelect.className = 'styled-input';
|
|
|
+ levelFourSelect.innerHTML = generateLevelFourOptions(condition.judgmentValue); // 假设有一个函数生成四级下拉选项
|
|
|
+ levelFourContainer.appendChild(levelFourSelect);
|
|
|
+ }
|
|
|
|
|
|
+ filterRow.appendChild(levelFourContainer);
|
|
|
+
|
|
|
+ // 创建移除按钮
|
|
|
+ var removeButton = document.createElement('button');
|
|
|
+ removeButton.textContent = '删除';
|
|
|
+ removeButton.className = 'remove-buttonx';
|
|
|
+ removeButton.onclick = () => {
|
|
|
+ filterRow.parentNode.removeChild(filterRow);
|
|
|
+ };
|
|
|
+ filterRow.innerHTML += "<p class='grey-text'>如满足左侧设定逻辑,则不会执行任务动作</p>";
|
|
|
+ filterRow.appendChild(removeButton);
|
|
|
|
|
|
+ return filterRow;
|
|
|
+ }
|
|
|
|
|
|
+ // 生成二级下拉列表选项
|
|
|
+ function generateLevelTwoOptions(selectedValue) {
|
|
|
+ return `
|
|
|
+ <option value="" disabled ${selectedValue ? '' : 'selected'}>请选择特征值</option>
|
|
|
+ <option value="最近订单距今天数" ${selectedValue === '最近订单距今天数' ? 'selected' : ''}>最近订单距今天数</option>
|
|
|
+ <option value="永久停止随访(常规随访)" ${selectedValue === '永久停止随访(常规随访)' ? 'selected' : ''}>永久停止随访(常规随访)</option>
|
|
|
+ <option value="永久停止随访(脱落召回)" ${selectedValue === '永久停止随访(脱落召回)' ? 'selected' : ''}>永久停止随访(脱落召回)</option>
|
|
|
+ <!-- 添加更多特征值选项 -->
|
|
|
+ `;
|
|
|
+ }
|
|
|
|
|
|
+ // 生成四级下拉列表选项(假设)
|
|
|
+ function generateLevelFourOptions(selectedValue) {
|
|
|
+ return `
|
|
|
+ <option value="" disabled ${selectedValue ? '' : 'selected'}>请选择判断值</option>
|
|
|
+ <option value="1" ${selectedValue === '1' ? 'selected' : ''}>是</option>
|
|
|
+ <option value="0" ${selectedValue === '0' ? 'selected' : ''}>否</option>
|
|
|
+ <!-- 根据实际需求添加更多选项 -->
|
|
|
+ `;
|
|
|
+ }
|
|
|
</script>
|
|
|
<style>
|
|
|
.myDivrwdz {
|