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 @@
:action="action"
:data="{
directory: 'image',
uniqueCode: false
uniqueCode: false,
}"
:auto-upload="autoUpload"
:list-type="listType"
......@@ -17,8 +17,7 @@
:on-success="handleSuccess"
:on-remove="handleRemove"
:on-preview="handlePreview"
:multiple="multiple"
>
:multiple="multiple">
<template v-slot:trigger>
<el-icon v-if="listType === 'picture-card'"><Plus /></el-icon>
<!-- <i class="el-icon-plus" v-if="listType === 'picture-card'"></i> -->
......@@ -28,36 +27,29 @@
</template>
<template v-if="!autoUpload">
<el-button
type="success"
icon="el-icon-position"
@click="submitUpload"
style="margin-left: 16px"
>
<el-button type="success" icon="el-icon-position" @click="submitUpload" style="margin-left: 16px">
上传到服务器
</el-button>
</template>
<template v-slot:tip v-if="showTips && tips">
<div class="el-upload__tip" style="color:#909bb6;">
{{ customTips||tips }}
<div class="el-upload__tip" style="color: #909bb6">
{{ customTips || tips }}
</div>
</template>
</el-upload>
<el-dialog title="图片预览" v-model="dialogVisible" custom-class="bg-upload-image-dialog">
<img style="margin:30px 0;width: 600px;" :src="dialogImageUrl" alt="Preview Image" />
<el-dialog title="图片预览" v-model="dialogVisible" class="bg-upload-image-dialog">
<img style="margin: 30px 0; width: 600px" :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
</template>
<script>
import {
UploadFilled
} from '@element-plus/icons-vue'
import { UploadFilled } from "@element-plus/icons-vue";
export default {
name: "BgUploadImage",
props: {
modelValue:{
modelValue: {
type: Array,
default: () => [],
},
......@@ -99,12 +91,12 @@ export default {
type: Boolean,
default: false,
}, // 显示提示
customTips:{
customTips: {
type: String,
default: "",
},// 自定义提示内容
}, // 自定义提示内容
},
emits: ['update:modelValue',"change"],
emits: ["update:modelValue", "change"],
computed: {
acceptTypes() {
if (Array.isArray(this.accept)) {
......@@ -146,34 +138,34 @@ export default {
return {
fileList: [],
UploadFilled,
dialogImageUrl:'',
dialogVisible:false
dialogImageUrl: "",
dialogVisible: false,
};
},
watch: {
modelValue() {
let newStr = this.modelValue.map((v) => v.url).join(",");
let oldStr = this.fileList
.map((v) => (v.response && v.response.data) || v.url)
.join(",");
let oldStr = this.fileList.map((v) => (v.response && v.response.data) || v.url).join(",");
if (newStr !== oldStr) {
this.fileList = [...this.modelValue];
}
this.$nextTick().then(() => {
this.checkLimit(this.modelValue)
this.checkLimit(this.modelValue);
});
},
},
methods: {
checkLimit(filelist) {
const limit = this.limit
const uploadDom = this.$refs['upload']
const length = uploadDom.$el.children[0].children.length
const limit = this.limit;
const uploadDom = this.$refs["upload"];
const length = uploadDom.$el.children[0].children.length;
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 {
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) {
......@@ -184,12 +176,9 @@ export default {
};
let temp = file.name.split(".");
let type = "." + temp[temp.length - 1].toLocaleLowerCase();
let fileTypeIsOk =
this.types.length === 0 || this.types.indexOf(type) > -1;
let fileTypeIsOk = this.types.length === 0 || this.types.indexOf(type) > -1;
let fileSizeIsOk =
this.fileSize === 0 ||
this.fileSize === undefined ||
file.size / units[this.fileSizeUnit] <= this.fileSize;
this.fileSize === 0 || this.fileSize === undefined || file.size / units[this.fileSizeUnit] <= this.fileSize;
let checked = fileTypeIsOk && fileSizeIsOk;
if (!checked) {
......@@ -200,15 +189,15 @@ export default {
},
handleSuccess(response, file, fileList) {
this.updateFileList(fileList);
this.checkLimit(fileList)
this.checkLimit(fileList);
},
handleRemove(file, fileList) {
this.updateFileList(fileList);
this.checkLimit(fileList)
this.checkLimit(fileList);
},
handlePreview({ name, url }) {
this.dialogImageUrl = url
this.dialogVisible = true
this.dialogImageUrl = url;
this.dialogVisible = true;
// let a = document.createElement("a"); // 生成一个a元素
// let event = new MouseEvent("click"); // 创建一个单击事件
......@@ -229,7 +218,7 @@ export default {
console.log(values);
this.$emit("update:modelValue", values);
this.$emit("change",values);
this.$emit("change", values);
},
submitUpload() {
this.$refs.upload.submit();
......
This diff is collapsed.
......@@ -5,8 +5,7 @@
:model="contactForm"
:rules="contactFormRules"
ref="contactRef"
style="max-width: 66%"
>
style="max-width: 66%">
<el-form-item label="联系人姓名" prop="contact_name">
<el-input v-model="contactForm.contact_name" />
</el-form-item>
......@@ -14,24 +13,22 @@
<el-input v-model="contactForm.contact_phone" />
</el-form-item>
<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 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>
</template>
<script setup>
import { reactive, ref, onMounted,getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
const { $axios,$message } = proxy
import { reactive, ref, onMounted } from "vue";
const contactForm = reactive({
contact_name: '',
contact_phone: '',
contact_email: '',
remark: '',
})
contact_name: "",
contact_phone: "",
contact_email: "",
remark: "",
});
const props = defineProps({
formType: {
type: Boolean,
......@@ -39,14 +36,14 @@ const props = defineProps({
},
id: {
type: String,
default: '',
}
default: "",
},
});
const checkPhone = (rule, value, callback) => {
var phone_ruler = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
setTimeout(() => {
if (!phone_ruler.test(value)&&value.length!==0) {
if (!phone_ruler.test(value) && value.length !== 0) {
callback(new Error("请输入正确的手机号码"));
} else {
callback();
......@@ -72,55 +69,53 @@ const checkPhone = (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)) {
callback(new Error("只能输入字母、数字和汉字"))
}else {
callback()
callback(new Error("只能输入字母、数字和汉字"));
} else {
callback();
}
}
};
const contactFormRules = reactive({
contact_name: [
{ required: true, message: '请输入联系人姓名', trigger: 'blur' },
{ max: 50, message: "联系人姓名最大长度为50个字符", trigger: "blur"},
{ validator: checkName, trigger: 'blur' },
{ required: true, message: "请输入联系人姓名", trigger: "blur" },
{ max: 50, message: "联系人姓名最大长度为50个字符", trigger: "blur" },
{ validator: checkName, trigger: "blur" },
],
contact_phone: [
{ required: true, message: '请输入联系人手机号', trigger: 'blur' },
{ validator: checkPhone, trigger: 'blur' },
{ required: true, message: "请输入联系人手机号", trigger: "blur" },
{ validator: checkPhone, trigger: "blur" },
// { validator: checkPhoneRepet, trigger: 'blur' }
],
contact_email: [
{ type: 'email', message: '请输入正确的邮箱', trigger: 'blur' },
{ max: 100, message: "邮箱最大长度为100个字符", trigger: "blur"},
]
})
const contactRef = ref(null)
const emit = defineEmits(['action'])
{ type: "email", message: "请输入正确的邮箱", trigger: "blur" },
{ max: 100, message: "邮箱最大长度为100个字符", trigger: "blur" },
],
});
const contactRef = ref(null);
const emit = defineEmits(["action"]);
const submitForm = async () => {
if (!contactRef) return
if (!contactRef) return;
await contactRef.value.validate((valid, fields) => {
if (valid) {
emit('action', contactForm)
emit("action", contactForm);
} else {
emit('action',null)
emit("action", null);
}
})
}
});
};
const clearForm = () => {
if (!contactRef) return
contactRef.value.resetFields()
}
if (!contactRef) return;
contactRef.value.resetFields();
};
const setForm = (data) => {
Object.assign(contactForm, data);
}
onMounted(() => {
};
})
onMounted(() => {});
defineExpose({ submitForm, clearForm, setForm })
defineExpose({ submitForm, clearForm, setForm });
</script>
This diff is collapsed.
......@@ -4,20 +4,23 @@
<el-breadcrumb separator="/">
<el-breadcrumb-item> 开发管理 </el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/develop/account' }"> 系统账号管理 </el-breadcrumb-item>
<el-breadcrumb-item > 详情 </el-breadcrumb-item>
<el-breadcrumb-item> 详情 </el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="page_content apaas_scroll">
<div class="info_row">
<div class="title">
<div><span class="icon_box"></span> 基础信息</div>
<div class="dashed_line">
</div>
<div class="dashed_line"></div>
</div>
<div class="info_content">
<div class="img_box">
<img v-if="logo" :src="logo" style="height: 96px;width: 96px;border-radius: 99px" alt="">
<img v-else src="/src/assets/imgs/home_ic_user.png" style="height: 96px;width: 96px;border-radius: 99px" alt="">
<img v-if="logo" :src="logo" style="height: 96px; width: 96px; border-radius: 99px" alt="" />
<img
v-else
src="/src/assets/imgs/home_ic_user.png"
style="height: 96px; width: 96px; border-radius: 99px"
alt="" />
</div>
<div class="info_box">
<bg-info :data="baseInfo"></bg-info>
......@@ -27,8 +30,7 @@
<div>
<div class="title">
<div><span class="icon_box"></span> 联系人信息</div>
<div class="dashed_line">
</div>
<div class="dashed_line"></div>
</div>
<div class="info_content">
<div class="img_box"></div>
......@@ -42,111 +44,107 @@
</template>
<script setup>
import { reactive, toRefs, ref, } from '@vue/reactivity'
import { getCurrentInstance } from 'vue'
import { computed, onBeforeMount } from '@vue/runtime-core'
import { useRoute, useRouter } from 'vue-router';
import { reactive, toRefs, ref, onBeforeMount } from "vue";
import { useRoute, useRouter } from "vue-router";
import axios from "@/request/http.js";
import { ElMessage } from "element-plus";
const route = useRoute();
const { proxy } = getCurrentInstance()
const { $axios,$message } = proxy
const baseInfo = reactive(
[{
const baseInfo = reactive([
{
name: "所属机构",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "业务系统编码",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "业务系统名称",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "账号",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "AppID",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "AppSecret",
value: "",
copy_icon: true,
secret: true,
nameWidth: 130
nameWidth: 130,
},
{
name: "创建人",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "创建时间",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "是否启用",
value: "",
state: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "开发厂商名称",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "访问地址",
value: "",
full: true,
nameWidth: 130
nameWidth: 130,
},
{
name: "业务系统描述",
value: "",
full: true,
nameWidth: 130
nameWidth: 130,
},
]
)
]);
const contactInfo = reactive(
[{
const contactInfo = reactive([
{
name: "联系人姓名",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "联系人手机号",
value: "",
nameWidth: 130
nameWidth: 130,
},
{
name: "联系人邮箱",
value: "",
full: true,
nameWidth: 130
nameWidth: 130,
},
{
name: "备注",
value: "",
full: true,
nameWidth: 130
nameWidth: 130,
},
])
const logo = ref('')
]);
const logo = ref("");
const getDetail = () => {
$axios.get(`/apaas/system/v5/user/detail/${route.query.id}`)
.then((res) => {
const getDetail = () => {
axios.get(`/apaas/system/v5/user/detail/${route.query.id}`).then((res) => {
if (res.data.code == 200) {
const detail = res.data.data;
baseInfo[0].value = detail.organization_name;
......@@ -155,10 +153,11 @@ const baseInfo = reactive(
baseInfo[3].value = detail.system_account;
baseInfo[4].value = detail.app_id;
baseInfo[5].value = detail.app_secret;
baseInfo[6].value = detail.created_by+"("+(detail.created_user_role ? detail.created_user_role.join('') : '')+")";
baseInfo[6].value =
detail.created_by + "(" + (detail.created_user_role ? detail.created_user_role.join("") : "") + ")";
baseInfo[7].value = detail.created_time;
baseInfo[8].value = detail.state === 1 ? '' : '';
baseInfo[8].state = detail.state === 1 ? 'success' : 'default';
baseInfo[8].value = detail.state === 1 ? "" : "";
baseInfo[8].state = detail.state === 1 ? "success" : "default";
baseInfo[9].value = detail.develop_name;
baseInfo[10].value = detail.access_address;
baseInfo[11].value = detail.business_desc;
......@@ -169,15 +168,15 @@ const baseInfo = reactive(
contactInfo[3].value = detail.remark;
logo.value = detail.logo;
}else {
$message.error(res.data.data)
}
})
} else {
ElMessage.error(res.data.data);
}
});
};
onBeforeMount(() => {
getDetail()
})
onBeforeMount(() => {
getDetail();
});
</script>
<style scoped>
......@@ -221,5 +220,4 @@ const baseInfo = reactive(
border-radius: 2px;
margin-right: 5px;
}
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template>
<el-form
:model="formData"
:rules="formRules"
ref="form"
style="max-width: 1048px"
class="form"
>
<el-form :model="formData" :rules="formRules" ref="form" style="max-width: 1048px" class="form">
<el-form-item label="banner名称" prop="banner_name">
<el-input v-model="formData.banner_name" />
</el-form-item>
......@@ -13,75 +7,70 @@
<el-input v-model="formData.link_address" />
</el-form-item>
<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 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>
</template>
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const form = ref(null)
import { reactive, toRefs, ref, onBeforeMount, nextTick } from "vue";
import axios from "../../../../../request/http.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
const router = useRouter();
const route = useRoute();
const form = ref(null);
const state = reactive({
formData: {
banner_name: "",
link_address: "",
banner_image: [],
state: 1
state: 1,
},
formRules: {
banner_name: [
{ required: true, message: '请输入banner名称', trigger: 'blur' },
],
banner_image: [
{ required: true, message: '请上传banner图', trigger: 'change' },
],
state: [
{ required: true, message: '请选择启用状态', trigger: 'change' },
],
}
})
banner_name: [{ required: true, message: "请输入banner名称", trigger: "blur" }],
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 () => {
if (!form) return
if (!form) return;
await form.value.validate((valid, fields) => {
if (valid) {
emit('action', state.formData)
emit("action", state.formData);
} else {
emit('action',null)
emit("action", null);
}
})
}
});
};
const clearForm = () => {
if (!form) return
form.value.resetFields()
}
if (!form) return;
form.value.resetFields();
};
const setForm = (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>
<style lang="scss" scoped>
......
......@@ -17,103 +17,96 @@
</template>
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRoute, useRouter } from 'vue-router'
import { reactive, toRefs, ref, onBeforeMount, nextTick } from "vue";
import axios from "../../../../../request/http.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
import bannerForm from "./banner-form.vue"
const router = useRouter()
const route = useRoute()
import bannerForm from "./banner-form.vue";
const router = useRouter();
const route = useRoute();
const bannerFormRef = ref(null);
const state = reactive({
formData: {
banner_name: "",
link_address: "",
banner_image: [],
state: 1
}
})
state: 1,
},
});
const getDetail = (id) => {
axios
.get(`/apaas/system/v5/banner/${id}`)
.then(res => {
.then((res) => {
if (res.data.code == 200) {
const data = res.data.data
const data = res.data.data;
bannerFormRef.value.setForm({
banner_name: data.banner_name,
link_address: data.link_address,
banner_image: data.banner_image ? [{url: data.banner_image}] : [],
state: data.state
})
}else {
ElMessage.error(res.data.data)
banner_image: data.banner_image ? [{ url: data.banner_image }] : [],
state: data.state,
});
} else {
ElMessage.error(res.data.data);
}
})
.catch(err => {
console.log(err)
})
}
.catch((err) => {
console.log(err);
});
};
const submit = () => {
bannerFormRef.value.submitForm()
}
bannerFormRef.value.submitForm();
};
const submitFormData = (data) => {
if (data) {
Object.assign(state.formData,data);
console.log(state.formData)
Object.assign(state.formData, data);
console.log(state.formData);
if (route.query.id) {
// 编辑
let params = {
...state.formData,
id: +route.query.id
}
params.banner_image = params.banner_image && params.banner_image.length > 0 ? params.banner_image[0].url : ''
axios
.put(`/apaas/system/v5/banner`,params)
.then(res => {
id: +route.query.id,
};
params.banner_image = params.banner_image && params.banner_image.length > 0 ? params.banner_image[0].url : "";
axios.put(`/apaas/system/v5/banner`, params).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
router.go(-1)
}else {
ElMessage.error(res.data.data)
ElMessage.success(res.data.msg);
router.go(-1);
} else {
ElMessage.error(res.data.data);
}
})
}else {
});
} else {
let params = {
...state.formData,
}
params.banner_image = params.banner_image && params.banner_image.length > 0 ? params.banner_image[0].url : ''
axios
.post(`/apaas/system/v5/banner`,params)
.then(res => {
};
params.banner_image = params.banner_image && params.banner_image.length > 0 ? params.banner_image[0].url : "";
axios.post(`/apaas/system/v5/banner`, params).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
router.go(-1)
}else {
ElMessage.error(res.data.data)
ElMessage.success(res.data.msg);
router.go(-1);
} else {
ElMessage.error(res.data.data);
}
})
});
}
}
}
};
const cancel = () => {
router.go(-1)
}
router.go(-1);
};
onBeforeMount(() => {
if (route.query.id) {
getDetail(route.query.id)
getDetail(route.query.id);
}
})
const {
} = toRefs(state)
});
const {} = toRefs(state);
</script>
<style lang="scss" scoped>
......@@ -133,7 +126,7 @@ const {
justify-content: flex-start;
align-items: stretch;
background-color: #fff;
box-shadow: 0px 1px 4px 0px rgba(0,7,101,0.15);
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.15);
border-radius: 6px;
margin: 0 0 16px;
position: relative;
......
......@@ -3,9 +3,7 @@
<div class="detail_container">
<bg-breadcrumb></bg-breadcrumb>
<div class="main_container">
<bg-filter-group
:showSearch="false"
>
<bg-filter-group :showSearch="false">
<template v-slot:left_action>
<div class="apaas_button">
<el-button class="register_btn" type="primary" @click="addBanner">
......@@ -17,18 +15,16 @@
</bg-filter-group>
<div class="table_container">
<div class="table bg-scroll">
<bg-table
ref="Bgtable"
:headers="headers"
:rows="tableRows"
:isIndex="true"
:stripe="true"
>
<bg-table ref="Bgtable" :headers="headers" :rows="tableRows" :isIndex="true" :stripe="true">
<template v-slot:updated_time="{ row }">
{{ row.updated_time.split("+")[0].replace("T", " ").replace("Z", " ") }}
</template>
<template v-slot:state="{ row }">
<bg-switch @click="changeUseRow(row)" :labels="['否','是']" :values="[0,1]" v-model="row.state"></bg-switch>
<bg-switch
@click="changeUseRow(row)"
:labels="['否', '是']"
:values="[0, 1]"
v-model="row.state"></bg-switch>
</template>
<template v-slot:action="{ row }">
<bg-table-btns :operations="getOperations(row)" />
......@@ -47,8 +43,7 @@
() => {
dialogDelete = false;
}
"
>
">
<div>确定要删除吗?</div>
<template v-slot:footer>
<div class="apaas_button">
......@@ -61,13 +56,13 @@
</template>
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
import { reactive, toRefs, ref, onBeforeMount, nextTick } from "vue";
import axios from "../../../../request/http.js";
import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";
import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
const router = useRouter()
const Bgtable = ref(null)
const router = useRouter();
const Bgtable = ref(null);
const state = reactive({
headers: [
{
......@@ -100,27 +95,25 @@ const state = reactive({
tableRows: [],
dialogDelete: false,
actionRow: null,
})
});
const getRoleRows = () => {
axios
.get(`/apaas/system/v5/banner/list`)
.then((res) => {
axios.get(`/apaas/system/v5/banner/list`).then((res) => {
if (res.data.code == 200) {
state.tableRows = res.data.data || []
state.tableRows = res.data.data || [];
if (state.tableRows.length > 0) {
state.tableRows.forEach(e => {
e.canMoveUp = true
e.canMoveDown = true
})
state.tableRows[0].canMoveUp = false
state.tableRows[state.tableRows.length - 1].canMoveDown = false
state.tableRows.forEach((e) => {
e.canMoveUp = true;
e.canMoveDown = true;
});
state.tableRows[0].canMoveUp = false;
state.tableRows[state.tableRows.length - 1].canMoveDown = false;
}
}else {
ElMessage.error(res.data.data)
} else {
ElMessage.error(res.data.data);
}
})
} // 获取列表
});
}; // 获取列表
const getOperations = (row) => {
return [
......@@ -136,117 +129,108 @@ const getOperations = (row) => {
},
{
name: "上移",
callback: () => moveRow(row,1),
callback: () => moveRow(row, 1),
disabled: !row.canMoveUp,
},
{
name: "下移",
callback: () => moveRow(row,2),
callback: () => moveRow(row, 2),
disabled: !row.canMoveDown,
},
];
} // 表格操作按钮
}; // 表格操作按钮
const addBanner = () => {
router.push("/home-config/banner/add")
}
router.push("/home-config/banner/add");
};
const edit_row = (row) => {
router.push({
path: "/home-config/banner/edit",
query: {
id: row.id
}
})
}
id: row.id,
},
});
};
const delete_row = (row) => {
state.actionRow = row
state.dialogDelete = true
}
state.actionRow = row;
state.dialogDelete = true;
};
const deleteData = () => {
axios
.delete(`/apaas/system/v5/banner/${state.actionRow.id}`)
.then(res => {
axios.delete(`/apaas/system/v5/banner/${state.actionRow.id}`).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
state.dialogDelete = false
getRoleRows()
}else {
ElMessage.error(res.data.data)
ElMessage.success(res.data.msg);
state.dialogDelete = false;
getRoleRows();
} else {
ElMessage.error(res.data.data);
}
})
}
});
};
const moveRow = (row,type) => {
let index
state.tableRows.forEach((e,i) => {
const moveRow = (row, type) => {
let index;
state.tableRows.forEach((e, i) => {
if (e.id == row.id) {
index = i
index = i;
}
})
let nextRow
if (type == 1) { // 上移
nextRow = state.tableRows[index - 1]
}else { // 下移
nextRow = state.tableRows[index + 1]
});
let nextRow;
if (type == 1) {
// 上移
nextRow = state.tableRows[index - 1];
} else {
// 下移
nextRow = state.tableRows[index + 1];
}
let params = [
{
id: row.id,
sort: nextRow.sort
sort: nextRow.sort,
},
{
id: nextRow.id,
sort: row.sort
}
]
sort: row.sort,
},
];
axios
.post(`/apaas/system/v5/banner/sort`,[...params])
.post(`/apaas/system/v5/banner/sort`, [...params])
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
getRoleRows()
}else {
ElMessage.error(res.data.data)
ElMessage.success(res.data.msg);
getRoleRows();
} else {
ElMessage.error(res.data.data);
}
})
.catch((err) => {
console.log(err)
})
}
console.log(err);
});
};
const changeUseRow = (row) => {
let params = {
id: row.id,
state: row.state
}
axios
.post(`/apaas/system/v5/banner/status`,params)
.then((res) => {
state: row.state,
};
axios.post(`/apaas/system/v5/banner/status`, params).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
getRoleRows()
}else {
ElMessage.error(res.data.data)
row.state = row.state == 0 ? 1 : 0
ElMessage.success(res.data.msg);
getRoleRows();
} else {
ElMessage.error(res.data.data);
row.state = row.state == 0 ? 1 : 0;
}
})
}
});
};
onBeforeMount(() => {
getRoleRows()
})
const {
filter,
headers,
tableRows,
tableTotal,
dialogDelete,
} = toRefs(state)
getRoleRows();
});
const { filter, headers, tableRows, tableTotal, dialogDelete } = toRefs(state);
</script>
<style lang="scss" scoped>
......@@ -266,7 +250,7 @@ const {
justify-content: flex-start;
align-items: stretch;
background-color: #fff;
box-shadow: 0px 1px 4px 0px rgba(0,7,101,0.15);
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.15);
border-radius: 6px;
margin: 0 0 16px;
position: relative;
......
......@@ -4,21 +4,23 @@
<bg-breadcrumb></bg-breadcrumb>
<div class="main_container">
<div class="content_top">
<el-form
:model="formData"
:rules="formRules"
ref="formRef"
style="max-width: 1048px"
class="form"
>
<el-form :model="formData" :rules="formRules" ref="formRef" style="max-width: 1048px" class="form">
<el-form-item label="公司名称" prop="company_name">
<el-input v-model="formData.company_name" placeholder="请输入公司名称" show-word-limit maxlength="50"/>
<el-input v-model="formData.company_name" placeholder="请输入公司名称" show-word-limit maxlength="50" />
</el-form-item>
<el-form-item label="公司地址" prop="company_address">
<el-input v-model="formData.company_address" placeholder="请输入公司地址" show-word-limit maxlength="100"/>
<el-input v-model="formData.company_address" placeholder="请输入公司地址" show-word-limit maxlength="100" />
</el-form-item>
<el-form-item label="公司logo" prop="logo">
<bg-upload-image v-model="formData.logo" :fileSize="500" :fileSizeUnit="'KB'" :showTips="true" customTips="请选择图片上传:大小80 * 80像素支持jpg、png等格式,图片需小于500KB" :limit="1" listType="picture-card" :accept="['.jpg','.jpeg','.png']"></bg-upload-image>
<bg-upload-image
v-model="formData.logo"
:fileSize="500"
:fileSizeUnit="'KB'"
:showTips="true"
customTips="请选择图片上传:大小80 * 80像素支持jpg、png等格式,图片需小于500KB"
:limit="1"
listType="picture-card"
:accept="['.jpg', '.jpeg', '.png']"></bg-upload-image>
</el-form-item>
<el-form-item label="公司电话" prop="contact_phone">
<el-input v-model="formData.contact_phone" placeholder="请输入公司电话" show-word-limit maxlength="20" />
......@@ -35,104 +37,92 @@
</template>
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRoute, useRouter } from 'vue-router'
import { reactive, toRefs, ref, onBeforeMount, nextTick } from "vue";
import axios from "../../../../request/http.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
const router = useRouter()
const route = useRoute()
const router = useRouter();
const route = useRoute();
const formRef = ref(null);
const checkPhone = (rule,value,callback) => {
let reg = /^((1[0-9]{10})|(((([0-9]{3}-)?[0-9]{8})|(([0-9]{4}-)?[0-9]{7}))(-[0-9]{1,4})?))$/
if (value !== '') {
console.log(1)
const checkPhone = (rule, value, callback) => {
let reg = /^((1[0-9]{10})|(((([0-9]{3}-)?[0-9]{8})|(([0-9]{4}-)?[0-9]{7}))(-[0-9]{1,4})?))$/;
if (value !== "") {
console.log(1);
if (!reg.test(value)) {
console.log(2)
callback(new Error("电话号码格式不正确,请重新输入"))
}else {
console.log(3)
callback()
console.log(2);
callback(new Error("电话号码格式不正确,请重新输入"));
} else {
console.log(3);
callback();
}
}else {
callback()
} else {
callback();
}
}
};
const state = reactive({
formData: {
company_name: "",
company_address: "",
logo: [],
contact_phone: ""
contact_phone: "",
},
formRules: {
company_name: [
{ required: true, message: "请输入公司名称", trigger: "blur"},
{ max: 50, message: "长度最大为50个字符", trigger: "blur"}
],
company_address: [
],
logo: [
{ required: true, message: "请输入公司名称", trigger: "blur" },
{ max: 50, message: "长度最大为50个字符", trigger: "blur" },
],
contact_phone: [
{ validator: checkPhone, trigger: "blur"}
],
}
})
company_address: [],
logo: [],
contact_phone: [{ validator: checkPhone, trigger: "blur" }],
},
});
const getFootInfo = () => {
axios
.get(`/apaas/system/v5/config/get`)
.then(res => {
.then((res) => {
if (res.data.code == 200) {
const data = res.data.data
const data = res.data.data;
state.formData = {
company_name: data.company_name,
company_address: data.company_address,
logo: data.logo ? [{url: data.logo}] : [],
contact_phone: data.contact_phone
logo: data.logo ? [{ url: data.logo }] : [],
contact_phone: data.contact_phone,
};
} else {
ElMessage.error(res.data.data);
}
}else {
ElMessage.error(res.data.data)
}
})
.catch(err => {
console.log(err)
})
}
.catch((err) => {
console.log(err);
});
};
const submit = () => {
formRef.value.validate((valid, fields) => {
if (valid) {
let params = {
...state.formData,
logo: state.formData.logo && state.formData.logo.length > 0 ? state.formData.logo[0].url : '',
}
axios
.post(`/apaas/system/v5/config/set`,params)
.then(res => {
logo: state.formData.logo && state.formData.logo.length > 0 ? state.formData.logo[0].url : "",
};
axios.post(`/apaas/system/v5/config/set`, params).then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
}else {
ElMessage.error(res.data.data)
ElMessage.success(res.data.msg);
} else {
ElMessage.error(res.data.data);
}
})
});
}
})
}
});
};
onBeforeMount(() => {
getFootInfo()
})
const {
formData,
formRules,
} = toRefs(state)
getFootInfo();
});
const { formData, formRules } = toRefs(state);
</script>
<style lang="scss" scoped>
......@@ -152,7 +142,7 @@ const {
justify-content: flex-start;
align-items: stretch;
background-color: #fff;
box-shadow: 0px 1px 4px 0px rgba(0,7,101,0.15);
box-shadow: 0px 1px 4px 0px rgba(0, 7, 101, 0.15);
border-radius: 6px;
margin: 0 0 16px;
position: relative;
......
<template>
<el-form
:model="formData"
:rules="formRules"
ref="form"
style="max-width: 1048px"
class="form"
>
<el-form :model="formData" :rules="formRules" ref="form" style="max-width: 1048px" class="form">
<el-form-item label="能力类型" prop="business_type_id">
<el-select v-model="formData.business_type_id" placeholder="请选择能力类型" style="width: 100%" @change="changeType" :disabled="route.query.id">
<el-option
v-for="item in props.businessList"
:key="item.dict_id"
:label="item.name"
:value="item.id"
/>
<el-select
v-model="formData.business_type_id"
placeholder="请选择能力类型"
style="width: 100%"
@change="changeType"
:disabled="route.query.id">
<el-option v-for="item in props.businessList" :key="item.dict_id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="上传图标" prop="logo">
<bg-upload-image v-model="formData.logo" :fileSize="500" :fileSizeUnit="'KB'" :showTips="true" customTips="请选择图片上传:大小36 * 36像素支持jpg、png等格式,图片需小于500KB" :limit="1" listType="picture-card" :accept="['.jpg','.jpeg','.png']"></bg-upload-image>
<bg-upload-image
v-model="formData.logo"
:fileSize="500"
:fileSizeUnit="'KB'"
:showTips="true"
customTips="请选择图片上传:大小36 * 36像素支持jpg、png等格式,图片需小于500KB"
:limit="1"
listType="picture-card"
:accept="['.jpg', '.jpeg', '.png']"></bg-upload-image>
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const form = ref(null)
import { reactive, toRefs, ref, onBeforeMount, nextTick } from "vue";
import axios from "../../../../../request/http.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
const router = useRouter();
const route = useRoute();
const form = ref(null);
const props = defineProps({
businessList: {
type: Array,
default: []
}
})
default: [],
},
});
const state = reactive({
formData: {
business_type_id: "",
logo: [],
},
formRules: {
business_type_id: [
{ required: true, message: '请选择业务类型', trigger: 'change' },
],
logo: [
{ required: true, message: '请上传图标', trigger: 'change' },
],
business_type_id: [{ required: true, message: "请选择业务类型", trigger: "change" }],
logo: [{ required: true, message: "请上传图标", trigger: "change" }],
},
})
});
const emit = defineEmits(['action','changeType'])
const emit = defineEmits(["action", "changeType"]);
const submitForm = async () => {
if (!form) return
if (!form) return;
await form.value.validate((valid, fields) => {
if (valid) {
emit('action', state.formData)
emit("action", state.formData);
} else {
emit('action',null)
emit("action", null);
}
})
}
});
};
const changeType = (val) => {
emit("changeType",val)
}
emit("changeType", val);
};
const clearForm = () => {
if (!form) return
form.value.resetFields()
}
if (!form) return;
form.value.resetFields();
};
const setForm = (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>
<style lang="scss" scoped>
......
This diff is collapsed.
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