123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <template>
- <view style="padding: 20rpx;">
- <view class="box" style="margin-bottom: 10rpx;">
- <uni-section title="取货地址" type="line"></uni-section>
- <view style="color: #888;">请选择取货地址</view>
- </view>
- <view class="box" style="margin-bottom: 10rpx;">
- <uni-section title="收货地址" type="line"></uni-section>
- <view style="color: #888;">请选择收货地址</view>
- </view>
-
- <view class="box">
- <uni-forms :modelValue="form" :rules="rules" ref="formRef" label-width="160rpx" label-align="right">
- <uni-forms-item label="物品名称" name="name" required>
- <uni-easyinput type="text" v-model="form.name" placeholder="请输入" />
- </uni-forms-item>
- <uni-forms-item label="描述信息" name="descr">
- <uni-easyinput type="text" v-model="form.descr" placeholder="请输入描述信息" />
- </uni-forms-item>
- <uni-forms-item label="重量(kg)" name="weight">
- <uni-easyinput type="text" v-model="form.weight" placeholder="请输入物品重量" />
- </uni-forms-item>
- <uni-forms-item label="小费(元)" name="price" required>
- <uni-number-box v-model="form.price" :min="1" style="position: relative; top: 10rpx;"></uni-number-box>
- </uni-forms-item>
- <uni-forms-item label="订单类型" name="type" required>
- <uni-data-select v-model="form.type" :localdata="orderTypes"></uni-data-select>
- </uni-forms-item>
- <uni-forms-item label="物品图片" name="img">
- <uni-file-picker limit="1" :image-styles="imageStyles" :del-icon="false" :disable-preview="true"
- fileMediatype="image" v-model="imgs" @select="handleImgUploadSuccess"></uni-file-picker>
- </uni-forms-item>
- <uni-forms-item label="备注" name="comment">
- <uni-easyinput type="text" v-model="form.comment" placeholder="请输入备注信息" />
- </uni-forms-item>
- </uni-forms>
- <view>
- <button type="primary" @click="addOrder" class="my-button-primary">提交订单</button>
- </view>
- </view>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- form: { name: '', descr: '', weight: '', price: 1, type: '', img: '', comment: '' }, // 表单绑定的对象
- rules: {
- name: {
- rules: [{
- required: true,
- errorMessage: '请填写物品名称',
- }]
- },
- price: {
- rules: [{
- required: true,
- errorMessage: '请设置小费',
- }]
- },
- type: {
- rules: [{
- required: true,
- errorMessage: '请设置订单类型',
- }]
- }
- },
- imgs: [],
- imageStyles: {
- "height": 80, // 边框高度
- "width": 80, // 边框宽度
- "border":{ // 如果为 Boolean 值,可以控制边框显示与否
- "color":"#eee", // 边框颜色
- "width":"1px", // 边框宽度
- "style":"solid", // 边框样式
- "radius":"50%" // 边框圆角,支持百分比
- }
- },
- orderTypes: [
- { value: '代拿快递', text: "代拿快递" },
- { value: '代取餐品', text: "代取餐品" },
- { value: '代买零食', text: "代买零食" },
- { value: '代送鲜花', text: "代送鲜花" },
- ]
- }
- },
- onShow() {
- let orderStore = uni.getStorageSync('orderStore')
- this.form.type = orderStore?.type || ''
- },
- methods: {
- addOrder() {
- this.$refs.formRef.validate().then(res => {
- console.log('Validation passed:', res);
- console.log('Form data:', this.form);
- this.$request.post('/orders/addOrder', this.form).then(res => {
- if (res.code === '200') {
- uni.showToast({
- icon: 'success',
- title: '下单成功'
- });
- setTimeout(() =>{
- uni.switchTab({
- url: '/pages/index/index'
- });
- },500)
- } else {
- uni.showToast({
- icon: 'none',
- title: res.msg
- });
- }
- }).catch(error => {
- console.error('API request failed:', error);
- });
- }).catch(error => {
- console.error('Validation failed:', error);
- });
- },
- handleImgUploadSuccess(e) {
- let _this = this
- const filePath = e.tempFilePaths[0]
- uni.uploadFile({
- url: _this.$baseUrl + '/files/upload', //自己的后端接口(默认发送post请求) 注意 _this.$baseUrl需要在全局变量定义
- filePath: filePath,
- name: "file", //这里应为自己后端文件形参的名字
- success(res) {
- let url = JSON.parse(res.data || '{}').data // 获取返回的图像链接
- _this.form.img = url // 给表单图像属性赋值
- }
- })
- }
- }
- }
- </script>
- <style>
- </style>
|