123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- <template>
- <view class="box">
- <view class="address-box" v-if="defaultOrg == 0 || (defaultOrg > 0 && type == 1)">
- <view class="address-box-list">
- <view class="address-box-label">
- 项目名称
- </view>
- <view class="address-box-input">
- <picker v-if="orgs.length > 0" disabled="true" @change="bindPickerChange" :value="orgIndex" :range="orgs" range-key="name">
- <text class="address-box-input-text">{{orgs[orgIndex].name}}</text>
- <image class="address-box-input-icon" src="../../images/xiangyou.png"></image>
- </picker>
- </view>
- </view>
- <view class="address-box-list">
- <view class="address-box-label">
- 项目服务
- </view>
- <view class="address-box-input">
- <picker v-if="serves.length > 0" @change="bindPickerServeChange" :value="serveIndex" :range="serves" range-key="title">
- <text class="address-box-input-text">{{serves[serveIndex].title}}</text>
- <image class="address-box-input-icon" src="../../images/xiangyou.png"></image>
- </picker>
- </view>
- </view>
- <view class="address-box-list">
- <view class="address-box-label">
- 预约日期
- </view>
- <view class="address-box-input">
- <picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
- <text class="address-box-input-text">{{date}}</text>
- <image class="address-box-input-icon" src="../../images/xiangyou.png"></image>
- </picker>
- </view>
- </view>
- <view class="address-box-list">
- <view class="address-box-label">
- 预约时间段
- </view>
- <view class="address-box-input">
- <picker v-if="times.length > 0" @change="bindPickerTimeChange" :value="timeIndex" :range="times" range-key="name">
- <text class="address-box-input-text">{{times[timeIndex].name}}</text>
- <image class="address-box-input-icon" src="../../images/xiangyou.png"></image>
- </picker>
- </view>
- </view>
- </view>
-
- <view class="address-box">
- <view class="address-box-list">
- <view class="address-box-label">
- 预约人姓名
- </view>
- <view class="address-box-input">
- <input v-model="name" placeholder="请输入" type="text">
- </view>
- </view>
- <view class="address-box-list">
- <view class="address-box-label">
- 手机号码
- </view>
- <view class="address-box-input">
- <input v-model="phone" placeholder="请输入" type="tel">
- </view>
- </view>
- </view>
-
- <view class="address-btn" @click="saveBtn">
- 提 交
- </view>
- <view class="address-btn2" @click="saveBtn2">
- 我的记录
- </view>
- </view>
- </template>
- <script>
- var app = getApp();
- function getDate(type) {
- const date = new Date();
-
- let year = date.getFullYear();
- let month = date.getMonth() + 1;
- let day = date.getDate();
-
- if (type === 'start') {
- year = year - 60;
- } else if (type === 'end') {
- year = year + 2;
- }
- month = month > 9 ? month : '0' + month;;
- day = day > 9 ? day : '0' + day;
-
- return `${year}-${month}-${day}`;
- }
- export default {
- data() {
- return {
- id: 0,
- defaultOrg: 0,
- type: 0,
- orgs: [],
- orgIndex: 0,
- serves: [],
- serveIndex: 0,
- date: getDate({
- format: true
- }),
- startDate:getDate('start'),
- endDate:getDate('end'),
- times: [],
- timeIndex: 0,
- name: '',
- phone: ''
- }
- },
- onLoad(option) {
- app.checkLogin();
-
- this.defaultOrg = option.orgId ? option.orgId : 0;
- this.type = option.type ? option.type : 0;
- console.log(this.defaultOrg,this.type);
- if(!this.defaultOrg){
- this.getOrgs();
- }else{
- if(this.type == 1){ //预约
- this.getOrgs();
- }else{//现场登记
- uni.setNavigationBarTitle({
- title: '现场登记'
- });
- uni.setStorageSync(app.globalData.storagePre+'orgId', this.defaultOrg);
- }
-
- }
- },
- onShow() {
- var that = this;
- app.ajaxReadyCallback = res => { //各个接口统一回调方法
- var apiname = res.data.apiname;
- console.log(res);
- if(apiname == 'org'){
- that.orgs = res.data.data;
- if(that.defaultOrg && that.type == 1){
- if(that.orgs.length > 0){
- that.orgs.forEach((item,index) => {
- if(item.id.toString() == that.defaultOrg.toString()){
- that.orgIndex = index;
- }
- })
- }
- }else{
- that.orgIndex = 0;
- }
- if(that.orgs.length > 0){
- that.getService();
- }
- } else if(apiname == 'service'){
- that.serves = res.data.data;
- that.serveIndex = 0;
- if(that.serves.length > 0){
- that.getServiceTime();
- }
- } else if(apiname == 'serviceTime'){
- that.times = [];
- that.timeIndex = 0;
- res.data.data.forEach((item) => {
- that.times.push({
- id: item.id,
- name: item.start + '~' + item.end
- });
- })
- } else if(apiname == 'order'){
- uni.showToast({
- title: '提交成功',
- icon: 'none',
- duration: 2000
- });
- setTimeout(function(){
- uni.navigateTo({
- url: '/pages/index/index'
- });
- },1000);
- }
-
- }
- },
- methods: {
- getUrlCode (name) {
- return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1].replace(/\+/g, '%20')) || null
- },
- bindPickerChange: function(e) {
- console.log('picker发送选择改变,携带值为:' + e.detail.value)
- this.orgIndex = e.detail.value;
- this.getService();
- },
- bindPickerServeChange: function(e) {
- console.log('bindPickerServeChange发送选择改变,携带值为:' + e.detail.value)
- this.serveIndex = e.detail.value;
- this.getServiceTime();
- },
- bindPickerTimeChange: function(e) {
- console.log('bindPickerTimeChange发送选择改变,携带值为:' + e.detail.value)
- this.timeIndex = e.detail.value;
- },
- bindDateChange: function(e) {
- console.log('bindDateChange发送选择改变,携带值为:' + e.detail.value)
- this.date = e.detail.value;
- this.getServiceTime();
- },
- getOrgs(){
- this.serves = [];
- this.serveIndex = 0;
- this.times = [];
- this.timeIndex = 0;
- app.ajax({
- url: app.globalData.serverUrl + 'org/lists',
- type: 'POST',
- apiname: 'org'
- });
- },
- getService(){
- this.times = [];
- this.timeIndex = 0;
- const orgId = this.orgs[this.orgIndex].id;
- app.ajax({
- url: app.globalData.serverUrl + 'service/list',
- type: 'POST',
- apiname: 'service',
- data: {
- orgId: orgId
- }
- });
- },
- getServiceTime(){
- const serviceId = this.serves[this.serveIndex].id;
- const orgId = this.orgs[this.orgIndex].id;
- app.ajax({
- url: app.globalData.serverUrl + 'service/times',
- type: 'POST',
- apiname: 'serviceTime',
- data: {
- serviceId: serviceId,
- day: this.date,
- orgId: orgId
- }
- });
- },
- saveBtn(){
- let serviceTimeId = 0;
- if(this.times[this.timeIndex]){
- serviceTimeId = this.times[this.timeIndex].id;
- }
- let orgId = 0;
- if(this.orgs[this.orgIndex]){
- orgId = this.orgs[this.orgIndex].id;
- }
-
- let param = {
- type: this.defaultOrg==0?1:2,
- serviceTimeId: serviceTimeId,
- name: this.name,
- phone: this.phone,
- orgId: orgId
- }
- if(this.defaultOrg){
- param.orgId = this.defaultOrg;
- }
- if(!this.name){
- uni.showToast({
- title: '请输入姓名',
- icon: 'none',
- duration: 2000
- })
- return;
- }
- if(!this.phone){
- uni.showToast({
- title: '请输入手机号',
- icon: 'none',
- duration: 2000
- })
- return;
- }
-
- app.ajax({
- url: app.globalData.serverUrl + 'visitorOrder/order',
- type: 'POST',
- apiname: 'order',
- data: param
- });
- },
- saveBtn2(){
- uni.reLaunch({ //关闭所有页面,跳转到闪屏页
- url: '/pages/index/index'
- })
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .box{
- padding: 20rpx;
- }
- .address-box{
-
- // padding: 0 20rpx;
- margin-bottom: 20rpx;
- }
- .address-box-list{
- height: 100rpx;
- line-height: 100rpx;
- border-bottom: 1rpx solid #f2f2f2;
- padding: 0 20rpx;
- border-radius: 8rpx;
- background-color: #FFFFFF;
- }
- .address-box-list:last-child{
- border: 0;
- }
- .address-box-label{
- display: inline-block;
- width: 200rpx;
- height: 100%;
- float: left;
- }
- .address-box-input{
- display: inline-block;
- width: 460rpx;
- height: 100%;
- float: right;
- text-align: right;
- }
- .address-box-input input{
- height: 80rpx;
- line-height: 80rpx;
- margin-top: 10rpx;
- font-size: 28rpx;
- vertical-align: middle;
- }
- .address-box-input-text{
- display: inline-block;
- width: 430rpx;
- line-height: 100%;
- vertical-align: middle;
- color: #949494;
- padding-right: 18rpx;
- font-size: 28rpx;
- }
- .address-box-input-icon{
- width: 12rpx;
- height: 22rpx;
- vertical-align: middle;
- }
-
- .address-btn{
- width: 700rpx;
- height: 70rpx;
- line-height: 70rpx;
- color: #FFFFFF;
- background-color: $theme-color;
- border-radius: 10rpx;
- margin: 50rpx auto 20rpx auto;
- text-align: center;
- }
-
- .address-btn2{
- width: 700rpx;
- height: 70rpx;
- line-height: 70rpx;
- color: $theme-color;
- background-color: #FFFFFF;
- border-radius: 10rpx;
- margin: 20rpx auto;
- text-align: center;
- }
-
- .address-btn-del{
- width: 700rpx;
- height: 70rpx;
- line-height: 70rpx;
- color: $theme-color;
- background-color: #FFFFFF;
- border: 1rpx solid $theme-color;
- border-radius: 10rpx;
- margin: 10rpx auto;
- text-align: center;
- }
- </style>
|