Browse Source

消息推送,个人数据统计界面

master
lucky 4 years ago
parent
commit
a65e8f2efb
  1. 1
      src/components/BtnCom/BtnCon.vue
  2. 4
      src/config/api.js
  3. 8
      src/router/index.js
  4. 53
      src/views/Meeting/Meeting.vue
  5. 45
      src/views/PersonalStats/PersonalStats.vue

1
src/components/BtnCom/BtnCon.vue

@ -9,6 +9,7 @@
<div @click="jump('/biologicalSamples')" class="btn">生物样本</div> <div @click="jump('/biologicalSamples')" class="btn">生物样本</div>
<div @click="jump('/biologicalSampleSearch')" class="btn">生物样本搜索</div> <div @click="jump('/biologicalSampleSearch')" class="btn">生物样本搜索</div>
<div @click="jump('/messagePush')" class="btn">消息推送</div> <div @click="jump('/messagePush')" class="btn">消息推送</div>
<div @click="jump('/personalStats')" class="btn">个人数据统计</div>
</div> </div>
</template> </template>

4
src/config/api.js

@ -13,6 +13,7 @@ const patient = `${tcm}/patient`; // 患者相关接口
const imp = `${tcm}/import`; // 试题相关接口 const imp = `${tcm}/import`; // 试题相关接口
const inpatient = `${tcm}/inpatient`; // 对照组接口 const inpatient = `${tcm}/inpatient`; // 对照组接口
const statistics = `${tcm}/statistics`; // 数据统计相关接口 const statistics = `${tcm}/statistics`; // 数据统计相关接口
const conferenceRecords = `${tcm}/conferenceRecords`; // 会议纪要相关接口
// 保存患者病例信息 // 保存患者病例信息
export const saveCaseMes = params => axios.post(`${patient}/saveCaseMes`, params); export const saveCaseMes = params => axios.post(`${patient}/saveCaseMes`, params);
@ -42,3 +43,6 @@ export const countAnalysis = params => axios.post(`${statistics}/countAnalysis`,
// 查询每日病例统计 // 查询每日病例统计
export const countCase = params => axios.post(`${statistics}/countCase`, params); export const countCase = params => axios.post(`${statistics}/countCase`, params);
// 添加会议记录
export const saveConferenceRecords = params => axios.post(`${conferenceRecords}/save`, params);

8
src/router/index.js

@ -66,12 +66,18 @@ const routes = [
name: 'biologicalSampleSearch', name: 'biologicalSampleSearch',
component: () => import('@/views/BiologicalSampleSearch/BiologicalSampleSearch.vue'), component: () => import('@/views/BiologicalSampleSearch/BiologicalSampleSearch.vue'),
}, },
// 生物样本搜索 // 消息推送
{ {
path: '/messagePush', path: '/messagePush',
name: 'messagePush', name: 'messagePush',
component: () => import('@/views/MessagePush/MessagePush.vue'), component: () => import('@/views/MessagePush/MessagePush.vue'),
}, },
// 个人数据统计
{
path: '/personalStats',
name: 'personalStats',
component: () => import('@/views/PersonalStats/PersonalStats.vue'),
},
]; ];
const router = new VueRouter({ const router = new VueRouter({

53
src/views/Meeting/Meeting.vue

@ -16,7 +16,7 @@
<a-range-picker <a-range-picker
:placeholder="['开始时间', '结束时间']" :placeholder="['开始时间', '结束时间']"
@change="onChangeTime" @change="onChangeTime"
format="YYYY-MM-DD HH:mm" format="YYYY-MM-DD HH:mm:ss"
show-time show-time
style="width: 100%" style="width: 100%"
v-decorator="['time', rangeConfig]" v-decorator="['time', rangeConfig]"
@ -68,7 +68,11 @@
:wrapper-col="formItemLayout.wrapperCol" :wrapper-col="formItemLayout.wrapperCol"
label="参会人员" label="参会人员"
> >
<quill-editor :max-size="maxSize" :placeholder="placeholderParticipants" /> <quill-editor
:max-size="maxSize"
:placeholder="placeholderParticipants"
v-model="participants"
/>
</a-form-item> </a-form-item>
<!-- 研讨内容 --> <!-- 研讨内容 -->
<a-form-item <a-form-item
@ -76,7 +80,11 @@
:wrapper-col="formItemLayout.wrapperCol" :wrapper-col="formItemLayout.wrapperCol"
label="研讨内容" label="研讨内容"
> >
<quill-editor :max-size="maxSize" :placeholder="placeholderContent" /> <quill-editor
:max-size="maxSize"
:placeholder="placeholderContent"
v-model="discussionContent"
/>
</a-form-item> </a-form-item>
<!-- 会议纪要 --> <!-- 会议纪要 -->
<a-form-item <a-form-item
@ -84,7 +92,11 @@
:wrapper-col="formItemLayout.wrapperCol" :wrapper-col="formItemLayout.wrapperCol"
label="会议纪要" label="会议纪要"
> >
<quill-editor :max-size="maxSize" :placeholder="placeholderMeeting" /> <quill-editor
:max-size="maxSize"
:placeholder="placeholderMeeting"
v-model="meetingMinutes"
/>
</a-form-item> </a-form-item>
<a-form-item class="d-flex flex-row-reverse"> <a-form-item class="d-flex flex-row-reverse">
@ -99,6 +111,7 @@
<script> <script>
import QuillEditor from 'components/QuillEditor/QuillEditor.vue'; import QuillEditor from 'components/QuillEditor/QuillEditor.vue';
import moment from 'moment'; import moment from 'moment';
import { saveConferenceRecords } from 'config/api';
const formItemLayout = { const formItemLayout = {
labelCol: { span: 4 }, labelCol: { span: 4 },
@ -115,11 +128,11 @@ export default {
tailItemLayout, tailItemLayout,
form: this.$form.createForm(this, { name: 'page-add' }), form: this.$form.createForm(this, { name: 'page-add' }),
rangeConfig: { rules: [{ type: 'array', required: true, message: '会议时间不能为空' }] }, rangeConfig: { rules: [{ type: 'array', required: true, message: '会议时间不能为空' }] },
place: '', //
host: '', //
participants: '', // participants: '', //
content: '', // discussionContent: '', //
meetingMinutes: '', // meetingMinutes: '', //
startTime: '', //
endTime: '', //
placeholderParticipants: '请在此输入参会人员...', placeholderParticipants: '请在此输入参会人员...',
maxSize: 2048, maxSize: 2048,
placeholderContent: '请在此输入研讨内容...', placeholderContent: '请在此输入研讨内容...',
@ -132,6 +145,8 @@ export default {
onChangeTime(dates, dateStrings) { onChangeTime(dates, dateStrings) {
console.log('From: ', dates[0], ', to: ', dates[1]); console.log('From: ', dates[0], ', to: ', dates[1]);
console.log('From: ', dateStrings[0], ', to: ', dateStrings[1]); console.log('From: ', dateStrings[0], ', to: ', dateStrings[1]);
this.startTime = dateStrings[0];
this.endTime = dateStrings[1];
}, },
// //
@ -140,19 +155,19 @@ export default {
this.form.validateFieldsAndScroll(async (err, values) => { this.form.validateFieldsAndScroll(async (err, values) => {
if (!err) { if (!err) {
try { try {
// const param = values; const { host, place } = values;
// const params = { param }; const { startTime, endTime, participants, discussionContent, meetingMinutes } = this;
// console.log('params: ', params); const params = { param: { host, place, startTime, endTime, participants, meetingMinutes, discussionContent, taskId: '0' } };
// const res = await addPage(params); console.log('params: ', params);
// const { data, msg, code } = res.data; const res = await saveConferenceRecords(params);
// this.$emit('closeModal'); const { data, msg, code } = res.data;
// if (code === 200) { if (code === 200) {
// this.$message.success(''); this.$message.success('提交成功');
// } else { } else {
// throw msg; throw msg;
// } }
} catch (error) { } catch (error) {
// this.$message.error(error || ''); this.$message.error(error || '提交失败');
} }
} }
}); });

45
src/views/PersonalStats/PersonalStats.vue

@ -0,0 +1,45 @@
<template>
<div class="flex-wrap">
<div class="fill-width mb-3">
<a-card style="width: 100%; height: 400px" title="病例统计">
<treemap />
</a-card>
</div>
<div class="fill-width mb-3">
<a-card style="width: 100%; height: 400px" title="各院病例分析">
<categorymap />
</a-card>
</div>
<div class="fill-width mb-3">
<a-card style="width: 100%; height: 400px" title="每日病例统计">
<cisualmap />
</a-card>
</div>
<div class="fill-width">
<a-card style="width: 100%; height: 400px" title="各医院生物样本统计">
<piemap />
</a-card>
</div>
</div>
</template>
<script>
import Treemap from 'components/Echarts/Treemap.vue';
import Cisualmap from 'components/Echarts/Cisualmap.vue';
import Categorymap from 'components/Echarts/Categorymap.vue';
import Piemap from 'components/Echarts/Piemap.vue';
export default {
name: 'Index',
components: { Treemap, Cisualmap, Categorymap, Piemap },
data() {
return {
str: '',
showVideo: false,
};
},
methods: {},
};
</script>
<style lang="stylus" scoped></style>
Loading…
Cancel
Save