Plat Admin

platUpdate.vue 10KB

    <template> <div class="app-container"> <div class="box-container"> <div class="contain-title">修改平台信息</div> </div> <div class="content-container"> <div class="main-info"> <el-form :model="formObj" ref="formObj" :rules="rulesObj" label-width="80px" class="update-wrapper demo-ruleForm"> <el-row :gutter="25"> <el-col :span="14"> <el-row :gutter="20" class="update-main"> <el-col :span="24"> <el-form-item label="平台名称">{{formObj.name}}</el-form-item> </el-col> <el-col :span="item.span||''" v-for="item in formItem" :key="item.index"> <el-form-item :label="item.tit" :prop="item.prop"> <el-input v-if="item.textarea" type="textarea" :rows="8" v-model="formObj[item.prop]" placeholder="请填写一个平台的简单介绍,让大家更好地了解平台" maxlength="5000"></el-input> <!-- <cityPicker v-else-if="item.city" @paren="toshow" :addrCode='formObj[item.prop]'></cityPicker> --> <el-input v-else v-model="formObj[item.prop]" :placeholder="`请填写${item.place||''}${item.tit}`" :maxlength="item.num||''"></el-input> </el-form-item> </el-col> <el-col :span="24"> <el-form-item align="center"> <el-button type="primary" @click="submitForm('formObj')">保存</el-button> </el-form-item> </el-col> </el-row> </el-col> <el-col :span="10"> <div class="fileBox" v-on:uploadfun="uploadfun"> <uploadFile :uploadImg=uploadImg></uploadFile> <p class="teimg">上传封面图片</p> <p class="tetype">PNG/JPG/JPEG格式,2M以内</p> </div> <!-- <div class="update-logo"> <el-upload class="avatar-uploader" :action="uploadUrl" :show-file-list="false" ref="uploadLogo" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"> <img v-if="imageUrl" :src="imageUrl" class="avatar"> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> <div class="update-tip">PNG/JPG/JPEG格式<br>大小2M以内</div> </div> --> </el-col> <el-col :offset="16"> <el-form-item> <div style="line-height: 10px;"> <p>最后修改人: {{formObj.modifier}}</p> <p>最后修改时间: {{formObj.modifyTime}}</p> </div> </el-form-item> </el-col> </el-row> </el-form> </div> </div> </div> </template> <script> import { queryPlat, updatePlat, uploadLogo } from '@/api/platUpdate' import { requiredTip, limitNumTip, checkEmailV } from '@/utils/validator' import { parseTime } from '@/utils' import queryDict from '@/utils/queryDict' import queryBase from '@/utils/queryBase' import cityPicker from '@/components/CityPicker' import uploadFile from '@/components/uploadFile' export default { data() { return { uploadImg: { url: uploadLogo, width: '280px', height: '200px', fun: 'uploadfun' }, AllCitys: [], formItem: [ { span: 24, prop: 'url', tit: '平台网址', required: true }, { span: 24, prop: 'manageOrg', tit: '管理机构', required: true }, { span: 12, prop: 'addr', city: true, tit: '所在城市', required: true }, { span: 12, prop: 'zipCode', tit: '平台邮编', num: 20 }, { span: 24, prop: 'location', tit: '详细地址', num: 50, place: '管理机构' }, { span: 12, prop: 'servicePhone', tit: '客服电话', num: 50, required: true }, { span: 12, prop: 'serviceEmail', tit: '客服邮箱', num: 50, required: true }, { span: 24, prop: 'operateTime', tit: '工作时间', num: 50 }, { span: 12, prop: 'linkman', tit: '联系人', required: true, place: '平台', num: 10 }, { span: 12, prop: 'job', tit: '职位', required: true, place: '联系人', num: 20 }, { span: 24, prop: 'comp', tit: '所在机构', required: true, place: '联系人', num: 50 }, { span: 12, prop: 'linkphone', tit: '联系电话', num: 50, required: true }, { span: 12, prop: 'linkemail', tit: '联系邮箱', num: 50 }, { span: 24, prop: 'descp', tit: '平台简介', textarea: true, required: true, num: 5000 } ], formObj: { name: '', logo: '', url: '', manageOrg: '', addr: '', location: '', zipCode: '', servicePhone: '', serviceEmail: '', operateTime: '', linkman: '', job: '', department: '', comp: '', linkphone: '', linkemail: '', descp: '' }, rulesObj: {} } }, components: { cityPicker, uploadFile }, computed: { }, created() { this.getDictoryData() this.pushRulesFn() this.queryPlatInfo() }, methods: { getDictoryData() { const that = this queryDict.applyDict('XZQH', function(dictData) { dictData.map(item => { that.AllCitys[item.code] = item.fullCaption }) }) // 城市级联 }, pushRulesFn() { const formItem = this.formItem const rulesObj = this.rulesObj for (let i = 0; i < formItem.length; ++i) { const ru = [] if (formItem[i].required) { ru.push({ required: true, message: requiredTip(formItem[i].tit), trigger: 'blur' }) } if (formItem[i].num) { ru.push({ max: formItem[i].num, message: limitNumTip(formItem[i].tit, formItem[i].num), trigger: 'blur, change' }) } switch (formItem[i].prop) { case 'linkemail': ru.push({ validator: checkEmailV, trigger: 'blur' }) break case 'serviceEmail': ru.push({ validator: checkEmailV, trigger: 'blur' }) break } rulesObj[formItem[i].prop] = ru } }, queryPlatInfo() { var that = this this.$http.get(queryPlat, {}, function(res) { if (res.success) { const obj = res.data if (obj.modifyTime) { obj.modifyTime = parseTime(obj.modifyTime) } if (obj.modifier) { queryBase.getAdminUser(obj.modifier, function(sc, value) { if (sc) { obj.modifier = value.name } }) } that.formObj = obj } }) }, submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { // this.$refs.uploadLogo.submit() // 确认上传图片 // if (this.province) { // if (!this.city) { // this.$alert('请您选择所在城市', '提示', { // confirmButtonText: '确定', // type: 'warning', // center: true // }) // return // } // } const form = this.formObj this.$http.put(updatePlat, { name: form.name, logo: form.logo, url: form.url, manageOrg: form.manageOrg, addr: form.addr, location: form.location, zipCode: form.zipCode, servicePhone: form.servicePhone, serviceEmail: form.serviceEmail, operateTime: form.operateTime, linkman: form.linkman, job: form.job, department: form.department, comp: form.comp, linkphone: form.linkphone, linkemail: form.linkemail, descp: form.descp }, function(res) { this.$message({ message: '平台信息修改成功!', type: 'success' }) }) } else { return false } }) }, uploadfun(value) { console.log(value) }, toshow(value) { this.formObj.addr = value } } } </script> <style rel="stylesheet/scss" lang="scss"> .main-info{ padding: 0 20px; .update-logo{ width: 280px; .avatar-uploader{ .el-upload{ /*center-items(280px,187px);*/ border: 1px dashed #d9d9d9; cursor: pointer; position: relative; .el-upload:hover { border-color: #dadada; } .avatar-uploader-icon{ font-size: 40px; color: #8c939d; width: 280px; height: 187px; line-height: 187px; text-align: center; } } } .update-tip{ margin-top:15px; text-align:center; font-size:14px; /*color:$secondaryFont;*/ } } .update-main{ .update-title{ font-size:30px; line-height:54px; margin-bottom:16px; padding-left:10px; } } } </style>