77758f0c by fanguang

fix

1 parent 8dc1dbcf
......@@ -29,8 +29,10 @@
show-checkbox
check-strictly
placeholder="请选择"
:disabled="parentGuidDisabled"
:disabled="treeSelectDisabled"
clearable
@check="parentGuidCheck"
@clear="parentGuidClear"
/>
<!-- <el-cascader
v-model="form.parentGuid"
......@@ -73,26 +75,26 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="自定义字段选择" v-if="form.fieldRQVOS" required>
<el-form-item label="自定义字段选择" v-if="fieldsTableShow" required>
<div class="table-form">
<div class="table-form-wrapper" v-for="item,index in form.fieldRQVOS" :key="index">
<div class="table-form-item">
<el-select v-model="item.fileNameCode" style="width:160px" filterable clearable :disabled="fieldsDisabled || fieldsControlDisabled">
<el-select v-model="item.fileNameCode" style="width:160px" filterable clearable :disabled="fieldsDisabled">
<el-option v-for="item in fieldOptions" :label="item.label" :value="item.value" :key="item.value"></el-option>
</el-select>
</div>
<div class="table-form-item">
<el-select v-model="item.isNotnull" style="width: 96px" placeholder="是否必填" clearable :disabled="fieldsDisabled || fieldsControlDisabled">
<el-select v-model="item.isNotnull" style="width: 96px" placeholder="是否必填" clearable :disabled="fieldsDisabled">
<el-option v-for="item in isBooleanOptions" :label="item.label" :value="item.value" :key="item.value"></el-option>
</el-select>
</div>
<div class="table-form-item">
<el-select v-model="item.isDisplay" style="width:96px" placeholder="是否展示" clearable :disabled="fieldsDisabled || fieldsControlDisabled">
<el-select v-model="item.isDisplay" style="width:96px" placeholder="是否展示" clearable :disabled="fieldsDisabled">
<el-option v-for="item in isBooleanOptions" :label="item.label" :value="item.value" :key="item.value"></el-option>
</el-select>
</div>
<div class="table-form-item">
<el-select v-model="item.inputTypeCode" style="width:130px" clearable :disabled="fieldsDisabled || fieldsControlDisabled"
<el-select v-model="item.inputTypeCode" style="width:130px" clearable :disabled="fieldsDisabled"
@change="v => inputTypeChange(v, item)">
<el-option v-for="item in inputOptions" :label="item.label" :value="item.value" :key="item.value"></el-option>
</el-select>
......@@ -102,24 +104,24 @@
v-if="item.inputTypeCode == 2"
v-model="item.dataTypeCode"
style="width:160px" filterable clearable
:disabled="fieldsDisabled || fieldsControlDisabled">
:disabled="fieldsDisabled">
<el-option v-for="item in allDictOptions" :label="item.dictTypeName" :value="item.dictTypeName" :key="item.guid"></el-option>
</el-select>
<el-input
v-else-if="item.inputTypeCode == 3"
v-model="item.validateExpression"
:disabled="fieldsDisabled || fieldsControlDisabled"
:disabled="fieldsDisabled"
placeholder="请输入"
></el-input>
</div>
<div class="table-form-operation" v-if="!fieldsDisabled && !fieldsControlDisabled">
<div class="table-form-operation" v-if="!fieldsDisabled">
<!-- <el-icon color="#4fa1a4" @click="() => addTableItem(index)">
<CirclePlus />
</el-icon> -->
<el-icon color="#b2b2b2" @click="() => deleteTableItem(index)" :size="22" class="custom-icon" style="margin-top:3px"><Delete /></el-icon>
</div>
</div>
<div class="table-form-add" v-if="!fieldsDisabled && !fieldsControlDisabled">
<div class="table-form-add" v-if="!fieldsDisabled">
<el-icon color="#4fa1a4" @click="() => addTableItem(index)" :size="20" class="custom-icon">
<CirclePlus />
</el-icon>
......@@ -186,35 +188,6 @@ const visible = computed({
const title = computed(() => {
return props.type === 'add' ? '新增元数据标准' : '编辑元数据标准'
})
const parentGuidDisabled = computed(() => {
// 元数据标准有数据,有子集,不可编辑上级标准
let { currentNode, type } = props
if (type === 'add') {
return false
}
if (currentNode.isHaveData === 'Y' || currentNode.children) {
return true
}
})
const fieldsDisabled = computed(() => {
// 二级节点: 该节点,所有子节点有字段数据后不可修改
// 三级节点以下:禁止修改
let { currentNode, type } = props
if (type === 'add') {
return false
}
if (currentNode.level == 2) {
if (currentNode.isHaveData === 'Y' || currentNode.children) {
return true
}
return false
}
if (currentNode.level <= 3) {
return true
}
})
const fieldsControlDisabled = ref(true)
const treeSelectData = ref([])
/**
* 配置项列表
......@@ -266,16 +239,53 @@ function parentGuidChange (val) {
form.value.fieldRQVOS = [{...tableFormTpl}]
}
}
function parentGuidCheck (node, {checkedKeys}) {
fieldsControlDisabled.value = false
if (node.level == 1) {
let fieldRQVOS = null
if (checkedKeys.length) {
fieldRQVOS = [{...tableFormTpl}]
/** 上级标准树选择 */
const treeSelectData = ref([])
const treeCurrentNode = ref({})
const treeSelectDisabled = ref(false)
const fieldsDisabled = ref(false)
const fieldsTableShow = ref(false)
watch(
() => treeCurrentNode,
(currentNode:any) => {
console.log('currentNode', currentNode.value)
let { level, isHaveData } = currentNode.value
fieldsTableShow.value = level ? true : false
fieldsDisabled.value = false
if (!level) {
form.value.fieldRQVOS = null
return
}
if (props.type === 'add') {
if (level == 1) {
// 所选为一级节点,当前二级节点
form.value.fieldRQVOS = [{...tableFormTpl}]
}
if (level >= 2) {
// 所选为二级节点,当前三级节点以下,只读
fieldsDisabled.value = true
}
form.value.fieldRQVOS = fieldRQVOS
} else if (props.type === 'edit') {
if (level == 1) {
// 所选为一级节点,当前二级节点
form.value.fieldRQVOS = [{...tableFormTpl}]
fieldsDisabled.value = false
}
if (level >= 2) {
fieldsDisabled.value = true
}
}
},
{ deep: true}
)
function parentGuidCheck (node, {checkedKeys}) {
// fieldsControlDisabled.value = false
treeCurrentNode.value = node
if (checkedKeys.length === 0) {
treeCurrentNode.value = {}
return
}
if (node.level == 1) return
// 上级标准带出标准编号和发布单位
// loading.value = true
......@@ -289,14 +299,12 @@ function parentGuidCheck (node, {checkedKeys}) {
form.value.publishingUnitCode = data.publishingUnitCode
}
form.value.fieldRQVOS = data.fieldRSVOS
if (data.fieldRSVOS) {
fieldsControlDisabled.value = true
} else {
fieldsControlDisabled.value = false
}
}
})
}
function parentGuidClear () {
treeCurrentNode.value = {}
}
const tableFormTpl = {
fileNameCode: '',
......@@ -335,6 +343,17 @@ function getDetail () {
const data = res.data
data.fieldRQVOS = data.fieldRSVOS
form.value = { ...data }
let { level, isHaveData } = treeCurrentNode.value
if (level == 1) {
// 所选为一级节点,当前二级节点
fieldsTableShow.value = false
}
if (level == 2) {
fieldsDisabled.value = isHaveData === 'Y' ? true : false
}
if (level >= 3) {
fieldsDisabled.value = true
}
}
}).finally(() => loading.value = false)
}
......@@ -377,32 +396,40 @@ watch(
() => visible.value,
(v) => {
if (!v) return
// console.log(props.currentNode)
// 上级标准:不能选自己,有数据的标准不能选
// treeSelectData.value = JSON.parse(JSON.stringify(props.standardOptions))
if (props.type === 'edit') {
fieldsControlDisabled.value = false
// fieldsControlDisabled.value = false
getTreeSelectOptions().then(() => {
getDetail().then(() => formatOptions(treeSelectData.value))
})
treeCurrentNode.value = props.currentNode
} else {
fieldsControlDisabled.value = true
// fieldsControlDisabled.value = true
form.value = { ...formTpl }
getTreeSelectOptions().then(() => formatOptions(treeSelectData.value))
getTreeSelectOptions().then(() => {
formatOptions(treeSelectData.value)
})
treeCurrentNode.value = {}
}
setTimeout(() => {
formEl.value.clearValidate()
}, 100)
}
)
function formatOptions (options) {
function formatOptions (options, level = 1) {
options.forEach((item:any) => {
let disabled = form.value.guid === item.guid ? true : false
if (item.isHaveData === 'Y') {
disabled = true
}
item.disabled = disabled
item.level = level
if (item.children) {
formatOptions(item.children)
formatOptions(item.children, level + 1)
}
})
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!