| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- <template>
- <view class="feedbox">
- <u-form :model="model" :rules="rules" ref="uForm" :errorType="errorType">
- <u-form-item label="反馈内容" prop="content" label-width="150">
- <u-input type="textarea" :border="border" placeholder="请输入您的投诉/建议" v-model="model.content" />
- </u-form-item>
- <u-form-item label="图片说明" prop="images" label-width="150">
- <!-- <u-upload></u-upload> -->
- <!-- width="160" height="160" -->
- <u-upload width="160" height="160"
- max-count='1'
- v-model="formData.file"
- :action="action"
- :file-list="fileList"
- :name="uploadName"
- :header="uploadHeader"
- :form-data="formData"
- @on-error="onError"
- @on-remove="onRemove"
- @on-success="onSuccess"></u-upload>
- </u-form-item>
- <u-form-item label="联系方式" prop="contact" label-width="150">
- <!-- type="number" -->
- <!-- <u-input :border="border" placeholder="请输入联系方式" v-model="model.contact"></u-input> -->
- <u-input :border="border" placeholder="请输入您的手机号" v-model="model.contact" type="number"></u-input>
- </u-form-item>
- </u-form>
- <view class="submitBtn">
- <u-button class="" type="primary" @click="submit">提交</u-button>
- </view>
-
- </view>
- </template>
- <script>
- import { hex_sha1 } from '@/utils/sha1.js'
- import { objKeySort,naviBackEmit } from '@/utils/tools.js'
- export default {
- data() {
- let that = this;
- let secret = 'yrb1vdc2qc'
- let formData = {
- target: "oss",
- type: 'image',
- }
- let sign = hex_sha1(secret + objKeySort(formData));
- console.log(sign);
- return {
- action: this.$env.apiUrl + "/api/client/index/upload",
- uploadName: 'file',
- uploadHeader:{
- 'Content-Type': 'multipart/form-data',
- sign,
- },
- formData:{
- target: "oss",
- type: 'image',
- file:null
- },
- fileList:[],
- border: false,
- errorType: ['message'],
- model: {
- content: '',
- contact: '',
- images: ''
- },
- rules: {
- content: [
- {
- required: true,
- message: '请输入您的投诉/建议'
- },
- {
- min: 5,
- message: '投诉/建议不能少于5个字',
- trigger: 'change' ,
- },
- // 正则校验示例,此处用正则校验是否中文,此处仅为示例,因为uView有this.$u.test.chinese可以判断是否中文
- // {
- // pattern: /^[\u4e00-\u9fa5]+$/gi,
- // message: '简介只能为中文',
- // trigger: 'change',
- // },
- ],
- /* contact: [
- {
- required: true,
- message: '请输入您的联系方式',
- trigger: ['change','blur'],
- },
- // {
- // validator: (rule, value, callback) => {
- // // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
- // return this.$u.test.mobile(value);
- // },
- // message: '手机号码不正确',
- // // 触发器可以同时用blur和change,二者之间用英文逗号隔开
- // trigger: ['change','blur'],
- // }
- ], */
-
- contact: [
- {
- required: true,
- message: '请输入正确的手机号',
- trigger: ['change','blur'],
- },
- {
- validator: (rule, value, callback) => {
- // 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
- return this.$u.test.mobile(value);
- },
- message: '请输入正确的手机号',
- // 触发器可以同时用blur和change,二者之间用英文逗号隔开
- trigger: ['change','blur'],
- }
- ],
- },
- };
- },
- onLoad() {
- },
- onReady() {
- this.$refs.uForm.setRules(this.rules);
- },
- methods: {
-
- onError(data, index, lists) {
- console.log('onError', data, index, lists);
- },
- onSuccess(data, index, lists) {
- console.log('onSuccess', data, index, lists);
- this.model.images = data.data.full_url;
- },
- onRemove(data, index, lists) {
- this.model.images=null;
- },
- submit() {
- this.$refs.uForm.validate(valid => {
- if (valid) {
- this.addFeedbackFun();
- } else {
- console.log('验证失败');
- }
- });
- },
- addFeedbackFun(){
- console.log(this.model);
- // return;
- this.$u.api.addFeedbackAjax(this.model).then(({code,data})=>{
- this.$u.toast('已收到您的反馈,我们将尽快处理')
- })
- },
- }
- };
- </script>
- <style scoped lang="scss">
- .submitBtn{
- margin: 100rpx 100rpx 0;
- }
- .feedbox {
- padding: 30rpx;
- background-color: #fff;
- min-height: 100vh;
- }
- .agreement {
- display: flex;
- align-items: center;
- margin: 40rpx 0;
- .agreement-text {
- padding-left: 8rpx;
- color: $u-tips-color;
- }
- }
- </style>
|