mirror of https://github.com/certd/certd
chore:
parent
d9a00eeaf7
commit
5450246f06
|
@ -1,11 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="access-selector">
|
<div class="access-selector">
|
||||||
<span v-if="target.name" class="mr-5 cd-flex-inline">
|
<span v-if="target?.name" class="mr-5 cd-flex-inline">
|
||||||
<a-tag class="mr-5" color="green">{{ target.name }}</a-tag>
|
<a-tag class="mr-5" color="green">{{ target.name }}</a-tag>
|
||||||
<fs-icon class="cd-icon-button" icon="ion:close-circle-outline" @click="clear"></fs-icon>
|
<fs-icon class="cd-icon-button" icon="ion:close-circle-outline" @click="clear"></fs-icon>
|
||||||
</span>
|
</span>
|
||||||
<span v-else class="mlr-5 text-gray">{{ placeholder }}</span>
|
<span v-else class="mlr-5 text-gray">{{ placeholder }}</span>
|
||||||
<a-button class="ml-5" :size="size" @click="chooseForm.open">选择</a-button>
|
<a-button class="ml-5" :disabled="disabled" :size="size" @click="chooseForm.open">选择</a-button>
|
||||||
<a-form-item-rest v-if="chooseForm.show">
|
<a-form-item-rest v-if="chooseForm.show">
|
||||||
<a-modal v-model:open="chooseForm.show" title="选择授权提供者" width="900px" @ok="chooseForm.ok">
|
<a-modal v-model:open="chooseForm.show" title="选择授权提供者" width="900px" @ok="chooseForm.ok">
|
||||||
<div style="height: 400px; position: relative">
|
<div style="height: 400px; position: relative">
|
||||||
|
@ -45,9 +45,13 @@ export default defineComponent({
|
||||||
from: {
|
from: {
|
||||||
type: String, //user | sys
|
type: String, //user | sys
|
||||||
default: "user"
|
default: "user"
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue", "change", "selectedChange"],
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const api = createAccessApi(props.from);
|
const api = createAccessApi(props.from);
|
||||||
|
|
||||||
|
@ -61,13 +65,27 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
|
|
||||||
function clear() {
|
function clear() {
|
||||||
if (pipeline && pipeline.userId !== target.value.userId) {
|
if (props.disabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emitValue(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function emitValue(value) {
|
||||||
|
if (pipeline?.value && target?.value && pipeline.value.userId !== target.value.userId) {
|
||||||
message.error("对不起,您不能修改他人流水线的授权");
|
message.error("对不起,您不能修改他人流水线的授权");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (value == null) {
|
||||||
selectedId.value = "";
|
selectedId.value = "";
|
||||||
target.value = null;
|
target.value = null;
|
||||||
|
} else {
|
||||||
|
selectedId.value = value;
|
||||||
|
await refreshTarget(selectedId.value);
|
||||||
|
}
|
||||||
|
ctx.emit("change", selectedId.value);
|
||||||
ctx.emit("update:modelValue", selectedId.value);
|
ctx.emit("update:modelValue", selectedId.value);
|
||||||
|
ctx.emit("selectedChange", target.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
@ -76,7 +94,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
async (value) => {
|
async (value) => {
|
||||||
selectedId.value = null;
|
selectedId.value = null;
|
||||||
target.value = {};
|
target.value = null;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -113,17 +131,9 @@ export default defineComponent({
|
||||||
chooseForm.show = true;
|
chooseForm.show = true;
|
||||||
},
|
},
|
||||||
ok: () => {
|
ok: () => {
|
||||||
chooseForm.show = false;
|
|
||||||
console.log("choose ok:", selectedId.value);
|
console.log("choose ok:", selectedId.value);
|
||||||
refreshTarget(selectedId.value);
|
emitValue(selectedId.value);
|
||||||
|
chooseForm.show = false;
|
||||||
if (pipeline && pipeline.userId !== target.value.userId) {
|
|
||||||
message.error("对不起,您不能修改他人流水线的授权");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.emit("change", selectedId.value);
|
|
||||||
ctx.emit("update:modelValue", selectedId.value);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -138,7 +138,6 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||||
column: {
|
column: {
|
||||||
width: 300,
|
width: 300,
|
||||||
cellRender: ({ row, value }) => {
|
cellRender: ({ row, value }) => {
|
||||||
debugger;
|
|
||||||
return (
|
return (
|
||||||
<router-link to={{ path: "/certd/pipeline/detail", query: { id: row.pipelineId, editMode: false, historyId: row.id } }}>{value}</router-link>
|
<router-link to={{ path: "/certd/pipeline/detail", query: { id: row.pipelineId, editMode: false, historyId: row.id } }}>{value}</router-link>
|
||||||
);
|
);
|
||||||
|
|
|
@ -86,6 +86,11 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) {
|
||||||
color: "auto"
|
color: "auto"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
editForm: {
|
||||||
|
component: {
|
||||||
|
disabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
form: {
|
form: {
|
||||||
component: {
|
component: {
|
||||||
disabled: false,
|
disabled: false,
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="notification-selector">
|
<div class="notification-selector">
|
||||||
<span v-if="target.name" class="mr-5 cd-flex-inline">
|
<span v-if="target?.name" class="mr-5 cd-flex-inline">
|
||||||
<a-tag class="mr-5" color="green">{{ target.name }}</a-tag>
|
<a-tag class="mr-5" color="green">{{ target.name }}</a-tag>
|
||||||
<fs-icon class="cd-icon-button" icon="ion:close-circle-outline" @click="clear"></fs-icon>
|
<fs-icon class="cd-icon-button" icon="ion:close-circle-outline" @click="clear"></fs-icon>
|
||||||
</span>
|
</span>
|
||||||
<span v-else class="mlr-5 text-gray">{{ placeholder }}</span>
|
<span v-else class="mlr-5 text-gray">{{ placeholder }}</span>
|
||||||
<a-button class="ml-5" :size="size" @click="chooseForm.open">选择</a-button>
|
<a-button class="ml-5" :disabled="disabled" :size="size" @click="chooseForm.open">选择</a-button>
|
||||||
<a-form-item-rest v-if="chooseForm.show">
|
<a-form-item-rest v-if="chooseForm.show">
|
||||||
<a-modal v-model:open="chooseForm.show" title="选择通知" width="900px" @ok="chooseForm.ok">
|
<a-modal v-model:open="chooseForm.show" title="选择通知" width="900px" @ok="chooseForm.ok">
|
||||||
<div style="height: 400px; position: relative">
|
<div style="height: 400px; position: relative">
|
||||||
<cert-notification-modal v-model="selectedId" :type="type" :from="from"></cert-notification-modal>
|
<cert-notification-modal v-model="selectedId"></cert-notification-modal>
|
||||||
</div>
|
</div>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
</a-form-item-rest>
|
</a-form-item-rest>
|
||||||
|
@ -41,9 +41,13 @@ export default defineComponent({
|
||||||
size: {
|
size: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "middle"
|
default: "middle"
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue", "selectedChange", "change"],
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
const api = createApi();
|
const api = createApi();
|
||||||
|
|
||||||
|
@ -57,13 +61,27 @@ export default defineComponent({
|
||||||
}
|
}
|
||||||
|
|
||||||
function clear() {
|
function clear() {
|
||||||
if (pipeline && pipeline.userId !== target.value.userId) {
|
if (props.disabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emitValue(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function emitValue(value) {
|
||||||
|
if (pipeline?.value && target?.value && pipeline.value.userId !== target.value.userId) {
|
||||||
message.error("对不起,您不能修改他人流水线的通知");
|
message.error("对不起,您不能修改他人流水线的通知");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (value == null) {
|
||||||
selectedId.value = "";
|
selectedId.value = "";
|
||||||
target.value = null;
|
target.value = null;
|
||||||
|
} else {
|
||||||
|
selectedId.value = value;
|
||||||
|
await refreshTarget(selectedId.value);
|
||||||
|
}
|
||||||
|
ctx.emit("change", selectedId.value);
|
||||||
ctx.emit("update:modelValue", selectedId.value);
|
ctx.emit("update:modelValue", selectedId.value);
|
||||||
|
ctx.emit("selectedChange", target.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
@ -72,7 +90,7 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
async (value) => {
|
async (value) => {
|
||||||
selectedId.value = null;
|
selectedId.value = null;
|
||||||
target.value = {};
|
target.value = null;
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -88,17 +106,17 @@ export default defineComponent({
|
||||||
async function refreshProviderDefine(type) {
|
async function refreshProviderDefine(type) {
|
||||||
providerDefine.value = await api.GetProviderDefine(type);
|
providerDefine.value = await api.GetProviderDefine(type);
|
||||||
}
|
}
|
||||||
watch(
|
// watch(
|
||||||
() => {
|
// () => {
|
||||||
return props.type;
|
// return props.type;
|
||||||
},
|
// },
|
||||||
async (value) => {
|
// async (value) => {
|
||||||
await refreshProviderDefine(value);
|
// await refreshProviderDefine(value);
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
immediate: true
|
// immediate: true
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
|
|
||||||
//当不在pipeline中编辑时,可能为空
|
//当不在pipeline中编辑时,可能为空
|
||||||
const pipeline = inject("pipeline", null);
|
const pipeline = inject("pipeline", null);
|
||||||
|
@ -109,17 +127,9 @@ export default defineComponent({
|
||||||
chooseForm.show = true;
|
chooseForm.show = true;
|
||||||
},
|
},
|
||||||
ok: () => {
|
ok: () => {
|
||||||
chooseForm.show = false;
|
|
||||||
console.log("choose ok:", selectedId.value);
|
console.log("choose ok:", selectedId.value);
|
||||||
refreshTarget(selectedId.value);
|
emitValue(selectedId.value);
|
||||||
|
chooseForm.show = false;
|
||||||
if (pipeline && pipeline.userId !== target.value.userId) {
|
|
||||||
message.error("对不起,您不能修改他人流水线的授权");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.emit("change", selectedId.value);
|
|
||||||
ctx.emit("update:modelValue", selectedId.value);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
|
||||||
const typeRef = ref("");
|
const typeRef = ref("");
|
||||||
context.typeRef = typeRef;
|
context.typeRef = typeRef;
|
||||||
const commonColumnsDefine = getCommonColumnDefine(crudExpose, typeRef, api);
|
const commonColumnsDefine = getCommonColumnDefine(crudExpose, typeRef, api);
|
||||||
commonColumnsDefine.type.form.component.disabled = true;
|
commonColumnsDefine.type.editForm.component.disabled = true;
|
||||||
return {
|
return {
|
||||||
typeRef,
|
typeRef,
|
||||||
crudOptions: {
|
crudOptions: {
|
||||||
|
|
|
@ -13,10 +13,6 @@ import { createApi } from "../../api";
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "CertNotificationModal",
|
name: "CertNotificationModal",
|
||||||
props: {
|
props: {
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
modelValue: {}
|
modelValue: {}
|
||||||
},
|
},
|
||||||
emits: ["update:modelValue"],
|
emits: ["update:modelValue"],
|
||||||
|
@ -24,25 +20,8 @@ export default defineComponent({
|
||||||
const api = createApi();
|
const api = createApi();
|
||||||
const context: any = { props, ctx, api };
|
const context: any = { props, ctx, api };
|
||||||
const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context });
|
const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context });
|
||||||
|
|
||||||
// 你可以调用此方法,重新初始化crud配置
|
|
||||||
function onTypeChanged(value: any) {
|
|
||||||
context.typeRef.value = value;
|
|
||||||
crudExpose.setSearchFormData({ form: { type: value }, mergeForm: true });
|
|
||||||
crudExpose.doRefresh();
|
|
||||||
}
|
|
||||||
watch(
|
|
||||||
() => {
|
|
||||||
return props.type;
|
|
||||||
},
|
|
||||||
(value) => {
|
|
||||||
console.log("access type changed:", value);
|
|
||||||
onTypeChanged(value);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
// 页面打开后获取列表数据
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
onTypeChanged(props.type);
|
crudExpose.doRefresh();
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -30,6 +30,7 @@ const pipelineOptions: PipelineOptions = {
|
||||||
return {
|
return {
|
||||||
pipeline: {
|
pipeline: {
|
||||||
id: detail.pipeline.id,
|
id: detail.pipeline.id,
|
||||||
|
userId: detail.pipeline.userId,
|
||||||
stages: [],
|
stages: [],
|
||||||
triggers: [],
|
triggers: [],
|
||||||
...JSON.parse(detail.pipeline.content || "{}")
|
...JSON.parse(detail.pipeline.content || "{}")
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
<pi-container>
|
<pi-container>
|
||||||
<a-form ref="notificationFormRef" class="notification-form" :model="currentNotification" :label-col="labelCol" :wrapper-col="wrapperCol">
|
<a-form ref="notificationFormRef" class="notification-form" :model="currentNotification" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
<fs-form-item
|
<fs-form-item
|
||||||
|
v-if="currentNotification.type === 'email'"
|
||||||
v-model="currentNotification.type"
|
v-model="currentNotification.type"
|
||||||
:item="{
|
:item="{
|
||||||
title: '类型',
|
title: '类型',
|
||||||
|
@ -28,7 +29,10 @@
|
||||||
name: 'a-select',
|
name: 'a-select',
|
||||||
vModel: 'value',
|
vModel: 'value',
|
||||||
disabled: !editMode,
|
disabled: !editMode,
|
||||||
options: [{ value: 'email', label: '邮件' }]
|
options: [
|
||||||
|
{ value: 'email', label: '邮件' },
|
||||||
|
{ value: 'other', label: '其他通知方式' }
|
||||||
|
]
|
||||||
},
|
},
|
||||||
rules: [{ required: true, message: '此项必填' }]
|
rules: [{ required: true, message: '此项必填' }]
|
||||||
}"
|
}"
|
||||||
|
@ -47,15 +51,35 @@
|
||||||
options: [
|
options: [
|
||||||
{ value: 'start', label: '开始时' },
|
{ value: 'start', label: '开始时' },
|
||||||
{ value: 'success', label: '成功时' },
|
{ value: 'success', label: '成功时' },
|
||||||
{ value: 'turnToSuccess', label: '错误转成功时' },
|
{ value: 'turnToSuccess', label: '失败转成功时' },
|
||||||
{ value: 'error', label: '错误时' }
|
{ value: 'error', label: '失败时' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
helper: `建议仅选择'错误时'和'错误转成功'两种即可`,
|
helper: `建议仅选择'失败时'和'失败转成功'两种即可`,
|
||||||
|
rules: [{ required: true, message: '此项必填' }]
|
||||||
|
}"
|
||||||
|
/>
|
||||||
|
<pi-notification-form-email
|
||||||
|
v-if="currentNotification.type === 'email'"
|
||||||
|
ref="optionsRef"
|
||||||
|
v-model:options="currentNotification.options"
|
||||||
|
></pi-notification-form-email>
|
||||||
|
|
||||||
|
<fs-form-item
|
||||||
|
v-else
|
||||||
|
v-model="currentNotification.notificationId"
|
||||||
|
:item="{
|
||||||
|
title: '通知配置',
|
||||||
|
key: 'type',
|
||||||
|
component: {
|
||||||
|
disabled: !editMode,
|
||||||
|
name: NotificationSelector,
|
||||||
|
onSelectedChange
|
||||||
|
},
|
||||||
|
helper: '请选择通知方式',
|
||||||
rules: [{ required: true, message: '此项必填' }]
|
rules: [{ required: true, message: '此项必填' }]
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
<pi-notification-form-email ref="optionsRef" v-model:options="currentNotification.options"></pi-notification-form-email>
|
|
||||||
</a-form>
|
</a-form>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
@ -70,14 +94,16 @@
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Modal } from "ant-design-vue";
|
import { Modal } from "ant-design-vue";
|
||||||
import { ref } from "vue";
|
import { ref, Ref } from "vue";
|
||||||
import * as _ from "lodash-es";
|
import * as _ from "lodash-es";
|
||||||
import { nanoid } from "nanoid";
|
import { nanoid } from "nanoid";
|
||||||
import PiNotificationFormEmail from "./pi-notification-form-email.vue";
|
import PiNotificationFormEmail from "./pi-notification-form-email.vue";
|
||||||
|
import NotificationSelector from "/@/views/certd/notification/notification-selector/index.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "PiNotificationForm",
|
name: "PiNotificationForm",
|
||||||
components: { PiNotificationFormEmail },
|
// eslint-disable-next-line vue/no-unused-components
|
||||||
|
components: { NotificationSelector, PiNotificationFormEmail },
|
||||||
props: {
|
props: {
|
||||||
editMode: {
|
editMode: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
@ -93,7 +119,7 @@ export default {
|
||||||
function useNotificationForm() {
|
function useNotificationForm() {
|
||||||
const mode = ref("add");
|
const mode = ref("add");
|
||||||
const callback = ref();
|
const callback = ref();
|
||||||
const currentNotification = ref({ type: undefined, when: [], options: {} });
|
const currentNotification: Ref<any> = ref({ type: undefined, when: [], options: {}, notificationId: undefined, title: "" });
|
||||||
const currentPlugin = ref({});
|
const currentPlugin = ref({});
|
||||||
const notificationFormRef = ref(null);
|
const notificationFormRef = ref(null);
|
||||||
const notificationDrawerVisible = ref(false);
|
const notificationDrawerVisible = ref(false);
|
||||||
|
@ -112,6 +138,13 @@ export default {
|
||||||
required: true,
|
required: true,
|
||||||
message: "请选择通知时机"
|
message: "请选择通知时机"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
notificationId: [
|
||||||
|
{
|
||||||
|
type: "number",
|
||||||
|
required: true,
|
||||||
|
message: "请选择通知配置"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -135,7 +168,7 @@ export default {
|
||||||
|
|
||||||
const notificationAdd = (emit: any) => {
|
const notificationAdd = (emit: any) => {
|
||||||
mode.value = "add";
|
mode.value = "add";
|
||||||
const notification = { id: nanoid(), type: "email", when: ["error"] };
|
const notification = { id: nanoid(), type: "custom", when: ["error", "turnToSuccess"] };
|
||||||
notificationOpen(notification, emit);
|
notificationOpen(notification, emit);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -150,7 +183,10 @@ export default {
|
||||||
};
|
};
|
||||||
|
|
||||||
const notificationSave = async (e: any) => {
|
const notificationSave = async (e: any) => {
|
||||||
|
if (optionsRef.value) {
|
||||||
currentNotification.value.options = await optionsRef.value.getValue();
|
currentNotification.value.options = await optionsRef.value.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
console.log("currentNotificationSave", currentNotification.value);
|
console.log("currentNotificationSave", currentNotification.value);
|
||||||
try {
|
try {
|
||||||
await notificationFormRef.value.validate();
|
await notificationFormRef.value.validate();
|
||||||
|
@ -177,8 +213,13 @@ export default {
|
||||||
const blankFn = () => {
|
const blankFn = () => {
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function onSelectedChange(node: any) {
|
||||||
|
currentNotification.value.title = node?.name || null;
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
notificationFormRef,
|
notificationFormRef,
|
||||||
|
onSelectedChange,
|
||||||
mode,
|
mode,
|
||||||
notificationAdd,
|
notificationAdd,
|
||||||
notificationEdit,
|
notificationEdit,
|
||||||
|
@ -201,6 +242,11 @@ export default {
|
||||||
labelCol: { span: 6 },
|
labelCol: { span: 6 },
|
||||||
wrapperCol: { span: 16 }
|
wrapperCol: { span: 16 }
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
NotificationSelector() {
|
||||||
|
return NotificationSelector;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -181,7 +181,7 @@
|
||||||
<div class="task">
|
<div class="task">
|
||||||
<a-button shape="round" @click="notificationEdit(item, ii as number)">
|
<a-button shape="round" @click="notificationEdit(item, ii as number)">
|
||||||
<fs-icon icon="ion:notifications"></fs-icon>
|
<fs-icon icon="ion:notifications"></fs-icon>
|
||||||
【通知】 {{ item.type }}
|
【通知】 {{ item.title || item.type }}
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -199,8 +199,7 @@
|
||||||
<div class="task">
|
<div class="task">
|
||||||
<a-button shape="round" @click="notificationEdit(item, index)">
|
<a-button shape="round" @click="notificationEdit(item, index)">
|
||||||
<fs-icon icon="ion:notifications"></fs-icon>
|
<fs-icon icon="ion:notifications"></fs-icon>
|
||||||
|
【通知】 {{ item.title || item.type }}
|
||||||
【通知】 {{ item.type }}
|
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -884,7 +883,6 @@ export default defineComponent({
|
||||||
margin-right: 28px;
|
margin-right: 28px;
|
||||||
}
|
}
|
||||||
&.disabled {
|
&.disabled {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue