Commit 36842732 authored by 刘予佳's avatar 刘予佳

Merge remote-tracking branch 'remotes/origin/dev' into dev_lyj

parents 035686e0 3dfa2583
<template>
<div>
<el-form-item v-if="data.type == 'select'" label="占位内容">
<el-input
v-model="data.placeholder"
......@@ -235,6 +234,9 @@
<el-form-item label="是否必填">
<el-switch v-model="data.required"></el-switch>
</el-form-item>
<el-form-item label="必填提示文本">
<el-input v-model="data.pattern"></el-input>
</el-form-item>
</div>
</template>
......@@ -315,7 +317,16 @@ export default {
this.generateRule()
},
"data.pattern": function (val) {
if (val)
this.validator.required = {
required: true,
message: val,
}
else this.validator.required = null
this.generateRule()
},
},
}
</script>
......@@ -43,6 +43,14 @@ export function addPatient(data = {}, type = "") {
})
}
// 删除草稿
export function deletePatient(data) {
return request({
url: `/disease-data/data/patient/${data}`,
method: "delete",
})
}
/* 患者数据详情 */
export function getPatientDetail(params = {}) {
return request({
......@@ -137,10 +145,6 @@ export function getZsyzyPatientInfo(params = {}) {
})
}
// 急性胰腺炎-评分表
// 评分表新增修改
......
......@@ -112,6 +112,7 @@
:xl="item.span || 12"
>
<form-item-self
ref="formSelf"
:form="form"
:column-index="columnIndex"
:item="item"
......@@ -180,6 +181,11 @@ export default {
},
},
methods: {
clearAge() {
for (let i = 0; i < this.$refs.formSelf.length; i++) {
this.$refs.formSelf[i].age = ""
}
},
handleChange(key, val) {
if (this.form.hasOwnProperty(key)) this.form[key] = val
},
......
......@@ -53,8 +53,8 @@ export default {
},
screeningAdvise: {
1: "可定期随访",
2: "推荐胃镜精",
3: "强烈推荐胃镜精",
2: "推荐胶囊内镜或胃镜检",
3: "强烈推荐胶囊内镜或胃镜检",
},
}
},
......
......@@ -13,7 +13,7 @@
>
<template v-if="options.column && options.column.length > 0">
<form-content
ref="form-content"
ref="formContent"
:form="form"
:columns="{ column: options.column }"
:options="options"
......@@ -29,7 +29,7 @@
:name="`${gIndex}`"
>
<form-content
ref="form-content"
ref="formContent"
:form="form"
:columns="g"
:options="options"
......@@ -55,7 +55,7 @@
</template>
<form-content
v-if="collapseNames.includes(g.prop)"
ref="form-content"
ref="formContent"
:form="form"
:columns="g"
:options="options"
......@@ -202,6 +202,12 @@ export default {
}
},
methods: {
clearAge() {
// 去除年龄文本
for (let i = 0; i < this.$refs.formContent.length; i++) {
this.$refs.formContent[i].clearAge()
}
},
// 显示不符合筛查条件
showError(data) {
if (data) {
......@@ -263,6 +269,48 @@ export default {
this.loading = false
})
},
// 临时保存
temporarySave() {
//? 只传数据 获取当前步数,如果个人信息已经提交可以临时保存
// this.$refs.form.validate((valid) => {
// if (valid) {
const data = {}
const form = this.deepClone(this.form)
Object.keys(form).forEach((k) => {
if (form[k] === undefined) {
data[k] = ""
return false
}
if (k === "YZZKJC") {
// 牙周表格
data[k] = JSON.stringify(form[k])
} else if (
Array.isArray(form[k]) &&
form[k][0] &&
isObject(form[k][0])
) {
// 子表单 去除前端添加的显隐辅助数据($_)和 删除按钮辅助数据(showDelBtn)
data[k] = form[k].map((item) => {
for (let key in item) {
if (["$_keyField", "$_hidden", "showDelBtn"].includes(key))
delete item[key]
}
return item
})
} else {
data[k] = form[k]
}
})
this.$emit("temporaryConfirm", data, () => {
// 完成之后的回调
this.loading = false
})
// } else {
// this.loading = false
// }
// })
},
handleConfirm() {
this.loading = true
this.$refs.form.validate((valid) => {
......@@ -414,6 +462,7 @@ export default {
}
.form-footer {
margin-top: 20px;
margin-bottom: 20px;
text-align: center;
}
}
......
......@@ -62,7 +62,6 @@
:columns="g"
:options="options"
:is-show-important="isShowImportant"
@showError="showError"
:showIndex="g.showIndex"
:class="g.showIndex ? 'simple-form' : 'index-form'"
></form-content>
......@@ -175,16 +174,6 @@ export default {
},
methods: {
// 显示不符合筛查条件
showError(data) {
if (data) {
this.disabled = true
this.errorText = "不符合筛查条件"
} else {
this.disabled = false
this.errorText = ""
}
},
nextTab() {
const tabsLen = this.options.group.length
let active = Number(this.activeName)
......
......@@ -569,12 +569,18 @@ export default {
}
.right {
flex: 1;
.r_col_item:nth-child(4) {
img {
align-self: flex-start;
}
}
.r_col_item {
min-height: 72px;
display: flex;
justify-content: flex-start;
align-items: center;
padding: 20px 0 20px 20px;
img {
width: 26px;
height: 26px;
......
......@@ -213,15 +213,17 @@ html {
text-align: center;
white-space: nowrap;
}
.is-background{
button,.el-pager li{
.is-background {
button,
.el-pager li {
border-radius: 6px !important;
}
button,.el-pager li:not(.active){
border: 1px solid #D9D9D9;
button,
.el-pager li:not(.active) {
border: 1px solid #d9d9d9;
background: transparent !important;
}
.el-input__inner{
.el-input__inner {
border-radius: 6px !important;
}
}
......
......@@ -6,6 +6,8 @@
width="40%"
show-close
@closed="cancelSubmit"
:close-on-click-modal="false"
:show-close="showClose"
>
<slot name="content"></slot>
<slot name="footer"></slot>
......@@ -17,6 +19,11 @@ export default {
data() {
return { dialogVisible: false, loading: false }
},
props: {
showClose: {
default: false,
},
},
watch: {},
mounted() {},
methods: {
......
<template>
<div class="dataCenter">
<div class="container" style="max-height: 89vh">
<div v-show="!isDetail">
<div class="header">草稿箱</div>
<div class="content">
<customs-table
......@@ -17,22 +18,40 @@
/>
</div>
</div>
<div v-if="isDetail">
<div>
<el-button icon="el-icon-back" @click="isDetail = false"
>返 回</el-button
>
</div>
<div class="form_content">
<ConfigForms
form-type="1"
:patient-id="patientId"
:disabled="disabled"
></ConfigForms>
</div>
</div>
</div>
</template>
<script>
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin"
import ConfigForms from "./components/ConfigForms.vue"
import { mapGetters } from "vuex"
import { getPatientPage, deletePatient } from "@/api/patient.js"
export default {
// 数据概览
name: "",
components: {
CustomsTable,
ConfigForms,
},
mixins: [paginationMixin],
data() {
return {
isDetail: false, //! 控制详情显隐
listLoading: false,
selectedIndex: sessionStorage.getItem("homeSelectedIndex") - 0 || 0,
headList: ["社区筛查", "医院筛查", "体检筛查"],
columns: [
{
label: "医联体",
......@@ -90,7 +109,7 @@ export default {
operType: "button",
operations: [
{
func: this.rowOpration,
func: this.handleAdd,
formatter(row) {
return {
label: "编辑",
......@@ -99,7 +118,7 @@ export default {
},
},
{
func: this.rowOpration,
func: this.deletePatient,
formatter(row) {
return {
label: "删除",
......@@ -124,17 +143,77 @@ export default {
watch: {},
mounted() {},
methods: {
handleAdd({ patientId, name }, index, disabled = false) {
this.disabled = disabled
this.patientId = patientId || null
this.name = name
this.isDetail = true
},
setSelectedIndex(i) {
console.log(this.selectedIndex)
this.selectedIndex = i
sessionStorage.setItem("homeSelectedIndex", this.selectedIndex)
},
// 查询
handleFormSearch(form) {
this.searchForm = form
this.pageIndex = 1
this.handleSearch(form)
},
handleSearch() {
this.listLoading = true
const data = {}
data.current = this.pageIndex
data.size = this.pageSize
data.isDraft = 1
data.patientFrom = this.selectedIndex
getPatientPage(data).then((res) => {
this.listLoading = false
if (res.code === 1) {
const d = res.data
this.tableData = d.records || []
this.total = Number(d.total)
}
})
},
deletePatient(row) {
this.$confirm(`是否删除【${row.name}】?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
deletePatient(row.patientId).then((res) => {
if (res.code === 1) {
this.$message({
type: "success",
message: "删除成功!",
})
this.handleSearch()
}
})
})
.catch(() => {})
},
},
computed: {
...mapGetters({
selectedIndex: "table/selectedIndex",
}),
},
created() {
this.handleFormSearch()
},
watch: {
selectedIndex(v) {
this.handleFormSearch()
},
},
}
</script>
<style lang="scss" scoped>
.dataCenter {
padding: 24px 0;
.container {
padding: 24px;
height: 100%;
display: flex;
flex-direction: column;
......@@ -152,5 +231,8 @@ export default {
.content {
padding: 0 24px;
}
.form_content {
height: calc(100% - 50px);
}
}
</style>
<template>
<div
id="publicContent"
:class="activeName == 'index0' && formClass ? formClass : ''"
:class="[
activeName == 'index0' && formClass ? formClass : '',
$route.path === '/screening/draft' ? 'p_padding' : '',
]"
>
<div v-if="formTabs && formTabs.length > 0">
<div v-if="formTabs && formTabs.length > 0" style="position: relative">
<el-button
v-if="!disabled"
class="draftButton"
:loading="loading"
:disabled="!infoCompelete"
@click="onSubmit(formType)"
>{{ formType == 1 ? "临时保存" : "返回" }}</el-button
>
......@@ -24,7 +28,9 @@
:key="form.id"
:label="form.label"
:name="'index' + index"
disabled
>
<!-- disabled -->
<transition mode="out-in" name="fade-transform">
<div v-show="activeName === 'index' + index">
<template v-if="form.formId">
......@@ -41,6 +47,7 @@
@setFormJson="setFormJson"
@handleConfirm="handleConfirm"
@onPrev="onPrev"
@temporaryConfirm="temporaryConfirm"
></form-tab>
</template>
</div>
......@@ -51,8 +58,7 @@
<el-empty v-else description="暂无数据"></el-empty>
<public-dialog
ref="showDialog"
@onSubmit="dialogSubmit"
@onCancel="dialogCancel"
:showClose="dialogType == 'draft' ? true : false"
>
<!-- 保存草稿 -->
<template v-if="dialogType == 'draft'" slot="content">
......@@ -83,7 +89,7 @@
type="primary"
:loading="loading"
class="textBtn"
@click="view"
@click="viewJump"
>查看</el-button
>
<el-button type="primary" :loading="loading" @click="continueSubmit"
......@@ -117,6 +123,7 @@ export default {
// survivalFlag:false
dialogType: "",
loading: false,
infoCompelete: false,
formInitial: {}, // 第四步的数据
}
},
......@@ -138,17 +145,47 @@ export default {
},
watch: {
activeName(val) {
console.log(this.formId)
if (!this.disabled) {
if (!["index0", "index1"].includes(val)) {
this.infoCompelete = true
} else {
this.infoCompelete = false
}
}
if (val == "index1") {
// 第二步问卷调查
this.$nextTick(() => {
let { birthday } = JSON.parse(sessionStorage.getItem("index1Data"))
let date = new Date(String(birthday).replace(/-/g, "/"))
let d = new Date()
let age =
d.getFullYear() -
date.getFullYear() -
(d.getMonth() < date.getMonth() ||
(d.getMonth() == date.getMonth() && d.getDate() < date.getDate())
? 1
: 0)
//!
this.formInitial = {
birthday,
age,
}
})
} else {
this.formInitial = false
}
if (val == "index3") {
// 第四步风险评估
this.$nextTick(() => {
getPatientDetail({
formId: this.formId, // 每个大表单的id
patientId: this.patientId || this.patientStandbyId,
formRecordId: this.newformRecordId,
// formRecordId: this.newformRecordId,
})
.then((res) => {
console.log(res)
const data = res.data.data
this.formInitial = data
})
.finally(() => {
this.loading = false
......@@ -163,27 +200,6 @@ export default {
// }
})
})
} else if (val == "index1") {
// 第二步问卷调查
this.$nextTick(() => {
let { birthday } = JSON.parse(sessionStorage.getItem("index1Data"))
let date = new Date(String(birthday).replace(/-/g, "/"))
let d = new Date()
let age =
d.getFullYear() -
date.getFullYear() -
(d.getMonth() < date.getMonth() ||
(d.getMonth() == date.getMonth() && d.getDate() < date.getDate())
? 1
: 0)
//!
this.formInitial = {
birthday,
age,
}
})
} else {
this.formInitial = false
}
},
},
......@@ -200,25 +216,53 @@ export default {
form: data.data,
})
},
temporaryConfirm(data, done, cb) {
this.addPatient(data, done, cb, () => {
console.log("倒了")
this.$refs.showDialog.dialogVisible = true
this.loading = false
})
},
onPrev(done) {
this.prevTab(done)
},
onSubmit(type) {
this.loading = true
// this.loading = true
if (type == 1) {
// 临时保存草稿
this.dialogType = "draft"
// 保存逻辑处理
// !获取当前tab的formTab
let formTab = this.$refs.formTabs.filter(
(e) => e.form.formId == this.formId
)[0]
formTab.temporarySave()
// console.log(formTab)
} else if (type == 2) {
//提交
this.dialogType = "submit"
this.$refs.showDialog.dialogVisible = true
this.loading = false
} else {
// 返回
this.$router.back()
}
},
dialogSubmit() {},
dialogCancel() {},
continueSubmit() {},
continueSubmit() {
sessionStorage.removeItem("index1Data")
this.activeName = "index0"
// 清空表单
for (let i = 0; i < this.$refs.formTabs.length; i++) {
this.$refs.formTabs[i].resetForm()
this.$refs.formTabs[i].initForm()
}
// 清空红字:不符合筛查条件
this.$refs.showDialog.dialogVisible = false
},
viewJump() {
// this.$router.push('/')
alert("跳转")
},
},
provide() {
return {
......@@ -230,11 +274,11 @@ export default {
<style lang="scss" scoped>
#publicContent {
padding: 32px 24px;
position: relative;
padding: 32px 24px 32px;
.draftButton {
position: absolute;
top: 46px;
top: 0px;
right: 40px;
z-index: 999;
border-radius: 4px;
......@@ -248,6 +292,9 @@ export default {
}
}
}
#publicContent.p_padding {
padding: 10px 24px 32px;
}
::v-deep .el-dialog__body {
.title {
font-size: 22px;
......@@ -273,6 +320,16 @@ export default {
margin-top: 10px;
}
::v-deep {
.el-button.is-disabled {
color: #c0c4cc !important;
cursor: not-allowed;
background-image: none;
background-color: #fff;
border-color: #ebeef5 !important;
}
.el-tabs__item.is-disabled {
color: #252c49;
}
.el-tabs--card > .el-tabs__header {
width: calc(100% - 100px);
border-bottom: none;
......
......@@ -42,7 +42,11 @@
</el-switch>-->
</div>
</el-row>
<div ref="my-form" class="my-form" :class="externalScroll ? 'no-scroll' : ''">
<div
ref="my-form"
class="my-form"
:class="externalScroll ? 'no-scroll' : ''"
>
<!-- <read-form
ref="form"
:options="survivalForm"
......@@ -55,6 +59,7 @@
@scrollTop="scrollTop"
@handleConfirm="handleConfirm"
@onPrev="onPrev"
@temporaryConfirm="temporaryConfirm"
></custom-form>
</div>
</template>
......@@ -146,6 +151,12 @@ export default {
},
},
methods: {
resetForm() {
this.$refs.form.resetForm(false)
this.$refs.form.showError(false)
// 清理年龄的回显
this.$refs.form.clearAge()
},
initData() {
this.formData.formRecordId = null
this.formCacheList = []
......@@ -157,6 +168,62 @@ export default {
this.getRecordList()
}
},
// 临时保存
temporarySave() {
this.$refs.form.temporarySave()
},
// 临时保存确定
temporaryConfirm(data, done) {
this.$emit(
"temporaryConfirm",
{
data,
formId: this.form.formId, // 每个大表单的id
patientId: this.patientId || this.patientStandbyId,
// formRecordId: this.formData.formRecordId || this.newformRecordId, // 是否为编辑的表单id
statusMap: {
patient_from: this.$store.getters["table/selectedIndex"],
is_draft: 1, //是否为草稿
check_status: 1, // 审核状态
},
},
done,
(res) => {
// 多次填写的表单新增时,获取最新数据
if (this.form.fillType === 1 && !this.formData.formRecordId) {
this.getRecordList(res.data.formRecordId)
}
this.formatData(res, this.form.fillType !== 1)
}
)
},
handleConfirm(data, done) {
this.$emit(
"handleConfirm",
{
data,
formId: this.form.formId, // 每个大表单的id
patientId: this.patientId || this.patientStandbyId,
// formRecordId: this.formData.formRecordId || this.newformRecordId, // 是否为编辑的表单id
statusMap: {
patient_from: this.$store.getters["table/selectedIndex"],
is_draft: 0, //是否为草稿
check_status: 1, // 审核状态
},
},
done,
(res) => {
// 多次填写的表单新增时,获取最新数据
if (this.form.fillType === 1 && !this.formData.formRecordId) {
this.getRecordList(res.data.formRecordId)
}
this.formatData(res, this.form.fillType !== 1)
}
)
},
onPrev(done) {
this.$emit("onPrev", done)
},
scrollTop() {
this.$refs["my-form"].scrollTop = 0
},
......@@ -223,34 +290,6 @@ export default {
})
},
handleConfirm(data, done) {
this.$emit(
"handleConfirm",
{
data,
formId: this.form.formId, // 每个大表单的id
patientId: this.patientId || this.patientStandbyId,
formRecordId: this.formData.formRecordId || this.newformRecordId, // 是否为编辑的表单id
statusMap: {
patientFrom: this.$store.getters["table/selectedIndex"],
is_draft: 1, //是否为草稿
check_status: 1, // 审核状态
},
},
done,
(res) => {
// 多次填写的表单新增时,获取最新数据
if (this.form.fillType === 1 && !this.formData.formRecordId) {
this.getRecordList(res.data.formRecordId)
}
this.formatData(res, this.form.fillType !== 1)
}
)
},
onPrev(done) {
this.$emit("onPrev", done)
},
getPatientDetail() {
this.$nextTick(() => {
this.$refs.form && this.$refs.form.resetForm()
......@@ -382,18 +421,19 @@ export default {
z-index: 9;
}
.header {
height: 20px;
// box-shadow: 0 1px 4px rgb(0 21 41 / 8%);
height: 5px;
box-shadow: 0 5px 4px rgb(0 21 41 / 8%);
padding-right: 20px;
position: relative;
font-size: 15px;
z-index: 999;
}
}
.el-aside {
padding-left: 10px;
border-left: 1px solid #ccc;
.side-content {
// height: calc(100vh - #{"272px"});
height: calc(100vh - #{"272px"});
// overflow: auto;
}
}
......
......@@ -27,7 +27,8 @@ export default {
nextTab() {
let i = this.activeName.split("index")[1] - 0
i++
if (i == 5) {
if (i == 6) {
this.onSubmit(2)
return
} else {
this.activeName = "index" + i
......@@ -55,8 +56,8 @@ export default {
...this.formTabsList.find((_) => _.id === id),
})
},
async addPatient(data, done, cb, type) {
addPatient(data, type)
async addPatient(data, done, cb, ConfigFormsCallback) {
addPatient(data, "")
.then((res) => {
// this.$message.success("操作成功")
if (res.data) {
......@@ -73,7 +74,16 @@ export default {
})
.finally((e) => {
done()
console.log("走了", ConfigFormsCallback)
if (
ConfigFormsCallback &&
Object.prototype.toString.call(ConfigFormsCallback) ===
"[object Function]"
) {
ConfigFormsCallback()
} else {
this.nextTab()
}
})
},
......
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