增加自动化代码图片功能

This commit is contained in:
piexlMax
2023-06-08 23:17:46 +08:00
parent 92b78ab3c8
commit d2d7b22a8f
9 changed files with 323 additions and 57 deletions
+7 -33
View File
@@ -4,25 +4,7 @@
<el-col :span="6">
<div class="fl-left avatar-box">
<div class="user-card">
<div
class="user-headpic-update"
:style="{
'background-image': `url(${
userStore.userInfo.headerImg &&
userStore.userInfo.headerImg.slice(0, 4) !== 'http'
? path + userStore.userInfo.headerImg
: userStore.userInfo.headerImg
})`,
'background-repeat': 'no-repeat',
'background-size': 'cover',
}"
>
<span class="update" @click="openChooseImg">
<el-icon>
<edit />
</el-icon>
重新上传</span>
</div>
<SelectImage v-model="userStore.userInfo.headerImg" />
<div class="user-personality">
<p v-if="!editFlag" class="nickName">
{{ userStore.userInfo.nickName }}
@@ -129,8 +111,6 @@
</el-col>
</el-row>
<ChooseImg ref="chooseImgRef" @enter-img="enterImg" />
<el-dialog
v-model="showPassword"
title="修改密码"
@@ -231,13 +211,12 @@ export default {
</script>
<script setup>
import ChooseImg from '@/components/chooseImg/index.vue'
import { setSelfInfo, changePassword } from '@/api/user.js'
import { reactive, ref } from 'vue'
import { reactive, ref, watch } from 'vue'
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/pinia/modules/user'
import SelectImage from '@/components/selectImage/selectImage.vue'
const path = ref(import.meta.env.VITE_BASE_API + '/')
const activeName = ref('second')
const rules = reactive({
password: [
@@ -297,21 +276,16 @@ const clearPassword = () => {
modifyPwdForm.value.clearValidate()
}
const chooseImgRef = ref(null)
const openChooseImg = () => {
chooseImgRef.value.open()
}
const enterImg = async(url) => {
const res = await setSelfInfo({ headerImg: url })
watch(() => userStore.userInfo.headerImg, async(val) => {
const res = await setSelfInfo({ headerImg: val })
if (res.code === 0) {
userStore.ResetUserInfo({ headerImg: url })
userStore.ResetUserInfo({ headerImg: val })
ElMessage({
type: 'success',
message: '设置成功',
})
}
}
})
const openEdit = () => {
nickName.value = userStore.userInfo.nickName
@@ -9,16 +9,16 @@
:rules="rules"
class="grid-form"
>
<el-form-item label="Field名称" prop="fieldName">
<el-form-item label="字段名称" prop="fieldName">
<el-input v-model="middleDate.fieldName" autocomplete="off" style="width:80%" />
<el-button style="width:18%;margin-left:2%" @click="autoFill">
<span style="font-size: 12px">自动填充</span>
</el-button>
</el-form-item>
<el-form-item label="Field中文名" prop="fieldDesc">
<el-form-item label="字段中文名" prop="fieldDesc">
<el-input v-model="middleDate.fieldDesc" autocomplete="off" />
</el-form-item>
<el-form-item label="FieldJSON" prop="fieldJson">
<el-form-item label="字段JSON" prop="fieldJson">
<el-input v-model="middleDate.fieldJson" autocomplete="off" />
</el-form-item>
<el-form-item label="数据库字段名" prop="columnName">
@@ -27,11 +27,11 @@
<el-form-item label="数据库字段描述" prop="comment">
<el-input v-model="middleDate.comment" autocomplete="off" />
</el-form-item>
<el-form-item label="Field数据类型" prop="fieldType">
<el-form-item label="字段类型" prop="fieldType">
<el-select
v-model="middleDate.fieldType"
style="width:100%"
placeholder="请选择field数据类型"
placeholder="请选择字段类型"
clearable
@change="clearOther"
>
@@ -40,17 +40,18 @@
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select>
</el-form-item>
<el-form-item :label="middleDate.fieldType === 'enum' ? '枚举值' : '类型长度'" prop="dataTypeLong">
<el-input v-model="middleDate.dataTypeLong" :placeholder="middleDate.fieldType === 'enum'?`例:'北京','天津'`:'数据库类型长度'" />
</el-form-item>
<el-form-item label="Field查询条件" prop="fieldSearchType">
<el-form-item label="字段查询条件" prop="fieldSearchType">
<el-select
v-model="middleDate.fieldSearchType"
style="width:100%"
placeholder="请选择Field查询条件"
placeholder="请选择字段查询条件"
clearable
>
<el-option
@@ -58,10 +59,7 @@
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="
(middleDate.fieldType!=='string'&&item.value==='LIKE')||
((middleDate.fieldType!=='int'&&middleDate.fieldType!=='time.Time'&&middleDate.fieldType!=='float64')&&(item.value==='BETWEEN' || item.value==='NOT BETWEEN'))
"
:disabled="canSelect(item.value)"
/>
</el-select>
</el-form-item>
@@ -169,23 +167,42 @@ const typeOptions = ref([
{
label: '枚举',
value: 'enum'
},
{
label: '单图片(字符串)',
value: 'picture',
},
{
label: '多图片(开发中)',
value: 'pictures',
disabled: true
},
{
label: '文件(开发中)',
value: 'file',
disabled: true
},
{
label: '多文件(开发中)',
value: 'files',
disabled: true
}
])
const rules = ref({
fieldName: [
{ required: true, message: '请输入field英文名', trigger: 'blur' }
{ required: true, message: '请输入字段英文名', trigger: 'blur' }
],
fieldDesc: [
{ required: true, message: '请输入field中文名', trigger: 'blur' }
{ required: true, message: '请输入字段中文名', trigger: 'blur' }
],
fieldJson: [
{ required: true, message: '请输入field格式化json', trigger: 'blur' }
{ required: true, message: '请输入字段格式化json', trigger: 'blur' }
],
columnName: [
{ required: true, message: '请输入数据库字段', trigger: 'blur' }
],
fieldType: [
{ required: true, message: '请选择field数据类型', trigger: 'blur' }
{ required: true, message: '请选择字段类型', trigger: 'blur' }
]
})
@@ -205,6 +222,18 @@ const autoFill = () => {
middleDate.value.columnName = toSQLLine(middleDate.value.fieldJson)
}
const canSelect = (item) => {
const fieldType = middleDate.value.fieldType
if (fieldType !== 'string' && item === 'LIKE') {
return true
}
if ((fieldType !== 'int' && fieldType !== 'time.Time' && fieldType !== 'float64') && (item === 'BETWEEN' || item === 'NOT BETWEEN')) {
return true
}
return false
}
const clearOther = () => {
middleDate.value.fieldSearchType = ''
middleDate.value.dictType = ''
+6 -6
View File
@@ -146,11 +146,11 @@
<!-- 组件列表 -->
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" @click="editAndAddField()">新增Field</el-button>
<el-button type="primary" @click="editAndAddField()">新增字段</el-button>
</div>
<el-table :data="form.fields">
<el-table-column align="left" type="index" label="序列" width="60" />
<el-table-column align="left" prop="fieldName" label="Field名" width="160">
<el-table-column align="left" prop="fieldName" label="字段名称" width="160">
<template #default="{row}">
<el-input v-model="row.fieldName" />
</template>
@@ -166,17 +166,17 @@
<el-table-column align="left" prop="sort" label="排序">
<template #default="{row}"> <el-checkbox v-model="row.sort" /> </template>
</el-table-column>
<el-table-column align="left" prop="fieldJson" width="160px" label="FieldJson">
<el-table-column align="left" prop="fieldJson" width="160px" label="字段Json">
<template #default="{row}">
<el-input v-model="row.fieldJson" />
</template>
</el-table-column>
<el-table-column align="left" prop="fieldType" label="Field数据类型" width="160">
<el-table-column align="left" prop="fieldType" label="字段类型" width="160">
<template #default="{row}">
<el-select
v-model="row.fieldType"
style="width:100%"
placeholder="请选择field数据类型"
placeholder="请选择字段类型"
clearable
>
<el-option
@@ -208,7 +208,7 @@
<el-select
v-model="row.fieldSearchType"
style="width:100%"
placeholder="请选择Field查询条件"
placeholder="请选择字段查询条件"
clearable
>
<el-option