Commit 99d568fb authored by 赵伟庚's avatar 赵伟庚

update:代码格式化

parent fdd9d524
root = true
[*]
charset = utf-8
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 120
/**
* 优先级高于.editorconfig
* https://prettier.io/docs/en/options.html
* 单引号,双引号,末尾是否逗号,是否需要分号根据团队需要配置
* 但是prettier对vue template的格式化能力有限,建议多观察是否满足需要,最佳实践还是要结合eslint进行风格统一
*/
module.exports = {
arrowParens: "always",
bracketSameLine: true, // https://prettier.io/docs/en/options.html#bracket-line
bracketSpacing: true,
embeddedLanguageFormatting: "auto",
htmlWhitespaceSensitivity: "css",
insertPragma: false,
jsxSingleQuote: false,
printWidth: 120, // 如果属性过多需要换行,减少该值
proseWrap: "preserve",
quoteProps: "as-needed",
requirePragma: false,
semi: true,
singleAttributePerLine: false,
singleQuote: false, // 双引号
tabWidth: 2, // 缩进
trailingComma: "es5",
useTabs: false, // 不要用tab缩进
vueIndentScriptAndStyle: false,
endOfLine: "lf",
};
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
:action="action" :action="action"
:data="{ :data="{
directory: 'image', directory: 'image',
uniqueCode: false uniqueCode: false,
}" }"
:auto-upload="autoUpload" :auto-upload="autoUpload"
:list-type="listType" :list-type="listType"
...@@ -17,8 +17,7 @@ ...@@ -17,8 +17,7 @@
:on-success="handleSuccess" :on-success="handleSuccess"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-preview="handlePreview" :on-preview="handlePreview"
:multiple="multiple" :multiple="multiple">
>
<template v-slot:trigger> <template v-slot:trigger>
<el-icon v-if="listType === 'picture-card'"><Plus /></el-icon> <el-icon v-if="listType === 'picture-card'"><Plus /></el-icon>
<!-- <i class="el-icon-plus" v-if="listType === 'picture-card'"></i> --> <!-- <i class="el-icon-plus" v-if="listType === 'picture-card'"></i> -->
...@@ -28,36 +27,29 @@ ...@@ -28,36 +27,29 @@
</template> </template>
<template v-if="!autoUpload"> <template v-if="!autoUpload">
<el-button <el-button type="success" icon="el-icon-position" @click="submitUpload" style="margin-left: 16px">
type="success"
icon="el-icon-position"
@click="submitUpload"
style="margin-left: 16px"
>
上传到服务器 上传到服务器
</el-button> </el-button>
</template> </template>
<template v-slot:tip v-if="showTips && tips"> <template v-slot:tip v-if="showTips && tips">
<div class="el-upload__tip" style="color:#909bb6;"> <div class="el-upload__tip" style="color: #909bb6">
{{ customTips||tips }} {{ customTips || tips }}
</div> </div>
</template> </template>
</el-upload> </el-upload>
<el-dialog title="图片预览" v-model="dialogVisible" custom-class="bg-upload-image-dialog"> <el-dialog title="图片预览" v-model="dialogVisible" class="bg-upload-image-dialog">
<img style="margin:30px 0;width: 600px;" :src="dialogImageUrl" alt="Preview Image" /> <img style="margin: 30px 0; width: 600px" :src="dialogImageUrl" alt="Preview Image" />
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { import { UploadFilled } from "@element-plus/icons-vue";
UploadFilled
} from '@element-plus/icons-vue'
export default { export default {
name: "BgUploadImage", name: "BgUploadImage",
props: { props: {
modelValue:{ modelValue: {
type: Array, type: Array,
default: () => [], default: () => [],
}, },
...@@ -99,12 +91,12 @@ export default { ...@@ -99,12 +91,12 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, // 显示提示 }, // 显示提示
customTips:{ customTips: {
type: String, type: String,
default: "", default: "",
},// 自定义提示内容 }, // 自定义提示内容
}, },
emits: ['update:modelValue',"change"], emits: ["update:modelValue", "change"],
computed: { computed: {
acceptTypes() { acceptTypes() {
if (Array.isArray(this.accept)) { if (Array.isArray(this.accept)) {
...@@ -146,34 +138,34 @@ export default { ...@@ -146,34 +138,34 @@ export default {
return { return {
fileList: [], fileList: [],
UploadFilled, UploadFilled,
dialogImageUrl:'', dialogImageUrl: "",
dialogVisible:false dialogVisible: false,
}; };
}, },
watch: { watch: {
modelValue() { modelValue() {
let newStr = this.modelValue.map((v) => v.url).join(","); let newStr = this.modelValue.map((v) => v.url).join(",");
let oldStr = this.fileList let oldStr = this.fileList.map((v) => (v.response && v.response.data) || v.url).join(",");
.map((v) => (v.response && v.response.data) || v.url)
.join(",");
if (newStr !== oldStr) { if (newStr !== oldStr) {
this.fileList = [...this.modelValue]; this.fileList = [...this.modelValue];
} }
this.$nextTick().then(() => { this.$nextTick().then(() => {
this.checkLimit(this.modelValue) this.checkLimit(this.modelValue);
}); });
}, },
}, },
methods: { methods: {
checkLimit(filelist) { checkLimit(filelist) {
const limit = this.limit const limit = this.limit;
const uploadDom = this.$refs['upload'] const uploadDom = this.$refs["upload"];
const length = uploadDom.$el.children[0].children.length const length = uploadDom.$el.children[0].children.length;
if (filelist.length === limit) { if (filelist.length === limit) {
uploadDom.$el.children[0].children[length-1].style.display = 'none' uploadDom.$el.children[0].children[length - 1].style.display = "none";
} else { } else {
uploadDom.$el.children[0].children[length-1]?uploadDom.$el.children[0].children[length-1].style.display = '':'' uploadDom.$el.children[0].children[length - 1]
? (uploadDom.$el.children[0].children[length - 1].style.display = "")
: "";
} }
}, },
handleBeforeUpload(file) { handleBeforeUpload(file) {
...@@ -184,12 +176,9 @@ export default { ...@@ -184,12 +176,9 @@ export default {
}; };
let temp = file.name.split("."); let temp = file.name.split(".");
let type = "." + temp[temp.length - 1].toLocaleLowerCase(); let type = "." + temp[temp.length - 1].toLocaleLowerCase();
let fileTypeIsOk = let fileTypeIsOk = this.types.length === 0 || this.types.indexOf(type) > -1;
this.types.length === 0 || this.types.indexOf(type) > -1;
let fileSizeIsOk = let fileSizeIsOk =
this.fileSize === 0 || this.fileSize === 0 || this.fileSize === undefined || file.size / units[this.fileSizeUnit] <= this.fileSize;
this.fileSize === undefined ||
file.size / units[this.fileSizeUnit] <= this.fileSize;
let checked = fileTypeIsOk && fileSizeIsOk; let checked = fileTypeIsOk && fileSizeIsOk;
if (!checked) { if (!checked) {
...@@ -200,15 +189,15 @@ export default { ...@@ -200,15 +189,15 @@ export default {
}, },
handleSuccess(response, file, fileList) { handleSuccess(response, file, fileList) {
this.updateFileList(fileList); this.updateFileList(fileList);
this.checkLimit(fileList) this.checkLimit(fileList);
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
this.updateFileList(fileList); this.updateFileList(fileList);
this.checkLimit(fileList) this.checkLimit(fileList);
}, },
handlePreview({ name, url }) { handlePreview({ name, url }) {
this.dialogImageUrl = url this.dialogImageUrl = url;
this.dialogVisible = true this.dialogVisible = true;
// let a = document.createElement("a"); // 生成一个a元素 // let a = document.createElement("a"); // 生成一个a元素
// let event = new MouseEvent("click"); // 创建一个单击事件 // let event = new MouseEvent("click"); // 创建一个单击事件
...@@ -229,7 +218,7 @@ export default { ...@@ -229,7 +218,7 @@ export default {
console.log(values); console.log(values);
this.$emit("update:modelValue", values); this.$emit("update:modelValue", values);
this.$emit("change",values); this.$emit("change", values);
}, },
submitUpload() { submitUpload() {
this.$refs.upload.submit(); this.$refs.upload.submit();
......
This diff is collapsed.
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
:model="contactForm" :model="contactForm"
:rules="contactFormRules" :rules="contactFormRules"
ref="contactRef" ref="contactRef"
style="max-width: 66%" style="max-width: 66%">
>
<el-form-item label="联系人姓名" prop="contact_name"> <el-form-item label="联系人姓名" prop="contact_name">
<el-input v-model="contactForm.contact_name" /> <el-input v-model="contactForm.contact_name" />
</el-form-item> </el-form-item>
...@@ -14,24 +13,22 @@ ...@@ -14,24 +13,22 @@
<el-input v-model="contactForm.contact_phone" /> <el-input v-model="contactForm.contact_phone" />
</el-form-item> </el-form-item>
<el-form-item label="联系人邮箱" prop="contact_email"> <el-form-item label="联系人邮箱" prop="contact_email">
<el-input v-model="contactForm.contact_email"/> <el-input v-model="contactForm.contact_email" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input type="textarea" :rows="3" v-model="contactForm.remark" show-word-limit maxlength="300"/> <el-input type="textarea" :rows="3" v-model="contactForm.remark" show-word-limit maxlength="300" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script setup> <script setup>
import { reactive, ref, onMounted,getCurrentInstance } from 'vue' import { reactive, ref, onMounted } from "vue";
const { proxy } = getCurrentInstance()
const { $axios,$message } = proxy
const contactForm = reactive({ const contactForm = reactive({
contact_name: '', contact_name: "",
contact_phone: '', contact_phone: "",
contact_email: '', contact_email: "",
remark: '', remark: "",
}) });
const props = defineProps({ const props = defineProps({
formType: { formType: {
type: Boolean, type: Boolean,
...@@ -39,14 +36,14 @@ const props = defineProps({ ...@@ -39,14 +36,14 @@ const props = defineProps({
}, },
id: { id: {
type: String, type: String,
default: '', default: "",
} },
}); });
const checkPhone = (rule, value, callback) => { const checkPhone = (rule, value, callback) => {
var phone_ruler = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/; var phone_ruler = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
setTimeout(() => { setTimeout(() => {
if (!phone_ruler.test(value)&&value.length!==0) { if (!phone_ruler.test(value) && value.length !== 0) {
callback(new Error("请输入正确的手机号码")); callback(new Error("请输入正确的手机号码"));
} else { } else {
callback(); callback();
...@@ -72,55 +69,53 @@ const checkPhone = (rule, value, callback) => { ...@@ -72,55 +69,53 @@ const checkPhone = (rule, value, callback) => {
// } // }
const checkName = (rule, value, callback) => { const checkName = (rule, value, callback) => {
var reg = /^[a-zA-Z0-9\u4e00-\u9fa5]+$/ var reg = /^[a-zA-Z0-9\u4e00-\u9fa5]+$/;
if (!reg.test(value)) { if (!reg.test(value)) {
callback(new Error("只能输入字母、数字和汉字")) callback(new Error("只能输入字母、数字和汉字"));
}else { } else {
callback() callback();
} }
} };
const contactFormRules = reactive({ const contactFormRules = reactive({
contact_name: [ contact_name: [
{ required: true, message: '请输入联系人姓名', trigger: 'blur' }, { required: true, message: "请输入联系人姓名", trigger: "blur" },
{ max: 50, message: "联系人姓名最大长度为50个字符", trigger: "blur"}, { max: 50, message: "联系人姓名最大长度为50个字符", trigger: "blur" },
{ validator: checkName, trigger: 'blur' }, { validator: checkName, trigger: "blur" },
], ],
contact_phone: [ contact_phone: [
{ required: true, message: '请输入联系人手机号', trigger: 'blur' }, { required: true, message: "请输入联系人手机号", trigger: "blur" },
{ validator: checkPhone, trigger: 'blur' }, { validator: checkPhone, trigger: "blur" },
// { validator: checkPhoneRepet, trigger: 'blur' } // { validator: checkPhoneRepet, trigger: 'blur' }
], ],
contact_email: [ contact_email: [
{ type: 'email', message: '请输入正确的邮箱', trigger: 'blur' }, { type: "email", message: "请输入正确的邮箱", trigger: "blur" },
{ max: 100, message: "邮箱最大长度为100个字符", trigger: "blur"}, { max: 100, message: "邮箱最大长度为100个字符", trigger: "blur" },
] ],
}) });
const contactRef = ref(null) const contactRef = ref(null);
const emit = defineEmits(['action']) const emit = defineEmits(["action"]);
const submitForm = async () => { const submitForm = async () => {
if (!contactRef) return if (!contactRef) return;
await contactRef.value.validate((valid, fields) => { await contactRef.value.validate((valid, fields) => {
if (valid) { if (valid) {
emit('action', contactForm) emit("action", contactForm);
} else { } else {
emit('action',null) emit("action", null);
} }
}) });
} };
const clearForm = () => { const clearForm = () => {
if (!contactRef) return if (!contactRef) return;
contactRef.value.resetFields() contactRef.value.resetFields();
} };
const setForm = (data) => { const setForm = (data) => {
Object.assign(contactForm, data); Object.assign(contactForm, data);
} };
onMounted(() => { onMounted(() => {});
})
defineExpose({ submitForm, clearForm, setForm }) defineExpose({ submitForm, clearForm, setForm });
</script> </script>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template> <template>
<el-form <el-form :model="formData" :rules="formRules" ref="form" style="max-width: 1048px" class="form">
:model="formData"
:rules="formRules"
ref="form"
style="max-width: 1048px"
class="form"
>
<el-form-item label="banner名称" prop="banner_name"> <el-form-item label="banner名称" prop="banner_name">
<el-input v-model="formData.banner_name" /> <el-input v-model="formData.banner_name" />
</el-form-item> </el-form-item>
...@@ -13,75 +7,70 @@ ...@@ -13,75 +7,70 @@
<el-input v-model="formData.link_address" /> <el-input v-model="formData.link_address" />
</el-form-item> </el-form-item>
<el-form-item label="上传banner图片" prop="banner_image"> <el-form-item label="上传banner图片" prop="banner_image">
<bg-upload-image v-model="formData.banner_image" :fileSize="1" :showTips="true" customTips="请选择图片上传:大小1920 * 560像素支持jpg、png等格式,图片需小于1MB" :limit="1" listType="picture-card" :accept="['.jpg','.jpeg','.png']"></bg-upload-image> <bg-upload-image
v-model="formData.banner_image"
:fileSize="1"
:showTips="true"
customTips="请选择图片上传:大小1920 * 560像素支持jpg、png等格式,图片需小于1MB"
:limit="1"
listType="picture-card"
:accept="['.jpg', '.jpeg', '.png']"></bg-upload-image>
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="state" class="state_form_item"> <el-form-item label="是否启用" prop="state" class="state_form_item">
<bg-switch :labels="['否','是']" :values="[0,1]" v-model="formData.state"></bg-switch> <bg-switch :labels="['否', '是']" :values="[0, 1]" v-model="formData.state"></bg-switch>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script setup> <script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue' import { reactive, toRefs, ref, onBeforeMount, nextTick } from "vue";
import axios from '../../../../../request/http.js' import axios from "../../../../../request/http.js";
import { ElMessage } from 'element-plus' import { ElMessage } from "element-plus";
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from "vue-router";
const router = useRouter() const router = useRouter();
const route = useRoute() const route = useRoute();
const form = ref(null) const form = ref(null);
const state = reactive({ const state = reactive({
formData: { formData: {
banner_name: "", banner_name: "",
link_address: "", link_address: "",
banner_image: [], banner_image: [],
state: 1 state: 1,
}, },
formRules: { formRules: {
banner_name: [ banner_name: [{ required: true, message: "请输入banner名称", trigger: "blur" }],
{ required: true, message: '请输入banner名称', trigger: 'blur' }, banner_image: [{ required: true, message: "请上传banner图", trigger: "change" }],
], state: [{ required: true, message: "请选择启用状态", trigger: "change" }],
banner_image: [ },
{ required: true, message: '请上传banner图', trigger: 'change' }, });
],
state: [
{ required: true, message: '请选择启用状态', trigger: 'change' },
],
}
})
const emit = defineEmits(['action']) const emit = defineEmits(["action"]);
const submitForm = async () => { const submitForm = async () => {
if (!form) return if (!form) return;
await form.value.validate((valid, fields) => { await form.value.validate((valid, fields) => {
if (valid) { if (valid) {
emit('action', state.formData) emit("action", state.formData);
} else { } else {
emit('action',null) emit("action", null);
} }
}) });
} };
const clearForm = () => { const clearForm = () => {
if (!form) return if (!form) return;
form.value.resetFields() form.value.resetFields();
};
}
const setForm = (data) => { const setForm = (data) => {
Object.assign(state.formData, data); Object.assign(state.formData, data);
} };
onBeforeMount(() => {});
onBeforeMount(() => { const { formData, formRules } = toRefs(state);
})
const {
formData,
formRules,
} = toRefs(state)
defineExpose({ submitForm, clearForm, setForm }) defineExpose({ submitForm, clearForm, setForm });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
...@@ -104,4 +93,4 @@ defineExpose({ submitForm, clearForm, setForm }) ...@@ -104,4 +93,4 @@ defineExpose({ submitForm, clearForm, setForm })
} }
} }
} }
</style> </style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
...@@ -5,83 +5,82 @@ ...@@ -5,83 +5,82 @@
:model="orgPersonForm" :model="orgPersonForm"
:rules="orgPersonFormRules" :rules="orgPersonFormRules"
ref="orgPersonFormRef" ref="orgPersonFormRef"
style="max-width: 66%" style="max-width: 66%">
>
<el-form-item label="联系人姓名" prop="contact_name"> <el-form-item label="联系人姓名" prop="contact_name">
<el-input v-model="orgPersonForm.contact_name" /> <el-input v-model="orgPersonForm.contact_name" />
</el-form-item> </el-form-item>
<el-form-item label="证件类型" prop="document_type"> <el-form-item label="证件类型" prop="document_type">
<el-select v-model="orgPersonForm.document_type" placeholder="请选择证件类型" style="width: 100%"> <el-select v-model="orgPersonForm.document_type" placeholder="请选择证件类型" style="width: 100%">
<el-option <el-option v-for="item in documentTypeList" :key="item.value" :label="item.label" :value="item.value" />
v-for="item in documentTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="证件号" prop="document_number"> <el-form-item label="证件号" prop="document_number">
<el-input v-model="orgPersonForm.document_number" /> <el-input v-model="orgPersonForm.document_number" />
</el-form-item> </el-form-item>
<el-form-item label="联系人邮箱" prop="contact_email"> <el-form-item label="联系人邮箱" prop="contact_email">
<el-input v-model="orgPersonForm.contact_email"/> <el-input v-model="orgPersonForm.contact_email" />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input type="textarea" :rows="3" v-model="orgPersonForm.remark" /> <el-input type="textarea" :rows="3" v-model="orgPersonForm.remark" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script setup> <script setup>
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted } from "vue";
const orgPersonForm = reactive({ const orgPersonForm = reactive({
contact_name: '', contact_name: "",
document_type: '', document_type: "",
document_number: '', document_number: "",
contact_email: '', contact_email: "",
remark: '', remark: "",
}) });
const documentTypeList = ref([{ const documentTypeList = ref([
label: '身份证', {
value: 1 label: "身份证",
}]) value: 1,
},
]);
const orgPersonFormRules = reactive({ const orgPersonFormRules = reactive({
contact_email: [ contact_email: [
// { required: true, message: '请输入手机号', trigger: 'blur' }, // { required: true, message: '请输入手机号', trigger: 'blur' },
{ type: 'email',message: '请输入正确的邮箱', trigger: 'blur' } { type: "email", message: "请输入正确的邮箱", trigger: "blur" },
], ],
document_number: [ document_number: [
{ pattern: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)/, message: '请输入正确的身份证号', trigger: 'blur' } {
] pattern:
}) /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)/,
const orgPersonFormRef = ref(null) message: "请输入正确的身份证号",
const emit = defineEmits(['action']) trigger: "blur",
},
],
});
const orgPersonFormRef = ref(null);
const emit = defineEmits(["action"]);
const submitForm = async () => { const submitForm = async () => {
if (!orgPersonFormRef) return if (!orgPersonFormRef) return;
await orgPersonFormRef.value.validate((valid, fields) => { await orgPersonFormRef.value.validate((valid, fields) => {
if (valid) { if (valid) {
emit('action', orgPersonForm) emit("action", orgPersonForm);
} else { } else {
emit('action',null) emit("action", null);
} }
}) });
} };
const clearForm = () => { const clearForm = () => {
if (!orgPersonFormRef) return if (!orgPersonFormRef) return;
orgPersonFormRef.value.resetFields() orgPersonFormRef.value.resetFields();
} };
const setForm = (data) => { const setForm = (data) => {
Object.assign(orgPersonForm, data); Object.assign(orgPersonForm, data);
} };
onMounted(() => { onMounted(() => {});
})
defineExpose({ submitForm, clearForm, setForm }) defineExpose({ submitForm, clearForm, setForm });
</script> </script>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment