123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869 |
- <template>
- <view style="padding: 20rpx;">
- <!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
- <u-divider text="申请人信息" textColor="#9dd574" lineColor="#9dd574" textPosition="left"></u-divider>
- <u-form
- labelWidth="190rpx"
- labelPosition="left"
- :model="model1"
- :rules="rules"
- ref="uForm"
- >
- <u-form-item
- label="申请人类型"
- prop="userInfo.proposerTypeName"
- borderBottom
- @click="showProposerType = true;"
- ref="item1"
- >
- <u--input
- v-model="model1.userInfo.proposerTypeName"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择申请人类型"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="申请人姓名"
- prop="userInfo.nickName"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入申请人姓名"
- v-model="model1.userInfo.nickName"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="证件类型"
- prop="userInfo.cardTypeName"
- borderBottom
- @click="showCardType = true;"
- ref="item1"
- >
- <u--input
- v-model="model1.userInfo.cardTypeName"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择证件类型"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="其他证件类型"
- prop="userInfo.cardTypeOther"
- borderBottom
- ref="item1"
- v-if="model1.userInfo.cardType === '4'"
- >
- <u--input
- placeholder="请输入其他证件类型"
- v-model="model1.userInfo.cardTypeOther"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="证件号码"
- prop="userInfo.idCard"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入证件号码"
- v-model="model1.userInfo.idCard"
- border="none"
- ></u--input>
- </u-form-item>
- <view v-if="model1.userInfo.proposerType === '1'">
- <u-divider text="个人信息" textColor="#9dd574" lineColor="#9dd574" textPosition="left"></u-divider>
- <u-form-item
- label="养犬人照片"
- prop="userInfo.avatar"
- borderBottom
- ref="item1"
- >
- <u-upload
- :fileList="fileList1"
- @afterRead="afterRead"
- @delete="deletePic"
- name="1"
- multiple
- :maxCount="1"
- ></u-upload>
- </u-form-item>
- <u-form-item
- label="联系电话"
- borderBottom
- ref="item1"
- >
- <u--input
- disabled
- disabledColor="#ffffff"
- v-model="model1.userInfo.phoneNumber"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="电子邮箱"
- prop="userInfo.email"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入电子邮箱"
- v-model="model1.userInfo.email"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="养犬人地址"
- prop="userInfo.address"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入养犬人地址"
- v-model="model1.userInfo.address"
- border="none"
- ></u--input>
- </u-form-item>
- </view>
- <view v-if="model1.userInfo.proposerType === '2'">
- <u-divider text="单位信息" textColor="#9dd574" lineColor="#9dd574" textPosition="left"></u-divider>
- <u-form-item
- label="组织名称"
- prop="userInfo.organizationName"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入组织名称"
- v-model="model1.userInfo.organizationName"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="信用代码"
- prop="userInfo.organizationCode"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入信用代码"
- v-model="model1.userInfo.organizationCode"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="联系电话"
- borderBottom
- ref="item1"
- >
- <u--input
- disabled
- disabledColor="#ffffff"
- v-model="model1.userInfo.phoneNumber"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="法人姓名"
- prop="userInfo.legalNickName"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入法人姓名"
- v-model="model1.userInfo.legalNickName"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="法人证件类型"
- prop="userInfo.legalCardTypeName"
- borderBottom
- @click="showLegalCardType = true;"
- ref="item1"
- >
- <u--input
- v-model="model1.userInfo.legalCardTypeName"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择证件类型"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="法人其他证件类型"
- prop="userInfo.legalCardTypeOther"
- borderBottom
- ref="item1"
- v-if="model1.userInfo.legalCardType === '4'"
- >
- <u--input
- placeholder="请输入法人其他证件类型"
- v-model="model1.userInfo.legalCardTypeOther"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="法人证件号码"
- prop="userInfo.legalIdCard"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入法人证件号码"
- v-model="model1.userInfo.legalIdCard"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="电子邮箱"
- prop="userInfo.email"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入电子邮箱"
- v-model="model1.userInfo.email"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="单位地址"
- prop="userInfo.address"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入单位地址"
- v-model="model1.userInfo.address"
- border="none"
- ></u--input>
- </u-form-item>
- </view>
- <u-divider text="犬只信息" textColor="#9dd574" lineColor="#9dd574" textPosition="left"></u-divider>
- <u-form-item
- label="犬全身照(侧身正脸全身照)"
- prop="userInfo.dogAvatar"
- borderBottom
- ref="item1"
- >
- <u-upload
- :fileList="fileList2"
- @afterRead="afterRead"
- @delete="deletePic"
- name="2"
- multiple
- :maxCount="1"
- ></u-upload>
- </u-form-item>
- <u-form-item
- label="犬名"
- prop="userInfo.dogName"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入犬名"
- v-model="model1.userInfo.dogName"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="犬种"
- prop="userInfo.dogKindName"
- borderBottom
- ref="item1"
- @click="showDogKindType = true"
- >
- <u--input
- v-model="model1.userInfo.dogKindName"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择犬种"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="毛色"
- prop="userInfo.color"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入毛色"
- v-model="model1.userInfo.color"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="身高(厘米)"
- prop="userInfo.height"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入身高"
- type = "number"
- v-model="model1.userInfo.height"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="体长(厘米)"
- prop="userInfo.length"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入体长"
- type = "number"
- v-model="model1.userInfo.length"
- border="none"
- ></u--input>
- </u-form-item>
- <u-form-item
- label="性别"
- prop="userInfo.dogSexName"
- borderBottom
- ref="item1"
- @click="showDogSexType = true"
- >
- <u--input
- v-model="model1.userInfo.dogSexName"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择犬种"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="出生日期"
- prop="userInfo.birthDate"
- borderBottom
- ref="item1"
- @click="showBirthDate = true;dateType = '1'"
- >
- <u--input
- v-model="model1.userInfo.birthDate"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择出生日期"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="准养日期"
- prop="userInfo.expectedAdoptionDate"
- borderBottom
- ref="item1"
- @click="showBirthDate = true;dateType = '2'"
- >
- <u--input
- v-model="model1.userInfo.expectedAdoptionDate"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择准养日期"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="延续登记日期"
- prop="userInfo.continuationRegistrationDate"
- borderBottom
- ref="item1"
- @click="showBirthDate = true;dateType = '3'"
- >
- <u--input
- v-model="model1.userInfo.continuationRegistrationDate"
- disabled
- disabledColor="#ffffff"
- placeholder="请选择延续登记日期"
- border="none"
- ></u--input>
- <u-icon
- slot="right"
- name="arrow-right"
- ></u-icon>
- </u-form-item>
- <u-form-item
- label="饲养地点"
- prop="userInfo.feedAddress"
- borderBottom
- ref="item1"
- >
- <u--input
- placeholder="请输入饲养地点"
- v-model="model1.userInfo.feedAddress"
- border="none"
- ></u--input>
- </u-form-item>
- </u-form>
- <u-button type="success" text="提交" @click="submitForm"></u-button>
- <u-action-sheet
- :show="showProposerType"
- :actions="proposerTypeActions"
- title="请选择申请人类型"
- @close="showProposerType = false"
- @select="proposerTypeSelect"
- >
- </u-action-sheet>
- <u-action-sheet
- :show="showCardType"
- :actions="cardTypeActions"
- title="请选择证件类型"
- @close="showCardType = false"
- @select="cardTypeSelect"
- >
- </u-action-sheet>
- <u-action-sheet
- :show="showLegalCardType"
- :actions="cardTypeActions"
- title="请选择证件类型"
- @close="showLegalCardType = false"
- @select="legalCardTypeSelect"
- >
- </u-action-sheet>
- <u-picker
- :show="showDogKindType"
- title="选择犬种"
- :columns="dogKindList"
- keyName="dictLabel"
- @confirm="dogKindConfirm"
- @cancel = "showDogKindType = false"
- >
- </u-picker>
- <u-action-sheet
- :show="showDogSexType"
- :actions="dogSexActions"
- title="请选择性别"
- @close="showDogSexType = false"
- @select="dogSexTypeSelect"
- >
- </u-action-sheet>
- <u-datetime-picker
- :show="showBirthDate"
- mode="date"
- v-model="birthDateValue"
- @confirm="(e) => birthDateConfirm(e, dateType)"
- @cancel="showBirthDate = false"
- ></u-datetime-picker>
- </view>
- </template>
- <script>
- const app = getApp();
- export default {
- data() {
- return {
- showProposerType: false,
- showCardType: false,
- showLegalCardType: false,
- showDogKindType:false,
- showDogSexType:false,
- showBirthDate:false,
- dateType:'',
- birthDateValue:Number(new Date()),
- fileList1: [],
- fileList2: [],
- dogKindList:[],
- model1: {
- userInfo: {
- source:'app',
- proposerType: '',
- nickName: '',
- proposerTypeName: '',
- cardType: '',
- cardTypeName: '',
- idCard: '',
- cardTypeOther: '',
- avatar: '',
- phoneNumber:uni.getStorageSync('phonenumber'),
- email:'',
- address:'',
- organizationName:'',
- organizationCode:'',
- legalNickName:'',
- legalCardType:'',
- legalCardTypeName:'',
- legalCardTypeOther:'',
- legalIdCard:'',
- dogAvatar:'',
- dogName:'',
- dogKind:'',
- dogKindName:'',
- color:'',
- height:'',
- length:'',
- dogSex:'',
- dogSexName:'',
- birthDate:'',
- expectedAdoptionDate:'',
- continuationRegistrationDate:'',
- feedAddress:''
- },
- },
- proposerTypeActions: [
- {
- name: '个人',
- value: '1'
- },
- {
- name: '单位',
- value: '2'
- }
- ],
- cardTypeActions:[
- {
- name: '身份证',
- value: '1'
- },
- {
- name: '护照',
- value: '2'
- },
- {
- name: '居住证',
- value: '3'
- },
- {
- name: '其它',
- value: '4'
- }
- ],
- dogSexActions:[
- {
- name: '雄',
- value: '1'
- },
- {
- name: '雌',
- value: '2'
- },
- ],
- rules: {
- 'userInfo.proposerTypeName': {
- type: 'string',
- required: true,
- message: '请选择养犬申请人类型',
- trigger: ['blur', 'change']
- },
- 'userInfo.nickName': {
- type: 'string',
- required: true,
- message: '请输入养犬人姓名',
- trigger: ['blur', 'change']
- },
- 'userInfo.cardTypeName': {
- type: 'string',
- required: true,
- message: '请选择养犬证件类型',
- trigger: ['blur', 'change']
- },
- 'userInfo.idCard': {
- type: 'string',
- required: true,
- message: '请输入证件号码',
- trigger: ['blur', 'change']
- },
- 'userInfo.cardTypeOther':{
- required: true,
- message: '请输入其他证件类型',
- trigger: ['change','blur']
- },
- 'userInfo.avatar':{
- required: true,
- message: '请上传用户照片',
- trigger: ['change','blur']
- },
- 'userInfo.email':{
- required: true,
- message: '请输入电子邮箱',
- trigger: ['change','blur']
- },
- 'userInfo.address':{
- required: true,
- message: '请输入地址',
- trigger: ['change','blur']
- },
- 'userInfo.organizationName':{
- required: true,
- message: '请输入组织名称',
- trigger: ['change','blur']
- },
- 'userInfo.organizationCode':{
- required: true,
- message: '请输入信用代码',
- trigger: ['change','blur']
- },
- 'userInfo.legalNickName':{
- required: true,
- message: '请输入法人姓名',
- trigger: ['change','blur']
- },
- 'userInfo.legalCardTypeName':{
- required: true,
- message: '请选择法人证件类型',
- trigger: ['change','blur']
- },
- 'userInfo.legalCardTypeOther':{
- required: true,
- message: '请输入法人其他证件类型',
- trigger: ['change','blur']
- },
- 'userInfo.legalIdCard':{
- required: true,
- message: '请输入法人证件号码',
- trigger: ['change','blur']
- },
- 'userInfo.dogAvatar':{
- required: true,
- message: '请上传犬全身照',
- trigger: ['change','blur']
- },
- 'userInfo.dogName':{
- required: true,
- message: '请输入犬名',
- trigger: ['change','blur']
- },
- 'userInfo.dogKindName':{
- required: true,
- message: '请选择犬种',
- trigger: ['change','blur']
- },
- 'userInfo.color':{
- required: true,
- message: '请输入毛色',
- trigger: ['change','blur']
- },
- 'userInfo.height':{
- required: true,
- message: '请输入身高',
- trigger: ['change','blur']
- },
- 'userInfo.length':{
- required: true,
- message: '请输入体长',
- trigger: ['change','blur']
- },
- 'userInfo.dogSexName':{
- required: true,
- message: '请选择宠物性别',
- trigger: ['change','blur']
- },
- 'userInfo.birthDate':{
- required: true,
- message: '请选择出生日期',
- trigger: ['change','blur']
- },
- 'userInfo.expectedAdoptionDate':{
- required: true,
- message: '请选择准养日期',
- trigger: ['change','blur']
- },
- 'userInfo.continuationRegistrationDate':{
- required: true,
- message: '请选择延续登记日期',
- trigger: ['change','blur']
- },
- 'userInfo.feedAddress':{
- required: true,
- message: '请输入饲养地点',
- trigger: ['change','blur']
- }
- },
- radio: '',
- switchVal: false
- };
- },
- methods: {
- // 删除图片
- deletePic(event) {
- this.model1.userInfo.avatar = '';
- this.$refs.uForm.validateField('userInfo.avatar');
- this[`fileList${event.name}`].splice(event.index, 1);
- },
- // 新增图片
- async afterRead(event) {
- console.log(event,333)
- // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
- let lists = [].concat(event.file);
- let fileListLen = this[`fileList${event.name}`].length;
- lists.map((item) => {
- this[`fileList${event.name}`].push({
- ...item,
- status: "uploading",
- message: "上传中",
- });
- });
- for (let i = 0; i < lists.length; i++) {
- const result = await this.uploadFilePromise(lists[i].url);
- if(event.name === '1'){
- this.model1.userInfo.avatar = result;
- this.$refs.uForm.validateField('userInfo.avatar');
- }
- if(event.name === '2'){
- this.model1.userInfo.dogAvatar = result;
- this.$refs.uForm.validateField('userInfo.dogAvatar');
- }
- let item = this[`fileList${event.name}`][fileListLen];
- this[`fileList${event.name}`].splice(
- fileListLen,
- 1,
- Object.assign(item, {
- status: "success",
- message: "",
- url: app.globalData.commonImage+result,
- })
- );
- fileListLen++;
- }
- },
- uploadFilePromise(url) {
- return new Promise((resolve, reject) => {
- let a = uni.uploadFile({
- url: app.globalData.commonHttp+"common/upload", // 仅为示例,非真实的接口地址
- filePath: url,
- name: "file",
- header:{
- authorization:'Bearer '+uni.getStorageSync('token')
- },
- success: (res) => {
- setTimeout(() => {
- resolve(JSON.parse(res.data).fileName);
- }, 1000);
- },
- });
- });
- },
- proposerTypeSelect(e) {
- this.model1.userInfo.proposerTypeName = e.name
- this.model1.userInfo.proposerType = e.value
- this.$refs.uForm.validateField('userInfo.proposerTypeName')
- },
- cardTypeSelect(e) {
- this.model1.userInfo.cardTypeName = e.name
- this.model1.userInfo.cardType = e.value
- this.$refs.uForm.validateField('userInfo.cardTypeName')
- },
- legalCardTypeSelect(e){
- this.model1.userInfo.legalCardTypeName = e.name
- this.model1.userInfo.legalCardType = e.value
- this.$refs.uForm.validateField('userInfo.legalCardTypeName')
- },
- dogSexTypeSelect(e){
- this.model1.userInfo.dogSexName = e.name
- this.model1.userInfo.dogSex = e.value
- this.$refs.uForm.validateField('userInfo.dogSexName')
- },
- dogKindConfirm(e){
- this.model1.userInfo.dogKindName = e.value[0].dictLabel
- this.model1.userInfo.dogKind = e.value[0].dictValue
- this.$refs.uForm.validateField('userInfo.dogKindName')
- this.showDogKindType = false
- },
- birthDateConfirm(e,type){
- console.log(e,type)
- if(type === '1'){
- this.model1.userInfo.birthDate = this.formatDate(e.value)
- this.$refs.uForm.validateField('userInfo.birthDate')
- }
- if(type === '2'){
- this.model1.userInfo.expectedAdoptionDate = this.formatDate(e.value)
- this.$refs.uForm.validateField('userInfo.expectedAdoptionDate')
- }
- if(type === '3'){
- this.model1.userInfo.continuationRegistrationDate = this.formatDate(e.value)
- this.$refs.uForm.validateField('userInfo.continuationRegistrationDate')
- }
- this.showBirthDate = false
- },
- formatDate(timestamp) {
- const date = new Date(timestamp);
- const year = date.getFullYear();
- const month = (date.getMonth() + 1).toString().padStart(2, '0');
- const day = date.getDate().toString().padStart(2, '0');
- return `${year}-${month}-${day}`;
- },
- async submitForm() {
- // 动态更新规则
- // const currentRules = { ...this.rules }; // 浅拷贝当前规则
- // if (this.model1.userInfo.cardType !== '4') {
- // // 修改需要取消校验字段的规则
- // currentRules['userInfo.cardTypeOther'] = {
- // required: false
- // }
- // }
-
- // 重新设置规则
- // this.$refs.uForm.setRules(currentRules);
-
- // 进行验证
- try {
- await this.$refs.uForm.validate();
- this.$http.post('appraisal/DDog',this.model1.userInfo).then(res=>{
- uni.showToast({ title: '提交成功',success() {
- setTimeout(()=>{
- uni.navigateBack();
- },2000)
- } });
- }).catch(err=>{
-
- })
- } catch (errors) {
- console.log('验证失败', errors);
- } finally {
- // 可选:提交后恢复初始规则状态
- this.$refs.uForm.setRules(this.rules);
- }
- }
-
- },
- onReady() {
- //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
- this.$refs.uForm.setRules(this.rules);
- //获取犬种
- this.$http.get('system/dict/data/type/d_doy_kind').then(res=>{
- this.dogKindList.push(res.data);
- }).catch(err=>{
-
- })
- }
- };
- </script>
- <style>
- </style>
|