123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- <template>
- <div class="add-edit-dialog-container">
- <el-dialog
- :title="title"
- :visible.sync="visible"
- width="600px"
- :before-close="close"
- :close-on-click-modal="false"
- >
- <el-form :model="formData" ref="formData" :rules="rules" label-width="90px">
- <el-form-item label="名称:" prop="imgName">
- <el-input placeholder="请输入" v-model="formData.imgName"></el-input>
- </el-form-item>
- <el-form-item label="图片:" class="plate-icon" prop="file">
- <!-- <p class="color666">图片大小不能超过3MB</p> -->
- <Upload
- :fileList="fileList"
- @changeUploadFile="changeUploadFile"
- @validateUpload="validateUpload"
- :limitUpload="1"
- :maximumSize="maximumSize"
- :uploadType="1"
- ref="upload"
- ></Upload>
- </el-form-item>
- <el-form-item label="跳转链接:" prop="url">
- <el-input placeholder="跳转链接" v-model="formData.url"></el-input>
- </el-form-item>
- <el-form-item label="跳转类型:" prop="jumpType">
- <el-select v-model="formData.jumpType" placeholder="请选择">
- <el-option label="pdf" :value="1"></el-option>
- <el-option label="网页链接" :value="2"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="显示位置:" prop="type">
- <el-select v-model="formData.type" placeholder="请选择">
- <el-option label="工作台banner" :value="1"></el-option>
- <el-option label="物业端banner" :value="2"></el-option>
- <el-option label="4.0首页banner" :value="3"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="排序:" prop="serialNo">
- <el-input placeholder="请排序" v-model="formData.serialNo" class="sort-input" maxlength="20"></el-input>
- </el-form-item>
- <!-- <el-form-item label="启用状态:">
- <el-switch
- v-model="formData.statuz"
- active-text="开"
- inactive-text="关"
- :active-value="1"
- :inactive-value="0"
- ></el-switch> -->
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="close()">取 消</el-button>
- <el-button
- type="primary"
- @click="submitForm('formData')"
- :disabled="submitBtndisabled"
- >确 定</el-button>
- </div>
- </el-dialog>
- </div>
- </template>
- <script>
- import Upload from '@/apps/mobile/components/uploadAuto/index';
- import { addBanner, editBanner } from '@/apps/mobile/api/banner/index';
- import { validPositiveInteger, validHttps } from '@/apps/mobile/utils/validate';
- import { staticUrl } from '@/config.js';
- import { staticPath } from '@/apps//mobile/utils/util';
- export default {
- components: {
- Upload,
- },
- data() {
- // http(s)校验
- var checkHttps = (rule, value, callback) => {
- if (value && !validHttps(value)) {
- callback(new Error('格式不正确'));
- } else {
- callback();
- }
- };
- // 排序校验
- var checkSort = (rule, value, callback) => {
- if (value && !validPositiveInteger(value)) {
- callback(new Error('格式不正确'));
- } else {
- callback();
- }
- };
- return {
- jumpType: null,
- type: null,
- visible: false,
- title: '新增',
- formData: { file: null },
- submitBtndisabled: false,
- fileList: [], // 图片列表
- maximumSize: 3, //图片大小 不超过3MB
- limitUpload: 1,
- rules: {
- imgName: [
- { required: true, message: '请输入名称', trigger: 'blur' },
- { max: 30, message: '长度最大30个字符', trigger: 'blur' },
- ],
- jumpType: [{ required: true, message: '请选择跳转类型', trigger: 'change' }],
- type: [{ required: true, message: '请选择显示位置', trigger: 'blur' }],
- serialNo: [
- { validator: checkSort, message: '请输入正整数', trigger: 'blur' }
- ],
- file: [{ required: true, message: '请上传图片', trigger: 'blur' }],
- url: [
- { validator: checkHttps, message: '请输入正确的链接地址', trigger: 'blur' }
- ],
- },
- };
- },
- methods: {
- open(type, data) {
- this.type = type;
- let obj1 = {
- file: null,
- };
- if (type === 'edit') {
- this.title = '编辑';
- console.log(data, 'daaaaa');
- if (data.image) {
- obj1.file = true;
- // if(!this.pathReg.test(data.image)) {
- // data.image = staticUrl + data.image
- // }
- let url = staticPath(data.image);
- let obj = {
- name: '',
- url,
- response: {
- data: { pathUrl: data.image },
- },
- };
- this.fileList.push(obj);
- }
- this.formData = Object.assign({ ...data, ...obj1 });
- console.log(this.formData, 'this.formData');
- } else {
- this.title = '新增';
- this.formData = obj1;
- }
- this.visible = true;
- },
- close() {
- this.type = null;
- this.$refs['formData'].resetFields();
- this.$refs.upload.clearFiles(); // 清空已上传的文件列表
- this.fileList = [];
- this.submitBtndisabled = false;
- this.visible = false;
- },
- submitForm(formName) {
- this.$refs[formName].validate(valid => {
- if (valid) {
- this.submitBtndisabled = true;
- let message = '';
- let image = null;
- if (this.fileList.length > 0) {
- console.log(this.fileList, 'this.fileList');
- image = this.fileList[0].response.data.pathUrl;
- }
- let obj = Object.assign({ ...this.formData, image });
- console.log(obj, 'objj');
- if (this.type === 'add') {
- message = '新增成功';
- delete obj.file;
- obj.createBy = 0; //创建者ID
- addBanner(obj)
- .then(res => {
- this.completeOperation(message);
- })
- .catch(err => err);
- }
- if (this.type === 'edit') {
- message = '修改成功';
- let editObj = {
- id: obj.id,
- imgName: obj.imgName,
- url: obj.url,
- jumpType: obj.jumpType,
- type: obj.type,
- serialNo: obj.serialNo,
- image: obj.image,
- };
- editBanner(editObj)
- .then(() => {
- this.completeOperation(message);
- })
- .catch(err => err);
- }
- }
- });
- },
- /**
- * 手动验证upload、更新选择完成的图片数据
- * @param {Object} data: fileList是上传的图片数据 validateValues为true时说明有上传图片 为null时无上传图片
- */
- validateUpload(data) {
- this.changeUploadFile(data.fileList);
- // console.log(data,'data');
- this.formData.file = data.validateValues;
- this.$refs['formData'].validateField('file');
- },
- changeUploadFile(fileList) {
- this.fileList = fileList;
- console.log(this.fileList, 'this.fileList');
- },
- /**
- * 将新增、编辑操作完成之后共同需要调用的方法放在此函数里面
- * @param {String} message 提示信息
- */
- completeOperation(message) {
- this.$message({
- type: 'success',
- message,
- });
- this.close();
- this.submitBtndisabled = false;
- this.$emit('queryListData');
- },
- },
- watch: {
- fileList(val) {
- this.$nextTick(() => {
- this.$refs.upload.changeHideUpload();
- });
- },
- },
- };
- </script>
- <style lang="stylus" scoped>
- .add-edit-dialog-container {
- ::v-deep .el-input {
- width: auto;
- }
- ::v-deep .el-input__inner {
- width: 200px;
- }
- .upload {
- display: inline-block;
- }
- }
- </style>
|