Commit 84341976 authored by miaojiale's avatar miaojiale

添加病例部分功能

parent 2686459c
...@@ -47,10 +47,10 @@ ...@@ -47,10 +47,10 @@
placeholder="标题" placeholder="标题"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="标题缀"> <el-form-item label="标题缀">
<el-input <el-input
v-model="data.labelSuffix" v-model="data.labelSuffix"
placeholder="标题缀" placeholder="标题缀"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="左侧内边距" v-if="data.type === 'group'"> <el-form-item label="左侧内边距" v-if="data.type === 'group'">
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
> >
<el-form-item <el-form-item
:label=" :label="
item.label ? `${item.label}${item.labelSuffix || ':'}` : '' item.label ? `${item.labelSuffix || ''}${item.label}` : ''
" "
:prop="item.prop" :prop="item.prop"
:label-width=" :label-width="
......
import request from "@/utils/request"
/* 数据概览 */
// 累计上报
export function getPatientPage(params = {}) {
return request({
url: "/disease-data/data/patient/page",
method: "get",
params,
})
}
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
:is-show-important="isShowImportant" :is-show-important="isShowImportant"
></form-dynamic> ></form-dynamic>
</div> </div>
<div <div
v-else-if="item.type === 'group'" v-else-if="item.type === 'group'"
v-show="item.display" v-show="item.display"
...@@ -214,6 +213,13 @@ export default { ...@@ -214,6 +213,13 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.25s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active in <2.1.8 */ {
opacity: 0;
}
::v-deep { ::v-deep {
.row24.el-col-lg-12 { .row24.el-col-lg-12 {
&:nth-child(2n) { &:nth-child(2n) {
......
...@@ -5,11 +5,18 @@ ...@@ -5,11 +5,18 @@
:style="item.styles" :style="item.styles"
:class="{ isDefects: defectsSet.includes(item.prop) }" :class="{ isDefects: defectsSet.includes(item.prop) }"
> >
<el-col :lg="item.width" :style="{ height: item.type === 'upload' ? '116px' : '53px' }"> <el-col
:lg="item.width"
:style="{ height: item.type === 'upload' ? '116px' : '53px' }"
>
<div <div
v-if="showIndex || (configForms && configForms.showIndex)||item.showIndex" v-if="
showIndex || (configForms && configForms.showIndex) || item.showIndex
"
:class="['formIndex', item.labelSuffix == '5' ? 'computeIndex' : '']" :class="['formIndex', item.labelSuffix == '5' ? 'computeIndex' : '']"
>{{ item.labelSuffix || columnIndex + 1 }}</div> >
{{ item.labelSuffix || columnIndex + 1 }}
</div>
<!-- <el-form-item <!-- <el-form-item
:label=" :label="
!hiddenLabel && item.label !hiddenLabel && item.label
...@@ -33,8 +40,12 @@ ...@@ -33,8 +40,12 @@
<el-upload-self <el-upload-self
v-if="item.type === 'upload'" v-if="item.type === 'upload'"
v-model="form[item.prop]" v-model="form[item.prop]"
:btn-type="'text'"
v-bind="item" v-bind="item"
:list-type="item.listType"
:upload-query="{ formId, patientId, prefix: item.prop }" :upload-query="{ formId, patientId, prefix: item.prop }"
:accept="item.accept"
:limit="item.limit"
:disabled="item.disabled" :disabled="item.disabled"
></el-upload-self> ></el-upload-self>
<!-- 表单改文本 --> <!-- 表单改文本 -->
...@@ -70,9 +81,14 @@ ...@@ -70,9 +81,14 @@
slot="append" slot="append"
class="toothBit" class="toothBit"
@click="openToothBit" @click="openToothBit"
>{{ item.append || "牙位" }}</el-button> >{{ item.append || "牙位" }}</el-button
<template v-else-if="item.append" slot="append">{{ item.append }}</template> >
<template v-if="item.prepend" slot="prepend">{{ item.prepend }}</template> <template v-else-if="item.append" slot="append">{{
item.append
}}</template>
<template v-if="item.prepend" slot="prepend">{{
item.prepend
}}</template>
</el-input> </el-input>
<!-- 密码框 --> <!-- 密码框 -->
...@@ -95,8 +111,12 @@ ...@@ -95,8 +111,12 @@
" "
@blur="handleBlur" @blur="handleBlur"
> >
<template v-if="item.append" slot="append">{{ item.append }}</template> <template v-if="item.append" slot="append">{{
<template v-if="item.prepend" slot="prepend">{{ item.prepend }}</template> item.append
}}</template>
<template v-if="item.prepend" slot="prepend">{{
item.prepend
}}</template>
</el-input> </el-input>
<!-- 文本域 --> <!-- 文本域 -->
...@@ -142,7 +162,8 @@ ...@@ -142,7 +162,8 @@
v-if="item.append" v-if="item.append"
class="el-input-group__append" class="el-input-group__append"
style="line-height: 28px" style="line-height: 28px"
>{{ item.append }}</span> >{{ item.append }}</span
>
</div> </div>
<!-- 单选框 --> <!-- 单选框 -->
...@@ -156,7 +177,8 @@ ...@@ -156,7 +177,8 @@
v-for="(opt, optIndex) in item.dicData" v-for="(opt, optIndex) in item.dicData"
:key="optIndex" :key="optIndex"
:label="opt.value" :label="opt.value"
>{{ opt.label }}</el-radio> >{{ opt.label }}</el-radio
>
</el-radio-group> </el-radio-group>
<!-- 多选框 --> <!-- 多选框 -->
...@@ -170,7 +192,8 @@ ...@@ -170,7 +192,8 @@
v-for="(opt, optIndex) in item.dicData" v-for="(opt, optIndex) in item.dicData"
:key="optIndex" :key="optIndex"
:label="opt.value" :label="opt.value"
>{{ opt.label }}</el-checkbox> >{{ opt.label }}</el-checkbox
>
</el-checkbox-group> </el-checkbox-group>
</template> </template>
...@@ -342,7 +365,8 @@ ...@@ -342,7 +365,8 @@
<span <span
v-if="item.importantField && !getVwForm.detail" v-if="item.importantField && !getVwForm.detail"
class="important_field" class="important_field"
>{{ item.importantFieldDesc || "*" }}</span> >{{ item.importantFieldDesc || "*" }}</span
>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -621,7 +645,7 @@ export default { ...@@ -621,7 +645,7 @@ export default {
const values = dyMap[key] const values = dyMap[key]
let display = false let display = false
if (Array.isArray(val)) { if (Array.isArray(val)) {
// 胃癌和进展性胃癌单独控制 // 胃癌和进展性胃癌控制显隐+自定义规则
if ( if (
prop == "early_gastric_cancer" || prop == "early_gastric_cancer" ||
prop == "period_gastric_cancer" prop == "period_gastric_cancer"
...@@ -639,7 +663,6 @@ export default { ...@@ -639,7 +663,6 @@ export default {
: (flag = false) : (flag = false)
} }
} }
console.log(targetItem)
display = flag display = flag
if (display) { if (display) {
targetItem.rules[0] = { targetItem.rules[0] = {
...@@ -657,7 +680,6 @@ export default { ...@@ -657,7 +680,6 @@ export default {
} else { } else {
display = values.includes(val) display = values.includes(val)
} }
if (!display && targetItem) { if (!display && targetItem) {
// 清空数据 // 清空数据
const newVal = Array.isArray(this.form[targetItem.prop]) const newVal = Array.isArray(this.form[targetItem.prop])
...@@ -667,13 +689,33 @@ export default { ...@@ -667,13 +689,33 @@ export default {
: "" : ""
this.$set(this.form, targetItem.prop, newVal) this.$set(this.form, targetItem.prop, newVal)
} }
if (this.type === "form") { if (this.type === "form") {
// 动态表格、表单处理 // 动态表格、表单处理
setTimeout(() => { setTimeout(() => {
this.$set(this.form, "$_hidden" + targetItem.prop, !display) this.$set(this.form, "$_hidden" + targetItem.prop, !display)
}, 200) }, 200)
} else { } else {
// 家族史动态规则
if (
(prop == "is_first_degree" || prop == "is_other_sickness") &&
Boolean(display)
) {
targetItem.rules = [
{
required: true,
message: "请输入" + targetItem.label,
},
]
} else if (
prop == "is_first_degree" ||
prop == "is_other_sickness"
) {
this.$nextTick(() => {
targetItem.rules = []
})
}
// 内镜报告动态上传
if (prop == "check_type" && Boolean(display)) { if (prop == "check_type" && Boolean(display)) {
targetItem.rules[0] = { targetItem.rules[0] = {
required: true, required: true,
...@@ -682,6 +724,7 @@ export default { ...@@ -682,6 +724,7 @@ export default {
} else if (prop == "check_type") { } else if (prop == "check_type") {
targetItem.rules = [] targetItem.rules = []
} }
this.$set(targetItem, "display", Boolean(display)) this.$set(targetItem, "display", Boolean(display))
} }
}) })
......
...@@ -212,12 +212,14 @@ export default { ...@@ -212,12 +212,14 @@ export default {
} }
}, },
nextTab() { nextTab() {
this.initforms()
const tabsLen = this.options.group.length const tabsLen = this.options.group.length
let active = Number(this.activeName) let active = Number(this.activeName)
let next = ++active let next = ++active
if (next >= tabsLen) next = 0 if (next >= tabsLen) next = 0
this.activeName = String(next) this.activeName = String(next)
this.$emit("scrollTop") this.$emit("scrollTop")
console.log(this.activeName)
}, },
imFieldChange(val = false) { imFieldChange(val = false) {
......
formJson = {
column: [],
labelPosition: "right",
labelSuffix: "",
labelWidth: 180,
gutter: 0,
menuBtn: true,
submitBtn: true,
submitText: "下一步",
emptyBtn: false,
emptyText: "清空",
nextTabBtn: true,
nextTabText: "下一页",
menuPosition: "center",
prevBtn: true,
group: [
{
label: "实验室检查",
prop: "1669789802778_28648",
arrow: true,
collapse: true,
display: true,
labelWidth: 8,
column: [
{
type: "input",
display: true,
importantField: false,
styles: {},
prop: "G_17",
label: "胃泌素17",
fieldType: "varchar",
fieldLength: "255",
tableName: "实验室检查",
tableCode: "gas_exam",
tableId: "1597466741234040833",
notFilter: false,
cType: "",
subfield: false,
autoRequired: 0,
personalRequired: 0,
required: true,
rules: [{ required: true, message: "胃泌素17必须填写" }],
},
{
type: "input",
display: true,
importantField: false,
styles: {},
prop: "PG_I",
label: "胃蛋白酶原I(PG I)",
fieldType: "varchar",
fieldLength: "255",
tableName: "实验室检查",
tableCode: "gas_exam",
tableId: "1597466741234040833",
notFilter: false,
cType: "",
subfield: false,
rules: [{ required: true, message: "胃蛋白酶原I(PG I)必须填写" }],
required: true,
},
{
type: "input",
display: true,
importantField: false,
styles: {},
prop: "PG_II",
label: "胃蛋白酶原II(PG II)",
fieldType: "varchar",
fieldLength: "255",
tableName: "实验室检查",
tableCode: "gas_exam",
tableId: "1597466741234040833",
notFilter: false,
cType: "",
subfield: false,
rules: [{ required: true, message: "胃蛋白酶原II(PG II)必须填写" }],
required: true,
},
{
type: "radio",
display: true,
importantField: false,
styles: {},
prop: "IgG",
label: "Hp抗体(IgG)检测",
fieldType: "varchar",
fieldLength: "255",
tableName: "实验室检查",
tableCode: "gas_exam",
tableId: "1597466741234040833",
notFilter: false,
cType: "",
subfield: false,
dicData: [
{
label: "阳性",
value: "2",
id: "1598150992287858689",
parentId: "",
},
{
label: "阴性",
value: "1",
id: "1598150963816923138",
parentId: "",
},
],
dynamicshSet: [],
dicType: "hp_antibody",
props: { label: "label", value: "value" },
disabled: false,
required: true,
rules: [{ required: true, message: "请选择Hp抗体(IgG)检测" }],
},
{
type: "upload",
disabled: false,
span: 24,
display: true,
styles: { fontSize: "18px", color: "#000" },
value: "标题",
prop: "1670203661414_80603",
cType: "",
subfield: false,
autoRequired: 0,
personalRequired: 0,
showFileList: true,
multiple: false,
bucketName: "pacs",
limit: 1,
importantField: false,
dicType: "",
label: "图片上传",
listType: "picture",
loadText: "上传中...",
accept: "image/*",
required: true,
rules: [{ required: true, message: "图片上传必须填写" }],
},
],
},
],
}
<template> <template>
<el-row class="el-upload-self"> <el-row class="el-upload-self">
<el-upload <el-upload
ref="upload"
:multiple="multiple" :multiple="multiple"
:class="[ class="avatar-uploader"
'avatar-uploader', ref="upload"
value.length > 0 ? 'textUpload' : '',
accept == 'application/pdf' ? 'pdfUpload' : '',
]"
:action="action" :action="action"
:headers="headers" :headers="headers"
:list-type="listType" :list-type="listType"
...@@ -15,7 +11,6 @@ ...@@ -15,7 +11,6 @@
:on-remove="handleRemove" :on-remove="handleRemove"
:on-success="handleSuccess" :on-success="handleSuccess"
:on-exceed="handleExceed" :on-exceed="handleExceed"
:on-change="handleSelectFile"
:before-upload="beforeUpload" :before-upload="beforeUpload"
:before-remove="beforeRemove" :before-remove="beforeRemove"
:file-list="fileList" :file-list="fileList"
...@@ -29,58 +24,23 @@ ...@@ -29,58 +24,23 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</template> </template>
<template v-else-if="value.length"> <template v-else-if="listType === 'picture-card'">
<el-button size="middle" type="text">点击更换</el-button> <i class="el-icon-plus"></i>
</template>
<template v-else-if="listType === 'picture-card' && !value.length">
<el-button size="middle" type="text">点击上传</el-button>
</template> </template>
<template v-else> <template v-else>
<!-- <el-button size="middle" :type="btnType">点击上传</el-button> --> <!-- <el-button size="middle" :type="btnType">点击上传</el-button> -->
<!-- <img v-if="imageUrl" :src="imageUrl" class="avatar" /> --> <!-- <img v-if="imageUrl" :src="imageUrl" class="avatar" /> -->
<el-button size="middle" type="text">点击上传</el-button> <i class="el-icon-plus avatar-uploader-icon"></i>
</template> </template>
<div slot="file" slot-scope="{ file }"> <div slot="tip" class="el-upload__tip">{{ tip }}</div>
<img
v-if="accept == 'image/*'"
class="el-upload-list__item-thumbnail"
:src="file.url"
alt=""
/>
<span v-if="accept == 'image/*'" class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePreview(file)"
>
<i class="el-icon-download"></i>
</span>
</span>
<el-tooltip
class="item"
effect="dark"
:content="file.name"
placement="top"
>
<div
v-if="accept != 'image/*'"
style="cursor: pointer"
class="fileNameText"
@click="handlePreview(file)"
>
{{ file.name }}
</div>
</el-tooltip>
</div>
<!-- <div slot="tip" class="el-upload__tip">{{ tip }}</div> -->
</el-upload> </el-upload>
<el-image <el-image
ref="image"
style="display: none" style="display: none"
:src="imgUrl" :src="imgUrl"
:preview-src-list="previewList" :preview-src-list="previewList"
ref="image"
> >
</el-image> </el-image>
</el-row> </el-row>
...@@ -90,7 +50,7 @@ ...@@ -90,7 +50,7 @@
import { getAccessToken } from "@/utils/accessToken" import { getAccessToken } from "@/utils/accessToken"
import { delFile } from "@/api/file" import { delFile } from "@/api/file"
export default { export default {
name: "ElUploadSelf", name: "el-upload-self",
props: { props: {
accept: { type: String, default: "image/*" }, accept: { type: String, default: "image/*" },
disabled: { disabled: {
...@@ -124,10 +84,7 @@ export default { ...@@ -124,10 +84,7 @@ export default {
type: String, type: String,
default: "primary", default: "primary",
}, },
value: { value: Array, //上传文件数组 绑定数组
type: Array,
default: () => [],
}, //上传文件数组 绑定数组
}, },
data() { data() {
return { return {
...@@ -140,6 +97,20 @@ export default { ...@@ -140,6 +97,20 @@ export default {
fileList: [], fileList: [],
} }
}, },
watch: {
value: {
handler(newValue, oldValue) {
if (newValue === oldValue) return
this.fileList = newValue.map((_) => {
return {
name: _.file_name,
url: `https://ds.cixincloud.com/geca-api/disease-data/file/info/${_.bucketName}/${_.uuidName}`,
}
})
},
immediate: true,
},
},
computed: { computed: {
headers() { headers() {
return { return {
...@@ -151,8 +122,7 @@ export default { ...@@ -151,8 +122,7 @@ export default {
}, },
// 预览list // 预览list
previewList() { previewList() {
console.log(this.value) if (!this.value) return []
if (!this.value.length || this.accept != "image/*") return []
return this.value.map((_) => { return this.value.map((_) => {
return ( return (
_.url || _.url ||
...@@ -161,27 +131,7 @@ export default { ...@@ -161,27 +131,7 @@ export default {
}) })
}, },
}, },
watch: {
value: {
handler(newValue, oldValue) {
if (newValue === oldValue) return
this.fileList = newValue.map((_) => {
return {
name: _.fileName,
url: `https://ds.cixincloud.com/geca-api/disease-data/file/info/${_.bucketName}/${_.uuidName}`,
}
})
},
immediate: true,
},
},
methods: { methods: {
handleSelectFile(file, fileList) {
if (fileList.length > 1) {
this.value.shift()
fileList.shift()
}
},
// 上传前回调 // 上传前回调
beforeUpload(file) { beforeUpload(file) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
...@@ -193,18 +143,17 @@ export default { ...@@ -193,18 +143,17 @@ export default {
resolve() resolve()
}) })
}, },
// 超出限制 // 超出限制
handleExceed(files, fileList) { handleExceed(files, fileList) {
this.$message.error(`最多可上传${this.limit}个文件!`) this.$message.error(`最多可上传${this.limit}个文件!`)
}, },
// 上传成功 // 上传成功
handleSuccess(res, file, fileList) { handleSuccess(res, file, fileList) {
const { data } = res const { data } = res
if (data) { if (data) {
this.value.push({ ...data, url: file.url }) this.value.push({ ...data, url: file.url })
// 上传成功
this.$emit("input", this.value)
this.$emit("fileSuccess")
} else { } else {
this.$message.warning(res.msg) this.$message.warning(res.msg)
this.$refs.upload.clearFiles() this.$refs.upload.clearFiles()
...@@ -218,13 +167,8 @@ export default { ...@@ -218,13 +167,8 @@ export default {
// 移除 // 移除
handleRemove({ url }, fileList) { handleRemove({ url }, fileList) {
if (fileList.length > 1) { const i = this.value.findIndex((_) => url.endsWith(_.uuid_name))
fileList.shift() if (i > -1) this.value.splice(i, 1) // 静态移除
}
this.value = []
this.$emit("input", this.value)
// const i = this.value.findIndex((_) => url.endsWith(_.uuid_name))
// if (i > -1) this.value.splice(i, 1) // 静态移除
}, },
// 查看 // 查看
...@@ -276,57 +220,33 @@ export default { ...@@ -276,57 +220,33 @@ export default {
.el-upload-self { .el-upload-self {
font-size: 14px; font-size: 14px;
} }
::v-deep .avatar-uploader { .avatar-uploader {
display: flex; display: flex;
align-items: center; align-items: center;
.el-upload--picture-card {
height: 20px;
transform: translateY(-4px);
}
}
::v-deep .pdfUpload {
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
.el-upload--text {
height: 20px;
transform: translateY(-4px);
}
.el-upload-list__item {
transform: translateY(-6px);
// width: 158px;
height: 20px;
}
} }
::v-deep .avatar-uploader .el-upload { ::v-deep .avatar-uploader .el-upload {
border: none; border: 1px solid #d9d9d9;
width: 80px; border-radius: 6px;
height: 30px; cursor: pointer;
line-height: 0px; position: relative;
} overflow: hidden;
::v-deep .textUpload {
align-items: flex-start;
.el-upload {
border: none;
width: 80px;
height: 30px;
line-height: 0px;
}
.el-upload--text {
height: 20px;
transform: translateY(-4px);
}
} }
::v-deep .avatar-uploader .el-upload:hover { ::v-deep .avatar-uploader .el-upload:hover {
border-color: #409eff; border-color: #409eff;
} }
::v-deep .el-upload-list {
display: flex;
align-items: center;
transform: translateY(4px);
}
::v-deep .el-upload--picture-card {
width: 88px;
height: 88px;
line-height: 88px;
}
::v-deep .el-upload-list__item { ::v-deep .el-upload-list__item {
width: 88px; width: 88px;
height: 88px; height: 88px;
&:hover {
background-color: #fff;
}
} }
.avatar-uploader-icon { .avatar-uploader-icon {
font-size: 28px; font-size: 28px;
...@@ -341,16 +261,4 @@ export default { ...@@ -341,16 +261,4 @@ export default {
height: 88px; height: 88px;
display: block; display: block;
} }
.fileNameText {
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// ::v-deep .el-upload--picture-card {
// width: none;
// height: none;
// line-height: 0px;
// border: none;
// }
</style> </style>
<template>
<el-row class="el-upload-self">
<el-upload
ref="upload"
:multiple="multiple"
:class="[
'avatar-uploader',
value.length > 0 ? 'textUpload' : '',
accept == 'application/pdf' ? 'pdfUpload' : '',
]"
:action="action"
:headers="headers"
:list-type="listType"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-success="handleSuccess"
:on-exceed="handleExceed"
:on-change="handleSelectFile"
:before-upload="beforeUpload"
:before-remove="beforeRemove"
:file-list="fileList"
:show-file-list="showFileList"
:accept="accept"
:limit="limit"
:drag="drag"
:disabled="disabled"
>
<template v-if="drag">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</template>
<template v-else-if="value.length">
<el-button size="middle" type="text">点击更换</el-button>
</template>
<template v-else-if="listType === 'picture-card' && !value.length">
<el-button size="middle" type="text">点击上传</el-button>
</template>
<template v-else>
<!-- <el-button size="middle" :type="btnType">点击上传</el-button> -->
<!-- <img v-if="imageUrl" :src="imageUrl" class="avatar" /> -->
<el-button size="middle" type="text">点击上传</el-button>
</template>
<div slot="file" slot-scope="{ file }">
<img
v-if="accept == 'image/*'"
class="el-upload-list__item-thumbnail"
:src="file.url"
alt=""
/>
<span v-if="accept == 'image/*'" class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePreview(file)"
>
<i class="el-icon-download"></i>
</span>
</span>
<el-tooltip
class="item"
effect="dark"
:content="file.name"
placement="top"
>
<div
v-if="accept != 'image/*'"
style="cursor: pointer"
class="fileNameText"
@click="handlePreview(file)"
>
{{ file.name }}
</div>
</el-tooltip>
</div>
<!-- <div slot="tip" class="el-upload__tip">{{ tip }}</div> -->
</el-upload>
<el-image
ref="image"
style="display: none"
:src="imgUrl"
:preview-src-list="previewList"
>
</el-image>
</el-row>
</template>
<script>
import { getAccessToken } from "@/utils/accessToken"
import { delFile } from "@/api/file"
export default {
name: "ElUploadSelf",
props: {
accept: { type: String, default: "image/*" },
disabled: {
type: Boolean,
default: false,
},
uploadQuery: {
type: Object,
default: () => {
return {}
},
}, //后端上传文件路径(参数)
listType: String,
tip: String,
multiple: Boolean,
limit: {
type: Number,
default: 9,
},
fileSize: Number,
loadText: String,
showFileList: {
type: Boolean,
default: true,
},
drag: {
type: Boolean,
default: false,
},
btnType: {
type: String,
default: "primary",
},
value: {
type: Array,
default: () => [],
}, //上传文件数组 绑定数组
},
data() {
return {
imgUrl: "",
title: "",
httpPrefix:
process.env.NODE_ENV === "development"
? "/api"
: process.env.VUE_APP_BASE_API,
fileList: [],
}
},
computed: {
headers() {
return {
Authorization: `Bearer ${getAccessToken()}`,
}
},
action() {
return this.httpPrefix + `/cloud-upms/file/upload`
},
// 预览list
previewList() {
console.log(this.value)
if (!this.value.length || this.accept != "image/*") return []
return this.value.map((_) => {
return (
_.url ||
`https://ds.cixincloud.com/geca-api/disease-data/file/info/${_.bucketName}/${_.uuidName}`
)
})
},
},
watch: {
value: {
handler(newValue, oldValue) {
if (newValue === oldValue) return
this.fileList = newValue.map((_) => {
return {
name: _.fileName,
url: `https://ds.cixincloud.com/geca-api/disease-data/file/info/${_.bucketName}/${_.uuidName}`,
}
})
},
immediate: true,
},
},
methods: {
handleSelectFile(file, fileList) {
if (fileList.length > 1) {
this.value.shift()
fileList.shift()
}
},
// 上传前回调
beforeUpload(file) {
return new Promise((resolve, reject) => {
const size = this.fileSize
if (size && file.size > size) {
this.$message.error("大小超出限制" + this.tip)
reject()
}
resolve()
})
},
// 超出限制
handleExceed(files, fileList) {
this.$message.error(`最多可上传${this.limit}个文件!`)
},
// 上传成功
handleSuccess(res, file, fileList) {
const { data } = res
if (data) {
this.value.push({ ...data, url: file.url })
// 上传成功
this.$emit("input", this.value)
this.$emit("fileSuccess")
} else {
this.$message.warning(res.msg)
this.$refs.upload.clearFiles()
}
},
// 移除提醒
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.file_name || file.name}?`)
},
// 移除
handleRemove({ url }, fileList) {
if (fileList.length > 1) {
fileList.shift()
}
this.value = []
this.$emit("input", this.value)
// const i = this.value.findIndex((_) => url.endsWith(_.uuid_name))
// if (i > -1) this.value.splice(i, 1) // 静态移除
},
// 查看
handlePreview(file) {
const name = file.fileName || file.name
this.title = name
let responseUrl
if (file.response) {
const _ = file.response.data
responseUrl = `https://ds.cixincloud.com/geca-api/disease-data/file/info/${_.bucketName}/${_.uuidName}`
}
try {
if (name.match(/\.(png|jpg|jpeg)/)) {
this.imgUrl = file.url || responseUrl
this.$refs.image.clickHandler()
} else {
const elink = document.createElement("a")
elink.download = name
elink.style.display = "none"
elink.href = file.url || responseUrl
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
}
} catch {
const elink = document.createElement("a")
elink.download = name
elink.style.display = "none"
elink.href = file.url || responseUrl
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
}
},
},
}
</script>
<style lang="scss">
.el-upload-self {
.el-upload {
position: relative;
}
}
</style>
<style lang="scss" scoped>
.el-upload-self {
font-size: 14px;
}
::v-deep .avatar-uploader {
display: flex;
align-items: center;
.el-upload--picture-card {
height: 20px;
transform: translateY(-4px);
}
}
::v-deep .pdfUpload {
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
.el-upload--text {
height: 20px;
transform: translateY(-4px);
}
.el-upload-list__item {
transform: translateY(-6px);
// width: 158px;
height: 20px;
}
}
::v-deep .avatar-uploader .el-upload {
border: none;
width: 80px;
height: 30px;
line-height: 0px;
}
::v-deep .textUpload {
align-items: flex-start;
.el-upload {
border: none;
width: 80px;
height: 30px;
line-height: 0px;
}
.el-upload--text {
height: 20px;
transform: translateY(-4px);
}
}
::v-deep .avatar-uploader .el-upload:hover {
border-color: #409eff;
}
::v-deep .el-upload-list__item {
width: 88px;
height: 88px;
&:hover {
background-color: #fff;
}
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 88px;
height: 88px;
line-height: 88px;
text-align: center;
}
.avatar {
width: 88px;
height: 88px;
display: block;
}
.fileNameText {
width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// ::v-deep .el-upload--picture-card {
// width: none;
// height: none;
// line-height: 0px;
// border: none;
// }
</style>
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
<script> <script>
import CustomsTable from "@/components/CustomsTable" import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import { getPatientPage } from "@/api/dataoverview.js"
export default { export default {
// 数据概览 // 数据概览
name: "", name: "",
...@@ -44,70 +45,81 @@ export default { ...@@ -44,70 +45,81 @@ export default {
{ {
label: "医联体", label: "医联体",
minWidth: 120, minWidth: 120,
value: "name", value: "unionName",
}, },
{ {
label: "累计上报量", label: "累计上报量",
minWidth: 120, minWidth: 120,
value: "1", value: "report",
}, },
{ {
label: "最近一季度上报量", label: "最近一季度上报量",
minWidth: 120, minWidth: 120,
value: "2", value: "lastQuarter",
}, },
{ {
label: "累计审核合格量", label: "累计审核合格量",
minWidth: 120, minWidth: 120,
value: "3", value: "pass",
}, },
{ {
label: "高风险", label: "高风险",
minWidth: 120, minWidth: 120,
value: "4", value: "high",
}, },
{ {
label: "中风险", label: "中风险",
minWidth: 120, minWidth: 120,
value: "5", value: "middle",
}, },
{ {
label: "低风险", label: "低风险",
minWidth: 120, minWidth: 120,
value: "6", value: "low",
}, },
{ {
label: "胃癌", label: "胃癌",
minWidth: 120, minWidth: 120,
value: "7", value: "gas",
}, },
{ {
label: "早期胃癌", label: "早期胃癌",
minWidth: 120, minWidth: 120,
value: "8", value: "earlyGas",
}, },
{ {
label: "食道癌", label: "食道癌",
minWidth: 120, minWidth: 120,
value: "9", value: "esophagus",
},
],
tableData: [
{
name: "1",
1: 2,
}, },
], ],
tableData: [],
} }
}, },
watch: {}, watch: {},
mounted() {}, mounted() {
this.getPatientPage()
},
methods: { methods: {
setSelectedIndex(i) { setSelectedIndex(i) {
console.log(this.selectedIndex) console.log(this.selectedIndex)
this.selectedIndex = i this.selectedIndex = i
this.getPatientPage()
sessionStorage.setItem("homeSelectedIndex", this.selectedIndex) sessionStorage.setItem("homeSelectedIndex", this.selectedIndex)
}, },
getPatientPage() {
this.listLoading = true
let data = { patientFrom: this.selectedIndex - 0 + 1 }
getPatientPage(data).then((res) => {
this.listLoading = false
if (res.code === 1) {
const d = res.data
this.tableData = d.records || []
this.total = Number(d.total)
}
this.listLoading = false
})
},
}, },
} }
</script> </script>
......
<template> <template>
<div id="publicContent" :class="activeName == 'index0' && formClass ? formClass : ''"> <div
id="publicContent"
:class="activeName == 'index0' && formClass ? formClass : ''"
>
<div v-if="formTabs && formTabs.length > 0"> <div v-if="formTabs && formTabs.length > 0">
<el-button <el-button
class="draftButton" class="draftButton"
@click="onSubmit(formType)" @click="onSubmit(formType)"
:loading="loading" :loading="loading"
>{{ formType == 1 ? "临时保存" : "返回" }}</el-button> >{{ formType == 1 ? "临时保存" : "返回" }}</el-button
>
<el-tabs <el-tabs
v-model="activeName" v-model="activeName"
type="card" type="card"
...@@ -32,6 +36,7 @@ ...@@ -32,6 +36,7 @@
@setFormJson="setFormJson" @setFormJson="setFormJson"
@handleConfirm="handleConfirm" @handleConfirm="handleConfirm"
@onPrev="onPrev" @onPrev="onPrev"
:formInitial="formInitial"
:survivalFlag="survivalFlag" :survivalFlag="survivalFlag"
></form-tab> ></form-tab>
</template> </template>
...@@ -41,7 +46,11 @@ ...@@ -41,7 +46,11 @@
</el-tabs> </el-tabs>
</div> </div>
<el-empty v-else description="暂无数据"></el-empty> <el-empty v-else description="暂无数据"></el-empty>
<public-dialog ref="showDialog" @onSubmit="dialogSubmit" @onCancel="dialogCancel"> <public-dialog
ref="showDialog"
@onSubmit="dialogSubmit"
@onCancel="dialogCancel"
>
<!-- 保存草稿 --> <!-- 保存草稿 -->
<template v-if="dialogType == 'draft'" slot="content"> <template v-if="dialogType == 'draft'" slot="content">
<div class="title center">已保存至草稿箱!</div> <div class="title center">已保存至草稿箱!</div>
...@@ -52,7 +61,9 @@ ...@@ -52,7 +61,9 @@
<div class="showTips">您可以在【草稿箱】页面找到该数据</div> <div class="showTips">您可以在【草稿箱】页面找到该数据</div>
</div> </div>
<div class="btn"> <div class="btn">
<el-button type="primary" :loading="loading" @click="continueSubmit">继续添加</el-button> <el-button type="primary" :loading="loading" @click="continueSubmit"
>继续添加</el-button
>
</div> </div>
</template> </template>
<!-- 保存提交 --> <!-- 保存提交 -->
...@@ -65,8 +76,16 @@ ...@@ -65,8 +76,16 @@
<div class="showTips">您可以在【筛查查询】页面查询到该数据</div> <div class="showTips">您可以在【筛查查询】页面查询到该数据</div>
</div> </div>
<div class="btn"> <div class="btn">
<el-button type="primary" :loading="loading" @click="view" class="textBtn">查看</el-button> <el-button
<el-button type="primary" :loading="loading" @click="continueSubmit">继续添加</el-button> type="primary"
:loading="loading"
@click="view"
class="textBtn"
>查看</el-button
>
<el-button type="primary" :loading="loading" @click="continueSubmit"
>继续添加</el-button
>
</div> </div>
</template> </template>
</public-dialog> </public-dialog>
...@@ -94,6 +113,7 @@ export default { ...@@ -94,6 +113,7 @@ export default {
// survivalFlag:false // survivalFlag:false
dialogType: "", dialogType: "",
loading: false, loading: false,
formInitial: {}, // 第四步的数据
} }
}, },
methods: { methods: {
...@@ -126,18 +146,33 @@ export default { ...@@ -126,18 +146,33 @@ export default {
this.getCurrentFormByType(this.formType) this.getCurrentFormByType(this.formType)
}, },
watch: { watch: {
// activeName(val){ activeName(val) {
// if(val=="index0" && this.formClass){ if (val == "index3") {
// this.showIndex = false // setTimeout(() => {
// // this.survivalFlag = true this.$nextTick(() => {
// console.log(1) //!
// } this.formInitial = {
// else{ risk_rank: "中危",
// this.showIndex = true risk_score: "5分",
// // this.survivalFlag = false screening_advise: "立刻住院",
// console.log(2) }
// } })
// }
// }, 300)
} else {
this.formInitial = {}
}
// if(val=="index0" && this.formClass){
// this.showIndex = false
// // this.survivalFlag = true
// console.log(1)
// }
// else{
// this.showIndex = true
// // this.survivalFlag = false
// console.log(2)
// }
},
}, },
computed: { computed: {
survivalFlag() { survivalFlag() {
......
...@@ -14,11 +14,11 @@ ...@@ -14,11 +14,11 @@
<el-row v-if="form.fillType === 1"> <el-row v-if="form.fillType === 1">
<tags-scroll-bar <tags-scroll-bar
v-if="repeatedlyList.length > 0" v-if="repeatedlyList.length > 0"
ref="tags"
:tags-list="repeatedlyList" :tags-list="repeatedlyList"
:props="{ label: 'time' }" :props="{ label: 'time' }"
ref="tags"
@change="changeRepeate"
:disabled="disabled" :disabled="disabled"
@change="changeRepeate"
@add="handleAdd" @add="handleAdd"
></tags-scroll-bar> ></tags-scroll-bar>
</el-row> </el-row>
...@@ -42,7 +42,11 @@ ...@@ -42,7 +42,11 @@
</el-switch>--> </el-switch>-->
</div> </div>
</el-row> </el-row>
<div class="my-form" ref="my-form" :class="externalScroll ? 'no-scroll' : ''"> <div
ref="my-form"
class="my-form"
:class="externalScroll ? 'no-scroll' : ''"
>
<!-- <read-form <!-- <read-form
ref="form" ref="form"
:options="survivalForm" :options="survivalForm"
...@@ -50,20 +54,20 @@ ...@@ -50,20 +54,20 @@
></read-form>--> ></read-form>-->
<custom-form <custom-form
ref="form" ref="form"
@scrollTop="scrollTop"
:options="widgetFormPreview" :options="widgetFormPreview"
:form-edit="formData.formEdit"
@scrollTop="scrollTop"
@handleConfirm="handleConfirm" @handleConfirm="handleConfirm"
@onPrev="onPrev" @onPrev="onPrev"
:form-edit="formData.formEdit"
></custom-form> ></custom-form>
</div> </div>
</template> </template>
</el-main> </el-main>
<el-aside <el-aside
v-if="contrast"
:width="sideWidth" :width="sideWidth"
class="transition-box" class="transition-box"
:class="{ hidden: !asideShow }" :class="{ hidden: !asideShow }"
v-if="contrast"
> >
<div class="side-content"></div> <div class="side-content"></div>
</el-aside> </el-aside>
...@@ -77,6 +81,7 @@ import ReadForm from "@/components/FormComponents/ReadForm/index" ...@@ -77,6 +81,7 @@ import ReadForm from "@/components/FormComponents/ReadForm/index"
import TagsScrollBar from "@/components/TagsScrollBar/index" import TagsScrollBar from "@/components/TagsScrollBar/index"
export default { export default {
name: "FormTab", name: "FormTab",
components: { CustomForm, TagsScrollBar, ReadForm },
props: { props: {
externalScroll: Boolean, //外部滚动 externalScroll: Boolean, //外部滚动
disabled: Boolean, disabled: Boolean,
...@@ -86,8 +91,8 @@ export default { ...@@ -86,8 +91,8 @@ export default {
patientStandbyId: String, patientStandbyId: String,
getAll: Boolean, // 获取页面所有数据 getAll: Boolean, // 获取页面所有数据
survivalFlag: Boolean, //存活的显示 survivalFlag: Boolean, //存活的显示
formInitial: {}, // 第四步的数据
}, },
components: { CustomForm, TagsScrollBar, ReadForm },
provide() { provide() {
return { return {
formId: this.form.formId, formId: this.form.formId,
...@@ -104,9 +109,9 @@ export default { ...@@ -104,9 +109,9 @@ export default {
widgetFormPreview: {}, widgetFormPreview: {},
formData: { formData: {
formEdit: { formEdit: {
risk_rank: "中危", // risk_rank: "中危",
risk_score: "5分", // risk_score: "5分",
screening_advise: "立刻住院", // screening_advise: "立刻住院",
}, },
percent: {}, percent: {},
formRecordId: null, formRecordId: null,
...@@ -356,6 +361,39 @@ export default { ...@@ -356,6 +361,39 @@ export default {
return this.loading || this.formloading return this.loading || this.formloading
}, },
}, },
watch: {
formInitial: {
handler(v) {
if (v) {
this.$set(this.formData, "formEdit", { ...v })
console.log(this.formData.formEdit)
}
},
deep: true,
},
},
created() {
this.initForm()
if (this.getAll) {
// 监听patientId 获取页面所有数据
this.$watch(
"patientId",
() => {
this.initData()
},
{ immediate: true }
)
} else {
// 监听form.silent 获取当前tab页数据
this.$watch(
"form.silent",
() => {
this.initData()
},
{ immediate: true }
)
}
},
methods: { methods: {
initData() { initData() {
this.formData.formRecordId = null this.formData.formRecordId = null
...@@ -517,28 +555,6 @@ export default { ...@@ -517,28 +555,6 @@ export default {
}) })
}, },
}, },
created() {
this.initForm()
if (this.getAll) {
// 监听patientId 获取页面所有数据
this.$watch(
"patientId",
() => {
this.initData()
},
{ immediate: true }
)
} else {
// 监听form.silent 获取当前tab页数据
this.$watch(
"form.silent",
() => {
this.initData()
},
{ immediate: true }
)
}
},
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
<script> <script>
import CustomsTable from "@/components/CustomsTable" import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import ElUploadSelf from "@/components/Upload" import ElUploadSelf from "@/components/UploadForOperation"
import mixin from "./mixin" import mixin from "./mixin"
import { articleList } from "@/api/operation-management" import { articleList } from "@/api/operation-management"
export default { export default {
......
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
<script> <script>
import CustomsTable from "@/components/CustomsTable" import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import ElUploadSelf from "@/components/Upload" import ElUploadSelf from "@/components/UploadForOperation"
import mixin from "./mixin" import mixin from "./mixin"
import { articleList } from "@/api/operation-management" import { articleList } from "@/api/operation-management"
export default { export default {
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
<script> <script>
import CustomsTable from "@/components/CustomsTable" import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import ElUploadSelf from "@/components/Upload" import ElUploadSelf from "@/components/UploadForOperation"
import mixin from "./mixin" import mixin from "./mixin"
import { articleList } from "@/api/operation-management" import { articleList } from "@/api/operation-management"
export default { export default {
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
<script> <script>
import CustomsTable from "@/components/CustomsTable" import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import ElUploadSelf from "@/components/Upload" import ElUploadSelf from "@/components/UploadForOperation"
import mixin from "./mixin" import mixin from "./mixin"
import { articleList } from "@/api/operation-management" import { articleList } from "@/api/operation-management"
export default { export default {
......
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
<script> <script>
import CustomsTable from "@/components/CustomsTable" import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin" import paginationMixin from "@/components/TabComponents/mixin"
import ElUploadSelf from "@/components/Upload" import ElUploadSelf from "@/components/UploadForOperation"
import mixin from "./mixin" import mixin from "./mixin"
import { articleList } from "@/api/operation-management" import { articleList } from "@/api/operation-management"
export default { export default {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment