18 changed files with 1196 additions and 730 deletions
@ -0,0 +1,78 @@ |
|||
<template> |
|||
<div class="flex-column"> |
|||
<a-form :form="form"> |
|||
<div v-for="(item, index) in caseList" :key="index" style="width: 100%"> |
|||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" :label="item.name" label-align="left"> |
|||
<a-form-item v-if="item.optionStatus === 1" :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol"> |
|||
<a-input-number |
|||
placeholder="最小值" |
|||
style="width: 100px; margin-left: 40px" |
|||
:min="0" |
|||
@change="onChange($event, item.code, 'min')" |
|||
/>~ |
|||
<a-input-number placeholder="最大值" style="width: 100px" :min="0" @change="onChange($event, item.code, 'max')" /> |
|||
</a-form-item> |
|||
<!-- <a-form-item |
|||
:label-col="formItemLayout.labelCol" |
|||
:wrapper-col="formItemLayout.wrapperCol" |
|||
v-if="item.children.length > 0" |
|||
label-align="left" |
|||
> --> |
|||
<CaseKTTwo v-if="item.children.length > 0" :case-list="item.children" style="margin-top: 40px" /> |
|||
<!-- </a-form-item> --> |
|||
</a-form-item> |
|||
</div> |
|||
</a-form> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapState, mapMutations } from 'vuex'; |
|||
import { searchParam } from 'config/api'; |
|||
import CaseKTTwo from './CaseKTTwo'; |
|||
const formItemLayout = { |
|||
labelCol: { span: 5 }, |
|||
wrapperCol: { span: 18 }, |
|||
}; |
|||
const tailItemLayout = { wrapperCol: { span: 18, offset: 4 } }; |
|||
export default { |
|||
name: 'CaseKTOne', |
|||
components: { CaseKTTwo }, |
|||
props: { |
|||
caseList: { |
|||
type: Array, |
|||
default: () => [], |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
formItemLayout, |
|||
tailItemLayout, |
|||
form: this.$form.createForm(this, { name: 'page-add' }), |
|||
form1: this.$form.createForm(this, { name: 'search' }), |
|||
}; |
|||
}, |
|||
|
|||
methods: { |
|||
...mapMutations('home', ['setCaseData']), |
|||
onChange(e, code, str) { |
|||
console.log(e); |
|||
let obj = {}; |
|||
if (str === 'min') { |
|||
obj = { |
|||
code, |
|||
start: e, |
|||
}; |
|||
} else { |
|||
obj = { |
|||
code, |
|||
end: e, |
|||
}; |
|||
} |
|||
this.setCaseData(obj); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="stylus" scoped></style> |
@ -0,0 +1,82 @@ |
|||
<template> |
|||
<div class="flex-column"> |
|||
<a-form :form="form"> |
|||
<div v-for="(item, index) in caseList" :key="index" style="width: 100%"> |
|||
<a-form-item :label-col="formItemLayout.labelCol" :wrapper-col="formItemLayout.wrapperCol" :label="item.name"> |
|||
<a-form-item |
|||
v-if="item.optionStatus === 1" |
|||
:label-col="formItemLayout.labelCol" |
|||
:wrapper-col="formItemLayout.wrapperCol" |
|||
label-align="left" |
|||
> |
|||
<a-input-number |
|||
placeholder="最小值" |
|||
style="width: 100px; margin-left: 40px" |
|||
:min="0" |
|||
@change="onChange1($event, item.code, 'min')" |
|||
/>~ |
|||
<a-input-number placeholder="最大值" style="width: 100px" :min="0" @change="onChange1($event, item.code, 'max')" /> |
|||
</a-form-item> |
|||
<!-- <a-form-item |
|||
:label-col="formItemLayout.labelCol" |
|||
:wrapper-col="formItemLayout.wrapperCol" |
|||
v-if="item.children.length > 0" |
|||
label-align="left" |
|||
> --> |
|||
<CaseKTOne v-if="item.children.length > 0" :case-list="item.children" style="margin-top: 40px" /> |
|||
<!-- </a-form-item> --> |
|||
</a-form-item> |
|||
</div> |
|||
</a-form> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapState, mapMutations } from 'vuex'; |
|||
import CaseKTOne from './CaseKTOne'; |
|||
const formItemLayout = { |
|||
labelCol: { span: 6 }, |
|||
wrapperCol: { span: 18 }, |
|||
}; |
|||
const tailItemLayout = { wrapperCol: { span: 18, offset: 4 } }; |
|||
export default { |
|||
name: 'CaseKTOne', |
|||
components: { CaseKTOne }, |
|||
props: { |
|||
caseList: { |
|||
type: Array, |
|||
default: () => [], |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
formItemLayout, |
|||
tailItemLayout, |
|||
form: this.$form.createForm(this, { name: 'page-add' }), |
|||
form1: this.$form.createForm(this, { name: 'search' }), |
|||
activeKey: [], |
|||
}; |
|||
}, |
|||
|
|||
methods: { |
|||
...mapMutations('home', ['setCaseData']), |
|||
onChange1(e, code, str) { |
|||
let obj = {}; |
|||
if (str === 'min') { |
|||
obj = { |
|||
code, |
|||
start: e, |
|||
}; |
|||
} else { |
|||
obj = { |
|||
code, |
|||
end: e, |
|||
}; |
|||
} |
|||
this.setCaseData(obj); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="stylus" scoped></style> |
@ -0,0 +1,75 @@ |
|||
<template> |
|||
<!-- <div>数据统计组件</div> --> |
|||
<div style="width: 50%; height: 300px" class="chart-box"> |
|||
<div id="PiemapHos" style="height: 300px"></div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import { selByHosAllYBS } from 'config/api'; |
|||
import mixins from 'views/Mixin/mixin.js'; |
|||
import { mapState } from 'vuex'; |
|||
export default { |
|||
name: 'PiemapHos', |
|||
mixins: [mixins], |
|||
data() { |
|||
return { |
|||
// msg: 'Welcome to Your Vue.js App', |
|||
width: '', |
|||
height: '', |
|||
dataList: [], |
|||
}; |
|||
}, |
|||
computed: mapState('home', ['hospitalId']), |
|||
mounted() { |
|||
this.init(this.drawLine); |
|||
}, |
|||
methods: { |
|||
async drawLine() { |
|||
// 基于准备好的dom,初始化echarts实例 |
|||
let myChart = this.$echarts.init(document.getElementById('PiemapHos')); |
|||
// 绘制图表 |
|||
await this.getData(); |
|||
var option = { |
|||
tooltip: { trigger: 'item' }, |
|||
color: ['#FE9C58', '#7AEBFF', '#FFCC00', '#744CFF'], |
|||
legend: { top: 'bottom' }, |
|||
series: [ |
|||
{ |
|||
name: '生物样本数量', |
|||
type: 'pie', |
|||
radius: [20, 100], |
|||
center: ['50%', '50%'], |
|||
roseType: 'area', |
|||
itemStyle: { borderRadius: 8 }, |
|||
data: this.dataList, |
|||
}, |
|||
], |
|||
}; |
|||
myChart.setOption(option); |
|||
}, |
|||
async getData() { |
|||
try { |
|||
const params = { param: { hospitalId: this.hospitalId } }; |
|||
const res = await selByHosAllYBS(params); |
|||
const { code, msg, data } = res.data; |
|||
if (code === 200) { |
|||
console.log(data, 123); |
|||
for (let i = 0; i < data.length; i++) { |
|||
var obj = { |
|||
value: data[i].nums, |
|||
name: data[i].name, |
|||
}; |
|||
this.dataList.push(obj); |
|||
} |
|||
} else { |
|||
console.log(msg, 132); |
|||
} |
|||
} catch (error) { |
|||
console.log(error); |
|||
} |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="stylus" scoped ></style> |
File diff suppressed because it is too large
Loading…
Reference in new issue