18 changed files with 708 additions and 80 deletions
@ -1,8 +1,8 @@ |
|||
VUE_APP_NODE_ENV=development |
|||
VUE_APP_BASE_URL=https://test.tall.wiki |
|||
VUE_APP_API_URL=https://test.tall.wiki/gateway |
|||
VUE_APP_BASE_URL=https://www.tall.wiki |
|||
VUE_APP_API_URL=https://www.tall.wiki/gateway |
|||
VUE_APP_MSG_URL=wss://www.tall.wiki/websocket/message/v4.0/ws |
|||
VUE_APP_PROJECT_PATH=https://test.tall.wiki/carBasicTall |
|||
VUE_APP_QUESTION_PATH=https://test.tall.wiki/carbasics |
|||
VUE_APP_PROJECT_PATH=https://www.tall.wiki/carBasicTall |
|||
VUE_APP_QUESTION_PATH=https://www.tall.wiki/carbasics |
|||
VUE_APP_VERSION=v3.1.0 |
|||
VUE_APP_PUBLIC_PATH=/carBasicCalendar/ |
|||
|
@ -1,8 +1,8 @@ |
|||
VUE_APP_NODE_ENV=production |
|||
VUE_APP_BASE_URL=https://test.tall.wiki |
|||
VUE_APP_API_URL=https://test.tall.wiki/gateway |
|||
VUE_APP_BASE_URL=https://www.tall.wiki |
|||
VUE_APP_API_URL=https://www.tall.wiki/gateway |
|||
VUE_APP_MSG_URL=wss://www.tall.wiki/websocket/message/v4.0/ws |
|||
VUE_APP_PROJECT_PATH=https://test.tall.wiki/carBasicTall |
|||
VUE_APP_QUESTION_PATH=https://test.tall.wiki/carbasics |
|||
VUE_APP_PROJECT_PATH=https://www.tall.wiki/carBasicTall |
|||
VUE_APP_QUESTION_PATH=https://www.tall.wiki/carbasics |
|||
VUE_APP_VERSION=v3.1.0 |
|||
VUE_APP_PUBLIC_PATH=/carBasicCalendar/ |
|||
|
@ -0,0 +1,90 @@ |
|||
<template> |
|||
<view class="volume-box"> |
|||
<scroll-view scroll-x style="height: 100%; width: 100%"> |
|||
<view class="flex justify-evenly"> |
|||
<view |
|||
class="flex flex-col items-center justify-center" |
|||
style="width: 159rpx; flex-shrink: 0" |
|||
v-for="(item, index) in btnList" |
|||
:key="index" |
|||
@click="jumpV(item.url)" |
|||
> |
|||
<!-- <img class="volume-img" src="@/static/image.png" alt="" /> --> |
|||
<img class="volume-img" :src="item.iconUrl || '@/static/image.png'" alt="" /> |
|||
<span class="mt-2" style="color: #40adff">{{ item.name }}</span> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapState, mapGetters } from 'vuex'; |
|||
export default { |
|||
data() { |
|||
return { |
|||
name: '', |
|||
url: '', |
|||
btnList: [], |
|||
}; |
|||
}, |
|||
computed: { |
|||
...mapState('user', ['user']), |
|||
...mapGetters('user', ['userId']), |
|||
}, |
|||
created() { |
|||
this.getInfo(); |
|||
}, |
|||
methods: { |
|||
// 获取按钮信息及跳转路径 |
|||
async getInfo() { |
|||
if (!this.user) { |
|||
setTimeout(() => { |
|||
this.getInfo(); |
|||
}, 10); |
|||
return; |
|||
} |
|||
const that = this; |
|||
const data = await that.$u.api.getQueryButton({}); |
|||
this.btnList = data; |
|||
console.log('data: ', data); |
|||
if (data && data.length) { |
|||
that.name = data[0].name; |
|||
that.url = data[0].url; |
|||
} else if (data && data.name) { |
|||
that.name = data.name; |
|||
that.url = data.url; |
|||
} else if (!data) { |
|||
setTimeout(() => { |
|||
that.getInfo(); |
|||
}, 500); |
|||
} |
|||
}, |
|||
// 跳转到问卷调查 |
|||
jumpV(url) { |
|||
if (this.user.phone) { |
|||
console.log('this.userId: ', this.userId); |
|||
debugger; |
|||
this.$u.route('pages/questionnaire-webview/questionnaire-webview', { u: this.userId, url: url }); |
|||
} else { |
|||
// this.$u.route('/pages/get-phone-power/get-phone-power'); |
|||
this.$u.route('/pages/phone-bind/phone-bind'); |
|||
} |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
<style scoped> |
|||
.volume-img { |
|||
height: 100rpx; |
|||
width: 100rpx; |
|||
/* border-radius: 50%; */ |
|||
} |
|||
.volume-box { |
|||
width: 700rpx; |
|||
margin: 25rpx; |
|||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.125); |
|||
border-radius: 8rpx; |
|||
padding: 32rpx; |
|||
} |
|||
</style> |
@ -0,0 +1,120 @@ |
|||
<template> |
|||
<view class="volume-box"> |
|||
<swiper |
|||
class="swiper" |
|||
circular |
|||
:autoplay="autoplay" |
|||
:interval="interval" |
|||
:duration="duration" |
|||
previous-margin="45rpx" |
|||
next-margin="45rpx" |
|||
@change="changeCard" |
|||
> |
|||
<swiper-item v-for="(item, index) in itemList" :key="item.id" @click="openProject(item)"> |
|||
<view |
|||
class="swiper-item flex items-center justify-center" |
|||
:class="['card-item', currentCardIndex === index ? 'card-item-current' : 'card-item-default']" |
|||
style="transition: all 0.3s" |
|||
>{{ item.name }}</view |
|||
> |
|||
</swiper-item> |
|||
</swiper> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapState, mapGetters, mapMutations } from 'vuex'; |
|||
export default { |
|||
data() { |
|||
return { |
|||
autoplay: false, |
|||
interval: 2000, |
|||
duration: 500, |
|||
itemList: [], |
|||
currentCardIndex: 0, |
|||
}; |
|||
}, |
|||
watch: { |
|||
projects(val) { |
|||
this.itemList = val; |
|||
this.itemList.forEach(item => { |
|||
item.showBorder = false; |
|||
item.showSubBorder = false; |
|||
item.showTopBorder = false; |
|||
}); |
|||
console.log('this.itemList: ', this.itemList); |
|||
}, |
|||
}, |
|||
computed: { |
|||
...mapState('user', ['user']), |
|||
...mapState('project', ['projects']), |
|||
...mapGetters('user', ['userId']), |
|||
}, |
|||
mounted() { |
|||
this.$nextTick(function () { |
|||
this.itemList = this.projects; |
|||
this.itemList.forEach(item => { |
|||
item.showBorder = false; |
|||
item.showSubBorder = false; |
|||
item.showTopBorder = false; |
|||
}); |
|||
}); |
|||
}, |
|||
methods: { |
|||
...mapMutations('carbasics', ['setGlobalData']), |
|||
...mapMutations('task', ['setPermanents', 'setDailyTasks']), |
|||
changeCard(e) { |
|||
this.currentCardIndex = e.detail.current; |
|||
}, |
|||
// 打开项目详情 |
|||
openProject(project) { |
|||
const { name, id, url, templateCode } = project; |
|||
url && (uni.$t.domain = url); |
|||
if (templateCode === 'carbasics') { |
|||
// 跳转项目时,清空当前的插件缓存 |
|||
this.setGlobalData({}); |
|||
this.setPermanents(null); |
|||
this.setDailyTasks(null); |
|||
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), |
|||
}); |
|||
} |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
<style scoped> |
|||
.card-item-default { |
|||
transform: scale(0.96, 0.96) translateY(8.5rpx); |
|||
} |
|||
.swiper { |
|||
height: 240rpx; |
|||
/* background: rgba(255, 255, 255, 0); */ |
|||
} |
|||
.swiper-item { |
|||
font-size: 32rpx; |
|||
color: #fff; |
|||
font-weight: bold; |
|||
border-radius: 8rpx; |
|||
height: 100%; |
|||
width: 100%; |
|||
background: url('https://www.tall.wiki/gateway/carbasics/v4.0/uploads/project.png'); |
|||
background-size: 100% 100%; |
|||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); |
|||
} |
|||
.volume-box { |
|||
width: 700rpx; |
|||
height: 120px; |
|||
margin: 0 25rpx 25rpx 25rpx; |
|||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); |
|||
border-radius: 8rpx; |
|||
/* overflow: hidden; */ |
|||
/* background: #f9fafb; */ |
|||
/* padding: 32rpx; */ |
|||
} |
|||
</style> |
@ -0,0 +1,197 @@ |
|||
<template> |
|||
<div class="flex flex-col"> |
|||
<div class="mt-2" style="position: relative"> |
|||
<div class="w-full"> |
|||
<p class="title-p title-one">山西省急性缺血性脑卒中数据汇总表</p> |
|||
<p class="title-p title-two">2021年7月-12月收治急性脑梗死患者相关数据</p> |
|||
</div> |
|||
<!-- <div class="flex items-center justify-center mr-2" style="position: absolute; right: 2px; top: 12px"> |
|||
<a href="tel:13485387689" id="tel-a" style="display: none"> </a> |
|||
</div> --> |
|||
</div> |
|||
<div class="p-4"> |
|||
<u-form :model="form" ref="uForm" label-width="150"> |
|||
<u-form-item label="市/县" class="flex"> |
|||
<u-input v-model="form.county" @click="show = true" placeholder="请选择市/县" /> |
|||
</u-form-item> |
|||
<u-form-item label="医院名称"><u-input v-model="form.intro" /></u-form-item> |
|||
<u-form-item label="性别"><u-input v-model="form.sex" type="select" /></u-form-item> |
|||
<u-form-item label="水果"> |
|||
<u-checkbox-group> |
|||
<u-checkbox v-model="item.checked" v-for="(item, index) in checkboxList" :key="index" :name="item.name"> |
|||
{{ item.name }} |
|||
</u-checkbox> |
|||
</u-checkbox-group> |
|||
</u-form-item> |
|||
<u-form-item label="味道"> |
|||
<u-radio-group v-model="radio"> |
|||
<u-radio v-for="(item, index) in radioList" :key="index" :name="item.name" :disabled="item.disabled"> |
|||
{{ item.name }} |
|||
</u-radio> |
|||
</u-radio-group> |
|||
</u-form-item> |
|||
<u-form-item label="开关"><u-switch slot="right" v-model="switchVal"></u-switch></u-form-item> |
|||
</u-form> |
|||
</div> |
|||
<u-select |
|||
v-model="show" |
|||
value-name="id" |
|||
label-name="name" |
|||
child-name="child" |
|||
mode="mutil-column-auto" |
|||
:list="list" |
|||
@confirm="chooseArea" |
|||
></u-select> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import Mixin from './mixin'; |
|||
import { mapState } from 'vuex'; |
|||
export default { |
|||
mixins: [Mixin], |
|||
data() { |
|||
return { |
|||
form: { |
|||
county: '', |
|||
countyId: '', |
|||
intro: '', |
|||
sex: '', |
|||
}, |
|||
show: false, |
|||
list: [], |
|||
isSearch: false, |
|||
hosList: [], |
|||
checkboxList: [ |
|||
{ |
|||
name: '苹果', |
|||
checked: false, |
|||
disabled: false, |
|||
}, |
|||
{ |
|||
name: '雪梨', |
|||
checked: false, |
|||
disabled: false, |
|||
}, |
|||
{ |
|||
name: '柠檬', |
|||
checked: false, |
|||
disabled: false, |
|||
}, |
|||
], |
|||
radioList: [ |
|||
{ |
|||
name: '鲜甜', |
|||
disabled: false, |
|||
}, |
|||
{ |
|||
name: '麻辣', |
|||
disabled: false, |
|||
}, |
|||
], |
|||
radio: '', |
|||
switchVal: false, |
|||
}; |
|||
}, |
|||
computed: mapState('user', ['user']), |
|||
created() { |
|||
this.getList(); |
|||
// this.getPosition(); |
|||
this.getArea(); |
|||
this.getHosName(); |
|||
}, |
|||
methods: { |
|||
// 选择了地区 |
|||
chooseArea(e) { |
|||
let str = ''; |
|||
let ids = ''; |
|||
for (let i = 0; i < e.length; i++) { |
|||
str += e[i].label + (i < e.length - 1 ? '>' : ''); |
|||
ids += e[i].value + (i < e.length - 1 ? ',' : ''); |
|||
} |
|||
this.form.county = str; |
|||
this.form.countyId = ids; |
|||
}, |
|||
async getHosName() { |
|||
try { |
|||
const params = {}; |
|||
const res = await this.$u.api.hospitalNameEcho(params); |
|||
if (res) { |
|||
console.log('res: ', res); |
|||
} |
|||
} catch (error) {} |
|||
}, |
|||
async searchHosList(name) { |
|||
try { |
|||
if (this.isSearch) { |
|||
return; |
|||
} |
|||
this.isSearch = true; |
|||
this.hosList = []; |
|||
const params = { |
|||
area: this.form.countyId, |
|||
name, |
|||
}; |
|||
const res = await this.$u.api.queryHospitalList(params); |
|||
if (res) { |
|||
console.log(res); |
|||
res.forEach(item => { |
|||
this.data.push(item.name); |
|||
}); |
|||
} else { |
|||
this.$t.ui.showToast('医院搜索失败,请手动输入'); |
|||
} |
|||
} catch (error) { |
|||
this.$t.ui.showToast('医院搜索失败,请手动输入'); |
|||
} |
|||
this.isSearch = false; |
|||
}, |
|||
// 查询地区数组 |
|||
async getArea() { |
|||
try { |
|||
const params = { id: '140000' }; |
|||
const res = await this.$u.api.searchArea(params); |
|||
if (res) { |
|||
this.list = [...res]; |
|||
} else { |
|||
this.$t.ui.showToast(msg); |
|||
} |
|||
} catch (error) { |
|||
this.$t.ui.showToast('网络异常,请检查您的网络!'); |
|||
} |
|||
}, |
|||
// 查询职位 |
|||
async getPosition() { |
|||
try { |
|||
const params = { param: {} }; |
|||
const res = await this.$u.api.searchPosition(params); |
|||
const { code, msg, data } = res.data; |
|||
if (code === 200) { |
|||
let list = []; |
|||
for (var i = 0; i < data.length; i++) { |
|||
list.push(data[i].name); |
|||
} |
|||
console.log('职位list: ', list); |
|||
} else { |
|||
console.log(msg); |
|||
} |
|||
} catch (error) { |
|||
console.log(error); |
|||
} |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
<style scoped> |
|||
.title-one { |
|||
font-size: 18px; |
|||
font-weight: bold; |
|||
} |
|||
.title-two { |
|||
font-size: 12px; |
|||
color: #666; |
|||
} |
|||
.title-p { |
|||
margin-bottom: 2px; |
|||
text-align: center; |
|||
} |
|||
</style> |
@ -0,0 +1,113 @@ |
|||
const mixin = { |
|||
data() { |
|||
return { |
|||
codeValue: { |
|||
'CITY-COUNTY': [], |
|||
'HOS-NAME': null, |
|||
'HOS-LEVEL': [], |
|||
'HOS-GRADE': null, |
|||
'HOS-KESHI': null, |
|||
'HOS-ZHIWU': null, |
|||
'HOS-MAN': null, |
|||
'HOS-TEL': null, |
|||
}, |
|||
list: [], |
|||
}; |
|||
}, |
|||
methods: { |
|||
// 试题类型:type: 1:省市区三级下拉 11:医院等级 2:输入框模糊搜索 3:下拉菜单 5:输入框
|
|||
getList() { |
|||
this.list = [ |
|||
{ |
|||
name: '', |
|||
testList: [ |
|||
{ |
|||
secondName: '', |
|||
contentList: [ |
|||
{ |
|||
name: '市/县', |
|||
code: 'CITY-COUNTY', |
|||
value: this.codeValue['CITY-COUNTY'], |
|||
type: 1, |
|||
itemList: [], |
|||
}, |
|||
{ |
|||
name: '医院名称', |
|||
code: 'HOS-NAME', |
|||
value: this.codeValue['HOS-NAME'], |
|||
type: 2, |
|||
}, |
|||
{ |
|||
name: '医院等级', |
|||
code: 'HOS-LEVEL', |
|||
value: this.codeValue['HOS-LEVEL'], |
|||
type: 11, |
|||
itemList: [ |
|||
{ |
|||
value: '二级', |
|||
label: '二级', |
|||
children: [ |
|||
{ |
|||
value: '甲等', |
|||
label: '甲等', |
|||
}, |
|||
{ |
|||
value: '乙等', |
|||
label: '乙等', |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
value: '三级', |
|||
label: '三级', |
|||
children: [ |
|||
{ |
|||
value: '甲等', |
|||
label: '甲等', |
|||
}, |
|||
{ |
|||
value: '乙等', |
|||
label: '乙等', |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
name: '科室', |
|||
code: 'HOS-KESHI', |
|||
value: this.codeValue['HOS-KESHI'], |
|||
type: 3, |
|||
itemList: ['神经内科', '内科', '神经外科'], |
|||
}, |
|||
{ |
|||
name: '职务', |
|||
code: 'HOS-ZHIWU', |
|||
value: this.codeValue['HOS-ZHIWU'], |
|||
type: 3, |
|||
// itemList: [],
|
|||
itemList: ['科主任', '副主任', '卒中质控医生', '医生'], |
|||
}, |
|||
{ |
|||
name: '联系人', |
|||
code: 'HOS-MAN', |
|||
value: this.codeValue['HOS-MAN'], |
|||
type: 5, |
|||
}, |
|||
{ |
|||
name: '联系电话', |
|||
code: 'HOS-TEL', |
|||
value: this.codeValue['HOS-TEL'], |
|||
disable: true, |
|||
type: 5, |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
}, |
|||
]; |
|||
}, |
|||
}, |
|||
}; |
|||
|
|||
export default mixin; |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 190 KiB |
After Width: | Height: | Size: 139 KiB |
Loading…
Reference in new issue