fix: 修复权限导入无法编辑问题

This commit is contained in:
XieYongHong 2023-07-03 18:05:46 +08:00
parent 90a38268b9
commit f5bfd8ee3a
8 changed files with 88 additions and 56 deletions

View File

@ -132,7 +132,7 @@ const PropertyColumns: DataTableColumnProps[] = BaseColumns.concat([
components: {
name: DataType
},
width: 200
width: 230
},
{
title: '属性来源',

View File

@ -4,6 +4,7 @@
<DataTableArray
v-if="type === 'array'"
v-model:value="_valueType.elementType"
@confirm="valueChange"
/>
<DataTableObject
v-else-if="type === 'object'"
@ -35,6 +36,7 @@
width: 60
}
]"
@confirm="valueChange"
>
<template #valueType="{ data }">
{{ data.record.valueType?.type }}
@ -43,20 +45,22 @@
<OtherConfigInfo :value="data.record.valueType"></OtherConfigInfo>
</template>
</DataTableObject>
<DataTableEnum v-else-if="type === 'enum'" v-model:value="_valueType" />
<DataTableBoolean v-else-if="type === 'boolean'" v-model:value="_valueType" />
<DataTableEnum v-else-if="type === 'enum'" v-model:value="_valueType" @confirm="valueChange"/>
<DataTableBoolean v-else-if="type === 'boolean'" v-model:value="_valueType" @confirm="valueChange"/>
<DataTableDouble
v-else-if="['float', 'double'].includes(type)"
:options="options"
v-model:value="_valueType"
@confirm="valueChange"
/>
<DataTableInteger
v-else-if="['int', 'long'].includes(type)"
:options="options"
v-model:value="_valueType.unit"
@confirm="valueChange"
/>
<DataTableFile v-else-if="type === 'file'" v-model:value="_valueType.fileType"/>
<DataTableDate v-else-if="type === 'date'" v-model:value="_valueType.date"/>
<DataTableFile v-else-if="type === 'file'" v-model:value="_valueType.fileType" @confirm="valueChange"/>
<DataTableDate v-else-if="type === 'date'" v-model:value="_valueType.date" @confirm="valueChange"/>
<!-- <DataTableString
v-else-if="['string', 'password'].includes(type)"
v-model:value="data.expands.maxLength"
@ -104,10 +108,18 @@ const typeChange = (e: string) => {
});
};
const valueChange = () => {
emit('update:value', {
...props.value,
valueType: {...(_valueType.value || {}), type: type.value},
});
}
watch(
() => props.value,
() => JSON.stringify(props.value),
() => {
type.value = props.value?.valueType.type;
type.value = props.value?.valueType?.type;
_valueType.value = props.value?.valueType
// elements.value = props.value?.valueType.elements;
if (['float', 'double', 'int', 'long'].includes(type.value)) {
const res = getUnit().then((res) => {
@ -123,20 +135,6 @@ watch(
{ immediate: true, deep: true },
);
watch(
() => _valueType.value,
() => {
let result = {..._valueType.value};
// if(type.value == 'boolean') {
// result = {...data.value}
// }
emit('update:value', {
...props.value,
valueType: {...result, type: type.value},
});
},
{ deep: true },
);
</script>
<style scoped lang="less">
@ -145,7 +143,7 @@ watch(
gap: 12px;
align-items: center;
.j-data-table-config--icon {
:deep(.j-data-table-config--icon) {
padding-right: 12px;
}
}

View File

@ -84,7 +84,7 @@ const columns: any = [
const newColumns = computed(() => {
if (props.type && !['string', 'boolean', 'date'].includes(props.type)) {
const data = [...columns]
data.splice(1, 0, {
data.splice(2, 0, {
title: '指标值',
dataIndex: 'range',
width: 120,

View File

@ -1,31 +1,36 @@
<template>
<j-popconfirm-modal
:show-cancel="false"
body-style="width: 300px"
@confirm="confirm"
>
<template #content>
<j-form ref="formRef" :model="formData">
<j-form-item v-if="value.range === 'false'" name="value" :rule="[{ required: true, message: '请输入指标值'}]">
<Item v-model:value="formData.value" />
</j-form-item>
<div v-else class="data-table-boolean-item">
<div class="data-table-boolean-item--value">
<j-form-item :name="['rangeValue', 0]" :rule="[{ required: true, message: '请输入指标值'}]">
<Item v-model:value="formData.rangeValue[0]" />
</j-form-item>
<div class="metrics-item-value">
<div class="metrics-item-text">
{{ showText }}
</div>
<j-popconfirm-modal
:show-cancel="false"
body-style="width: 300px"
@confirm="confirm"
>
<template #content>
<j-form ref="formRef" :model="formData">
<j-form-item v-if="value.range === 'false'" name="value" :rule="[{ required: true, message: '请输入指标值'}]">
<Item v-model:value="formData.value" />
</j-form-item>
<div v-else class="data-table-boolean-item">
<div class="data-table-boolean-item--value">
<j-form-item :name="['rangeValue', 0]" :rule="[{ required: true, message: '请输入指标值'}]">
<Item v-model:value="formData.rangeValue[0]" />
</j-form-item>
</div>
<div>-</div>
<div class="data-table-boolean-item--value">
<j-form-item :name="['rangeValue', 1]" :rule="[{ required: true, message: '请输入指标值'}]">
<Item v-model:value="formData.rangeValue[1]" />
</j-form-item>
</div>
</div>
<div>-</div>
<div class="data-table-boolean-item--value">
<j-form-item :name="['rangeValue', 1]" :rule="[{ required: true, message: '请输入指标值'}]">
<Item v-model:value="formData.rangeValue[1]" />
</j-form-item>
</div>
</div>
</j-form>
</template>
<j-button my-icon="EditOutlined" style="padding: 4px 8px"></j-button>
</j-popconfirm-modal>
</j-form>
</template>
<j-button my-icon="EditOutlined" type="link" style="padding: 4px 8px"></j-button>
</j-popconfirm-modal>
</div>
</template>
<script setup lang="ts" name="MetricValueItems">
@ -62,6 +67,14 @@ const formData = reactive<{
const formRef = ref()
const showText = computed(() => {
if (props.value.range === 'false') {
return props.value.value || ''
} else {
return props.value.value[0] ? props.value.value.join('-') : ''
}
})
const confirm = () => {
return new Promise((resolve, reject) => {
formRef.value.validate().then(() => {
@ -89,4 +102,14 @@ watch(() => props.value.range,(value, oldValue) => {
})
</script>
<style scoped></style>
<style scoped lang="less">
.metrics-item-value {
display: flex;
gap: 12px;
align-items: center;
.metrics-item-text {
flex: 1;
}
}
</style>

View File

@ -3,6 +3,7 @@
v-if="type === 'string'"
v-model:value="myValue"
:maxLength="64"
placeholder="请输入"
@change="change"
/>
<j-input-number
@ -10,12 +11,22 @@
v-model:value="myValue"
:precision="0"
style="width: 100%"
placeholder="请输入"
@change="change"
/>
<j-select
v-else-if="type === 'boolean'"
placeholder="请选择"
:options="[
{ label: '否', value: 'false'},
{ label: '是', value: 'true'},
]"
/>
<j-date-picker
v-else-if="type === 'date' "
v-model:value="myValue"
show-time
placeholder="请选择"
@change="change"
/>
</template>

View File

@ -236,7 +236,7 @@ const table = reactive({
key: 'act',
},
],
data: props.data.id ? [...props.data.actions] : [...defaultAction],
data: props.data.id ? [...(props.data.actions || [])] : [...defaultAction],
clickRemove: (index: number) => {
pager.total -= 1;
table.data.splice(index, 1);

View File

@ -34,7 +34,7 @@ export default defineConfig(({ mode}) => {
build: {
outDir: 'dist',
assetsDir: 'assets',
sourcemap: false,
sourcemap: true,
cssCodeSplit: false,
manifest: true,
chunkSizeWarningLimit: 2000,
@ -94,9 +94,9 @@ export default defineConfig(({ mode}) => {
[env.VITE_APP_BASE_API]: {
// target: 'http://192.168.32.226:8844',
// target: 'http://192.168.32.244:8881',
target: 'http://192.168.32.163:8844', //张季本地
// target: 'http://192.168.32.163:8844', //张季本地
// target: 'http://120.77.179.54:8844', // 120测试
// target: 'http://192.168.33.46:8844', // 本地开发环境
target: 'http://192.168.33.46:8844', // 本地开发环境
ws: 'ws://120.77.179.54:8844',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')

View File

@ -3825,8 +3825,8 @@ jetlinks-store@^0.0.3:
jetlinks-ui-components@^1.0.24:
version "1.0.24"
resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.24.tgz#7cf4c22f37f47e49fc186b6de667e527bc2d7b95"
integrity sha512-mP33feZvyCJbrSO+xzVdiSX62t/ZPCsWXtdYNHXsLPu7sBx7ZgeTaMYxY3xNNECTEEiA1WqCfuQWXA5h6Claaw==
resolved "http://registry.jetlinks.cn/jetlinks-ui-components/-/jetlinks-ui-components-1.0.24.tgz#ff46844f8f1b9f6e4358b099014cbe5cc80b9630"
integrity sha512-oc9MeVwJqar4LIICQWfNHFtD76h/Yl5v+xaj4u5xjIhDpvs1vwz/em9eHwToQ/yVCUShaexmweOOzhAN7od1cw==
dependencies:
"@vueuse/core" "^9.12.0"
"@vueuse/router" "^9.13.0"