修改页面权限控制

v1.4.1
于肖磊 2025-10-15 17:56:39 +08:00
parent 1fcec31046
commit 30bd427d70
3 changed files with 61 additions and 23 deletions

View File

@ -22,6 +22,9 @@ export const commonStore = defineStore('common', () => {
goods_order_by_type_list: [] as any[], //---- 商品排序
data_order_by_rule_list: [] as any[], //---- 数据排序
brand_order_by_type_list: [] as any[], //---- 品牌排序
diy_config_operate: {
is_base_data: 1, //---- 是否需要基础数据
} as any, //---- diy配置权限
config: {
common_amap_map_ak: '',
common_amap_map_safety_ak: '',

View File

@ -15,32 +15,63 @@ export const font_weight = [
{ name: '正常', value: '400' },
];
/**
* URLID
* @param prefix
* @returns ID
*/
const extractIdFromUrl = (prefix: string): string => {
const url = document.location.href;
const startIndex = url.indexOf(prefix);
if (startIndex === -1) return '';
// 计算起始位置(包含前缀)
const start = startIndex + prefix.length;
let result = url.substring(start);
// 移除.html后缀
const dotIndex = result.indexOf('.');
if (dotIndex !== -1) {
result = result.substring(0, dotIndex);
}
// 移除查询参数
const andIndex = result.indexOf('&');
if (andIndex !== -1) {
result = result.substring(0, andIndex);
}
// 移除路径分隔符后的部分
const slashIndex = result.indexOf('/');
if (slashIndex !== -1) {
result = result.substring(0, slashIndex);
}
return result;
};
// 截取document.location.search字符串内id/后面的所有字段
export const get_id = () => {
let new_id = '';
// 去除origin的数据
// 先尝试匹配 id/ 模式
const url = document.location.href;
if (url.indexOf('id/') != -1) {
new_id = url.substring(url.indexOf('id/') + 3);
// 去除字符串的.html
let html_index = new_id.indexOf('.html');
if (html_index != -1) {
new_id = new_id.substring(0, html_index);
const idIndex = url.indexOf('id/');
if (idIndex !== -1) {
const result = url.substring(idIndex + 3);
const htmlIndex = result.indexOf('.html');
if (htmlIndex !== -1) {
return result.substring(0, htmlIndex);
}
return new_id;
} else if (url.indexOf('-saveinfo') != -1) {
new_id = url.substring(url.indexOf('-saveinfo-') + 10);
// 去除字符串的.html
const dot_data = new_id.split('.')[0];
if (dot_data != '') {
new_id = dot_data.split('/')[0];
}
return new_id;
} else {
return new_id;
return result.split('.')[0].split('/')[0];
}
// 尝试匹配-saveinfo-模式
const saveinfoResult = extractIdFromUrl('-saveinfo-');
if (saveinfoResult) return saveinfoResult;
// 尝试匹配-forminputinfo-模式
return extractIdFromUrl('-diyinfo-');
};
// 获取当前业务类型
export const get_type = () => {
return data_handle('type/', '');

View File

@ -5,17 +5,17 @@
<!-- <icon name="arrow-left" color="f">返回</icon> -->
<div class="flex-row align-c">
<div class="name">
<div class="flex-row align-c gap-10 c-pointer" @click="dialog_visible = true">
<div :class="[{'c-pointer': common_store_config?.diy_config_operate?.is_base_data == 1}, 'flex-row align-c gap-10']" @click="common_store_config?.diy_config_operate?.is_base_data == 1 ? dialog_visible = true : ''">
<image-empty :src="modelValue.logo" class="round img" error-img-style="width: 2.2rem;height: 2.2rem;" />
<div>{{ modelValue.name }}</div>
<icon name="edit" color="#7DBEFF"></icon>
<icon v-if="common_store_config?.diy_config_operate?.is_base_data == 1" name="edit" color="#7DBEFF"></icon>
</div>
</div>
</div>
</div>
<div class="nav-right">
<el-button class="btn-plain" @click="upload_manage"></el-button>
<el-button class="btn-plain" :class="saveDisabled ? 'disabled' : ''" :disabled="saveDisabled" @click="preview_event"></el-button>
<el-button v-if="common_store_config?.diy_config_operate?.is_upload_admin == 1" class="btn-plain" @click="upload_manage"></el-button>
<el-button v-if="common_store_config.preview_url !== ''" class="btn-plain" :class="saveDisabled ? 'disabled' : ''" :disabled="saveDisabled" @click="preview_event"></el-button>
<el-button class="btn-plain" :class="saveDisabled ? 'disabled' : ''" :disabled="saveDisabled" @click="save_event"></el-button>
<el-button class="btn-white" :class="saveDisabled ? 'disabled' : ''" :disabled="saveDisabled" @click="save_close_event"></el-button>
</div>
@ -53,6 +53,8 @@
</template>
<script setup lang="ts">
import { FormInstance, FormRules } from 'element-plus';
import { commonStore } from '@/store';
const common_store = commonStore();
const props = defineProps({
saveDisabled: {
type: Boolean,
@ -60,6 +62,8 @@ const props = defineProps({
},
});
const modelValue = defineModel({ type: Object, default: {} });
//
const common_store_config = computed(() => common_store.common.config);
// #region --------------------start
const is_custom_dialog = ref(false);
const dialog_visible = ref(false);