#
whycq
2023-11-17 8648556eb27bdc51d985c9ccc3f051f7688d2712
pages/business/goBusiness/addgoBusiness.vue
@@ -1,35 +1,52 @@
<template>
   <view>
      <view class="card" v-for="item in form2">
         <!-- head -->
         <view class="card-head flex">
            <view class="card-head-title">{{item.title}}</view>
         </view>
         <!-- body -->
         <view class="card-body flex-column" v-for="subItem in item.info">
            <view class="flex"><text class="card-required" v-show="subItem.required">*</text>{{subItem.subTitle}}</view>
            <view class="flex">
               <view style="flex: 1;">
                  <input type="text" placeholder="请输入出差事由1" :placeholder-style="placeholderStyle" v-model="subItem.value" :disabled="subItem.disabled" v-show="subItem.inputType != 'data'">
                  <uni-datetime-picker v-model="subItem.value" :border="false" v-show="subItem.inputType == 'data'" />
               </view>
               <view class="flex" style="width: 50rpx;" v-show="subItem.inputType == 'select'" @click="showPicker(subItem.type)"><uni-icons type="right" color="#000" ></uni-icons></view>
         <view class="card-body flex-column" v-for="subItem in item.info" v-show="!subItem.unshow">
            <view class="flex"><text class="card-required" v-show="subItem.required">*</text>{{subItem.subTitle}}
            </view>
            <view class="flex">
               <uni-combox :candidates="orderIds" placeholder="请选择项目" v-model="subItem.value"
                  @input="getOrderId(subItem.value)" v-show="subItem.inputType == 'chose'">
               </uni-combox>
               <view style="flex: 1;"  v-show="subItem.inputType != 'chose'">
                  <input type="text" :placeholder="subItem.placeholder"
                     :placeholder-style="subItem.placeholderStyle" v-model="subItem.value"
                     :disabled="subItem.disabled" v-show="subItem.inputType != 'data'">
                  <uni-datetime-picker v-model="subItem.value" :border="false"
                     :red-color="subItem.placeholderStyle" v-if="subItem.inputType == 'data'" />
               </view>
               <view class="flex" style="width: 50rpx;" v-show="subItem.inputType == 'select'"
                  @click="showPicker(subItem.type)"><uni-icons type="right" color="#000"></uni-icons></view>
            </view>
         </view>
      </view>
      <u-picker :show="businessTransportationShow" :columns="businessTransportations" @confirm="businessTransportationConfirm"></u-picker>
      <u-picker :show="businessTransportationShow" :columns="businessTransportations"
         @confirm="businessTransportationConfirm"></u-picker>
      <u-picker :show="businessReturnShow" :columns="businessReturns" @confirm="businessReturnConfirm"></u-picker>
      <u-picker :show="pcdShow" ref="uPicker" :columns="columns" @confirm="pcdStartConfirm" @change="changeHandler" :defaultIndex="defaultIndex"></u-picker>
      <u-picker :show="businessStartTimeDayShow" :columns="businessStartTimeDays" @confirm="businessStartTimeDayConfirm"></u-picker>
      <u-picker :show="businessEndTimeDayShow" :columns="businessEndTimeDays" @confirm="businessEndTimeDayConfirm"></u-picker>
      <u-picker :show="pcdShow" ref="uPicker" :columns="columns" @confirm="pcdStartConfirm" @change="changeHandler"
         :defaultIndex="defaultIndex"></u-picker>
      <u-picker :show="pcdEndShow" ref="uPicker" :columns="columns" @confirm="pcdEndConfirm" @change="changeHandler"
         :defaultIndex="defaultIndex"></u-picker>
      <u-picker :show="businessStartTimeDayShow" :columns="businessStartTimeDays"
         @confirm="businessStartTimeDayConfirm"></u-picker>
      <u-picker :show="businessEndTimeDayShow" :columns="businessEndTimeDays"
         @confirm="businessEndTimeDayConfirm"></u-picker>
      <view style="height: 120rpx;"></view>
      <view class="floor">
         <view class="default">重置</view>
         <view class="primary" @click="submit()">提交</view>
@@ -43,60 +60,253 @@
   export default {
      data() {
         return {
            year: '',
            type: 'add',
            orderIds: [],
            orderId: '',
            orderIdList: [],
            year: '2021-5-3',
            placeholderStyle: 'font-size:20rpx',
            form: {
               // businessTripReasons: ''
            },
            redColor: '',
            columns: [],
            defaultIndex: [],
            citysData: data.citysData,
            businessTransportationShow: false,
            businessTransportations: [['飞机','高铁','火车','汽车','摩托','电车','其他']],
            businessTransportations: [
               ['飞机', '高铁', '火车', '汽车', '摩托', '电车', '其他']
            ],
            businessReturnShow: false,
            businessReturns: [['单程','往返']],
            businessReturns: [
               ['单程', '往返']
            ],
            pcdShow: false,
            pcdEndShow: false,
            pcds: data.citysData,
            businessStartTimeDayShow: false,
            businessStartTimeDays: [['上午','下午']],
            businessEndTimeDayShow: false,
            businessEndTimeDays: [['上午','下午']],
            form2: [
               {title: '基本信息',info:[
                  {subTitle: '出差事由',value: '',submitVal: '出差事由',type: 'businessTripReasons',inputType: 'input',required: true}
               ]},
               {title: '行程信息',info:[
                  {subTitle: '交通工具',value: '',type: 'businessTransportation',inputType: 'select',disabled:true,required: true},
                  {subTitle: '单程往返',value: '',type: 'businessReturn',inputType: 'select',disabled:true,required: true},
                  {subTitle: '车牌号',value: '',type: 'carNumber',inputType: 'input',required: true},
                  {subTitle: '行程明细及公里数',value: '',type: 'kilometers',inputType: 'input',required: true},
                  {subTitle: '出发地',value: '',type: 'pcdStart',inputType: 'select',required: true},
                  {subTitle: '出发地详细地址',value: '',type: 'businessStartAddr',inputType: 'input',required: true},
                  {subTitle: '目的地',value: '',type: 'pcdEnd',inputType: 'select',required: true},
                  {subTitle: '目的地详细地址',value: '',type: 'businessEndAddr',inputType: 'input',required: true},
               ]},
               {title: '日期信息',info:[
                  {subTitle: '出发日期',value: '',type: 'businessStartTime',inputType: 'data',required: true},
                  {subTitle: '出发时辰',value: '',type: 'businessStartTimeDay',inputType: 'select',required: true},
                  {subTitle: '结束日期',value: '',type: 'businessEndTime',inputType: 'data',required: true},
                  {subTitle: '结束时辰',value: '',type: 'businessEndTimeDay',inputType: 'select',required: true}
               ]},
               {title: '基本信息',info:[
                  {subTitle: '同行人',value: '同行人',type: 'businessPeers',inputType: 'input',required: true},
                  {subTitle: '备注',value: '备注',inputType: 'input',type: 'businessNotes'}
               ]},
            businessStartTimeDays: [
               ['上午', '下午']
            ],
            businessEndTimeDayShow: false,
            businessEndTimeDays: [
               ['上午', '下午']
            ],
            form2: [{
                  title: '基本信息',
                  info: [{
                        subTitle: '项目名称',
                        placeholder: '请输入项目名称',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        submitVal: '',
                        type: 'orderId',
                        inputType: 'chose',
                        required: true,
                        unshow: false
                     },
                     {
                        subTitle: '出差事由',
                        placeholder: '请输入出差事由',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        submitVal: '出差事由',
                        type: 'businessTripReasons',
                        inputType: 'input',
                        required: true
                     },
                  ]
               },
               {
                  title: '行程信息',
                  info: [{
                        subTitle: '交通工具',
                        placeholder: '请选择交通工具',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessTransportation',
                        inputType: 'select',
                        disabled: true,
                        required: true
                     },
                     {
                        subTitle: '单程往返',
                        placeholder: '请选择单程单程',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessReturn',
                        inputType: 'select',
                        disabled: true,
                        required: true
                     },
                     {
                        subTitle: '车牌号',
                        placeholder: '请输入车牌号',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'carNumber',
                        inputType: 'input',
                        required: true
                     },
                     {
                        subTitle: '行程明细及公里数',
                        placeholder: '请输入行程明细及公里数',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'kilometers',
                        inputType: 'input',
                        required: true
                     },
                     {
                        subTitle: '出发地',
                        placeholder: '请选择出发地',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'pcdStart',
                        inputType: 'select',
                        disabled: true,
                        required: true
                     },
                     {
                        subTitle: '出发地详细地址',
                        placeholder: '请输入出发地详细地址',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessStartAddr',
                        inputType: 'input',
                        required: true
                     },
                     {
                        subTitle: '目的地',
                        placeholder: '请选择目的地',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'pcdEnd',
                        inputType: 'select',
                        disabled: true,
                        required: true
                     },
                     {
                        subTitle: '目的地详细地址',
                        placeholder: '请输入目的地详细地址',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessEndAddr',
                        inputType: 'input',
                        required: true
                     },
                  ]
               },
               {
                  title: '日期信息',
                  info: [{
                        subTitle: '出发日期',
                        placeholder: '请选择出发日期',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessStartTime',
                        inputType: 'data',
                        required: true
                     },
                     {
                        subTitle: '出发时辰',
                        placeholder: '请选择出发时辰',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessStartTimeDay',
                        inputType: 'select',
                        disabled: true,
                        required: true
                     },
                     {
                        subTitle: '结束日期',
                        placeholder: '请选择结束日期',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessEndTime',
                        inputType: 'data',
                        required: true
                     },
                     {
                        subTitle: '结束时辰',
                        placeholder: '请选择结束时辰',
                        placeholderStyle: 'font-size:20rpx',
                        value: '',
                        type: 'businessEndTimeDay',
                        inputType: 'select',
                        disabled: true,
                        required: true
                     }
                  ]
               },
               {
                  title: '基本信息',
                  info: [{
                        subTitle: '同行人',
                        placeholder: '请输入同行人',
                        placeholderStyle: 'font-size:20rpx',
                        value: '同行人',
                        type: 'businessPeers',
                        inputType: 'input',
                        required: true
                     },
                     {
                        subTitle: '备注',
                        placeholder: '备注信息',
                        placeholderStyle: 'font-size:20rpx',
                        value: '备注',
                        inputType: 'input',
                        type: 'businessNotes'
                     }
                  ]
               },
            ],
         }
      },
      onLoad(option) {
         let _this = this
         const eventChannel = this.getOpenerEventChannel();
         eventChannel.on('goBusinessDel', function(data) {
            if (data.data == 'add') {
               _this.getOrderId('')
            }
         })
      },
      mounted() {
         this.handlePcd();
      },
      methods: {
         getOrderId(condition) {
            // console.log(condition);
            let _this = this
            uni.request({
               url: `${_this.baseUrl}/orderQueryName/auth`,
               header: { 'token': uni.getStorageSync('token') },
               method: 'POST',
               data: {condition: condition},
               success(res) {
                  res = res.data
                  _this.orderIds = []
                  _this.orderIdList = []
                  if (res.code === 200 && res.data) {
                     _this.orderIds2 = res.data
                     for (let k of res.data) {
                        _this.orderIds.push(k.value)
                        _this.orderIdList.push(k)
                     }
                  }
               }
            })
         },
         handlePcd() {
            let sheng_s = '110000';
            let shi_s = '110100';
            let qu_s = '110101';
            let sheng_s = '110000';
            let shi_s = '110100';
            let qu_s = '110101';
            let sheng = [];
            let shi = [];
@@ -108,13 +318,13 @@
                     if (shi_item.value === shi_s) {
                        this.defaultIndex[1] = shi_index
                        shi_item.children.forEach((qu_item, qu_index) => {
                        if (qu_item.value === qu_s) {
                           this.defaultIndex[2] = qu_index
                        }
                        qu.push(qu_item.text);
                     })
                           if (qu_item.value === qu_s) {
                              this.defaultIndex[2] = qu_index
                           }
                           qu.push(qu_item.text);
                        })
                     }
                  shi.push(shi_item.text);
                     shi.push(shi_item.text);
                  })
               }
               sheng.push(sheng_item.text);
@@ -178,19 +388,77 @@
            }
         },
         submit() {
            let subPass = true
            for (let k of this.form2) {
               for (let sub of k.info) {
                  if (sub.inputType == 'select') {
                     this.form[sub.type] = sub.submitVal
                  } else if (sub.inputType == 'chose') {
                     if (!sub.unshow) {
                        for (let odd of this.orderIdList) {
                           if (sub.value == odd.value) {
                              this.form[sub.type] = odd.id
                           }
                        }
                     }
                  } else {
                     this.form[sub.type] = sub.value
                  }
                  if (sub.required) {
                     sub.placeholderStyle = 'font-size:20rpx;'
                     if (sub.value == '' || (sub.submitVal == '' && sub.submitVal < 0)) {
                        // console.log(sub);
                        sub.placeholderStyle = 'font-size:20rpx;color:red'
                        subPass = false
                     }
                  }
               }
            }
            // console.log(this.form.orderId);
            // console.log(this.orderIds);
            console.log(this.form);
            console.log(this.type);
            this.formAdd(this.form)
            // console.log(subPass);
            if (subPass) {
               // console.log(this.form);
            }
         },
         formAdd(form) {
            let _this = this
            uni.request({
               url: `${_this.baseUrl}/businessTrip/add/auth`,
               header: {
                  'token': uni.getStorageSync('token'),
                  'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
               },
               sslVerify: false,
               data: form,
               method: 'POST',
               success(res) {
                  res = res.data
                  console.log(res)
                  if (res.code === 200) {
                     uni.showToast({title: '添加成功', icon: "none", position: 'top'})
                     setTimeout(()=>{
                        uni.navigateBack({})
                     },1000)
                  } else if (res.code === 500) {
                     uni.showToast({title: '添加成功', icon: "none", position: 'top'})
                  } else {
                  }
               }
            })
         },
         showPicker(e) {
            switch(e) {
            switch (e) {
               case 'businessTransportation':
                  this.businessTransportationShow = true
                  break;
@@ -198,36 +466,39 @@
                  this.businessReturnShow = true
                  break
               case 'pcdStart':
                  this.pcdShow = true
                  this.pcdShow = true
                  break
               case 'pcdEnd':
                  this.pcdEndShow = true
                  break
               case 'businessStartTimeDay':
                  this.businessStartTimeDayShow = true
                  this.businessStartTimeDayShow = true
                  break
               case 'businessEndTimeDay':
                  this.businessEndTimeDayShow = true
                  this.businessEndTimeDayShow = true
                  break
            }
         },
         businessTransportationConfirm(e) {
            console.log('confirm', e)
            // console.log('confirm', e)
            this.form2[1].info[0].value = e.value[0]
            this.form2[1].info[0].submitVal = e.indexs[0]
            this.businessTransportationShow = false
         },
         businessReturnConfirm(e) {
            console.log('confirm', e)
            // console.log('confirm', e)
            this.form2[1].info[1].value = e.value[0]
            this.form2[1].info[1].submitVal = e.indexs[0]
            this.businessReturnShow = false
         },
         businessStartTimeDayConfirm(e) {
            console.log('confirm', e)
            // console.log('confirm', e)
            this.form2[2].info[1].value = e.value[0]
            this.form2[2].info[1].submitVal = e.indexs[0]
            this.businessStartTimeDayShow = false
         },
         businessEndTimeDayConfirm(e) {
            console.log('confirm', e)
            // console.log('confirm', e)
            this.form2[2].info[3].value = e.value[0]
            this.form2[2].info[3].submitVal = e.indexs[0]
            this.businessEndTimeDayShow = false
@@ -248,20 +519,42 @@
            }
         },
         pcdStartConfirm(e) {
            console.log('confirm', e)
            // console.log('confirm', e)
            let pcd = data.citysData
            pcd[e.indexs[0]]
            // console.log(pcd[e.indexs[0]]);
            this.pcdShow = false
            // console.log(e.indexs)
            let shen = data.citysData[e.indexs[0]]
            console.log(shen.value, shen.text)
            // console.log(shen.value, shen.text)
            let shi = shen.children[e.indexs[1]]
            // console.log(shi.value, shi.code)
            let qu = shi.children[e.indexs[2]]
            // console.log(qu.value, qu.code)
            console.log(shen.value , shi.value, qu.value);
            // console.log(shen.value , shi.value, qu.value);
            this.form2[1].info[4].value = e.value[0] + '/' + e.value[1] + '/' + e.value[2]
            this.form2[1].info[4].submitVal = shen.value + ',' + shi.value + ',' + qu.value
            // console.log(this.form2[1].info[4].value, this.form2[1].info[4].submitVal);
         },
         pcdEndConfirm(e) {
            // console.log('confirm', e)
            let pcd = data.citysData
            pcd[e.indexs[0]]
            // console.log(pcd[e.indexs[0]]);
            this.pcdEndShow = false
            // console.log(e.indexs)
            let shen = data.citysData[e.indexs[0]]
            // console.log(shen.value, shen.text)
            let shi = shen.children[e.indexs[1]]
            // console.log(shi.value, shi.code)
            let qu = shi.children[e.indexs[2]]
            // console.log(qu.value, qu.code)
            // console.log(shen.value , shi.value, qu.value);
            this.form2[1].info[6].value = e.value[0] + '/' + e.value[1] + '/' + e.value[2]
            this.form2[1].info[6].submitVal = shen.value + ',' + shi.value + ',' + qu.value
            // console.log(this.form2[1].info[6].value, this.form2[1].info[6].submitVal);
         }
      }
   }
@@ -270,34 +563,41 @@
<style scoped>
   .card {
      min-height: 100rpx;
      margin: 16rpx 0 0 0;
      margin: 16rpx 20rpx 0 20rpx;
      background-color: #fff;
   }
   .card-head {
      min-height: 60rpx;
      width: calc(100%-5px);
      margin-left: 4px;
      box-shadow: -4px 0 0px #2d8cf0;
   }
   .card-head-title {
      /* background-color: #556655; */
      padding-left: 6px;
   }
   .card-body {
      margin: 8rpx 8rpx 0 8rpx ;
      margin: 8rpx 8rpx 0 8rpx;
   }
   .card-required {
      color: red;
      padding-right: 4rpx;
   }
   .flex {
      display: flex;
      align-items: center;
   }
   .flex-column {
      display: flex;
      flex-direction: column;
   }
   .floor {
      height: 100rpx;
      line-height: 100rpx;
@@ -311,18 +611,22 @@
      text-align: center;
      letter-spacing: 10rpx;
   }
   .default {
      flex: 2;
   }
   .default:active {
      background-color: #eff0f1;
   }
   .primary {
      flex: 3;
      background-color: #2d8cf0;
      color: #fff;
   }
   .primary:active {
      background-color: #007dea;
   }
</style>
</style>