Browse Source

门类组件使用/style

master
xuhuajiao 3 years ago
parent
commit
fdf8fc33a5
  1. 49
      src/assets/styles/yxk-admin.scss
  2. 24
      src/views/archivesManage/archivesList/archivesDetail.vue
  3. 40
      src/views/category/descriptionPreview/index.vue
  4. 163
      src/views/category/fieldManage/module/form.vue
  5. 2
      src/views/components/category/PreviewForm.vue
  6. 21
      src/views/components/category/SettingForm.vue
  7. 4
      src/views/components/field/index.vue

49
src/assets/styles/yxk-admin.scss

@ -595,13 +595,16 @@
.vue-treeselect__control,
.vue-treeselect__placeholder,
.vue-treeselect__single-value{
height: 36px;
line-height: 36px;
height: 32px;
line-height: 32px;
color: #fff;
}
.vue-treeselect__control{
border: 1px solid $subMenuActiveText;
background-color: transparent;
.vue-treeselect__control-arrow{
color: $subMenuActiveText;
}
}
.el-radio{
color: #fff;
@ -628,6 +631,11 @@
.el-select .el-input .el-select__caret{
color: #339cff;
}
.vue-treeselect .vue-treeselect__control:focus,
.vue-treeselect .vue-treeselect__control:hover{
border-color: $subMenuActiveText !important;
}
.vue-treeselect.vue-treeselect--disabled .vue-treeselect__control,
.el-input.is-disabled .el-input__inner,
.el-textarea.is-disabled .el-textarea__inner{
color: $desPreviewColor !important;
@ -738,6 +746,7 @@
}
// 著录界面表单
.des-form{
.el-form-item__label{
font-weight: normal;
@ -811,7 +820,41 @@
}
}
}
.setting-dialog{
.des-form{
width: 100% !important;
margin-top: 0 !important;
padding: 20px 38px 0 20px !important;
background-color: transparent !important;
.el-select,
.el-input__inner{
width: 100% !important;
}
.input-num{
.el-input{
margin-right: 10px !important;
}
}
}
}
.preview-dialog{
.el-dialog{
width: 680px !important;
.preview-content{
max-height: calc(100vh - 330px) !important;
overflow: hidden !important;
overflow-y: auto !important;
border: none !important;
.el-textarea__inner{
border: 1px solid #339cff !important;
background-color: transparent !important;
}
}
.el-dialog__header{
width: 420px !important;
}
}
}
// 去除element ui 中el-input type=number的上下箭头
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {

24
src/views/archivesManage/archivesList/archivesDetail.vue

@ -22,28 +22,11 @@
</crudOperation>
</div>
<!--表单组件-->
<el-dialog class="preview-dialog" append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title">
<el-dialog class="preview-dialog" :modal-append-to-body="false" :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-col v-for="(item) in formPreviewData" :key="item.id" class="dragg-item" :span="item.isLine ? 24 : 12">
<el-form-item :label="item.fieldCnName" :prop="item.fieldName">
<!-- select -->
<!-- :disabled="isDisabled":validate-event="isDisabled" -->
<el-select v-if="item.isInputClass === 'select'" v-model="form[item.fieldName]" placeholder="" :style="{ width: item.editLength+'px'}">
<el-option v-for="option in selectData" :key="option.id" :label="option.dicName" :value="option.dicName" />
</el-select>
<!-- text / number / textarea / popover -->
<!-- :disabled="isDisabled":validate-event="isDisabled" -->
<el-input v-if="item.isInputClass !== 'select' && item.isInputClass !== 'date'" v-model="form[item.fieldName]" :type="item.isInputClass === 'popover'? 'text' : item.isInputClass" :rows="item.isInputClass === 'textarea' ? 3 : ''" :class="{'input-popover':(item.isInputClass === 'popover')}" :style="{ width: item.editLength+'px'}">
<i v-if="item.isInputClass === 'popover'" slot="suffix" class="el-input__icon iconfont icon-weibiaoti-2" @click="popoverVisible = true" />
</el-input>
<!-- date -->
<el-date-picker v-if="item.isInputClass === 'date'" v-model="form[item.fieldName]" type="date" align="right" format="yyyy-MM-dd" placeholder="" :clearable="false" :style="{ width: item.editLength+'px'}" />
</el-form-item>
</el-col>
</el-form>
<PreviewForm :is-disabled="false" />
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
@ -93,9 +76,10 @@ import { add, edit, getTableDisplayFields, getFormDisplayFields } from '@/api/ar
import CRUD, { presenter, header, form } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import PreviewForm from '@/views/components/category/PreviewForm'
export default {
components: { crudOperation, pagination },
components: { crudOperation, pagination, PreviewForm },
cruds() {
return [
CRUD({

40
src/views/category/descriptionPreview/index.vue

@ -28,7 +28,7 @@
<el-button type="primary" icon="el-icon-edit" @click="settingForm">修改</el-button>
<el-button class="des-set-sort" type="primary" icon="iconfont icon-paixu-fanbai" @click="previewFormVisible = true">排序</el-button>
</div>
<SettingForm :is-disabled="true" :this-fields="thisFields" />
<SettingForm :is-disabled="true" :is-add="true" :this-fields="thisFields" />
</div>
<div class="des-preview-right">
<div class="des-title">
@ -42,7 +42,7 @@
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<SettingForm ref="editForm" :is-disabled="false" :this-fields="thisFields" />
<SettingForm ref="editForm" :is-disabled="false" :is-add="false" :this-fields="thisFields" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="editSubmit">保存</el-button>
</div>
@ -239,23 +239,6 @@ export default {
width: 658px;
margin-left: 20px;
}
.setting-dialog{
.des-form{
width: 100%;
margin-top: 0;
padding: 20px 38px 0 20px;
background-color: transparent;
::v-deep .el-select,
::v-deep .el-input__inner{
width: 100%;
}
::v-deep .input-num{
.el-input{
margin-right: 10px;
}
}
}
}
.edit-form-dialog{
::v-deep .el-dialog{
.el-input.is-disabled .el-input__inner{
@ -266,24 +249,7 @@ export default {
}
}
}
.preview-dialog{
::v-deep .el-dialog{
width: 680px;
.preview-content{
max-height: calc(100vh - 330px);
overflow: hidden;
overflow-y: auto;
border: none;
.el-textarea__inner{
border: 1px solid #339cff;
background-color: transparent;
}
}
.el-dialog__header{
width: 420px;
}
}
}
.drag-tip{
display: block;
padding-left: 20px;

163
src/views/category/fieldManage/module/form.vue

@ -3,73 +3,7 @@
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-row>
<el-col :span="15">
<el-form-item v-if="!isDisabled" label="中文名称" prop="fieldCnName">
<el-input v-model="form.fieldCnName" :disabled="isDisabled" />
</el-form-item>
<el-form-item v-if="!isDisabled" label="字段标识" prop="fieldName">
<el-input v-model="form.fieldName" disabled />
</el-form-item>
<el-form-item label="字段类型" prop="isDataType">
<el-select v-model="form.isDataType" placeholder="" disabled>
<el-option v-for="item in dataTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="字段长度" prop="isColumnLength">
<el-input v-model="form.isColumnLength" placeholder="" disabled />
</el-form-item>
<el-form-item label="著录形式" prop="isInputClass">
<el-select v-model="form.isInputClass" placeholder="" :disabled="isDisabled" @change="selectInputClass">
<el-option v-for="item in inputClassOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="对应字典" prop="sysDictionaryId">
<el-select v-model="form.isDefaultValueType" placeholder="" :disabled="isDisabled">
<el-option v-for="item in dictionaryData" :key="item.id" :label="item.dicName" :value="item.dicCode" />
</el-select>
</el-form-item>
<el-form-item label="显示长度" prop="editLength">
<el-input v-model="form.editLength" :disabled="isDisabled" />
</el-form-item>
<el-form-item label="默认值" prop="isDefaultValue">
<el-input v-model="form.isDefaultValue" :disabled="isDisabled" />
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item class="checkbox-item">
<span>显示一整行</span>
<el-checkbox v-model="form.isLine" label="" name="isLine" :disabled="isDisabled" />
</el-form-item>
<el-form-item class="checkbox-item">
<span>输入字段</span>
<el-checkbox v-model="form.isInput" label="" name="isInput" :disabled="isDisabled" />
</el-form-item>
<el-form-item class="checkbox-item">
<span>必填字段</span>
<el-checkbox v-model="form.isRequired" label="" name="isRequired" :disabled="isDisabled" />
</el-form-item>
<el-form-item class="checkbox-item">
<span>自动生成</span>
<el-checkbox v-model="form.isAuto" label="" name="isAuto" :disabled="isDisabled" />
</el-form-item>
<el-form-item class="checkbox-item">
<span>值不重复</span>
<el-checkbox v-model="form.isNoRepetition" label="" name="isNoRepetition" :disabled="isDisabled" />
</el-form-item>
<el-form-item class="checkbox-item">
<span>自动补零</span>
<el-checkbox v-model="form.isFilling" label="" name="isFilling" :disabled="isDisabled" @change="changeSupplement" />
</el-form-item>
<el-form-item class="input-num" label="位数" prop="fillingDigit">
<!-- <el-input v-model="form.isSupplementNum" type="number" :min="1" :disabled="isDisabled || !form.isSupplement" /> -->
<el-input-number v-model="form.isSupplementNum" controls-position="right" :min="1" :disabled="isDisabled || !form.isSupplement" style="width:80px" />
<span></span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<SettingForm ref="editForm" :is-disabled="false" :is-add="true" :this-fields="{}" />
<div slot="footer" class="dialog-footer">
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">
保存
@ -81,110 +15,19 @@
<script>
import { form } from '@crud/crud'
import SettingForm from '@/views/components/category/SettingForm'
const defaultForm = {
id: null,
fieldCnName: '',
fieldName: '',
isDataType: 1,
isColumnLength: 100,
isDefaultValue: ''
}
export default {
components: { SettingForm },
mixins: [form(defaultForm)],
data() {
var checkMaxLength = (rule, value, callback) => {
if (value !== undefined && (!Number.isInteger(value) || value <= 0)) {
callback(new Error('请输入正整数数字值'))
} else {
if (this.form.isDataType === 1 && value > 2000) {
callback(new Error('字符最大长度不能超过2000位'))
} else if (this.form.isDataType === 2 && value > 11) {
callback(new Error('数字最大长度不能超过11位'))
} else {
callback()
}
}
}
var checkFieldName = (rule, value, callback) => {
const reg = /^[A-Za-z][A-Za-z_]+[a-zA-Z]*$/
if (reg.test(value)) {
callback()
} else {
callback(new Error('字段标识只能由字母、字符“_”组成,并且必须以字母开头和结尾'))
}
}
return {
rules: {
fieldCnName: [
{ required: true, message: '请输入中文名称', trigger: 'blur' }
],
fieldName: [
{ required: true, message: '请选择字段标识', trigger: 'blur' },
{ validator: checkFieldName, trigger: 'blur' }
],
isDataType: [
{ required: true, message: '请选择数据类型', trigger: 'blur' }
],
isColumnLength: [
{ validator: checkMaxLength, trigger: 'blur' }
]
},
//
dataTypeOptions: [
{ value: 1, label: '字符' },
{ value: 2, label: '数字' }
],
//
inputClassOptions: [
{ value: 'select', label: '下拉框' },
{ value: 'popover', label: '弹出框' },
{ value: 'text', label: '文本框' },
{ value: 'number', label: '数字框' },
{ value: 'date', label: '日期框' },
{ value: 'textarea', label: '文本域' }
],
//
dictionaryData: [],
isDisabled: false
}
},
methods: {
getForm() {
this.form.isSupplement = !!this.form.isSupplement
this.form.isFullrow = !!this.form.isFullrow
this.form.isInput = !!this.form.isInput
this.form.isRequired = !!this.form.isRequired
this.changeSupplement()
},
// ''''
selectInputClass(value) {
if (value === 'select' || value === 'popover') {
// this.dictionaryData = []
// getData
} else {
this.dictionaryData = []
this.form.isDefaultValueType = null
}
if (value !== 'number') {
this.form.isIncrease = false
}
},
// '' false -
changeSupplement() {
if (!this.form.isSupplement) {
this.form.isSupplementNum = undefined
}
},
submitForm(formName) {
// ''
if (this.form.isSupplement) {
if (!this.form.isSupplementNum) {
this.$message.error('请填写位数!')
return
}
}
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!')

2
src/views/components/category/PreviewForm.vue

@ -49,7 +49,7 @@
</el-row>
<!-- 弹框形式的内容展示 -->
<el-dialog class="edit-form-dialog" :visible="popoverVisible" :before-close="handleClose" :close-on-click-modal="false" title="字典列表">
<el-dialog class="edit-form-dialog" :append-to-body="true" :visible="popoverVisible" :before-close="handleClose" :close-on-click-modal="false" title="字典列表">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">

21
src/views/components/category/SettingForm.vue

@ -9,19 +9,19 @@
<el-form-item v-if="!isDisabled" label="字段标识" prop="fieldName">
<el-input v-if="isDisabled" v-model="form.fieldName" readonly />
<el-input v-else v-model="form.fieldName" disabled />
<el-input v-else v-model="form.fieldName" :disabled="!isAdd" />
</el-form-item>
<el-form-item label="字段类型" prop="isDataType">
<el-input v-if="isDisabled" v-model="form.isDataType" readonly />
<el-select v-else v-model="form.isDataType" placeholder="" disabled>
<el-select v-else v-model="form.isDataType" placeholder="" :disabled="!isAdd">
<el-option v-for="item in dataTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="字段长度" prop="isColumnLength">
<el-input v-if="isDisabled" v-model="form.isColumnLength" placeholder="" readonly />
<el-input v-else v-model="form.isColumnLength" placeholder="" disabled />
<el-input v-if="isDisabled" v-model="form.isColumnLength" type="number" placeholder="" readonly />
<el-input v-else v-model="form.isColumnLength" type="number" placeholder="" :disabled="!isAdd" />
</el-form-item>
<el-form-item label="著录形式" prop="isInputClass">
@ -33,12 +33,13 @@
<el-form-item label="对应字典" prop="sysDictionaryId">
<el-input v-if="isDisabled" v-model="form.sysDictionaryId" readonly />
<el-select v-else v-model="form.sysDictionaryId" placeholder="" value-key="dicName" @change="selectDictionary">
<!-- @change="selectDictionary" -->
<el-select v-else v-model="form.sysDictionaryId" placeholder="" value-key="dicName">
<el-option v-for="item in dictionaryData" :key="item.id" :label="item.dicName" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="显示长度" prop="editLength">
<el-input v-model="form.editLength" :readonly="isDisabled" @keyup.enter.native="changEditLength" @blur="changEditLength" />
<el-input v-model="form.editLength" type="number" :readonly="isDisabled" @keyup.enter.native="changEditLength" @blur="changEditLength" />
</el-form-item>
<el-form-item label="默认值" prop="isDefaultValue">
<el-input v-model="form.isDefaultValue" :readonly="isDisabled" />
@ -91,6 +92,10 @@ export default {
type: Boolean,
required: true
},
isAdd: {
type: Boolean,
required: true
},
thisFields: {
type: Object,
required: true
@ -173,13 +178,17 @@ export default {
watch: {
thisFields(value) {
this.form = value
if (!this.isAdd) {
this.getForm()
}
}
},
mounted() {
this.$nextTick(() => {
this.form = this.thisFields
if (!this.isAdd) {
this.getForm()
}
})
},
methods: {

4
src/views/components/field/index.vue

@ -32,8 +32,8 @@
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<p><span style="color:#fff;">这里为技术人员维护系统时使用用户无需设置</span></p>
<p><span style="color:red;">注意强行修改会导致系统数据异常或丢失如因用户强行修改本系统不负责因此导致的相关后果</span></p>
<p style="line-height: 30px;"><span style="color:#fff;">这里为技术人员维护系统时使用用户无需设置</span></p>
<p style="line-height: 26px; margin-bottom: 20px;"><span style="color:red;">注意强行修改会导致系统数据异常或丢失如因用户强行修改本系统不负责因此导致的相关后果</span></p>
<el-form :model="form">
<el-form-item label="技术维护验证码" :label-width="formLabelWidth">
<el-input v-model="form.verifyCode" />

Loading…
Cancel
Save