|
@@ -2,15 +2,32 @@
|
|
|
<ContentWrap>
|
|
<ContentWrap>
|
|
|
<!-- 顶部新增表单-->
|
|
<!-- 顶部新增表单-->
|
|
|
<el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="100px">
|
|
<el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="100px">
|
|
|
- <el-form-item label="角色" prop="roleName">
|
|
|
|
|
- <el-input style="width: 300px" v-model="formData.roleName" placeholder="请输入角色" />
|
|
|
|
|
|
|
+ <el-form-item label="角色">
|
|
|
|
|
+ <el-select v-model="formData.roleId" placeholder="请选择角色" style="width: 300px">
|
|
|
|
|
+ <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="页面" prop="pageType">
|
|
<el-form-item label="页面" prop="pageType">
|
|
|
- <el-input style="width: 300px" v-model="formData.pageType" placeholder="请输入页面" />
|
|
|
|
|
|
|
+ <el-select v-model="formData.pageType" placeholder="请选择页面" style="width: 300px">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in getIntDictOptions(DICT_TYPE.COCKPIT_PAGE_TYPE)"
|
|
|
|
|
+ :key="dict.value"
|
|
|
|
|
+ :value="dict.value"
|
|
|
|
|
+ :label="dict.label"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-button type="primary" style="margin-left: 500px" @click="submitForm"
|
|
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ style="margin-left: 500px"
|
|
|
|
|
+ @click="submitForm"
|
|
|
|
|
+ v-if="!isUpdate"
|
|
|
|
|
+ :disabled="isSuccess"
|
|
|
>保 存
|
|
>保 存
|
|
|
</el-button>
|
|
</el-button>
|
|
|
|
|
+ <el-button type="primary" style="margin-left: 500px" @click="submitForm" v-else
|
|
|
|
|
+ >修改
|
|
|
|
|
+ </el-button>
|
|
|
<el-button @click="goBack">取 消</el-button>
|
|
<el-button @click="goBack">取 消</el-button>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</ContentWrap>
|
|
</ContentWrap>
|
|
@@ -21,12 +38,8 @@
|
|
|
<el-radio-button label="second">预览视图</el-radio-button>
|
|
<el-radio-button label="second">预览视图</el-radio-button>
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
<ContentWrap>
|
|
<ContentWrap>
|
|
|
- <TableView
|
|
|
|
|
- v-if="tabPosition == 'first'"
|
|
|
|
|
- :enableStepTable="enableStepTable"
|
|
|
|
|
- :modeId="formData.id"
|
|
|
|
|
- />
|
|
|
|
|
- <LookView v-else :enableStepTable="enableStepTable" :modeId="formData.id" />
|
|
|
|
|
|
|
+ <TableView v-if="tabPosition == 'first'" :page-id="formData.id" />
|
|
|
|
|
+ <LookView v-else :page-id="formData.id" />
|
|
|
</ContentWrap>
|
|
</ContentWrap>
|
|
|
</ContentWrap>
|
|
</ContentWrap>
|
|
|
</template>
|
|
</template>
|
|
@@ -34,97 +47,102 @@
|
|
|
import TableView from './TableView.vue'
|
|
import TableView from './TableView.vue'
|
|
|
import LookView from './LookView.vue'
|
|
import LookView from './LookView.vue'
|
|
|
import * as rolePageApi from '@/api/system/rolePage/index'
|
|
import * as rolePageApi from '@/api/system/rolePage/index'
|
|
|
-
|
|
|
|
|
|
|
+import * as RoleApi from '@/api/system/role'
|
|
|
|
|
+import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
|
|
|
|
+import { useTagsViewStoreWithOut } from '@/store/modules/tagsView'
|
|
|
|
|
|
|
|
const { t } = useI18n() // 国际化
|
|
const { t } = useI18n() // 国际化
|
|
|
const message = useMessage() // 消息弹窗
|
|
const message = useMessage() // 消息弹窗
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
|
|
|
+const route = useRoute()
|
|
|
|
|
+const roleList = ref([] as RoleApi.RoleVO[]) // 角色的列表
|
|
|
const formLoading = ref(false) // 表单的加载中
|
|
const formLoading = ref(false) // 表单的加载中
|
|
|
const tabPosition = ref('first')
|
|
const tabPosition = ref('first')
|
|
|
-const enableStepTable = ref(false) //新增控制表格新增 模板导入 删除不能点击或者出现
|
|
|
|
|
-const formData = ref({
|
|
|
|
|
|
|
+
|
|
|
|
|
+const formData = reactive({
|
|
|
|
|
+ id: undefined,
|
|
|
roleId: undefined,
|
|
roleId: undefined,
|
|
|
- roleName: undefined,
|
|
|
|
|
pageType: undefined
|
|
pageType: undefined
|
|
|
})
|
|
})
|
|
|
-const showTable=ref(false);
|
|
|
|
|
-
|
|
|
|
|
|
|
+const showTable = ref(false) //是否展示底部表格区
|
|
|
|
|
+const isUpdate = route.query.id
|
|
|
|
|
+const isSuccess = ref(false) // 新增成功后禁用按钮
|
|
|
// 监听数据变化,设置未保存标记
|
|
// 监听数据变化,设置未保存标记
|
|
|
-const hasUnsavedChanges = ref(false) // 标记是否有未保存的更改
|
|
|
|
|
|
|
+watch(
|
|
|
|
|
+ () => ({
|
|
|
|
|
+ roleId: formData.roleId
|
|
|
|
|
+ }),
|
|
|
|
|
+ { deep: true }
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ getRoleData() //角色下拉数据
|
|
|
|
|
+ if (isUpdate) {
|
|
|
|
|
+ editData()
|
|
|
|
|
+ showTable.value = true
|
|
|
|
|
+ }
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+// 角色下拉数据
|
|
|
|
|
+const getRoleData = async () => {
|
|
|
|
|
+ const data = await RoleApi.getSimpleRoleList()
|
|
|
|
|
+ roleList.value = data
|
|
|
|
|
+ console.log(data, '数据格式')
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 方法定义
|
|
// 方法定义
|
|
|
const handleTabChange = (newTab: string) => {
|
|
const handleTabChange = (newTab: string) => {
|
|
|
tabPosition.value = newTab
|
|
tabPosition.value = newTab
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// 编辑时数据渲染
|
|
|
|
|
+const editData = async () => {
|
|
|
|
|
+ const data = await rolePageApi.selectRolePageById(route.query.id)
|
|
|
|
|
+ formData.id = data.id
|
|
|
|
|
+ formData.roleId = data.roleId
|
|
|
|
|
+ formData.pageType = data.pageType
|
|
|
|
|
+ console.log(data, 'hnudhiahauihasihi')
|
|
|
|
|
+}
|
|
|
|
|
+// 提交表单
|
|
|
const submitForm = async () => {
|
|
const submitForm = async () => {
|
|
|
try {
|
|
try {
|
|
|
let data
|
|
let data
|
|
|
let successMessage
|
|
let successMessage
|
|
|
-
|
|
|
|
|
- if (formData.value.id) {
|
|
|
|
|
|
|
+ if (isUpdate) {
|
|
|
// 有 id,调用修改接口
|
|
// 有 id,调用修改接口
|
|
|
- data = await rolePageApi.updateRolePage(formData.value)
|
|
|
|
|
|
|
+ data = await rolePageApi.updateRolePage(formData)
|
|
|
successMessage = t('common.updateSuccess')
|
|
successMessage = t('common.updateSuccess')
|
|
|
} else {
|
|
} else {
|
|
|
// 没有 id,调用新增接口
|
|
// 没有 id,调用新增接口
|
|
|
- data = await rolePageApi.insertRolePage(formData.value)
|
|
|
|
|
|
|
+ console.log(formData, '数据格式')
|
|
|
|
|
+ data = await rolePageApi.insertRolePage(formData)
|
|
|
successMessage = t('common.createSuccess')
|
|
successMessage = t('common.createSuccess')
|
|
|
- enableStepTable.value = true
|
|
|
|
|
|
|
+ showTable.value = true //新增成功后显示下发列表
|
|
|
|
|
+ isSuccess.value = true //新增成功后保存按钮不显示
|
|
|
// 新增成功后,将返回的 id 保存到 formData 中
|
|
// 新增成功后,将返回的 id 保存到 formData 中
|
|
|
if (data) {
|
|
if (data) {
|
|
|
- formData.value.id = data
|
|
|
|
|
|
|
+ formData.id = data
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
if (data) {
|
|
if (data) {
|
|
|
message.success(successMessage)
|
|
message.success(successMessage)
|
|
|
- // 保存成功后重置未保存标记
|
|
|
|
|
- hasUnsavedChanges.value = false
|
|
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('保存失败:', error)
|
|
console.error('保存失败:', error)
|
|
|
message.error('保存失败,请稍后重试')
|
|
message.error('保存失败,请稍后重试')
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-// 监听数据变化,设置未保存标记
|
|
|
|
|
-watch(
|
|
|
|
|
- () => ({
|
|
|
|
|
- roleName: formData.value.roleName
|
|
|
|
|
- }),
|
|
|
|
|
- () => {
|
|
|
|
|
- hasUnsavedChanges.value = true
|
|
|
|
|
- },
|
|
|
|
|
- { deep: true }
|
|
|
|
|
-)
|
|
|
|
|
-// 路由离开守卫
|
|
|
|
|
-onBeforeRouteLeave((to, from, next) => {
|
|
|
|
|
- if (hasUnsavedChanges.value) {
|
|
|
|
|
- ElMessageBox.confirm('当前页面有未保存的更改,是否继续离开?', '提示', {
|
|
|
|
|
- confirmButtonText: '继续离开',
|
|
|
|
|
- cancelButtonText: '取消',
|
|
|
|
|
- type: 'warning'
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- next()
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {
|
|
|
|
|
- next(false)
|
|
|
|
|
- })
|
|
|
|
|
- } else {
|
|
|
|
|
- next()
|
|
|
|
|
- }
|
|
|
|
|
-})
|
|
|
|
|
|
|
|
|
|
|
|
+//退出页面
|
|
|
const goBack = () => {
|
|
const goBack = () => {
|
|
|
// 获取 tagsView store
|
|
// 获取 tagsView store
|
|
|
- // const tagsViewStore = useTagsViewStoreWithOut()
|
|
|
|
|
-
|
|
|
|
|
|
|
+ const tagsViewStore = useTagsViewStoreWithOut()
|
|
|
// 获取当前路由对象
|
|
// 获取当前路由对象
|
|
|
const currentRoute = router.currentRoute.value
|
|
const currentRoute = router.currentRoute.value
|
|
|
-
|
|
|
|
|
// 方法1:精确删除当前标签(推荐)
|
|
// 方法1:精确删除当前标签(推荐)
|
|
|
- // tagsViewStore.delVisitedView(currentRoute)
|
|
|
|
|
- router.push('/system/rolePage')
|
|
|
|
|
|
|
+ tagsViewStore.delVisitedView(currentRoute)
|
|
|
|
|
+ router.push('/system/rolePage');
|
|
|
|
|
+ (formData.id = undefined), (formData.roleId = undefined), (formData.pageType = undefined)
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|