Browse Source

详情页内容迁移

master
aBin 4 years ago
parent
commit
2752bc9710
  1. 10
      .env.development
  2. 10
      .env.production
  3. 4
      src/common/styles/tailwind.scss
  4. 2
      src/components/Globals/Globals.vue
  5. 24
      src/components/PatientList/PatientList.vue
  6. 2
      src/components/PrettyExchange/PrettyExchange.vue
  7. 27
      src/components/Projects/ProjectItem.vue
  8. 8
      src/components/Roles/Roles.vue
  9. 28
      src/components/Test/Test.vue
  10. 6
      src/pages.json
  11. 3
      src/pages/camera/camera.vue
  12. 35
      src/pages/detail-webview/detail-webview.vue
  13. 1
      src/pages/establish/establish.vue
  14. 207
      src/pages/inner/inner.vue
  15. 106
      src/pages/outside/mixin.js
  16. 406
      src/pages/outside/outside.vue
  17. 1
      src/pages/patientLine/patientLine.vue
  18. 37
      src/pages/task-page/task-page.vue
  19. 8
      src/store/carbasics/mutations.js
  20. 5
      src/store/carbasics/state.js

10
.env.development

@ -1,8 +1,8 @@
VUE_APP_NODE_ENV=development VUE_APP_NODE_ENV=development
VUE_APP_BASE_URL=http://101.201.226.163 VUE_APP_BASE_URL=https://www.tall.wiki
VUE_APP_API_URL=http://101.201.226.163/gateway VUE_APP_API_URL=https://www.tall.wiki/gateway
VUE_APP_MSG_URL=ws://101.201.226.163/websocket/message/v4.0/ws VUE_APP_MSG_URL=ws://www.tall.wiki/websocket/message/v4.0/ws
VUE_APP_PROJECT_PATH=http://101.201.226.163/carBasicTall VUE_APP_PROJECT_PATH=https://www.tall.wiki/carBasicTall
VUE_APP_QUESTION_PATH=http://101.201.226.163/carbasics VUE_APP_QUESTION_PATH=https://www.tall.wiki/carbasics
VUE_APP_VERSION=v3.1.0 VUE_APP_VERSION=v3.1.0
VUE_APP_PUBLIC_PATH=/carBasicCalendar/ VUE_APP_PUBLIC_PATH=/carBasicCalendar/

10
.env.production

@ -1,8 +1,8 @@
VUE_APP_NODE_ENV=production VUE_APP_NODE_ENV=production
VUE_APP_BASE_URL=https://test.tall.wiki VUE_APP_BASE_URL=https://www.tall.wiki
VUE_APP_API_URL=https://test.tall.wiki/gateway VUE_APP_API_URL=https://www.tall.wiki/gateway
VUE_APP_MSG_URL=ws://101.201.226.163/websocket/message/v4.0/ws VUE_APP_MSG_URL=wss://www.tall.wiki/websocket/message/v4.0/ws
VUE_APP_PROJECT_PATH=https://test.tall.wiki/carBasicTall VUE_APP_PROJECT_PATH=https://www.tall.wiki/carBasicTall
VUE_APP_QUESTION_PATH=https://test.tall.wiki/carbasics VUE_APP_QUESTION_PATH=https://www.tall.wiki/carbasics
VUE_APP_VERSION=v3.1.0 VUE_APP_VERSION=v3.1.0
VUE_APP_PUBLIC_PATH=/carBasicCalendar/ VUE_APP_PUBLIC_PATH=/carBasicCalendar/

4
src/common/styles/tailwind.scss

@ -3729,6 +3729,10 @@
line-height: 1.75rem; line-height: 1.75rem;
} }
.fz-16 {
font-size: 16px;
}
.text-xl { .text-xl {
font-size: 1.25rem; font-size: 1.25rem;
line-height: 1.75rem; line-height: 1.75rem;

2
src/components/Globals/Globals.vue

@ -27,6 +27,7 @@ export default {
}, },
created() { created() {
var obj = JSON.parse(this.globals[0].plugins[0][0].param); var obj = JSON.parse(this.globals[0].plugins[0][0].param);
// console.log('obj: ', obj);
this.setGlobalData(obj); this.setGlobalData(obj);
this.global[0] = this.globals[0]; this.global[0] = this.globals[0];
this.globalTabs = [...this.globals]; this.globalTabs = [...this.globals];
@ -39,6 +40,7 @@ export default {
if (e !== this.globals.length) { if (e !== this.globals.length) {
this.global[0] = this.globals[e]; this.global[0] = this.globals[e];
var obj = JSON.parse(this.globals[e].plugins[0][0].param); var obj = JSON.parse(this.globals[e].plugins[0][0].param);
// console.log('obj: ', obj);
this.setGlobalData(obj); this.setGlobalData(obj);
this.$emit('changeShowLine', false); this.$emit('changeShowLine', false);
this.showLine = false; this.showLine = false;

24
src/components/PatientList/PatientList.vue

@ -60,7 +60,7 @@
> >
<div <div
@longpress="longpress(card.firstAidId)" @longpress="longpress(card.firstAidId)"
@click="changeTimeLine(card.recordUserId, card.firstAidId, card.caseType)" @click="changeTimeLine(card.recordUserId, card.firstAidId, globalData.createAuth - 0 === 0 ? 1 : 0, card.demonstrate)"
style="height: 100%; width: 100%; position: absolute; top: 0; left: 0; z-index: 10" style="height: 100%; width: 100%; position: absolute; top: 0; left: 0; z-index: 10"
></div> ></div>
<div :style="{ 'margin-left': outIndex === cardIndex && card.recordUserId - 0 ? '-68px' : '' }" class="w-full anima"> <div :style="{ 'margin-left': outIndex === cardIndex && card.recordUserId - 0 ? '-68px' : '' }" class="w-full anima">
@ -154,7 +154,7 @@ export default {
isMove: false, // isMove: false, //
}), }),
computed: { computed: {
...mapState('carbasics', ['detailsData', 'globalData', 'refreshList']), ...mapState('carbasics', ['globalData', 'refreshList']),
...mapGetters('project', ['projectId']), ...mapGetters('project', ['projectId']),
}, },
mounted() { mounted() {
@ -167,7 +167,7 @@ export default {
this.getData(true); this.getData(true);
}, },
methods: { methods: {
...mapMutations('carbasics', ['setFirstAidId']), ...mapMutations('carbasics', ['setFirstAidId', 'setDetailValueType']),
jump() { jump() {
uni.navigateTo({ url: `/pages/establish/establish?role=${this.role}` }); uni.navigateTo({ url: `/pages/establish/establish?role=${this.role}` });
}, },
@ -221,12 +221,14 @@ export default {
// card, // card,
// , // ,
// , // ,
changeTimeLine(recordUserId, firstAidId, caseType) { changeTimeLine(recordUserId, firstAidId, caseType, demonstrate) {
try { try {
if (!(recordUserId - 0)) { if (!(recordUserId - 0)) {
this.changeShow(firstAidId); this.changeShow(firstAidId, caseType, demonstrate);
} else { } else {
console.log('firstAidId: ', firstAidId);
this.setFirstAidId(firstAidId); this.setFirstAidId(firstAidId);
this.setDetailValueType(demonstrate);
// this.$router.push(`/patient-line`); // this.$router.push(`/patient-line`);
uni.navigateTo({ url: `/pages/patientLine/patientLine?caseType=${caseType}` }); uni.navigateTo({ url: `/pages/patientLine/patientLine?caseType=${caseType}` });
} }
@ -239,17 +241,17 @@ export default {
} }
}, },
// ,, // ,,
changeShow(id) { changeShow(id, caseType, demonstrate) {
if (this.role === 'YiSheng') { if (this.role === 'YiSheng') {
// id, // id,
// ,线,线,/, // ,线,线,/,
this.firstAidId = id; this.firstAidId = id;
this.handleOk(this.detailsData.type); this.handleOk(this.globalData.createAuth - 0 === 0 ? 1 : 0, caseType, demonstrate);
// this.visible = true; // / // this.visible = true; // /
} }
}, },
// //
async handleOk(type) { async handleOk(type, caseType, demonstrate) {
try { try {
const { projectId, firstAidId } = this; const { projectId, firstAidId } = this;
const param = { const param = {
@ -258,7 +260,6 @@ export default {
type, type,
}; };
const res = await uni.$u.api.joinAid(param); const res = await uni.$u.api.joinAid(param);
console.log('res: ', res);
if (res) { if (res) {
this.$refs.uToast.show({ this.$refs.uToast.show({
title: '加入成功', title: '加入成功',
@ -284,6 +285,10 @@ export default {
}; };
uni.$u.api.setRecord(setParam); uni.$u.api.setRecord(setParam);
this.getData(true); this.getData(true);
this.setFirstAidId(firstAidId);
this.setDetailValueType(demonstrate);
// this.$router.push(`/patient-line`);
uni.navigateTo({ url: `/pages/patientLine/patientLine?caseType=${caseType}` });
} else { } else {
this.$refs.uToast.show({ this.$refs.uToast.show({
title: '加入失败', title: '加入失败',
@ -340,6 +345,7 @@ export default {
} }
this.total = data.page.total; this.total = data.page.total;
this.role = data.role; this.role = data.role;
console.log('this.role: ', this.role);
} else { } else {
this.$t.ui.showToast('没有更多数据'); this.$t.ui.showToast('没有更多数据');
} }

2
src/components/PrettyExchange/PrettyExchange.vue

@ -111,7 +111,7 @@
<view class="border-80 bg-blue-500" v-if="item.showSubBorder"></view> <view class="border-80 bg-blue-500" v-if="item.showSubBorder"></view>
</view> </view>
</view> </view>
<view class="edition">v1.7.1</view> <view class="edition">v2.0.0</view>
</scroll-view> </scroll-view>
<!-- 移动悬浮 begin --> <!-- 移动悬浮 begin -->
<view v-if="showMoveImage"> <view v-if="showMoveImage">

27
src/components/Projects/ProjectItem.vue

@ -84,7 +84,7 @@
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters, mapMutations } from 'vuex';
export default { export default {
props: { props: {
@ -119,17 +119,26 @@ export default {
computed: mapGetters('user', ['userId']), computed: mapGetters('user', ['userId']),
methods: { methods: {
...mapMutations('carbasics', ['setGlobalData']),
...mapMutations('task', ['setPermanents', 'setDailyTasks']),
// //
openProject(project) { openProject(project) {
const { name, id, url } = project; const { name, id, url, templateCode } = project;
url && (uni.$t.domain = url); url && (uni.$t.domain = url);
// this.$u.route('pages/project-webview/project-webview', { if (templateCode === 'carbasics') {
// u: this.userId, // ,
// p: id, this.setGlobalData({});
// pname: name, this.setPermanents(null);
// url: encodeURIComponent(url), this.setDailyTasks(null);
// }); uni.navigateTo({ url: `/pages/task-page/task-page?u=${this.userId}&p=${id}&pname=${name}&url=${encodeURIComponent(url)}` });
uni.navigateTo({ url: `/pages/task-page/task-page?u=${this.userId}&p=${id}&pname=${name}&url=${encodeURIComponent(url)}` }); } else {
this.$u.route('pages/project-webview/project-webview', {
u: this.userId,
p: id,
pname: name,
url: encodeURIComponent(url),
});
}
}, },
/** /**

8
src/components/Roles/Roles.vue

@ -39,18 +39,16 @@
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
<view :style="{ height: isActive ? '100px' : 0 }" style="transition: all 0.24s" class="role-more-box"> <view :style="{ height: isActive ? '100px' : 0 }" style="transition: all 0.24s" class="role-more-box flex flex-wrap">
<template v-for="roleItem in allRoles"> <view class="m-2" v-for="roleItem in allRoles" :key="roleItem.id">
<u-tag <u-tag
:type="roleId === roleItem.id ? 'primary' : 'info'" :type="roleId === roleItem.id ? 'primary' : 'info'"
v-if="roleItem.name !== '平车'" v-if="roleItem.name !== '平车'"
class="m-3"
:key="roleItem.id"
:text="roleItem.name" :text="roleItem.name"
mode="light" mode="light"
@click="changeRole(roleItem.id)" @click="changeRole(roleItem.id)"
/> />
</template> </view>
</view> </view>
<!-- 骨架屏 --> <!-- 骨架屏 -->
<u-skeleton :animation="true" :loading="loading" bg-color="#fff"></u-skeleton> <u-skeleton :animation="true" :loading="loading" bg-color="#fff"></u-skeleton>

28
src/components/Test/Test.vue

@ -97,7 +97,7 @@
</div> </div>
</u-radio-group> </u-radio-group>
<!-- 单选(带分数输入框) --> <!-- 单选(带分数输入框) -->
<u-radio-group :value="listItem.value" v-else-if="listItem.type === 23" class="flex flex-column flex-wrap w-full"> <u-radio-group :value="listItem.value" v-else-if="listItem.type === 23" class="flex flex-col flex-wrap w-full">
<template v-if="listItem.code !== 'JRZL-SQ-ASPECT'"> <template v-if="listItem.code !== 'JRZL-SQ-ASPECT'">
<div <div
v-for="(radioValue, radioIndex) in listItem.listItem" v-for="(radioValue, radioIndex) in listItem.listItem"
@ -185,7 +185,7 @@
</template> </template>
</u-radio-group> </u-radio-group>
<!-- 单选(竖向排列带分数输入框) --> <!-- 单选(竖向排列带分数输入框) -->
<u-radio-group :value="listItem.value" v-else-if="listItem.type === 24" class="flex flex-column w-full"> <u-radio-group :value="listItem.value" v-else-if="listItem.type === 24" class="flex flex-col w-full">
<div class="w-full flex" v-for="(radioValue, radioIndex) in listItem.itemList" :key="radioIndex"> <div class="w-full flex" v-for="(radioValue, radioIndex) in listItem.itemList" :key="radioIndex">
<u-radio <u-radio
class="flex items-center" class="flex items-center"
@ -394,6 +394,10 @@ export default {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
canChange: {
type: Boolean,
default: false,
},
}, },
data: () => ({ data: () => ({
test: [], // test: [], //
@ -555,6 +559,21 @@ export default {
return true; return true;
} }
}, },
// , true
// false
judgeType(Fvalue, value) {
if (Array.isArray(Fvalue)) {
for (var i = 0; i < Fvalue.length; i++) {
if (Fvalue[i] === value) {
return false;
} else if (i === Fvalue.length - 1) {
return true;
}
}
} else {
return Fvalue !== value;
}
},
/** /**
* 修改输入框内容 * 修改输入框内容
* 先获取到 this.test 数组props接收的值不能在当前界面修改,所以用将list的值赋值给了 test ,渲染界面也是用的 test * 先获取到 this.test 数组props接收的值不能在当前界面修改,所以用将list的值赋值给了 test ,渲染界面也是用的 test
@ -571,7 +590,9 @@ export default {
changeRadio(e, code, index, itemIndex) { changeRadio(e, code, index, itemIndex) {
// console.log('e, code, index, itemIndex: ', e, code, index, itemIndex); // console.log('e, code, index, itemIndex: ', e, code, index, itemIndex);
this.Rerender(e, index, itemIndex); this.Rerender(e, index, itemIndex);
this.$emit('getCollaoseHeight', this.testIndex); if (this.canChange) {
this.$emit('getCollaoseHeight', this.testIndex);
}
this.setAnswer(code, e); this.setAnswer(code, e);
}, },
// , // ,
@ -860,7 +881,6 @@ export default {
mounted() {}, mounted() {},
created() { created() {
this.test = [...this.list]; this.test = [...this.list];
console.log('this.test: ', this.test);
}, },
// -- // --
beforeUpdate() {}, beforeUpdate() {},

6
src/pages.json

@ -79,6 +79,12 @@
"style": { "style": {
"navigationBarTitleText": "信息录入" "navigationBarTitleText": "信息录入"
} }
},
{
"path": "pages/detail-webview/detail-webview",
"style": {
"navigationBarTitleText": "暴风眼详情页"
}
} }
], ],
"globalStyle": { "globalStyle": {

3
src/pages/camera/camera.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="camera"> <div class="camera">
<camera device-position="back" flash="auto" @error="error" style="width: 100%; height: 60%"> <camera device-position="back" flash="auto" style="width: 100%; height: 60%">
<!-- <cover-image src="../../static/scan-frame/scan-img.png" class="scan-img"></cover-image> --> <!-- <cover-image src="../../static/scan-frame/scan-img.png" class="scan-img"></cover-image> -->
</camera> </camera>
<view class="scan-text">支持将住院病案首页医嘱单拍照进行文字识别</view> <view class="scan-text">支持将住院病案首页医嘱单拍照进行文字识别</view>
@ -115,6 +115,7 @@ export default {
let obj = { let obj = {
questionCode: key, questionCode: key,
answer: [], answer: [],
checked: true,
}; };
if (key) { if (key) {
for (var i = 0; i < data[key].length; i++) { for (var i = 0; i < data[key].length; i++) {

35
src/pages/detail-webview/detail-webview.vue

@ -0,0 +1,35 @@
<template>
<web-view :src="src" />
</template>
<script>
export default {
data() {
return { src: '' };
},
onLoad(options) {
const obj = { title: '暴风眼Typhoneye', path: '/pages/index/index' };
uni.showShareMenu(obj);
if (!options) {
this.$t.ui.showModal('缺少参数, 请返回重试');
} else {
const { jumpUrl } = options;
let url = jumpUrl + '?';
for (let key in options) {
if (key !== 'jumpUrl') {
url += `${key}=${options[key]}&`;
}
}
this.src = url;
console.log('url: ', url);
}
},
methods: {
onShareAppMessage() {
return { title: '暴风眼Typhoneye', path: '/pages/index/index' };
},
},
};
</script>

1
src/pages/establish/establish.vue

@ -317,6 +317,7 @@ export default {
this.firstAidId = data.firstAidId; this.firstAidId = data.firstAidId;
this.isSubmit = false; this.isSubmit = false;
if (this.role === 'YiSheng') { if (this.role === 'YiSheng') {
console.log('data: ', data);
// this.visible = true; // this.visible = true;
this.handleOk(this.globalData.createAuth - 0 === 0 ? 1 : 0); this.handleOk(this.globalData.createAuth - 0 === 0 ? 1 : 0);
uni.navigateBack(); uni.navigateBack();

207
src/pages/inner/inner.vue

@ -1,11 +1,12 @@
<template> <template>
<div class="inner"> <div class="inner">
<!-- :style="{ paddingTop: detailsData.valueType ? '28px' : '28px' }" --> <!-- :style="{ paddingTop: detailValueType === 1 ? '28px' : '' }" -->
<div class="w-full" v-for="(item, index) in testList" :key="index"> <div class="w-full" v-for="(item, index) in testList" :key="index">
<template v-if="item.testType === 1"> <template v-if="item.testType === 1">
<Test <Test
:testIndex="index" :testIndex="index"
@getCollaoseHeight="getCollaoseHeight" @getCollaoseHeight="getCollaoseHeight"
:can-change="false"
:answer-list="answerList" :answer-list="answerList"
v-if="type" v-if="type"
class="w-full" class="w-full"
@ -28,6 +29,7 @@
<Test <Test
:testIndex="index" :testIndex="index"
@getCollaoseHeight="getCollaoseHeight" @getCollaoseHeight="getCollaoseHeight"
:can-change="true"
:answer-list="answerList" :answer-list="answerList"
v-if="type" v-if="type"
class="w-full" class="w-full"
@ -37,8 +39,17 @@
</u-collapse> </u-collapse>
</div> </div>
<div class="ocr-open-box" @click="openOcr">OCR</div> <div class="ocr-open-box" @click="openOcr">OCR</div>
<u-modal v-model="showBasic"> <u-modal v-model="showBasic" title="确定选择后将提交识别到的内容" :show-cancel-button="true" @confirm="submitBasicData">
<view class="slot-content"> </view> <view class="slot-content">
<scroll-view scroll-y style="height: 750rpx">
<div v-for="(item, index) in basicList" :key="index" class="modal-content flex justify-between items-center">
<u-checkbox v-model="item.checked" :name="item.questionCode">
<div>{{ item.name }}</div>
</u-checkbox>
<div class="flex items-center fz-16">{{ item.answer }}</div>
</div>
</scroll-view>
</view>
</u-modal> </u-modal>
</div> </div>
</template> </template>
@ -46,6 +57,7 @@
<script> <script>
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import Mixin from './mixin'; import Mixin from './mixin';
import cloneDeep from 'lodash/cloneDeep';
export default { export default {
components: {}, components: {},
@ -68,9 +80,11 @@ export default {
afterStr: '主要治疗', afterStr: '主要治疗',
beforeStr: '基本信息', beforeStr: '基本信息',
answerList: {}, answerList: {},
showBasic: true, showBasic: false,
codeAndTitle: [],
basicList: [],
}), }),
computed: { ...mapState('carbasics', ['InputCode', 'firstAidId', 'isRefresh']) }, computed: { ...mapState('carbasics', ['InputCode', 'firstAidId', 'isRefresh', 'basicData', 'detailValueType']) },
methods: { methods: {
// ocr // ocr
openOcr() { openOcr() {
@ -101,6 +115,7 @@ export default {
if (key === value) { if (key === value) {
if (Array.isArray(this.codeValue[this.type][key])) { if (Array.isArray(this.codeValue[this.type][key])) {
this.codeValue[this.type][key] = recordList[value]; this.codeValue[this.type][key] = recordList[value];
break; break;
} else { } else {
this.codeValue[this.type][key] = recordList[value][0]; this.codeValue[this.type][key] = recordList[value][0];
@ -109,11 +124,53 @@ export default {
} }
} }
} }
// list // list
this.reassignList(); this.reassignList();
// checkedList,,list,list
this.changeCheckStatus();
// codetitle
this.getAllCodeAndTitle();
// type // type
this.getTest(); this.getTest();
}, },
// ,ture
changeCheckStatus() {
for (let i = 0; i < this.list.length; i++) {
const item = this.list[i];
if (item.testList.length) {
for (let j = 0; j < item.testList.length; j++) {
const itemJ = item.testList[j];
if (itemJ.content.length) {
for (let k = 0; k < itemJ.content.length; k++) {
const itemK = itemJ.content[k];
if (itemK.length) {
for (let m = 0; m < itemK.length; m++) {
if (Array.isArray(itemK[m].value)) {
for (let n = 0; n < itemK[m].itemList.length; n++) {
const itemN = itemK[m].itemList[n];
// console.log('itemN: ', itemN);
itemK[m].itemIsChecked[n].checked = this.getCheckedStatus(itemN, itemK[m].value);
}
}
}
}
}
}
}
}
}
},
//
getCheckedStatus(item, valueList) {
for (let i = 0; i < valueList.length; i++) {
if (valueList[i] === item) {
return true;
} else if (i === valueList.length - 0) {
return false;
}
}
},
// //
// codeListcode value // codeListcode value
// codeList,getTest // codeList,getTest
@ -125,6 +182,81 @@ export default {
} }
} }
}, },
// code
getAllCodeAndTitle() {
let Arr = [];
for (let i = 0; i < this.list.length; i++) {
const item = this.list[i];
if (item.testList.length) {
for (let j = 0; j < item.testList.length; j++) {
const itemJ = item.testList[j];
if (itemJ.content.length) {
for (let k = 0; k < itemJ.content.length; k++) {
const itemK = itemJ.content[k];
if (itemK.length) {
for (let m = 0; m < itemK.length; m++) {
const itemM = itemK[m];
const itemMm = itemK[m - 1];
let obj = null;
if (itemM.code && itemM.title) {
obj = {
code: itemM.code,
title: itemM.title,
};
} else if (itemM.code && !itemM.title) {
obj = {
code: itemM.code,
title: itemMm.title,
};
}
if (obj) {
Arr.push(obj);
}
}
}
}
}
}
}
}
this.codeAndTitle = Arr;
},
// code,title
getNameByCode() {
let Arr = [...this.basicList];
for (let k = 0; k < Arr.length; k++) {
for (let i = 0; i < this.codeAndTitle.length; i++) {
const item = this.codeAndTitle[i];
if (Arr[k].questionCode === item.code) {
Arr[k].name = item.title;
}
}
}
this.basicList = [...Arr];
},
// ,, //
getAnswerByType(obj) {
let answer = obj.answer;
if (typeof (answer - 0) === 'number') {
obj.type === 0; //
answer = this.$moment(answer - 0).format('YYYY-MM-DD HH:mm');
} else if (Array.isArray(answer)) {
let str = '';
for (let i = 0; i < answer.length; i++) {
if (i === answer.length - 0) {
str += answer[i];
} else {
str = str + answer[i] + ',';
}
}
obj.type === 1; //
answer = str;
} else {
obj.type === 2; //
}
obj.answer = answer;
return obj;
},
// //
getCollaoseHeight(index) { getCollaoseHeight(index) {
const that = this; const that = this;
@ -134,38 +266,64 @@ export default {
that.$refs[`collapseView${index}`][0].init(); that.$refs[`collapseView${index}`][0].init();
}); });
}, },
// modal,,
//
async submitBasicData() {
let codeAndAnswerList = [];
for (let i = 0; i < this.basicList.length; i++) {
const item = this.basicList[i];
if (item.checked) {
let obj = {
questionCode: item.questionCode,
answer: this.basicData[i].answer,
};
codeAndAnswerList.push(obj);
}
}
const param = {
codeAndAnswerList,
firstAidId: this.firstAidId,
};
await this.$u.api.setRecord(param);
this.getAnswer();
},
}, },
watch: { watch: {
isRefresh(val) { isRefresh() {
console.log('val: ', val); let Arr = [];
this.getAnswer(); const basicData = cloneDeep(this.basicData);
for (let i = 0; i < basicData.length; i++) {
Arr.push(basicData[i]);
}
for (let i = 0; i < Arr.length; i++) {
Arr[i] = this.getAnswerByType(Arr[i]);
}
this.basicList = [...Arr];
this.getNameByCode();
this.showBasic = true;
}, },
}, },
// -- // --
onLoad() { onLoad() {
this.type = this.InputCode; this.type = this.InputCode;
if (this.type === 'RYPG') { // if (this.type === 'RYPG') {
this.afterStr = '主要治疗'; // this.afterStr = '';
this.beforeStr = '基本信息'; // this.beforeStr = '';
} else if (this.type === 'SSXG') { // } else if (this.type === 'SSXG') {
this.afterStr = '出院记录'; // this.afterStr = '';
this.beforeStr = '入院评估'; // this.beforeStr = '';
} else if (this.type === 'CYJL') { // } else if (this.type === 'CYJL') {
this.afterStr = '无数据'; // this.afterStr = '';
this.beforeStr = '主要治疗'; // this.beforeStr = '';
} // }
// this.tips = '...'; // this.tips = '...';
this.getAnswer(); this.getAnswer();
}, },
// -- // --
onReady() {}, onReady() {},
// --(not-nvue) // --(not-nvue)
onShow(status) { onShow() {},
if (status) {
console.log('status: ', status);
}
},
// -- // --
onHide() {}, onHide() {},
// -- // --
@ -184,6 +342,9 @@ export default {
</script> </script>
<style> <style>
.modal-content {
padding: 16px;
}
.slot-content { .slot-content {
font-size: 28rpx; font-size: 28rpx;
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);

106
src/pages/outside/mixin.js

@ -266,12 +266,15 @@ const mixin = {
title: '左侧', title: '左侧',
code: 'CTCX-ZUO', code: 'CTCX-ZUO',
itemList: ['基底节区', '幕上脑叶', '小脑', '脑干', '脑室'], itemList: ['基底节区', '幕上脑叶', '小脑', '脑干', '脑室'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.ZYJC['CTCX-ZUO'], value: this.codeValue.ZYJC['CTCX-ZUO'],
}, },
{ {
title: '右侧', title: '右侧',
code: 'CTCX-YOU', code: 'CTCX-YOU',
itemList: ['基底节区', '幕上脑叶', '小脑', '脑干', '脑室'], itemList: ['基底节区', '幕上脑叶', '小脑', '脑干', '脑室'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.ZYJC['CTCX-YOU'], value: this.codeValue.ZYJC['CTCX-YOU'],
}, },
], ],
@ -303,6 +306,7 @@ const mixin = {
type: 3, type: 3,
code: 'BYPD-LNXG', code: 'BYPD-LNXG',
itemList: ['CTA', 'MRA', 'DSA', '未查'], itemList: ['CTA', 'MRA', 'DSA', '未查'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }],
checkType: 4, checkType: 4,
value: this.codeValue.ZYJC['BYPD-LNXG'], value: this.codeValue.ZYJC['BYPD-LNXG'],
}, },
@ -324,6 +328,17 @@ const mixin = {
'颅内静脉窦血栓形成', '颅内静脉窦血栓形成',
'其他', '其他',
], ],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
checkType: 3, checkType: 3,
value: this.codeValue.ZYJC['BYPD-BYPD'], value: this.codeValue.ZYJC['BYPD-BYPD'],
}, },
@ -363,6 +378,14 @@ const mixin = {
title: '', title: '',
type: 3, type: 3,
itemList: ['开颅血肿清除术', '去骨瓣减压术', '脑室镜下血肿抽吸术', '钻孔血肿抽吸术', '复合手术', '其他'], itemList: ['开颅血肿清除术', '去骨瓣减压术', '脑室镜下血肿抽吸术', '钻孔血肿抽吸术', '复合手术', '其他'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
checkType: 2, checkType: 2,
code: 'ZYZL-SSFZ', code: 'ZYZL-SSFZ',
value: this.codeValue.SSXG['ZYZL-SSFZ'], value: this.codeValue.SSXG['ZYZL-SSFZ'],
@ -382,6 +405,14 @@ const mixin = {
title: '', title: '',
type: 3, type: 3,
itemList: ['无', '手术部位再次脑出血', '手术远隔部位再出血', '脑梗死', '继发性癫痫口颅内感染', '其他'], itemList: ['无', '手术部位再次脑出血', '手术远隔部位再出血', '脑梗死', '继发性癫痫口颅内感染', '其他'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
checkType: 2, checkType: 2,
code: 'ZYZL-BFZ', code: 'ZYZL-BFZ',
value: this.codeValue.SSXG['ZYZL-BFZ'], value: this.codeValue.SSXG['ZYZL-BFZ'],
@ -422,6 +453,14 @@ const mixin = {
Fcode: 'CYJL-JZ', Fcode: 'CYJL-JZ',
isShow: '是', isShow: '是',
itemList: ['ACEI', 'ARB', '利尿剂', 'β受体阻滞剂', '钙拮抗剂', '其他'], itemList: ['ACEI', 'ARB', '利尿剂', 'β受体阻滞剂', '钙拮抗剂', '其他'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.CYJL['CYJL-JZ-ARR'], value: this.codeValue.CYJL['CYJL-JZ-ARR'],
}, },
], ],
@ -434,6 +473,7 @@ const mixin = {
Fcode: 'CYJL-TZ', Fcode: 'CYJL-TZ',
isShow: '是', isShow: '是',
itemList: ['他汀类', '烟酸及其衍生物', '贝特类', '胆固醇吸收抑制剂', '其他'], itemList: ['他汀类', '烟酸及其衍生物', '贝特类', '胆固醇吸收抑制剂', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.CYJL['CYJL-TZ-ARR'], value: this.codeValue.CYJL['CYJL-TZ-ARR'],
}, },
], ],
@ -446,6 +486,15 @@ const mixin = {
Fcode: 'CYJL-JT', Fcode: 'CYJL-JT',
isShow: '是', isShow: '是',
itemList: ['胰岛素', '磺酰脲类', '双胍类', 'α糖苷酶抑制剂', '胰岛素增敏剂', '非磺酰脲类促胰岛素分泌剂', '其他'], itemList: ['胰岛素', '磺酰脲类', '双胍类', 'α糖苷酶抑制剂', '胰岛素增敏剂', '非磺酰脲类促胰岛素分泌剂', '其他'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.CYJL['CYJL-JT-ARR'], value: this.codeValue.CYJL['CYJL-JT-ARR'],
}, },
], ],
@ -481,6 +530,7 @@ const mixin = {
'言语训练(ST)', '言语训练(ST)',
'其他(认知训练、吞咽治疗、心理治疗、理疗)', '其他(认知训练、吞咽治疗、心理治疗、理疗)',
], ],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.CYJL['KFZL-ZLFS'], value: this.codeValue.CYJL['KFZL-ZLFS'],
}, },
], ],
@ -493,6 +543,8 @@ const mixin = {
isShow: '是', isShow: '是',
code: 'KFZL-ZLCS', code: 'KFZL-ZLCS',
itemList: ['床旁', '康复科'], itemList: ['床旁', '康复科'],
itemIsChecked: [{ checked: false }, { checked: false }],
value: this.codeValue.CYJL['KFZL-ZLCS'], value: this.codeValue.CYJL['KFZL-ZLCS'],
}, },
], ],
@ -520,6 +572,7 @@ const mixin = {
checkType: 3, checkType: 3,
code: 'JKJY-XJFS', code: 'JKJY-XJFS',
itemList: ['集体病区教育', '一对一教育', '其他'], itemList: ['集体病区教育', '一对一教育', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.CYJL['JKJY-XJFS'], value: this.codeValue.CYJL['JKJY-XJFS'],
}, },
], ],
@ -548,6 +601,17 @@ const mixin = {
Fcode: 'CYQK-LYFS', Fcode: 'CYQK-LYFS',
isShow: '死亡', isShow: '死亡',
itemList: ['呼吸循环衰竭', '脑血管病', '肺部感染', '消化道出血', '急性肾功能衰竭', '损伤和中毒', '不详', '其他'], itemList: ['呼吸循环衰竭', '脑血管病', '肺部感染', '消化道出血', '急性肾功能衰竭', '损伤和中毒', '不详', '其他'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.CYJL['CYQK-SWYY'], value: this.codeValue.CYJL['CYQK-SWYY'],
showIpt: true, showIpt: true,
showIptItem: '其他', showIptItem: '其他',
@ -617,6 +681,16 @@ const mixin = {
checkType: 3, checkType: 3,
code: 'CYQK-CYDY', code: 'CYQK-CYDY',
itemList: ['降压药', '降糖药', '调脂药', '抗凝药', '抗血小板药', '中药治疗', '其他', '无'], itemList: ['降压药', '降糖药', '调脂药', '抗凝药', '抗血小板药', '中药治疗', '其他', '无'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.CYJL['CYQK-CYDY'], value: this.codeValue.CYJL['CYQK-CYDY'],
}, },
], ],
@ -646,6 +720,7 @@ const mixin = {
checkType: 3, checkType: 3,
code: 'TSCX-LCBX', code: 'TSCX-LCBX',
itemList: ['TIA', '脑梗塞', '脑室出血', '蛛网膜下'], itemList: ['TIA', '脑梗塞', '脑室出血', '蛛网膜下'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['TSCX-LCBX'], value: this.codeValue.TSCX['TSCX-LCBX'],
}, },
{ {
@ -659,6 +734,7 @@ const mixin = {
checkType: 3, checkType: 3,
code: 'TSCX-NCX', code: 'TSCX-NCX',
itemList: ['头痛', '癫痫发作', '其他'], itemList: ['头痛', '癫痫发作', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['TSCX-NCX'], value: this.codeValue.TSCX['TSCX-NCX'],
}, },
{ {
@ -705,6 +781,7 @@ const mixin = {
title: '左侧', title: '左侧',
code: 'XGWZ-ZUO', code: 'XGWZ-ZUO',
itemList: ['-1 大脑前动脉 ACA', '-2 大脑中动脉 MCA', '-3 大脑后动脉 PCA', '其他'], itemList: ['-1 大脑前动脉 ACA', '-2 大脑中动脉 MCA', '-3 大脑后动脉 PCA', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['XGWZ-ZUO'], value: this.codeValue.TSCX['XGWZ-ZUO'],
iptValue: this.codeValue.TSCX['XGWZ-ZUO-OTHER'], iptValue: this.codeValue.TSCX['XGWZ-ZUO-OTHER'],
iptCode: 'XGWZ-ZUO-OTHER', iptCode: 'XGWZ-ZUO-OTHER',
@ -715,6 +792,7 @@ const mixin = {
title: '右侧', title: '右侧',
code: 'XGWZ-YOU', code: 'XGWZ-YOU',
itemList: ['-1 大脑前动脉 ACA', '-2 大脑中动脉 MCA', '-3 大脑后动脉 PCA', '其他'], itemList: ['-1 大脑前动脉 ACA', '-2 大脑中动脉 MCA', '-3 大脑后动脉 PCA', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['XGWZ-YOU'], value: this.codeValue.TSCX['XGWZ-YOU'],
iptValue: this.codeValue.TSCX['XGWZ-YOU-OTHER'], iptValue: this.codeValue.TSCX['XGWZ-YOU-OTHER'],
iptCode: 'XGWZ-YOU-OTHER', iptCode: 'XGWZ-YOU-OTHER',
@ -760,6 +838,7 @@ const mixin = {
title: '左侧', title: '左侧',
code: 'TSCX-ZLFS-ZUO', code: 'TSCX-ZLFS-ZUO',
itemList: ['STA/MCA 搭桥', 'STA 贴敷', '颞肌贴敷', '硬脑膜贴敷', '其他'], itemList: ['STA/MCA 搭桥', 'STA 贴敷', '颞肌贴敷', '硬脑膜贴敷', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['TSCX-ZLFS-ZUO'], value: this.codeValue.TSCX['TSCX-ZLFS-ZUO'],
iptValue: this.codeValue.TSCX['TSCX-ZLFS-ZUO-OTHER'], iptValue: this.codeValue.TSCX['TSCX-ZLFS-ZUO-OTHER'],
iptCode: 'TSCX-ZLFS-ZUO-OTHER', iptCode: 'TSCX-ZLFS-ZUO-OTHER',
@ -770,6 +849,7 @@ const mixin = {
title: '右侧', title: '右侧',
code: 'TSCX-ZLFS-YOU', code: 'TSCX-ZLFS-YOU',
itemList: ['STA/MCA 搭桥', 'STA 贴敷', '颞肌贴敷', '硬脑膜贴敷', '其他'], itemList: ['STA/MCA 搭桥', 'STA 贴敷', '颞肌贴敷', '硬脑膜贴敷', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['TSCX-ZLFS-YOU'], value: this.codeValue.TSCX['TSCX-ZLFS-YOU'],
iptValue: this.codeValue.TSCX['TSCX-ZLFS-YOU-OTHER'], iptValue: this.codeValue.TSCX['TSCX-ZLFS-YOU-OTHER'],
iptCode: 'TSCX-ZLFS-YOU-OTHER', iptCode: 'TSCX-ZLFS-YOU-OTHER',
@ -793,6 +873,14 @@ const mixin = {
Fcode: 'TSCX-SSZL', Fcode: 'TSCX-SSZL',
isShow: '是', isShow: '是',
itemList: ['无', '出血', '栓塞', '继发性癫痫', '感染', '其他'], itemList: ['无', '出血', '栓塞', '继发性癫痫', '感染', '其他'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.TSCX['TSCX-BFZ'], value: this.codeValue.TSCX['TSCX-BFZ'],
}, },
], ],
@ -892,6 +980,7 @@ const mixin = {
isShow: '是', isShow: '是',
type: 3, type: 3,
itemList: ['栓塞术', '血肿清除术', 'AVM 切除术', '放射外科手术', '复合手术'], itemList: ['栓塞术', '血肿清除术', 'AVM 切除术', '放射外科手术', '复合手术'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }, { checked: false }],
value: this.codeValue.TSCX['TSCX-AVM-ZLCL'], value: this.codeValue.TSCX['TSCX-AVM-ZLCL'],
}, },
{ {
@ -907,6 +996,7 @@ const mixin = {
isShow: '是', isShow: '是',
type: 3, type: 3,
itemList: ['无', '颅内出血', '脑梗死', '其他'], itemList: ['无', '颅内出血', '脑梗死', '其他'],
itemIsChecked: [{ checked: false }, { checked: false }, { checked: false }, { checked: false }],
showOther: '无', showOther: '无',
value: this.codeValue.TSCX['TSCX-SFSSZL-BFZ'], value: this.codeValue.TSCX['TSCX-SFSSZL-BFZ'],
showIpt: true, showIpt: true,
@ -929,12 +1019,28 @@ const mixin = {
title: '左侧', title: '左侧',
code: 'TSCX-AVM-ZUO', code: 'TSCX-AVM-ZUO',
itemList: ['额叶', '顶叶', '颞叶', '枕叶', '小脑', '深部'], itemList: ['额叶', '顶叶', '颞叶', '枕叶', '小脑', '深部'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.TSCX['TSCX-AVM-ZUO'], value: this.codeValue.TSCX['TSCX-AVM-ZUO'],
}, },
{ {
title: '右侧', title: '右侧',
code: 'TSCX-AVM-YOU', code: 'TSCX-AVM-YOU',
itemList: ['额叶', '顶叶', '颞叶', '枕叶', '小脑', '深部'], itemList: ['额叶', '顶叶', '颞叶', '枕叶', '小脑', '深部'],
itemIsChecked: [
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
{ checked: false },
],
value: this.codeValue.TSCX['TSCX-AVM-YOU'], value: this.codeValue.TSCX['TSCX-AVM-YOU'],
}, },
{ {

406
src/pages/outside/outside.vue

@ -1,15 +1,22 @@
<template> <template>
<div class="w-full flex flex-column flex-wrap" style="padding-bottom: 20px"> <div class="w-full flex flex-col flex-wrap" style="padding-bottom: 20px">
<!-- :style="{ paddingTop: detailsData.valueType ? '28px' : '28px' }" -->
<div class="w-full" v-for="(item, index) in testList" :key="index"> <div class="w-full" v-for="(item, index) in testList" :key="index">
<template v-if="item.testType === 1"> <template v-if="item.testType === 1">
<Test :answer-list="answerList" v-if="type" class="w-full" :list="item.content" /> <Test
:testIndex="index"
@getCollaoseHeight="getCollaoseHeight"
:can-change="false"
:answer-list="answerList"
v-if="type"
class="w-full"
:list="item.content"
/>
</template> </template>
<u-collapse <u-collapse
:head-style="headerStyle" :head-style="headerStyle"
:item-style="itemStyle" :item-style="itemStyle"
class="mb-2 w-full" class="mb-2 w-full"
v-if="item.testType === 2" v-if="item.testType === 2 && showCol(item.Fcode, item.isShow)"
:bordered="false" :bordered="false"
expand-icon-position="right" expand-icon-position="right"
:ref="'collapseView' + index" :ref="'collapseView' + index"
@ -18,6 +25,7 @@
<Test <Test
:testIndex="index" :testIndex="index"
@getCollaoseHeight="getCollaoseHeight" @getCollaoseHeight="getCollaoseHeight"
:can-change="true"
:answer-list="answerList" :answer-list="answerList"
v-if="type" v-if="type"
class="w-full" class="w-full"
@ -31,11 +39,25 @@
<div class="mb-2">病因诊断为动静脉畸形AVM可选择填写动静脉畸形AVM登记表</div> <div class="mb-2">病因诊断为动静脉畸形AVM可选择填写动静脉畸形AVM登记表</div>
<div>病因诊断为烟雾病可选择填写烟雾病登记表</div> <div>病因诊断为烟雾病可选择填写烟雾病登记表</div>
</div> </div>
<div class="ocr-open-box" @click="openOcr">OCR</div>
<u-modal v-model="showBasic" title="确定选择后将提交识别到的内容" :show-cancel-button="true" @confirm="submitBasicData">
<view class="slot-content">
<scroll-view scroll-y style="height: 750rpx">
<div v-for="(item, index) in basicList" :key="index" class="modal-content flex justify-between items-center">
<u-checkbox v-model="item.checked" :name="item.questionCode">
<div>{{ item.name }}</div>
</u-checkbox>
<div class="flex items-center fz-16">{{ item.answer }}</div>
</div>
</scroll-view>
</view>
</u-modal>
</div> </div>
</template> </template>
<script> <script>
import { mapState } from 'vuex'; import { mapState } from 'vuex';
import Mixin from './mixin'; import Mixin from './mixin';
import cloneDeep from 'lodash/cloneDeep';
export default { export default {
name: 'outside', name: 'outside',
@ -60,10 +82,17 @@ export default {
backgroundColor: '#fff', backgroundColor: '#fff',
}, },
itemStyle: { marginBottom: '8px' }, itemStyle: { marginBottom: '8px' },
showBasic: false,
codeAndTitle: [],
basicList: [],
}; };
}, },
computed: { ...mapState('home', ['InputCode', 'firstAidId']) }, computed: { ...mapState('carbasics', ['InputCode', 'firstAidId', 'isRefresh', 'basicData', 'detailValueType']) },
methods: { methods: {
// ocr
openOcr() {
uni.navigateTo({ url: '/pages/camera/camera' });
},
// , // ,
showCol(code, isShow) { showCol(code, isShow) {
console.log('code, isShow: ', code, isShow); console.log('code, isShow: ', code, isShow);
@ -87,80 +116,13 @@ export default {
return true; return true;
} }
}, },
//
back() {
if (this.type === 'RYPG') {
this.$router.push('/info');
} else if (this.type === 'CYJL') {
this.type = 'SSXG';
document.title = '手术相关';
this.afterStr = '出院记录';
this.beforeStr = '主要检查';
} else if (this.type === 'SSXG') {
this.type = 'ZYJC';
document.title = '主要检查';
this.afterStr = '手术相关';
this.beforeStr = '入院评估';
} else if (this.type === 'ZYJC') {
this.type = 'RYPG';
document.title = '入院评估';
this.afterStr = '主要检查';
this.beforeStr = '基本信息';
} else if (this.type === 'TSCX') {
this.type = 'CYJL';
document.title = '出院记录';
this.afterStr = '特殊登记';
this.beforeStr = '手术相关';
}
setTimeout(() => {
this.getAnswer();
}, 50);
this.visible = false;
},
//
go() {
// RYPG(),ZYJC(),SSXG(),CYJL(),TSCX()
if (this.type !== 'TSCX') {
if (this.type === 'RYPG') {
this.type = 'ZYJC';
document.title = '主要检查';
this.afterStr = '手术相关';
this.beforeStr = '入院评估';
} else if (this.type === 'ZYJC') {
this.type = 'SSXG';
document.title = '手术相关';
this.afterStr = '出院记录';
this.beforeStr = '主要检查';
} else if (this.type === 'SSXG') {
this.type = 'CYJL';
document.title = '出院记录';
this.afterStr = '特殊登记';
this.beforeStr = '手术相关';
} else if (this.type === 'CYJL') {
this.type = 'TSCX';
document.title = '特殊登记';
this.afterStr = '无数据';
this.beforeStr = '出院记录';
}
setTimeout(() => {
this.getAnswer();
}, 50);
this.visible = false;
}
},
getHistory() {
// for (var i = 0; i <= window.history.length - (this.historyNum + this.backPageNum); i++) {
// window.history.back(-1);
// }
this.$router.push('/patient-line');
},
// //
// codeListcode value // codeListcode value
// codeList,mountedgetTest // codeList,getTest
getTest() { getTest() {
for (let i = 0; i < this.list.length; i++) { for (let i = 0; i < this.list.length; i++) {
if (this.list[i].name === this.type) { if (this.list[i].name === this.type) {
this.testList = this.list[i].testList; this.testList = [...this.list[i].testList];
break; break;
} }
} }
@ -185,7 +147,6 @@ export default {
}, },
// () // ()
reassign(recordList) { reassign(recordList) {
console.log('recordList: ', recordList);
for (let key in this.codeValue[this.type]) { for (let key in this.codeValue[this.type]) {
for (let value in recordList) { for (let value in recordList) {
if (key === value) { if (key === value) {
@ -201,36 +162,124 @@ export default {
} }
// list // list
this.reassignList(); this.reassignList();
// checkedList,,list,list
this.changeCheckStatus();
// codetitle
this.getAllCodeAndTitle();
// type // type
this.getTest(); this.getTest();
}, },
handleOk(num) { // ,ture
// RYPG(),ZYJC(Toast /),SSXG(/),CYJL() changeCheckStatus() {
if (num === 0) { for (let i = 0; i < this.list.length; i++) {
this.type = 'RYPG'; const item = this.list[i];
document.title = '入院评估'; if (item.testList.length) {
this.afterStr = '主要检查'; for (let j = 0; j < item.testList.length; j++) {
this.beforeStr = '基本信息'; const itemJ = item.testList[j];
} else if (num === 1) { if (itemJ.content.length) {
this.type = 'ZYJC'; for (let k = 0; k < itemJ.content.length; k++) {
document.title = '主要检查'; const itemK = itemJ.content[k];
this.afterStr = '手术相关'; if (itemK.length) {
this.beforeStr = '入院评估'; for (let m = 0; m < itemK.length; m++) {
} else if (num === 2) { if (Array.isArray(itemK[m].value)) {
this.type = 'SSXG'; for (let n = 0; n < itemK[m].itemList.length; n++) {
document.title = '手术相关'; const itemN = itemK[m].itemList[n];
this.afterStr = '出院记录'; // console.log('itemN: ', itemN);
this.beforeStr = '主要检查'; itemK[m].itemIsChecked[n].checked = this.getCheckedStatus(itemN, itemK[m].value);
} else if (num === 3) { }
this.type = 'CYJL'; }
document.title = '出院记录'; }
this.afterStr = '无数据'; }
this.beforeStr = '手术相关'; }
}
}
}
}
},
//
getCheckedStatus(item, valueList) {
for (let i = 0; i < valueList.length; i++) {
if (valueList[i] === item) {
return true;
} else if (i === valueList.length - 0) {
return false;
}
}
},
// code
getAllCodeAndTitle() {
let Arr = [];
for (let i = 0; i < this.list.length; i++) {
const item = this.list[i];
if (item.testList.length) {
for (let j = 0; j < item.testList.length; j++) {
const itemJ = item.testList[j];
if (itemJ.content.length) {
for (let k = 0; k < itemJ.content.length; k++) {
const itemK = itemJ.content[k];
if (itemK.length) {
for (let m = 0; m < itemK.length; m++) {
const itemM = itemK[m];
const itemMm = itemK[m - 1];
let obj = null;
if (itemM.code && itemM.title) {
obj = {
code: itemM.code,
title: itemM.title,
};
} else if (itemM.code && !itemM.title) {
obj = {
code: itemM.code,
title: itemMm.title,
};
}
if (obj) {
Arr.push(obj);
}
}
}
}
}
}
}
}
this.codeAndTitle = Arr;
},
// code,title
getNameByCode() {
let Arr = [...this.basicList];
for (let k = 0; k < Arr.length; k++) {
for (let i = 0; i < this.codeAndTitle.length; i++) {
const item = this.codeAndTitle[i];
if (Arr[k].questionCode === item.code) {
Arr[k].name = item.title;
}
}
}
this.basicList = [...Arr];
},
// ,, //
getAnswerByType(obj) {
let answer = obj.answer;
if (typeof (answer - 0) === 'number') {
obj.type === 0; //
answer = this.$moment(answer - 0).format('YYYY-MM-DD HH:mm');
} else if (Array.isArray(answer)) {
let str = '';
for (let i = 0; i < answer.length; i++) {
if (i === answer.length - 0) {
str += answer[i];
} else {
str = str + answer[i] + ',';
}
}
obj.type === 1; //
answer = str;
} else {
obj.type === 2; //
} }
setTimeout(() => { obj.answer = answer;
this.getAnswer(); return obj;
}, 50);
this.visible = false;
}, },
// //
getCollaoseHeight(index) { getCollaoseHeight(index) {
@ -241,75 +290,84 @@ export default {
that.$refs[`collapseView${index}`][0].init(); that.$refs[`collapseView${index}`][0].init();
}); });
}, },
// modal,,
//
async submitBasicData() {
let codeAndAnswerList = [];
for (let i = 0; i < this.basicList.length; i++) {
const item = this.basicList[i];
if (item.checked) {
let obj = {
questionCode: item.questionCode,
answer: this.basicData[i].answer,
};
codeAndAnswerList.push(obj);
}
}
const param = {
codeAndAnswerList,
firstAidId: this.firstAidId,
};
await this.$u.api.setRecord(param);
this.getAnswer();
},
},
watch: {
isRefresh() {
let Arr = [];
const basicData = cloneDeep(this.basicData);
for (let i = 0; i < basicData.length; i++) {
Arr.push(basicData[i]);
}
for (let i = 0; i < Arr.length; i++) {
Arr[i] = this.getAnswerByType(Arr[i]);
}
this.basicList = [...Arr];
this.getNameByCode();
this.showBasic = true;
},
}, },
// -- // --
onLoad() { onLoad() {
this.type = this.InputCode; this.type = this.InputCode;
if (this.type === 'RYPG') { // if (this.type === 'RYPG') {
this.afterStr = '主要治疗'; // this.afterStr = '';
this.beforeStr = '基本信息'; // this.beforeStr = '';
} else if (this.type === 'SSXG') { // } else if (this.type === 'SSXG') {
this.afterStr = '出院记录'; // this.afterStr = '';
this.beforeStr = '入院评估'; // this.beforeStr = '';
} else if (this.type === 'CYJL') { // } else if (this.type === 'CYJL') {
this.afterStr = '无数据'; // this.afterStr = '';
this.beforeStr = '主要治疗'; // this.beforeStr = '';
} // }
// this.tips = '...'; // this.tips = '...';
this.getAnswer(); this.getAnswer();
}, },
}; };
</script> </script>
<style scoped> <style scoped>
.page-box { .modal-content {
height: 40px; padding: 16px;
margin: 12px 0 0 0;
padding: 0 16px;
color: #1890ff;
font-size: 16px;
}
.page-img {
height: 20px;
}
.back-btn {
height: 44px;
margin: 24px 16px;
}
.active-color {
color: #5892ff;
}
.footer-btn {
font-size: 16px;
border-top: 1px solid #ccc;
}
.footer-box {
position: absolute;
bottom: 0;
left: 0;
height: 60px;
width: 100%;
}
/deep/.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header {
height: 54px;
line-height: 30px;
font-size: 16px;
/* color: #1890ff; */
color: rgba(0, 0, 0, 0.65);
font-weight: bold;
}
/deep/.ant-collapse-content > .ant-collapse-content-box {
background: #ededed;
padding: 0;
} }
/deep/.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box { .slot-content {
padding-top: 0; font-size: 28rpx;
color: rgba(0, 0, 0, 0.85);
padding-left: 30rpx;
} }
/deep/.ant-spin-nested-loading > div > .ant-spin { .ocr-open-box {
position: fixed; position: fixed;
top: 50%; right: 0;
margin-top: -50%; top: 40%;
height: 40px;
width: 40px;
font-size: 16px;
background: #1890ff;
color: white;
display: flex;
align-items: center;
justify-content: center;
border-radius: 20px 20px 0 20px;
box-shadow: 0 0 4px #1890ff;
} }
.explain-box { .explain-box {
height: 118px; height: 118px;
@ -318,38 +376,4 @@ export default {
font-size: 12px; font-size: 12px;
color: #666; color: #666;
} }
.switch-box {
height: 120px;
width: 120px;
position: fixed;
right: 0;
bottom: 40px;
/* border: 2px solid red; */
transition: all 0.5s;
}
.switch-box-btn-box {
position: absolute;
overflow: hidden;
transition: all 0.5s;
line-height: 34px;
text-align: center;
font-size: 12px;
color: #fff;
background-color: #1890ff;
border-radius: 50%;
box-shadow: 0 0 5px #1890ff;
}
.change-box {
right: 2px;
bottom: 2px;
position: absolute;
height: 60px;
width: 60px;
background-color: #1890ff;
box-shadow: 0 0 10px #1890ff;
border-radius: 50%;
text-align: center;
line-height: 60px;
color: #fff;
}
</style> </style>

1
src/pages/patientLine/patientLine.vue

@ -116,6 +116,7 @@ export default {
methods: { methods: {
...mapMutations('carbasics', ['setInputCode']), ...mapMutations('carbasics', ['setInputCode']),
jump(code, path) { jump(code, path) {
console.log('path: ', path);
this.setInputCode(code ? code : 'RYPG'); this.setInputCode(code ? code : 'RYPG');
uni.navigateTo({ url: path }); uni.navigateTo({ url: path });
}, },

37
src/pages/task-page/task-page.vue

@ -2,12 +2,16 @@
<view :style="{ height: height }" class="flex flex-col overflow-hidden u-font-14"> <view :style="{ height: height }" class="flex flex-col overflow-hidden u-font-14">
<view class="container flex flex-col flex-1 mx-auto overflow-hidden bg-gray-100"> <view class="container flex flex-col flex-1 mx-auto overflow-hidden bg-gray-100">
<!-- 角色栏 --> <!-- 角色栏 -->
<Roles /> <Roles style="z-index: 100" />
<!-- 日常任务面板 --> <!-- 日常任务面板 -->
<Globals v-if="globals.length" /> <Globals v-if="globals.length" />
<!-- 任务详情 --> <!-- 任务详情 -->
<div v-if="globalData && permanents.length" class="flex flex-1"> <div v-if="globalData && permanents.length" class="flex flex-1">
<PatientList v-if="showPage === 'function'" class="flex flex-1" /> <PatientList v-if="showPage === 'function'" class="flex flex-1" />
<div v-else class="flex flex-1 items-center justify-center flex-col">
<div>详情内容在详情页内查看</div>
<div class="text-blue-500" @click="jumpDetail">点击此处跳转</div>
</div>
</div> </div>
</view> </view>
</view> </view>
@ -24,7 +28,7 @@ export default {
count: 0, count: 0,
chooseItem: false, chooseItem: false,
name: '', name: '',
url: '', urlData: null,
showStatus: 0, showStatus: 0,
showPage: '', showPage: '',
}; };
@ -35,9 +39,10 @@ export default {
...mapState('user', ['user', 'token']), ...mapState('user', ['user', 'token']),
...mapState('role', ['visibleRoles', 'roleId']), ...mapState('role', ['visibleRoles', 'roleId']),
...mapState('project', ['project']), ...mapState('project', ['project']),
...mapState('carbasics', ['globalData']),
...mapGetters('user', ['userId']),
...mapGetters('task', ['globals']), ...mapGetters('task', ['globals']),
...mapGetters('project', ['projectId']), ...mapGetters('project', ['projectId']),
...mapState('carbasics', ['globalData']),
}, },
async onLoad(options) { async onLoad(options) {
@ -70,9 +75,24 @@ export default {
}, },
globalData(val) { globalData(val) {
console.log('val: ', val);
this.urlData = val;
var strList = val.url.split('/'); var strList = val.url.split('/');
this.showPage = strList[strList.length - 1]; this.showPage = strList[strList.length - 1];
}, },
showPage(val) {
if (val !== 'function') {
let jumpUrl = `/pages/detail-webview/detail-webview?jumpUrl=${this.urlData.url}&projectId=${this.projectId}&roleId=${this.roleId}&userId=${this.userId}`;
for (let key in this.urlData) {
if (key !== 'url') {
jumpUrl += `&${key}=${this.urlData[key]}`;
}
}
console.log('jumpUrl: ', jumpUrl);
uni.navigateTo({ url: jumpUrl });
}
},
}, },
mounted() { mounted() {
@ -92,6 +112,17 @@ export default {
...mapMutations('project', ['setProject', 'setProjectName', 'setOrganData']), ...mapMutations('project', ['setProject', 'setProjectName', 'setOrganData']),
...mapMutations('role', ['setInvisibleRoles', 'setVisibleRoles', 'setRoleId']), ...mapMutations('role', ['setInvisibleRoles', 'setVisibleRoles', 'setRoleId']),
//
jumpDetail() {
let jumpUrl = `/pages/detail-webview/detail-webview?jumpUrl=${this.urlData.url}&projectId=${this.projectId}&roleId=${this.roleId}&userId=${this.userId}`;
for (let key in this.urlData) {
if (key !== 'url') {
jumpUrl += `&${key}=${this.urlData[key]}`;
}
}
uni.navigateTo({ url: jumpUrl });
},
// //
async initPlanTasks() { async initPlanTasks() {
this.setPrevPlaceholderTasks(); // this.setPrevPlaceholderTasks(); //

8
src/store/carbasics/mutations.js

@ -7,6 +7,14 @@ const mutations = {
setFirstAidId(state, id) { setFirstAidId(state, id) {
state.firstAidId = id; state.firstAidId = id;
}, },
/**
* 存储当前插件的param参数,包括url和其他具体参数
* @param { object } state
* @param { string } type
*/
setDetailValueType(state, type) {
state.detailValueType = type;
},
/** /**
* 存储当前插件的param参数,包括url和其他具体参数 * 存储当前插件的param参数,包括url和其他具体参数
* @param { object } state * @param { object } state

5
src/store/carbasics/state.js

@ -1,8 +1,5 @@
const state = { const state = {
detailsData: { detailValueType: 0, // 是否是演示模式 0:正式,1:演示
valueType: 1, // 是否是演示模式 0:正式,1:演示
type: 0, // 急救类型: 0:神内,1:神外
}, // 当前项目在暴风眼内的信息
firstAidId: '', // 当前正在进行数据录入的患者的急救id firstAidId: '', // 当前正在进行数据录入的患者的急救id
globalData: null, // 插件的跳转路径及参数 globalData: null, // 插件的跳转路径及参数
refreshList: 0, // 依据此值去重新请求病例列表(当从创建病例界面 创建了病例之后,修改此值,并且返回病例列表界面,病例列表重新查询数据) refreshList: 0, // 依据此值去重新请求病例列表(当从创建病例界面 创建了病例之后,修改此值,并且返回病例列表界面,病例列表重新查询数据)

Loading…
Cancel
Save