# Survey **Repository Path**: w120/Survey ## Basic Information - **Project Name**: Survey - **Description**: No description available - **Primary Language**: TypeScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # medata-survey ## 进入量表页面需要的参数 > 新增病例,完全新建 > > ``` > url?writeType=surveyCreate > ``` > > 新增病例,基于原有的病例,增加访视 > > ``` > url?writeType=surveyCreate&patientId=对应的病例id > ``` > > 查看问卷详情 > > ``` > url?writeType=surveyDetail&answerId=对应的问卷id&patientId=病例id > ``` > > 编辑问卷详情 > > ``` > url?writeType=surveyUpdate&answerId=对应的问卷id&patientId=病例id > ``` > > 患者扫码进入,不需要缓存(新建) > > ``` > url?writeType=surveyQrcodeCreate&code=二维码的code > ``` > > 在量表页面生成二维码,患者扫码进入,需要缓存(编辑) > > ``` > url?writeType=surveyQrcodeUpdate&code=二维码的code > ``` > > 微信公众号跳转量表走扫码逻辑通过参数 roleAndUrl 来判断角色以及要返回的 url > > ``` > url?writeType=surveyQrcodeUpdate&code=二维码的code?roleAndUrl= > ``` ## 量表 json 说明 > 一、大模块 json 说明 > ``` > menuIChild?: number; // 记录当前坐标 > moduleChildrens: IGauge[]; // 子模块数组 详情请看小模块json说明 > position: IPosition; // 用来记录题目的具体位置 > moduleName: string; // 模块名 > isError: any; // 报错数组 > ``` > > 二、小模块 json 说明 > > ``` > moduleName: string; // 模块名 > subjects: ISubjectV[]; // 题目数组详情请看题目json说明 > explain?: string; // 说明 > isShow: boolean // 显示状态 默认必须为true > domTop?: number; // 到顶部的距离 > domHeight?: number; // 元素的高度 用于计算是否还在该模块内 > ``` > > 三、题目 json 说明 > > ``` > validatorData 验证json 这里不做过多解释,详情请参照 [async-validator](https://github.com/yiminghe/async-validator) > subjectData 题目内容json > roleTypes?: string[]; // 题目权限 只有符合该权限 才会出现,会在初始阶段判断 1 医生 0 患者 不传就是两者都有 > visitNumbers?: string[]; // 则visitNumbers里面有-1 则里面的代表排除的 如果没有 则代表包含的 不传就是全部 > ``` > > 1. 验证 json 建议说明 > > ``` > > required boolean 是否必填 true 为必填,默认false > > message string 报错提示信息 > > len number 最大长度 用于字符串长度和数组长度 > > min max number 针对string和与array类型进行比较length,对于number类型,数字不得小于min或大于max > > pattern string 正则字符串 > > ``` > 1. 题目内容 json > > | 字段名 | 类型 | 是否必填 | 说明 | > > | ------------------ | ---------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | > > | subjectName | string | true | 题目名 | > > | subjectType | string | true | 组件类型下面会详述对应组件 | > > | placeholder | string | false | 输入提醒 | > > | field | string | true | 字段名 | > > | errMsg | string | false | 报错信息 | > > | disable | boolean | false | 是否禁用 | > > | explain | string | false | 说明 | > > | imgUrl | string | false | 图片地址 | > > | visibleIf | string | false | 是否显示 默认不显示 此字段为表单式下面会详述具体格式 | > > | showStatus | boolean | false | 代表当前组件显示的状态 | > > | countNumData | object | false | 当前组件如果是纳入某个算分组件的话,那么就要颗粒化的展示出对应的选项以及对应的值,并且支持输入框输入值算分 | > > | marks | { [key: number]: any } | subjectType 为 formSlider 的时候为必传 | slider 刻度, 具体查看 ant design | > > | step | number | subjectType 为 formSlider 的时候为必传 | slider 移动的距离 | > > | sliderMax | number | subjectType 为 formSlider 的时候为必传 | slider 最小值 | > > | sliderMin | number | subjectType 为 formSlider 的时候为必传 | slider 最大值 | > > | radios | IRadio[] | subjectType 为 formRadio 的时候为必传 | 单选框循环数组,具体格式参照 antdesign | > > | checkboxs | ICheckbox[] | subjectType 为 FormCheckbox 的时候为必传 | 多选循环数组,具体格式参照 antdesign | > > | otherInput | any | false | 选择的值和 otherInput 一样时,可以扩展输入,如果在单选中出现,则其他选项中不能包含 otherInput 这个关键字, 且在扩展输入的输入框中不能输入英文的冒号 : | > > | unit | string | subjectType 为 FormNumInput 的时候才会出现,非必传 | 单位 | > > | threshold | number[] | subjectType 为 FormNumInput 的时候才会出现,非必传 | 区间范围,大于最大的上 小于最小的下,在中间没有箭头,数组里面第一位是小的,第二位是大的 | > > | selectOpts | ISeleOpt[] | subjectType 为 FormSelect 的时候才会出现,非必传 | 下拉框循环数组 | > > | formula | string | subjectType 为 FormCount 的时候为必传 | 计算公式,表达式 | > > | decimalNum | number | subjectType 为 FormCount 的时候才会出现,非必传 | 算分结果保留几位小数 默认 3 位 | > > | arrMark | string | subjectTypeFormCount 的时候才会出现,非必传 | 如果答案是个数组,数组里面的计算规则 目前只支持单一运算 | > > | initGroupChildrens | subjectData[] | subjectType 为 FormGroup 的时候为必传 | 复合组件的子组件,里面是子组件的 json 的集合 | > > | validatorRole | validatorRole | false | 根据不同的权限赋值不同的校验对象 | > > 2、计算公式 > > > > ``` > > 计算公式分为三大类 > > 日期计算 > > 以年为基准进行计算 > > 目前没有做以年为基准进行计算 > > 以月为基准进行计算 > > {{#date_monthCount}} > > {{#date_monthParse}}{{问题1的key}}{{/date_monthParse}} > > - > > {{#date_monthParse}}{{问题2的key}}{{/date_monthParse}} > > {{/date_monthCount}} > > 以日为基准进行计算 > > {{#date_dayCount}} > > {{#date_dayParse}}{{问题1的key}}{{/date_dayParse}} > > - > > {{#date_dayParse}}{{问题2的key}}{{/date_dayParse}} > > {{/date_dayCount}} > > 时间计算 > > 以时为基准进行计算 > > {{#time_hourCount}} > > {{#time_parse}}{{问题1的key}}{{/time_parse}} > > - > > {{#time_parse}}{{问题2的key}}{{/time_parse}} > > {{/time_hourCount}} > > 以分为基准进行计算 > > {{#time_minuteCount}} > > {{#time_parse}}{{问题1的key}}{{/time_parse}} > > - > > {{#time_parse}}{{问题2的key}}{{/time_parse}} > > {{/time_minuteCount}} > > 以秒为基准进行计算 > > {{#time_secondCount}} > > {{#time_parse}}{{问题1的key}}{{/time_parse}} > > - > > {{#time_parse}}{{问题2的key}}{{/time_parse}} > > {{/time_secondCount}} > > 计算年龄 > > {{#countAge}} > > {{出生日期的key}} > > {{/countAge}} > > 数组表单式 > > {{#turnArray}} > > {{问题1的key}} > > {{/turnArray}}.includes(1) > > 普通计算 > > {{a}}*{{b}} > > {{ }} 为表达式,里面只能跟现有的字段,也就是field,然后会字段根据field的值进行计算 > > 支持 && || > > visitNumber 访视字数字段 如要判断访视次数显示 {{visitNumber}} === 1 > > ``` > > > > 3、各个组件的参照例子 > > 输入框 FormInput > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请填写用户名", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: null, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormInput", > > size: "big-input", // 暂时都填这个 > > placeholder: "输入提醒", > > patientRequired: false > > } > > } > > ``` > > > > 多选框 FormCheckbox > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请填写用户名", > > type: "array" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: [], > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormCheckbox", > > otherInput: "运动过度", > > checkboxs: [ > > { > > label: "运动过度", > > value: "运动过度" > > }, > > ], > > countNumData: { > > "运动过度": 1 > > } > > } > > } > > ``` > > > > 单选 FormRadio > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请填写用户名", > > type: "number" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: 2, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormRadio", > > radios: [ > > { > > name: 3, > > value: "{'name': 3, 'value': 3}" > > }, > > ] > > } > > } > > ``` > > > > 计算分数 FormCount > > > > ``` > > { > > validatorData: { > > required: false > > }, > > subjectData: { > > errMsg: "", > > defaultValue: null, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormCount", > > arrMark: "+", > > formula: `{{couShow}}*({{coucheckbox3}}+{{coucheckbox3}})`, > > } > > } > > ``` > > > > 日期选择 FormDate > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: "2019-10-18", // 默认值必须是这种格式 > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormDate", > > } > > } > > ``` > > > > 图片组件 FormImage > > > > ``` > > { > > validatorData: { > > required: false, > > }, > > subjectData: { > > errMsg: "", > > defaultValue: null, > > field: "hospital", > > subjectName: "题目名称", > > imgUrl: "pc_pic_logon_bg.png" > > } > > } > > ``` > > > > 数字输入框 FormNumInput > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "number" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: 1, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormNumInput", > > unit: "ms", > > threshold: [5, 10], > > } > > } > > ``` > > > > 日期范围 FormSectionsDate > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "array", > > fields: { > > 0: { type: "string", required: true }, > > 1: { type: "string", required: true } > > } > > }, > > subjectData: { > > errMsg: "", > > defaultValue: ["2019-10-18", "2019-10-20"], > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormSectionsDate" > > } > > } > > ``` > > > > 下拉框 FormSelect > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请填写用户名", > > type: "number" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: 3, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormSelect", > > selectOpts: [ > > { > > name: 3, > > value: "{'name': 3, value: '运动过度'}" > > }, > > ] > > } > > } > > ``` > > > > 滑块 FormSlider > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请填写用户名", > > type: "number" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: 3, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormSlider", > > sliderMax: 10, > > sliderMin: 0, > > step: 1, > > marks: { > > 0: { > > label: "无疼痛(1)", > > style: { color: "red", transform: "translateX(-12%)" } > > }, > > 10: { > > label: "非常疼(10)", > > style: { color: "red", transform: "translateX(-70%)" } > > } > > } > > } > > } > > ``` > > > > 多行文本 FormTextear > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: 1, > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormTextear", > > } > > } > > ``` > > > > 时间选择 FormTime > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: ""20:33:55"", // 默认值必须是这种格式 > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormTime", > > } > > } > > ``` > > > > 复合组件 FormGroup > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: ""20:33:55"", // 默认值必须是这种格式 > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormGroup", > > initGroupChildrens: [这里面是不同的组件,格式和普通组件一样] > > > > } > > } > > ``` > > > > 上传图片 FormUploadImg > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > defaultValue: [], // 默认值必须是这种格式 > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormUploadImg", > > } > > } > > ``` > > > > 单选日期组件 FormAloneDate > > > > ``` > > { > > validatorData: { > > required: true, > > message: "请选择", > > type: "string" > > }, > > subjectData: { > > errMsg: "", > > field: "hospital", > > subjectName: "题目名称", > > subjectType: "FormAloneDate", > > } > > } > > ``` > > 四、整体示例 > > ``` > { > moduleName: "大模块名", > position: {}, > isError: [], > moduleChildrens: [ > { > moduleName: "小模块名", > isShow: true, > subjects: [ > { > validatorData:{ > required: false > }, > subjectData: { > errMsg: "", > defaultValue: "", > field: "题目字段", > subjectName: "题目名称", > subjectType: "FormTextear" > } > }, > ] > }, > ], > } > ```