优化代码排版

pull/881/head
YunaiV 2026-05-24 00:18:49 +08:00
parent fa42f8e574
commit dd009a1de0
90 changed files with 520 additions and 445 deletions

View File

@ -116,7 +116,8 @@ const toggleClick = () => {
:row="{ :row="{
label: item.label label: item.label
}" }"
>{{ item.label }} >
{{ item.label }}
</slot> </slot>
</template> </template>
@ -130,9 +131,7 @@ const toggleClick = () => {
<DictTag :type="item.dictType" :value="data[item.field] + ''" /> <DictTag :type="item.dictType" :value="data[item.field] + ''" />
</slot> </slot>
<slot v-else :name="item.field" :row="data"> <slot v-else :name="item.field" :row="data">
{{ {{ item.mappedField ? data[item.mappedField] : data[item.field] }}
item.mappedField ? data[item.mappedField] : data[item.field]
}}
</slot> </slot>
</template> </template>
</ElDescriptionsItem> </ElDescriptionsItem>

View File

@ -22,8 +22,9 @@
<div <div
v-if="property.indicator === 'number'" v-if="property.indicator === 'number'"
class="absolute bottom-10px right-10px rounded-xl bg-black p-x-8px p-y-2px text-10px text-white opacity-40" class="absolute bottom-10px right-10px rounded-xl bg-black p-x-8px p-y-2px text-10px text-white opacity-40"
>{{ currentIndex }} / {{ property.items.length }}</div
> >
{{ currentIndex }} / {{ property.items.length }}
</div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -77,7 +77,8 @@
v-if="property.fields.marketPrice.show && spu.marketPrice" v-if="property.fields.marketPrice.show && spu.marketPrice"
class="ml-4px text-10px line-through" class="ml-4px text-10px line-through"
:style="{ color: property.fields.marketPrice.color }" :style="{ color: property.fields.marketPrice.color }"
>{{ fenToYuan(spu.marketPrice) }} >
{{ fenToYuan(spu.marketPrice) }}
</span> </span>
</div> </div>
<div class="text-12px"> <div class="text-12px">

View File

@ -74,8 +74,9 @@
v-if="property.fields.marketPrice.show && spu.marketPrice" v-if="property.fields.marketPrice.show && spu.marketPrice"
class="ml-4px text-10px line-through" class="ml-4px text-10px line-through"
:style="{ color: property.fields.marketPrice.color }" :style="{ color: property.fields.marketPrice.color }"
>{{ fenToYuan(spu.marketPrice) }}</span
> >
{{ fenToYuan(spu.marketPrice) }}
</span>
</div> </div>
<div class="text-12px"> <div class="text-12px">
<!-- 销量 --> <!-- 销量 -->

View File

@ -74,8 +74,9 @@
v-if="property.fields.marketPrice.show && spu.marketPrice" v-if="property.fields.marketPrice.show && spu.marketPrice"
class="ml-4px text-10px line-through" class="ml-4px text-10px line-through"
:style="{ color: property.fields.marketPrice.color }" :style="{ color: property.fields.marketPrice.color }"
>{{ fenToYuan(spu.marketPrice) }}</span
> >
{{ fenToYuan(spu.marketPrice) }}
</span>
</div> </div>
<div class="text-12px"> <div class="text-12px">
<!-- 销量 --> <!-- 销量 -->

View File

@ -27,7 +27,6 @@ const { getPrefixCls } = useDesign()
const prefixCls = getPrefixCls('form') const prefixCls = getPrefixCls('form')
export default defineComponent({ export default defineComponent({
name: 'Form', name: 'Form',
props: { props: {
// Form // Form

View File

@ -55,7 +55,6 @@ const displayUrl = computed(() => props.url || props.modelValue || '') // 显示
const showPreview = computed(() => { const showPreview = computed(() => {
return displayUrl.value && isUrl(displayUrl.value) return displayUrl.value && isUrl(displayUrl.value)
}) // }) //
</script> </script>
<style scoped> <style scoped>

View File

@ -52,7 +52,7 @@ onMounted(async () => {
<style lang="scss"> <style lang="scss">
.markdown-view { .markdown-view {
max-width: 100%; max-width: 100%;
font-family: "PingFang SC"; font-family: 'PingFang SC';
font-size: 0.95rem; font-size: 0.95rem;
font-weight: 400; font-weight: 400;
line-height: 1.6rem; line-height: 1.6rem;

View File

@ -17,18 +17,18 @@
v-model="currentNode.name" v-model="currentNode.name"
:placeholder="currentNode.name" :placeholder="currentNode.name"
/> />
<div v-else class="node-name" <div v-else class="node-name">
>{{ currentNode.name }} {{ currentNode.name }}
<Icon class="ml-1" icon="ep:edit-pen" :size="16" @click="clickIcon()" <Icon class="ml-1" icon="ep:edit-pen" :size="16" @click="clickIcon()" />
/></div> </div>
<div class="divide-line"></div> <div class="divide-line"></div>
</div> </div>
</template> </template>
<div> <div>
<div class="mb-3 font-size-16px" v-if="currentNode.conditionSetting?.defaultFlow" <div class="mb-3 font-size-16px" v-if="currentNode.conditionSetting?.defaultFlow">
>未满足其它条件时将进入此分支该分支不可编辑和删除</div 未满足其它条件时将进入此分支该分支不可编辑和删除
> </div>
<div v-else> <div v-else>
<Condition ref="conditionRef" v-model="condition" /> <Condition ref="conditionRef" v-model="condition" />
</div> </div>

View File

@ -218,8 +218,9 @@
:value="FieldPermissionType.READ" :value="FieldPermissionType.READ"
size="large" size="large"
:label="FieldPermissionType.WRITE" :label="FieldPermissionType.WRITE"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
<div class="item-radio-wrap"> <div class="item-radio-wrap">
<el-radio <el-radio
@ -227,16 +228,18 @@
size="large" size="large"
:label="FieldPermissionType.WRITE" :label="FieldPermissionType.WRITE"
disabled disabled
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
<div class="item-radio-wrap"> <div class="item-radio-wrap">
<el-radio <el-radio
:value="FieldPermissionType.NONE" :value="FieldPermissionType.NONE"
size="large" size="large"
:label="FieldPermissionType.NONE" :label="FieldPermissionType.NONE"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
</el-radio-group> </el-radio-group>
</div> </div>

View File

@ -95,24 +95,27 @@
:value="FieldPermissionType.READ" :value="FieldPermissionType.READ"
size="large" size="large"
:label="FieldPermissionType.READ" :label="FieldPermissionType.READ"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
<div class="item-radio-wrap"> <div class="item-radio-wrap">
<el-radio <el-radio
:value="FieldPermissionType.WRITE" :value="FieldPermissionType.WRITE"
size="large" size="large"
:label="FieldPermissionType.WRITE" :label="FieldPermissionType.WRITE"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
<div class="item-radio-wrap"> <div class="item-radio-wrap">
<el-radio <el-radio
:value="FieldPermissionType.NONE" :value="FieldPermissionType.NONE"
size="large" size="large"
:label="FieldPermissionType.NONE" :label="FieldPermissionType.NONE"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
</el-radio-group> </el-radio-group>
</div> </div>

View File

@ -444,9 +444,9 @@
:placeholder="item.displayName" :placeholder="item.displayName"
v-if="btnDisplayNameEdit[index]" v-if="btnDisplayNameEdit[index]"
/> />
<el-button v-else text @click="changeBtnDisplayName(index)" <el-button v-else text @click="changeBtnDisplayName(index)">
>{{ item.displayName }} &nbsp;<Icon icon="ep:edit" {{ item.displayName }} &nbsp;<Icon icon="ep:edit" />
/></el-button> </el-button>
</div> </div>
<div class="button-setting-item-label"> <div class="button-setting-item-label">
<el-switch v-model="item.enable" /> <el-switch v-model="item.enable" />
@ -483,24 +483,27 @@
:value="FieldPermissionType.READ" :value="FieldPermissionType.READ"
size="large" size="large"
:label="FieldPermissionType.READ" :label="FieldPermissionType.READ"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
<div class="item-radio-wrap"> <div class="item-radio-wrap">
<el-radio <el-radio
:value="FieldPermissionType.WRITE" :value="FieldPermissionType.WRITE"
size="large" size="large"
:label="FieldPermissionType.WRITE" :label="FieldPermissionType.WRITE"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
<div class="item-radio-wrap"> <div class="item-radio-wrap">
<el-radio <el-radio
:value="FieldPermissionType.NONE" :value="FieldPermissionType.NONE"
size="large" size="large"
:label="FieldPermissionType.NONE" :label="FieldPermissionType.NONE"
><span></span >
></el-radio> <span></span>
</el-radio>
</div> </div>
</el-radio-group> </el-radio-group>
</div> </div>

View File

@ -40,9 +40,9 @@
<Icon v-if="!readonly" icon="ep:arrow-right-bold" /> <Icon v-if="!readonly" icon="ep:arrow-right-bold" />
</div> </div>
<div v-if="!readonly" class="node-toolbar"> <div v-if="!readonly" class="node-toolbar">
<div class="toolbar-icon" <div class="toolbar-icon">
><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" <Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" />
/></div> </div>
</div> </div>
</div> </div>

View File

@ -33,9 +33,9 @@
<Icon v-if="!readonly" icon="ep:arrow-right-bold" /> <Icon v-if="!readonly" icon="ep:arrow-right-bold" />
</div> </div>
<div v-if="!readonly" class="node-toolbar"> <div v-if="!readonly" class="node-toolbar">
<div class="toolbar-icon" <div class="toolbar-icon">
><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" <Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" />
/></div> </div>
</div> </div>
</div> </div>

View File

@ -33,9 +33,9 @@
<Icon v-if="!readonly" icon="ep:arrow-right-bold" /> <Icon v-if="!readonly" icon="ep:arrow-right-bold" />
</div> </div>
<div v-if="!readonly" class="node-toolbar"> <div v-if="!readonly" class="node-toolbar">
<div class="toolbar-icon" <div class="toolbar-icon">
><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" <Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" />
/></div> </div>
</div> </div>
</div> </div>

View File

@ -1,6 +1,10 @@
<template> <template>
<div class="end-node-wrapper"> <div class="end-node-wrapper">
<div class="end-node-box cursor-pointer" :class="`${useTaskStatusClass(currentNode?.activityStatus)}`" @click="nodeClick"> <div
class="end-node-box cursor-pointer"
:class="`${useTaskStatusClass(currentNode?.activityStatus)}`"
@click="nodeClick"
>
<span class="node-fixed-name" title="结束">结束</span> <span class="node-fixed-name" title="结束">结束</span>
</div> </div>
</div> </div>
@ -84,7 +88,7 @@ const processInstanceInfos = ref<any[]>([]) // 流程的审批信息
const nodeClick = () => { const nodeClick = () => {
if (readonly) { if (readonly) {
if(processInstance && processInstance.value){ if (processInstance && processInstance.value) {
processInstanceInfos.value = [ processInstanceInfos.value = [
{ {
assigneeUser: processInstance.value.startUser, assigneeUser: processInstance.value.startUser,

View File

@ -8,9 +8,9 @@
> >
<span class="iconfont icon-exclusive icon-size condition"></span> <span class="iconfont icon-exclusive icon-size condition"></span>
</div> </div>
<el-button v-else class="branch-node-add" color="#67c23a" @click="addCondition" plain <el-button v-else class="branch-node-add" color="#67c23a" @click="addCondition" plain>
>添加条件</el-button 添加条件
> </el-button>
<div <div
class="branch-node-item" class="branch-node-item"

View File

@ -8,9 +8,9 @@
> >
<span class="iconfont icon-inclusive icon-size inclusive"></span> <span class="iconfont icon-inclusive icon-size inclusive"></span>
</div> </div>
<el-button v-else class="branch-node-add" color="#345da2" @click="addCondition" plain <el-button v-else class="branch-node-add" color="#345da2" @click="addCondition" plain>
>添加条件</el-button 添加条件
> </el-button>
<div <div
class="branch-node-item" class="branch-node-item"
v-for="(item, index) in currentNode.conditionNodes" v-for="(item, index) in currentNode.conditionNodes"

View File

@ -8,9 +8,9 @@
> >
<span class="iconfont icon-parallel icon-size parallel"></span> <span class="iconfont icon-parallel icon-size parallel"></span>
</div> </div>
<el-button v-else class="branch-node-add" color="#626aef" @click="addCondition" plain <el-button v-else class="branch-node-add" color="#626aef" @click="addCondition" plain>
>添加分支</el-button 添加分支
> </el-button>
<div <div
class="branch-node-item" class="branch-node-item"
v-for="(item, index) in currentNode.conditionNodes" v-for="(item, index) in currentNode.conditionNodes"

View File

@ -35,9 +35,9 @@
<Icon v-if="!readonly" icon="ep:arrow-right-bold" /> <Icon v-if="!readonly" icon="ep:arrow-right-bold" />
</div> </div>
<div v-if="!readonly" class="node-toolbar"> <div v-if="!readonly" class="node-toolbar">
<div class="toolbar-icon" <div class="toolbar-icon">
><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" <Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" />
/></div> </div>
</div> </div>
</div> </div>

View File

@ -9,9 +9,9 @@
]" ]"
> >
<div class="node-title-container"> <div class="node-title-container">
<div class="node-title-icon start-user" <div class="node-title-icon start-user">
><span class="iconfont icon-start-user"></span <span class="iconfont icon-start-user"></span>
></div> </div>
<input <input
v-if="!readonly && showInput" v-if="!readonly && showInput"
type="text" type="text"

View File

@ -35,9 +35,9 @@
<Icon v-if="!readonly" icon="ep:arrow-right-bold" /> <Icon v-if="!readonly" icon="ep:arrow-right-bold" />
</div> </div>
<div v-if="!readonly" class="node-toolbar"> <div v-if="!readonly" class="node-toolbar">
<div class="toolbar-icon" <div class="toolbar-icon">
><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" <Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" />
/></div> </div>
</div> </div>
</div> </div>

View File

@ -40,9 +40,9 @@
<Icon icon="ep:arrow-right-bold" v-if="!readonly" /> <Icon icon="ep:arrow-right-bold" v-if="!readonly" />
</div> </div>
<div v-if="!readonly" class="node-toolbar"> <div v-if="!readonly" class="node-toolbar">
<div class="toolbar-icon" <div class="toolbar-icon">
><Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" <Icon color="#0089ff" icon="ep:circle-close-filled" :size="18" @click="deleteNode" />
/></div> </div>
</div> </div>
</div> </div>
<!-- 传递子节点给添加节点组件会在子节点前面添加节点 --> <!-- 传递子节点给添加节点组件会在子节点前面添加节点 -->

View File

@ -9,7 +9,6 @@ import { set } from 'lodash-es'
import { Pagination, TableColumn, TableSetPropsType, TableSlotDefault } from '@/types/table' import { Pagination, TableColumn, TableSetPropsType, TableSlotDefault } from '@/types/table'
export default defineComponent({ export default defineComponent({
name: 'Table', name: 'Table',
props: { props: {
pageSize: propTypes.number.def(10), pageSize: propTypes.number.def(10),

View File

@ -12,7 +12,6 @@ import { isFunction, isObject, some } from 'min-dash'
const WILDCARD = '*' const WILDCARD = '*'
function CamundaModdleExtension(eventBus) { function CamundaModdleExtension(eventBus) {
const self = this const self = this
eventBus.on('moddleCopy.canCopyProperty', function (context) { eventBus.on('moddleCopy.canCopyProperty', function (context) {

View File

@ -27,9 +27,9 @@
<element-form :id="elementId" :type="elementType" /> <element-form :id="elementId" :type="elementType" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item name="task" v-if="isTaskCollapseItemShow(elementType)" key="task"> <el-collapse-item name="task" v-if="isTaskCollapseItemShow(elementType)" key="task">
<template #title <template #title>
><Icon icon="ep:checked" />{{ getTaskCollapseItemName(elementType) }}</template <Icon icon="ep:checked" />{{ getTaskCollapseItemName(elementType) }}
> </template>
<element-task :id="elementId" :type="elementType" /> <element-task :id="elementId" :type="elementType" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item <el-collapse-item

View File

@ -112,9 +112,9 @@
:placeholder="item.displayName" :placeholder="item.displayName"
v-if="btnDisplayNameEdit[index]" v-if="btnDisplayNameEdit[index]"
/> />
<el-button v-else text @click="changeBtnDisplayName(index)" <el-button v-else text @click="changeBtnDisplayName(index)">
>{{ item.displayName }} &nbsp;<Icon icon="ep:edit" {{ item.displayName }} &nbsp;<Icon icon="ep:edit" />
/></el-button> </el-button>
</div> </div>
<div class="button-setting-item-label"> <div class="button-setting-item-label">
<el-switch v-model="item.enable" @change="updateElementExtensions" /> <el-switch v-model="item.enable" @change="updateElementExtensions" />
@ -127,15 +127,15 @@
<div class="field-permit-title"> <div class="field-permit-title">
<div class="setting-title-label first-title"> 字段名称 </div> <div class="setting-title-label first-title"> 字段名称 </div>
<div class="other-titles"> <div class="other-titles">
<span class="setting-title-label cursor-pointer" @click="updatePermission('READ')" <span class="setting-title-label cursor-pointer" @click="updatePermission('READ')">
>只读</span 只读
> </span>
<span class="setting-title-label cursor-pointer" @click="updatePermission('WRITE')" <span class="setting-title-label cursor-pointer" @click="updatePermission('WRITE')">
>可编辑</span 可编辑
> </span>
<span class="setting-title-label cursor-pointer" @click="updatePermission('NONE')" <span class="setting-title-label cursor-pointer" @click="updatePermission('NONE')">
>隐藏</span 隐藏
> </span>
</div> </div>
</div> </div>
<div class="field-setting-item" v-for="(item, index) in fieldsPermissionEl" :key="index"> <div class="field-setting-item" v-for="(item, index) in fieldsPermissionEl" :key="index">

View File

@ -11,13 +11,13 @@
/> />
<el-table-column label="操作" width="100px"> <el-table-column label="操作" width="100px">
<template #default="scope"> <template #default="scope">
<el-button size="small" link @click="openListenerForm(scope.row, scope.$index)" <el-button size="small" link @click="openListenerForm(scope.row, scope.$index)">
>编辑</el-button 编辑
> </el-button>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-button size="small" link style="color: #ff4d4f" @click="removeListener(scope.$index)" <el-button size="small" link style="color: #ff4d4f" @click="removeListener(scope.$index)">
>移除</el-button 移除
> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -167,17 +167,18 @@
/> />
<el-table-column label="操作" width="130px"> <el-table-column label="操作" width="130px">
<template #default="scope"> <template #default="scope">
<el-button size="small" link @click="openListenerFieldForm(scope.row, scope.$index)" <el-button size="small" link @click="openListenerFieldForm(scope.row, scope.$index)">
>编辑</el-button 编辑
> </el-button>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-button <el-button
size="small" size="small"
link link
style="color: #ff4d4f" style="color: #ff4d4f"
@click="removeListenerField(scope.$index)" @click="removeListenerField(scope.$index)"
>移除</el-button
> >
移除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -419,10 +420,7 @@ const saveListenerConfig = async () => {
bpmnElement.businessObject?.extensionElements?.values?.filter( bpmnElement.businessObject?.extensionElements?.values?.filter(
(ex) => ex.$type !== `${prefix}:ExecutionListener` (ex) => ex.$type !== `${prefix}:ExecutionListener`
) ?? [] ) ?? []
updateElementExtensions( updateElementExtensions(bpmnElement, otherExtensionList.value.concat(bpmnElementListeners.value))
bpmnElement,
otherExtensionList.value.concat(bpmnElementListeners.value)
)
// 4. // 4.
listenerFormModelVisible.value = false listenerFormModelVisible.value = false
listenerForm.value = {} listenerForm.value = {}
@ -448,10 +446,7 @@ const selectProcessListener = (listener) => {
bpmnElement.businessObject?.extensionElements?.values?.filter( bpmnElement.businessObject?.extensionElements?.values?.filter(
(ex) => ex.$type !== `${prefix}:ExecutionListener` (ex) => ex.$type !== `${prefix}:ExecutionListener`
) ?? [] ) ?? []
updateElementExtensions( updateElementExtensions(bpmnElement, otherExtensionList.value.concat(bpmnElementListeners.value))
bpmnElement,
otherExtensionList.value.concat(bpmnElementListeners.value)
)
} }
watch( watch(

View File

@ -17,17 +17,18 @@
/> />
<el-table-column label="操作" width="90px"> <el-table-column label="操作" width="90px">
<template #default="scope"> <template #default="scope">
<el-button size="small" link @click="openListenerForm(scope.row, scope.$index)" <el-button size="small" link @click="openListenerForm(scope.row, scope.$index)">
>编辑</el-button 编辑
> </el-button>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-button <el-button
size="small" size="small"
link link
style="color: #ff4d4f" style="color: #ff4d4f"
@click="removeListener(scope.row, scope.$index)" @click="removeListener(scope.row, scope.$index)"
>移除</el-button
> >
移除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -183,9 +184,9 @@
<el-divider /> <el-divider />
<p class="listener-filed__title"> <p class="listener-filed__title">
<span><Icon icon="ep:menu" />注入字段</span> <span><Icon icon="ep:menu" />注入字段</span>
<el-button size="small" type="primary" @click="openListenerFieldForm(null)" <el-button size="small" type="primary" @click="openListenerFieldForm(null)">
>添加字段</el-button 添加字段
> </el-button>
</p> </p>
<el-table <el-table
:data="fieldsListOfListener" :data="fieldsListOfListener"
@ -211,17 +212,18 @@
/> />
<el-table-column label="操作" width="100px"> <el-table-column label="操作" width="100px">
<template #default="scope"> <template #default="scope">
<el-button size="small" link @click="openListenerFieldForm(scope.row, scope.$index)" <el-button size="small" link @click="openListenerFieldForm(scope.row, scope.$index)">
>编辑</el-button 编辑
> </el-button>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-button <el-button
size="small" size="small"
link link
style="color: #ff4d4f" style="color: #ff4d4f"
@click="removeListenerField(scope.row, scope.$index)" @click="removeListenerField(scope.row, scope.$index)"
>移除</el-button
> >
移除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -423,10 +425,7 @@ const saveListenerConfig = async () => {
bpmnElement.businessObject?.extensionElements?.values?.filter( bpmnElement.businessObject?.extensionElements?.values?.filter(
(ex) => ex.$type !== `${prefix}:TaskListener` (ex) => ex.$type !== `${prefix}:TaskListener`
) ?? [] ) ?? []
updateElementExtensions( updateElementExtensions(bpmnElement, otherExtensionList.value.concat(bpmnElementListeners.value))
bpmnElement,
otherExtensionList.value.concat(bpmnElementListeners.value)
)
// 4. // 4.
listenerFormModelVisible.value = false listenerFormModelVisible.value = false
listenerForm.value = {} listenerForm.value = {}
@ -490,10 +489,7 @@ const selectProcessListener = (listener) => {
bpmnElement.businessObject?.extensionElements?.values?.filter( bpmnElement.businessObject?.extensionElements?.values?.filter(
(ex) => ex.$type !== `${prefix}:TaskListener` (ex) => ex.$type !== `${prefix}:TaskListener`
) ?? [] ) ?? []
updateElementExtensions( updateElementExtensions(bpmnElement, otherExtensionList.value.concat(bpmnElementListeners.value))
bpmnElement,
otherExtensionList.value.concat(bpmnElementListeners.value)
)
} }
watch( watch(

View File

@ -27,9 +27,7 @@
</div> </div>
</div> </div>
</el-radio-group> </el-radio-group>
<div v-else> <div v-else> UserTask </div>
除了UserTask以外节点的多实例待实现
</div>
<!-- 与Simple设计器配置合并保留以前的代码 --> <!-- 与Simple设计器配置合并保留以前的代码 -->
<el-form label-width="90px" style="display: none"> <el-form label-width="90px" style="display: none">
<el-form-item label="快捷配置"> <el-form-item label="快捷配置">

View File

@ -23,8 +23,8 @@
<div style="margin-bottom: 8px"> <div style="margin-bottom: 8px">
<el-radio-group v-model="cronMode[f.key]" :key="'radio-' + f.key"> <el-radio-group v-model="cronMode[f.key]" :key="'radio-' + f.key">
<el-radio label="every" :key="'every-' + f.key">{{ f.label }}</el-radio> <el-radio label="every" :key="'every-' + f.key">{{ f.label }}</el-radio>
<el-radio label="range" :key="'range-' + f.key" <el-radio label="range" :key="'range-' + f.key">
>
<el-input-number <el-input-number
v-model="cronRange[f.key][0]" v-model="cronRange[f.key][0]"
:min="f.min" :min="f.min"
@ -42,10 +42,10 @@
style="width: 60px" style="width: 60px"
:key="'range1-' + f.key" :key="'range1-' + f.key"
/> />
之间每{{ f.label }}</el-radio 之间每{{ f.label }}
> </el-radio>
<el-radio label="step" :key="'step-' + f.key" <el-radio label="step" :key="'step-' + f.key">
>从第 从第
<el-input-number <el-input-number
v-model="cronStep[f.key][0]" v-model="cronStep[f.key][0]"
:min="f.min" :min="f.min"
@ -63,8 +63,8 @@
style="width: 60px" style="width: 60px"
:key="'step1-' + f.key" :key="'step1-' + f.key"
/> />
{{ f.label }}</el-radio {{ f.label }}
> </el-radio>
<el-radio label="appoint" :key="'appoint-' + f.key">指定</el-radio> <el-radio label="appoint" :key="'appoint-' + f.key">指定</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
@ -74,8 +74,9 @@
v-for="n in f.max + 1" v-for="n in f.max + 1"
:label="pad(n - 1)" :label="pad(n - 1)"
:key="'cb-' + f.key + '-' + (n - 1)" :key="'cb-' + f.key + '-' + (n - 1)"
>{{ pad(n - 1) }}</el-checkbox
> >
{{ pad(n - 1) }}
</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -90,73 +91,79 @@
:key="'isoStr'" :key="'isoStr'"
/> />
</div> </div>
<div style="margin-bottom: 10px" <div style="margin-bottom: 10px">
>循环次数<el-input-number v-model="repeat" :min="1" style="width: 100px" :key="'repeat'" 循环次数<el-input-number v-model="repeat" :min="1" style="width: 100px" :key="'repeat'" />
/></div> </div>
<div style="margin-bottom: 10px" <div style="margin-bottom: 10px">
>日期时间<el-date-picker 日期时间<el-date-picker
v-model="isoDate" v-model="isoDate"
type="datetime" type="datetime"
placeholder="选择日期时间" placeholder="选择日期时间"
style="width: 200px" style="width: 200px"
:key="'isoDate'" :key="'isoDate'"
/></div> />
<div style="margin-bottom: 10px" </div>
>当前时长<el-input <div style="margin-bottom: 10px">
当前时长<el-input
v-model="isoDuration" v-model="isoDuration"
placeholder="如P3DT30M30S" placeholder="如P3DT30M30S"
style="width: 200px" style="width: 200px"
:key="'isoDuration'" :key="'isoDuration'"
/></div> />
</div>
<div> <div>
<div <div>
><el-button <el-button
v-for="s in [5, 10, 30, 50]" v-for="s in [5, 10, 30, 50]"
@click="setDuration('S', s)" @click="setDuration('S', s)"
:key="'sec-' + s" :key="'sec-' + s"
>{{ s }}</el-button
>自定义</div
> >
<div {{ s }}
><el-button </el-button>
自定义
</div>
<div>
<el-button
v-for="m in [5, 10, 30, 50]" v-for="m in [5, 10, 30, 50]"
@click="setDuration('M', m)" @click="setDuration('M', m)"
:key="'min-' + m" :key="'min-' + m"
>{{ m }}</el-button
>自定义</div
> >
<div {{ m }}
>小时<el-button </el-button>
自定义
</div>
<div>
小时<el-button
v-for="h in [4, 8, 12, 24]" v-for="h in [4, 8, 12, 24]"
@click="setDuration('H', h)" @click="setDuration('H', h)"
:key="'hour-' + h" :key="'hour-' + h"
>{{ h }}</el-button
>自定义</div
> >
<div {{ h }}
><el-button </el-button>
v-for="d in [1, 2, 3, 4]" 自定义
@click="setDuration('D', d)" </div>
:key="'day-' + d" <div>
>{{ d }}</el-button <el-button v-for="d in [1, 2, 3, 4]" @click="setDuration('D', d)" :key="'day-' + d">
>自定义</div {{ d }}
> </el-button>
<div 自定义
><el-button </div>
<div>
<el-button
v-for="mo in [1, 2, 3, 4]" v-for="mo in [1, 2, 3, 4]"
@click="setDuration('M', mo)" @click="setDuration('M', mo)"
:key="'mon-' + mo" :key="'mon-' + mo"
>{{ mo }}</el-button
>自定义</div
>
<div
><el-button
v-for="y in [1, 2, 3, 4]"
@click="setDuration('Y', y)"
:key="'year-' + y"
>{{ y }}</el-button
>自定义</div
> >
{{ mo }}
</el-button>
自定义
</div>
<div>
<el-button v-for="y in [1, 2, 3, 4]" @click="setDuration('Y', y)" :key="'year-' + y">
{{ y }}
</el-button>
自定义
</div>
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>

View File

@ -1,8 +1,8 @@
<template> <template>
<div> <div>
<div style="margin-bottom: 10px" <div style="margin-bottom: 10px">
>当前选择<el-input v-model="isoString" readonly style="width: 300px" 当前选择<el-input v-model="isoString" readonly style="width: 300px" />
/></div> </div>
<div v-for="unit in units" :key="unit.key" style="margin-bottom: 8px"> <div v-for="unit in units" :key="unit.key" style="margin-bottom: 8px">
<span>{{ unit.label }}</span> <span>{{ unit.label }}</span>
<el-button-group> <el-button-group>
@ -11,8 +11,9 @@
:key="val" :key="val"
size="mini" size="mini"
@click="setUnit(unit.key, val)" @click="setUnit(unit.key, val)"
>{{ val }}</el-button
> >
{{ val }}
</el-button>
<el-input <el-input
v-model.number="custom[unit.key]" v-model.number="custom[unit.key]"
size="mini" size="mini"

View File

@ -3,22 +3,23 @@
<div style="margin-top: 10px"> <div style="margin-top: 10px">
<span>类型</span> <span>类型</span>
<el-button-group> <el-button-group>
<el-button size="mini" :type="type === 'time' ? 'primary' : ''" @click="setType('time')" <el-button size="mini" :type="type === 'time' ? 'primary' : ''" @click="setType('time')">
>时间</el-button 时间
> </el-button>
<el-button <el-button
size="mini" size="mini"
:type="type === 'duration' ? 'primary' : ''" :type="type === 'duration' ? 'primary' : ''"
@click="setType('duration')" @click="setType('duration')"
>持续</el-button
>
<el-button size="mini" :type="type === 'cycle' ? 'primary' : ''" @click="setType('cycle')"
>循环</el-button
> >
持续
</el-button>
<el-button size="mini" :type="type === 'cycle' ? 'primary' : ''" @click="setType('cycle')">
循环
</el-button>
</el-button-group> </el-button-group>
<el-icon v-if="valid" color="green" style="margin-left: 8px"><CircleCheckFilled /></el-icon> <el-icon v-if="valid" color="green" style="margin-left: 8px"><CircleCheckFilled /></el-icon>
</div> </div>
<div style=" display: flex;margin-top: 10px; align-items: center"> <div style="display: flex; margin-top: 10px; align-items: center">
<span>条件</span> <span>条件</span>
<el-input <el-input
v-model="condition" v-model="condition"
@ -33,9 +34,9 @@
<el-icon color="orange"><WarningFilled /></el-icon> <el-icon color="orange"><WarningFilled /></el-icon>
</el-tooltip> </el-tooltip>
<el-tooltip :content="helpText" placement="top"> <el-tooltip :content="helpText" placement="top">
<el-icon color="#409EFF" style="cursor: pointer" @click="showHelp = true" <el-icon color="#409EFF" style="cursor: pointer" @click="showHelp = true">
><QuestionFilled <QuestionFilled />
/></el-icon> </el-icon>
</el-tooltip> </el-tooltip>
<el-button <el-button
v-if="type === 'time'" v-if="type === 'time'"

View File

@ -13,8 +13,8 @@
</div> </div>
</div> </div>
<div class="flex flex-col justify-between"> <div class="flex flex-col justify-between">
<div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`" <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">
>{{ t('analysis.newUser') }} {{ t('analysis.newUser') }}
</div> </div>
<CountTo <CountTo
:duration="2600" :duration="2600"
@ -42,8 +42,8 @@
</div> </div>
</div> </div>
<div class="flex flex-col justify-between"> <div class="flex flex-col justify-between">
<div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`" <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">
>{{ t('analysis.unreadInformation') }} {{ t('analysis.unreadInformation') }}
</div> </div>
<CountTo <CountTo
:duration="2600" :duration="2600"
@ -71,8 +71,8 @@
</div> </div>
</div> </div>
<div class="flex flex-col justify-between"> <div class="flex flex-col justify-between">
<div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`" <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">
>{{ t('analysis.transactionAmount') }} {{ t('analysis.transactionAmount') }}
</div> </div>
<CountTo <CountTo
:duration="2600" :duration="2600"
@ -100,8 +100,8 @@
</div> </div>
</div> </div>
<div class="flex flex-col justify-between"> <div class="flex flex-col justify-between">
<div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`" <div :class="`${prefixCls}__item--text text-16px text-gray-500 text-right`">
>{{ t('analysis.totalShopping') }} {{ t('analysis.totalShopping') }}
</div> </div>
<CountTo <CountTo
:duration="2600" :duration="2600"

View File

@ -33,7 +33,7 @@
<!-- 右上角的主题语言选择 --> <!-- 右上角的主题语言选择 -->
<div <div
class="flex items-center justify-between at-2xl:justify-end at-xl:justify-end" class="flex items-center justify-between at-2xl:justify-end at-xl:justify-end"
style="color: var(--el-text-color-primary);" style="color: var(--el-text-color-primary)"
> >
<div class="flex items-center at-2xl:hidden at-xl:hidden"> <div class="flex items-center at-2xl:hidden at-xl:hidden">
<img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" /> <img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" />
@ -75,7 +75,14 @@ import { useAppStore } from '@/store/modules/app'
import { ThemeSwitch } from '@/layout/components/ThemeSwitch' import { ThemeSwitch } from '@/layout/components/ThemeSwitch'
import { LocaleDropdown } from '@/layout/components/LocaleDropdown' import { LocaleDropdown } from '@/layout/components/LocaleDropdown'
import { LoginForm, MobileForm, QrCodeForm, RegisterForm, SSOLoginVue, ForgetPasswordForm } from './components' import {
LoginForm,
MobileForm,
QrCodeForm,
RegisterForm,
SSOLoginVue,
ForgetPasswordForm
} from './components'
defineOptions({ name: 'Login' }) defineOptions({ name: 'Login' })

View File

@ -114,8 +114,8 @@
</el-checkbox> </el-checkbox>
</el-col> </el-col>
<el-col :offset="6" :span="12"> <el-col :offset="6" :span="12">
<el-link style="float: right" type="primary" <el-link style="float: right" type="primary">
>{{ t('login.forgetPassword') }} {{ t('login.forgetPassword') }}
</el-link> </el-link>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -53,11 +53,12 @@
<Icon :icon="getFileIcon(file.name)" class="text-blue-500 mr-2 flex-shrink-0" /> <Icon :icon="getFileIcon(file.name)" class="text-blue-500 mr-2 flex-shrink-0" />
<span <span
class="font-medium text-gray-900 mr-1 overflow-hidden text-ellipsis whitespace-nowrap flex-1" class="font-medium text-gray-900 mr-1 overflow-hidden text-ellipsis whitespace-nowrap flex-1"
>{{ file.name }}</span
>
<span class="text-gray-500 flex-shrink-0 text-11px"
>({{ formatFileSize(file.size) }})</span
> >
{{ file.name }}
</span>
<span class="text-gray-500 flex-shrink-0 text-11px">
({{ formatFileSize(file.size) }})
</span>
</div> </div>
<div class="flex items-center gap-1 flex-shrink-0 ml-2"> <div class="flex items-center gap-1 flex-shrink-0 ml-2">
<el-progress <el-progress

View File

@ -13,14 +13,14 @@ import List from './list/index.vue'
defineOptions({ name: 'Index' }) defineOptions({ name: 'Index' })
const listRef = ref<Nullable<{generateMusic: (...args) => void}>>(null) const listRef = ref<Nullable<{ generateMusic: (...args) => void }>>(null)
/* /*
*@Description: 拿到左侧配置信息调用右侧音乐生成的方法 *@Description: 拿到左侧配置信息调用右侧音乐生成的方法
*@MethodAuthor: xiaohong *@MethodAuthor: xiaohong
*@Date: 2024-07-19 11:13:38 *@Date: 2024-07-19 11:13:38
*/ */
function generateMusic (args: {formData: Recordable}) { function generateMusic(args: { formData: Recordable }) {
unref(listRef)?.generateMusic(args.formData) unref(listRef)?.generateMusic(args.formData)
} }
</script> </script>

View File

@ -1,8 +1,13 @@
<template> <template>
<div class="flex items-center justify-between px-2 h-72px bg-[var(--el-bg-color-overlay)] b-solid b-1 b-[var(--el-border-color)] b-l-none"> <div
class="flex items-center justify-between px-2 h-72px bg-[var(--el-bg-color-overlay)] b-solid b-1 b-[var(--el-border-color)] b-l-none"
>
<!-- 歌曲信息 --> <!-- 歌曲信息 -->
<div class="flex gap-[10px]"> <div class="flex gap-[10px]">
<el-image src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" class="w-[45px]" /> <el-image
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
class="w-[45px]"
/>
<div> <div>
<div>{{ currentSong.name }}</div> <div>{{ currentSong.name }}</div>
<div class="text-[12px] text-gray-400">{{ currentSong.singer }}</div> <div class="text-[12px] text-gray-400">{{ currentSong.singer }}</div>
@ -12,23 +17,39 @@
<!-- 音频controls --> <!-- 音频controls -->
<div class="flex gap-[12px] items-center"> <div class="flex gap-[12px] items-center">
<Icon icon="majesticons:back-circle" :size="20" class="text-gray-300 cursor-pointer" /> <Icon icon="majesticons:back-circle" :size="20" class="text-gray-300 cursor-pointer" />
<Icon :icon="audioProps.paused ? 'mdi:arrow-right-drop-circle' : 'solar:pause-circle-bold'" :size="30" class=" cursor-pointer" @click="toggleStatus('paused')" /> <Icon
:icon="audioProps.paused ? 'mdi:arrow-right-drop-circle' : 'solar:pause-circle-bold'"
:size="30"
class="cursor-pointer"
@click="toggleStatus('paused')"
/>
<Icon icon="majesticons:next-circle" :size="20" class="text-gray-300 cursor-pointer" /> <Icon icon="majesticons:next-circle" :size="20" class="text-gray-300 cursor-pointer" />
<div class="flex gap-[16px] items-center"> <div class="flex gap-[16px] items-center">
<span>{{ audioProps.currentTime }}</span> <span>{{ audioProps.currentTime }}</span>
<el-slider v-model="audioProps.duration" color="#409eff" class="w-[160px!important] " /> <el-slider v-model="audioProps.duration" color="#409eff" class="w-[160px!important]" />
<span>{{ audioProps.duration }}</span> <span>{{ audioProps.duration }}</span>
</div> </div>
<!-- 音频 --> <!-- 音频 -->
<audio v-bind="audioProps" ref="audioRef" controls v-show="!audioProps" @timeupdate="audioTimeUpdate"> <audio
v-bind="audioProps"
ref="audioRef"
controls
v-show="!audioProps"
@timeupdate="audioTimeUpdate"
>
<source :src="audioUrl" /> <source :src="audioUrl" />
</audio> </audio>
</div> </div>
<!-- 音量控制器 --> <!-- 音量控制器 -->
<div class="flex gap-[16px] items-center"> <div class="flex gap-[16px] items-center">
<Icon :icon="audioProps.muted ? 'tabler:volume-off' : 'tabler:volume'" :size="20" class="cursor-pointer" @click="toggleStatus('muted')" /> <Icon
<el-slider v-model="audioProps.volume" color="#409eff" class="w-[160px!important] " /> :icon="audioProps.muted ? 'tabler:volume-off' : 'tabler:volume'"
:size="20"
class="cursor-pointer"
@click="toggleStatus('muted')"
/>
<el-slider v-model="audioProps.volume" color="#409eff" class="w-[160px!important]" />
</div> </div>
</div> </div>
</template> </template>
@ -42,17 +63,17 @@ defineOptions({ name: 'Index' })
const currentSong = inject('currentSong', {}) const currentSong = inject('currentSong', {})
const audioRef = ref<Nullable<HTMLElement>>(null) const audioRef = ref<Nullable<HTMLElement>>(null)
// https://www.runoob.com/tags/ref-av-dom.html // https://www.runoob.com/tags/ref-av-dom.html
const audioProps = reactive({ const audioProps = reactive({
autoplay: true, autoplay: true,
paused: false, paused: false,
currentTime: '00:00', currentTime: '00:00',
duration: '00:00', duration: '00:00',
muted: false, muted: false,
volume: 50, volume: 50
}) })
function toggleStatus (type: string) { function toggleStatus(type: string) {
audioProps[type] = !audioProps[type] audioProps[type] = !audioProps[type]
if (type === 'paused' && audioRef.value) { if (type === 'paused' && audioRef.value) {
if (audioProps[type]) { if (audioProps[type]) {
@ -64,7 +85,7 @@ function toggleStatus (type: string) {
} }
// //
function audioTimeUpdate (args) { function audioTimeUpdate(args) {
audioProps.currentTime = formatPast(new Date(args.timeStamp), 'mm:ss') audioProps.currentTime = formatPast(new Date(args.timeStamp), 'mm:ss')
} }
</script> </script>

View File

@ -36,7 +36,6 @@ import audioBar from './audioBar/index.vue'
defineOptions({ name: 'Index' }) defineOptions({ name: 'Index' })
const currentType = ref('mine') const currentType = ref('mine')
// loading // loading
const loading = ref(false) const loading = ref(false)
@ -52,9 +51,9 @@ provide('currentSong', currentSong)
*@Description: 调接口生成音乐列表 *@Description: 调接口生成音乐列表
*@MethodAuthor: xiaohong *@MethodAuthor: xiaohong
*@Date: 2024-06-27 17:06:44 *@Date: 2024-06-27 17:06:44
*/ */
function generateMusic (formData: Recordable) { function generateMusic(formData: Recordable) {
console.log(formData); console.log(formData)
loading.value = true loading.value = true
setTimeout(() => { setTimeout(() => {
mySongList.value = Array.from({ length: 20 }, (_, index) => { mySongList.value = Array.from({ length: 20 }, (_, index) => {
@ -63,7 +62,8 @@ function generateMusic (formData: Recordable) {
audioUrl: '', audioUrl: '',
videoUrl: '', videoUrl: '',
title: '我走后' + index, title: '我走后' + index,
imageUrl: 'https://www.carsmp3.com/data/attachment/forum/201909/19/091020q5kgre20fidreqyt.jpg', imageUrl:
'https://www.carsmp3.com/data/attachment/forum/201909/19/091020q5kgre20fidreqyt.jpg',
desc: 'Metal, symphony, film soundtrack, grand, majesticMetal, dtrack, grand, majestic', desc: 'Metal, symphony, film soundtrack, grand, majesticMetal, dtrack, grand, majestic',
date: '2024年04月30日 14:02:57', date: '2024年04月30日 14:02:57',
lyric: `<div class="_words_17xen_66"><div>大江东去,浪淘尽,千古风流人物。 lyric: `<div class="_words_17xen_66"><div>大江东去,浪淘尽,千古风流人物。
@ -85,8 +85,8 @@ function generateMusic (formData: Recordable) {
*@Description: 设置当前播放的音乐 *@Description: 设置当前播放的音乐
*@MethodAuthor: xiaohong *@MethodAuthor: xiaohong
*@Date: 2024-07-19 11:22:33 *@Date: 2024-07-19 11:22:33
*/ */
function setCurrentSong (music: Recordable) { function setCurrentSong(music: Recordable) {
currentSong.value = music currentSong.value = music
} }
@ -95,7 +95,6 @@ defineExpose({
}) })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.el-tabs) { :deep(.el-tabs) {
display: flex; display: flex;

View File

@ -2,8 +2,17 @@
<div class="flex bg-[var(--el-bg-color-overlay)] p-12px mb-12px rounded-1"> <div class="flex bg-[var(--el-bg-color-overlay)] p-12px mb-12px rounded-1">
<div class="relative" @click="playSong"> <div class="relative" @click="playSong">
<el-image :src="songInfo.imageUrl" class="flex-none w-80px" /> <el-image :src="songInfo.imageUrl" class="flex-none w-80px" />
<div class="bg-black bg-op-40 absolute top-0 left-0 w-full h-full flex items-center justify-center cursor-pointer"> <div
<Icon :icon="currentSong.id === songInfo.id ? 'solar:pause-circle-bold':'mdi:arrow-right-drop-circle'" :size="30" /> class="bg-black bg-op-40 absolute top-0 left-0 w-full h-full flex items-center justify-center cursor-pointer"
>
<Icon
:icon="
currentSong.id === songInfo.id
? 'solar:pause-circle-bold'
: 'mdi:arrow-right-drop-circle'
"
:size="30"
/>
</div> </div>
</div> </div>
<div class="ml-8px"> <div class="ml-8px">
@ -16,7 +25,6 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
defineOptions({ name: 'Index' }) defineOptions({ name: 'Index' })
defineProps({ defineProps({
@ -30,7 +38,7 @@ const emits = defineEmits(['play'])
const currentSong = inject('currentSong', {}) const currentSong = inject('currentSong', {})
function playSong () { function playSong() {
emits('play') emits('play')
} }
</script> </script>

View File

@ -14,9 +14,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
defineOptions({ name: 'Index' }) defineOptions({ name: 'Index' })
const currentSong = inject('currentSong', {}) const currentSong = inject('currentSong', {})
</script> </script>

View File

@ -1,9 +1,12 @@
<template> <template>
<div> <div>
<Title title="音乐/歌词说明" desc="描述您想要的音乐风格和主题,使用流派和氛围而不是特定的艺术家和歌曲"> <Title
title="音乐/歌词说明"
desc="描述您想要的音乐风格和主题,使用流派和氛围而不是特定的艺术家和歌曲"
>
<el-input <el-input
v-model="formData.desc" v-model="formData.desc"
:autosize="{ minRows: 6, maxRows: 6}" :autosize="{ minRows: 6, maxRows: 6 }"
resize="none" resize="none"
type="textarea" type="textarea"
maxlength="1200" maxlength="1200"
@ -21,13 +24,16 @@
<Title title="版本" desc="描述您想要的音乐风格和主题,使用流派和氛围而不是特定的艺术家和歌曲"> <Title title="版本" desc="描述您想要的音乐风格和主题,使用流派和氛围而不是特定的艺术家和歌曲">
<el-select v-model="formData.version" placeholder="请选择"> <el-select v-model="formData.version" placeholder="请选择">
<el-option <el-option
v-for="item in [{ v-for="item in [
{
value: '3', value: '3',
label: 'V3' label: 'V3'
}, { },
{
value: '2', value: '2',
label: 'V2' label: 'V2'
}]" }
]"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
@ -51,5 +57,4 @@ const formData = reactive({
defineExpose({ defineExpose({
formData formData
}) })
</script> </script>

View File

@ -3,7 +3,7 @@
<Title title="歌词" desc="自己编写歌词或使用Ai生成歌词两节/8行效果最佳"> <Title title="歌词" desc="自己编写歌词或使用Ai生成歌词两节/8行效果最佳">
<el-input <el-input
v-model="formData.lyric" v-model="formData.lyric"
:autosize="{ minRows: 6, maxRows: 6}" :autosize="{ minRows: 6, maxRows: 6 }"
resize="none" resize="none"
type="textarea" type="textarea"
maxlength="1200" maxlength="1200"
@ -18,19 +18,24 @@
</el-space> </el-space>
<el-button <el-button
:type="showCustom ? 'primary': 'default'" :type="showCustom ? 'primary' : 'default'"
round round
size="small" size="small"
class="mb-6px" class="mb-6px"
@click="showCustom = !showCustom" @click="showCustom = !showCustom"
>自定义风格 >
自定义风格
</el-button> </el-button>
</Title> </Title>
<Title v-show="showCustom" desc="描述您想要的音乐风格Suno无法识别艺术家的名字但可以理解流派和氛围" class="-mt-12px"> <Title
v-show="showCustom"
desc="描述您想要的音乐风格Suno无法识别艺术家的名字但可以理解流派和氛围"
class="-mt-12px"
>
<el-input <el-input
v-model="formData.style" v-model="formData.style"
:autosize="{ minRows: 4, maxRows: 4}" :autosize="{ minRows: 4, maxRows: 4 }"
resize="none" resize="none"
type="textarea" type="textarea"
maxlength="256" maxlength="256"
@ -46,13 +51,16 @@
<Title title="版本"> <Title title="版本">
<el-select v-model="formData.version" placeholder="请选择"> <el-select v-model="formData.version" placeholder="请选择">
<el-option <el-option
v-for="item in [{ v-for="item in [
{
value: '3', value: '3',
label: 'V3' label: 'V3'
}, { },
{
value: '2', value: '2',
label: 'V2' label: 'V2'
}]" }
]"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"

View File

@ -47,8 +47,8 @@
<div v-else-if="error"> <div v-else-if="error">
<el-text type="danger">{{ error }}</el-text> <el-text type="danger">{{ error }}</el-text>
</div> </div>
<pre v-else-if="testResult" class="result-content" <pre v-else-if="testResult" class="result-content">
>{{ JSON.stringify(testResult, null, 2) }} {{ JSON.stringify(testResult, null, 2) }}
</pre> </pre>
<div v-else> <el-text type="info">点击运行查看结果</el-text> </div> <div v-else> <el-text type="info">点击运行查看结果</el-text> </div>
</div> </div>

View File

@ -90,9 +90,9 @@
<div class="flex flex-col"> <div class="flex flex-col">
<el-radio-group v-model="modelData.titleSetting.enable"> <el-radio-group v-model="modelData.titleSetting.enable">
<div class="flex flex-col"> <div class="flex flex-col">
<el-radio :value="false" <el-radio :value="false">
>系统默认 <el-text type="info"> 展示流程名称 </el-text></el-radio 系统默认 <el-text type="info"> 展示流程名称 </el-text>
> </el-radio>
<el-radio :value="true"> <el-radio :value="true">
自定义标题 自定义标题
<el-text> <el-text>

View File

@ -19,7 +19,6 @@ const view = ref({
bpmnXml: '' bpmnXml: ''
}) // BPMN }) // BPMN
/** 只有 loading 完成时,才去加载流程列表 */ /** 只有 loading 完成时,才去加载流程列表 */
watch( watch(
() => props.modelView, () => props.modelView,

View File

@ -95,14 +95,16 @@
</el-table-column> </el-table-column>
<el-table-column label="字典类型" min-width="12%"> <el-table-column label="字典类型" min-width="12%">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.dictType" :value-on-clear="''" clearable filterable placeholder="请选择"> <el-select
v-model="scope.row.dictType"
:value-on-clear="''"
clearable
filterable
placeholder="请选择"
>
<template #header> <template #header>
<div class="flex justify-end"> <div class="flex justify-end">
<el-popover <el-popover class="box-item" content="加载最新字典" placement="top-start">
class="box-item"
content="加载最新字典"
placement="top-start"
>
<template #reference> <template #reference>
<el-button :icon="Refresh" size="small" circle @click="getDictOptions" class="" /> <el-button :icon="Refresh" size="small" circle @click="getDictOptions" class="" />
</template> </template>

View File

@ -36,9 +36,7 @@
inline-prompt inline-prompt
active-text="定时刷新" active-text="定时刷新"
inactive-text="定时刷新" inactive-text="定时刷新"
style=" :style="{ '--el-switch-on-color': '#13ce66' }"
--el-switch-on-color: #13ce66"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -40,9 +40,7 @@
inline-prompt inline-prompt
active-text="定时刷新" active-text="定时刷新"
inactive-text="定时刷新" inactive-text="定时刷新"
style=" :style="{ '--el-switch-on-color': '#13ce66' }"
--el-switch-on-color: #13ce66"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -35,9 +35,9 @@
> >
{{ conditionIndex + 1 }} {{ conditionIndex + 1 }}
</div> </div>
<span class="text-12px font-500 text-[var(--el-text-color-primary)]" <span class="text-12px font-500 text-[var(--el-text-color-primary)]">
>条件 {{ conditionIndex + 1 }}</span 条件 {{ conditionIndex + 1 }}
> </span>
</div> </div>
<el-button <el-button
type="danger" type="danger"

View File

@ -74,9 +74,9 @@
class="flex items-center gap-8px p-12px px-16px bg-[var(--el-fill-color-light)] rounded-6px border border-[var(--el-border-color-lighter)]" class="flex items-center gap-8px p-12px px-16px bg-[var(--el-fill-color-light)] rounded-6px border border-[var(--el-border-color-lighter)]"
> >
<Icon icon="ep:timer" class="text-[var(--el-color-danger)] text-18px" /> <Icon icon="ep:timer" class="text-[var(--el-color-danger)] text-18px" />
<span class="text-14px font-500 text-[var(--el-text-color-primary)]" <span class="text-14px font-500 text-[var(--el-text-color-primary)]">
>定时触发配置</span 定时触发配置
> </span>
</div> </div>
<!-- CRON 表达式配置 --> <!-- CRON 表达式配置 -->

View File

@ -3,8 +3,8 @@
<el-table v-loading="loading" :data="list" show-overflow-tooltip> <el-table v-loading="loading" :data="list" show-overflow-tooltip>
<el-table-column label="#" width="55"> <el-table-column label="#" width="55">
<template #default="{ row }"> <template #default="{ row }">
<el-radio :value="row.id" v-model="selectedSkuId" @change="handleSelected(row)" <el-radio :value="row.id" v-model="selectedSkuId" @change="handleSelected(row)">
>&nbsp; &nbsp;
</el-radio> </el-radio>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -24,8 +24,8 @@
</div> </div>
<div class="pay-box flex justify-end pr-5px"> <div class="pay-box flex justify-end pr-5px">
<div class="flex items-center"> <div class="flex items-center">
<div class="discounts-title pay-color" <div class="discounts-title pay-color">
> {{ getMessageContent?.productCount }} 件商品,总金额: {{ getMessageContent?.productCount }} 件商品,总金额:
</div> </div>
<div class="discounts-money pay-color"> <div class="discounts-money pay-color">
{{ fenToYuan(getMessageContent?.payPrice) }} {{ fenToYuan(getMessageContent?.payPrice) }}

View File

@ -50,8 +50,8 @@
<el-descriptions-item label="头像"> <el-descriptions-item label="头像">
<el-avatar :src="userInfo.bindUser?.avatar" /> <el-avatar :src="userInfo.bindUser?.avatar" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="昵称" <el-descriptions-item label="昵称">
>{{ userInfo.bindUser?.nickname }} {{ userInfo.bindUser?.nickname }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="推广资格"> <el-descriptions-item label="推广资格">
<el-tag v-if="userInfo.bindUser?.brokerageEnabled"></el-tag> <el-tag v-if="userInfo.bindUser?.brokerageEnabled"></el-tag>

View File

@ -339,7 +339,9 @@ onMounted(async () => {
} }
} else if (formData.value.deliveryType === DeliveryTypeEnum.PICK_UP.type) { } else if (formData.value.deliveryType === DeliveryTypeEnum.PICK_UP.type) {
if (formData.value.pickUpStoreId) { if (formData.value.pickUpStoreId) {
pickUpStore.value = await DeliveryPickUpStoreApi.getDeliveryPickUpStore(formData.value.pickUpStoreId) pickUpStore.value = await DeliveryPickUpStoreApi.getDeliveryPickUpStore(
formData.value.pickUpStoreId
)
} }
} }
}) })

View File

@ -22,9 +22,9 @@
= 周末 = 周末
</span> </span>
<span class="flex items-center gap-4px"> <span class="flex items-center gap-4px">
<el-tag size="small" effect="dark" type="success" class="!text-11px !h-18px !px-4px" <el-tag size="small" effect="dark" type="success" class="!text-11px !h-18px !px-4px">
></el-tag
> </el-tag>
= 节假日不显示排班 = 节假日不显示排班
</span> </span>
</div> </div>

View File

@ -32,12 +32,8 @@
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery" <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
>
<el-button @click="resetQuery"
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
</ContentWrap> </ContentWrap>

View File

@ -107,9 +107,9 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<template #footer> <template #footer>
<el-button v-if="!isDetail" @click="submitForm" type="primary" :disabled="formLoading" <el-button v-if="!isDetail" @click="submitForm" type="primary" :disabled="formLoading">
> </el-button
> </el-button>
<el-button @click="dialogVisible = false">{{ isDetail ? '关 闭' : '取 消' }}</el-button> <el-button @click="dialogVisible = false">{{ isDetail ? '关 闭' : '取 消' }}</el-button>
</template> </template>
</Dialog> </Dialog>

View File

@ -127,9 +127,9 @@
:duration="1500" :duration="1500"
class="text-28px font-700 leading-[1.2] color-[#7c3aed]" class="text-28px font-700 leading-[1.2] color-[#7c3aed]"
/> />
<span class="text-13px color-[var(--el-text-color-secondary)]" <span class="text-13px color-[var(--el-text-color-secondary)]">
>/ {{ summary.machineryTotal }} </span / {{ summary.machineryTotal }}
> </span>
</div> </div>
<div class="text-12px color-[var(--el-text-color-placeholder)] mt-4px"> <div class="text-12px color-[var(--el-text-color-placeholder)] mt-4px">
<span class="text-red-400">停机 {{ summary.machineryStop }}</span> <span class="text-red-400">停机 {{ summary.machineryStop }}</span>

View File

@ -1,6 +1,9 @@
<!-- MES 物料产品列表 --> <!-- MES 物料产品列表 -->
<template> <template>
<doc-alert title="【基础】物料产品、分类、计量单位" url="https://doc.iocoder.cn/mes/md/product/" /> <doc-alert
title="【基础】物料产品、分类、计量单位"
url="https://doc.iocoder.cn/mes/md/product/"
/>
<el-row :gutter="20"> <el-row :gutter="20">
<!-- 左侧分类树 --> <!-- 左侧分类树 -->

View File

@ -61,9 +61,7 @@
v-model="formData.taskId" v-model="formData.taskId"
:workOrderId="formData.workOrderId" :workOrderId="formData.workOrderId"
:workstationId="formData.workstationId" :workstationId="formData.workstationId"
:statuses="[ :statuses="[MesProTaskStatusEnum.PREPARE]"
MesProTaskStatusEnum.PREPARE
]"
:disabled="isHeaderReadonly || !formData.workOrderId" :disabled="isHeaderReadonly || !formData.workOrderId"
placeholder="请选择任务" placeholder="请选择任务"
@change="handleTaskChange" @change="handleTaskChange"

View File

@ -187,7 +187,12 @@
<el-button v-if="isFinish" @click="handleFinish" type="success" :disabled="formLoading"> <el-button v-if="isFinish" @click="handleFinish" type="success" :disabled="formLoading">
</el-button> </el-button>
<el-button v-if="formType === 'detail' && formData.id" type="primary" plain @click="handleBarcode"> <el-button
v-if="formType === 'detail' && formData.id"
type="primary"
plain
@click="handleBarcode"
>
查看条码 查看条码
</el-button> </el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
@ -275,7 +280,10 @@ const originalFormData = ref<string>('') // 原始表单数据快照,用于脏
/** 查看条码 */ /** 查看条码 */
const handleBarcode = () => { const handleBarcode = () => {
barcodeDetailRef.value?.openByBusiness( barcodeDetailRef.value?.openByBusiness(
formData.value.id!, BarcodeBizTypeEnum.WORKORDER, formData.value.code, formData.value.name formData.value.id!,
BarcodeBizTypeEnum.WORKORDER,
formData.value.code,
formData.value.name
) )
} }

View File

@ -48,8 +48,8 @@
/> />
<el-table-column label="操作" align="center" fixed="right"> <el-table-column label="操作" align="center" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button type="primary" link @click="selectMaterialFun(scope.row)" <el-button type="primary" link @click="selectMaterialFun(scope.row)">
>选择 选择
<Icon icon="ep:plus" /> <Icon icon="ep:plus" />
</el-button> </el-button>
</template> </template>
@ -90,8 +90,8 @@
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template #default="scope"> <template #default="scope">
<el-button type="primary" link @click="selectMaterialFun(scope.row)" <el-button type="primary" link @click="selectMaterialFun(scope.row)">
>选择 选择
<Icon icon="akar-icons:circle-plus" /> <Icon icon="akar-icons:circle-plus" />
</el-button> </el-button>
</template> </template>

View File

@ -23,8 +23,13 @@
<template #trigger> <template #trigger>
<el-button type="primary" link>本地上传</el-button> <el-button type="primary" link>本地上传</el-button>
</template> </template>
<el-button type="primary" link @click="showDialog = true" style="margin-left: 5px" <el-button
>素材库选择 type="primary"
link
@click="showDialog = true"
style="margin-left: 5px"
>
素材库选择
</el-button> </el-button>
</el-upload> </el-upload>
</div> </div>

View File

@ -18,9 +18,9 @@
<el-button type="primary" plain>选择视频</el-button> <el-button type="primary" plain>选择视频</el-button>
</template> </template>
<template #tip> <template #tip>
<span class="el-upload__tip" style="margin-left: 10px" <span class="el-upload__tip" style="margin-left: 10px">
>格式支持 MP4文件大小不超过 10MB</span 格式支持 MP4文件大小不超过 10MB
> </span>
</template> </template>
</el-upload> </el-upload>
<el-divider /> <el-divider />

View File

@ -67,8 +67,9 @@
type="primary" type="primary"
plain plain
@click="showCreateVideo = true" @click="showCreateVideo = true"
>新建视频</el-button
> >
新建视频
</el-button>
<!-- 新建视频的弹窗 --> <!-- 新建视频的弹窗 -->
<UploadVideo v-model="showCreateVideo" /> <UploadVideo v-model="showCreateVideo" />
<!-- 列表 --> <!-- 列表 -->

View File

@ -27,12 +27,17 @@
/> />
</div> </div>
<div class="save_div"> <div class="save_div">
<el-button class="save_btn" type="success" @click="onSave" v-hasPermi="['mp:menu:save']" <el-button class="save_btn" type="success" @click="onSave" v-hasPermi="['mp:menu:save']">
>保存并发布菜单</el-button 保存并发布菜单
> </el-button>
<el-button class="save_btn" type="danger" @click="onClear" v-hasPermi="['mp:menu:delete']" <el-button
>清空菜单</el-button class="save_btn"
type="danger"
@click="onClear"
v-hasPermi="['mp:menu:delete']"
> >
清空菜单
</el-button>
</div> </div>
</div> </div>
<!--右边配置--> <!--右边配置-->

View File

@ -31,7 +31,7 @@
v-model="formData.data" v-model="formData.data"
type="textarea" type="textarea"
:rows="4" :rows="4"
placeholder="请输入模板数据JSON 格式),例如:{&quot;keyword1&quot;: {&quot;value&quot;: &quot;测试内容&quot;}}" placeholder='请输入模板数据JSON 格式),例如:{"keyword1": {"value": "测试内容"}}'
/> />
</el-form-item> </el-form-item>
<el-form-item label="跳转链接" prop="url"> <el-form-item label="跳转链接" prop="url">

View File

@ -106,13 +106,13 @@
<UserForm ref="formRef" @success="getList" /> <UserForm ref="formRef" @success="getList" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {dateFormatter} from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import * as MpUserApi from '@/api/mp/user' import * as MpUserApi from '@/api/mp/user'
import * as MpTagApi from '@/api/mp/tag' import * as MpTagApi from '@/api/mp/tag'
import WxAccountSelect from '@/views/mp/components/wx-account-select' import WxAccountSelect from '@/views/mp/components/wx-account-select'
import type {FormInstance} from 'element-plus' import type { FormInstance } from 'element-plus'
import UserForm from './UserForm.vue' import UserForm from './UserForm.vue'
import {ref} from "vue"; import { ref } from 'vue'
defineOptions({ name: 'MpUser' }) defineOptions({ name: 'MpUser' })
@ -159,7 +159,7 @@ const getList = async () => {
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
getList() getList()
if(isDialog.value){ if (isDialog.value) {
emitChange() emitChange()
} }
} }
@ -194,21 +194,24 @@ defineExpose({
onAccountChanged(accountId) onAccountChanged(accountId)
isDialog.value = true isDialog.value = true
} }
}); })
/** Emits*/ /** Emits*/
interface Emits { interface Emits {
(e: 'change', data: { (
e: 'change',
data: {
multipleSelection: any[] multipleSelection: any[]
total: number total: number
queryParams: object queryParams: object
}): void }
): void
// (e: 'select', user: any): void // (e: 'select', user: any): void
// (e: 'cancel'): void // (e: 'cancel'): void
} }
const emit = defineEmits<Emits>() const emit = defineEmits<Emits>()
const emitChange = () => { const emitChange = () => {
emit('change', {multipleSelection: multipleSelection.value, total: total.value, queryParams}) emit('change', { multipleSelection: multipleSelection.value, total: total.value, queryParams })
} }
const handleSelectionChange = (val: any[]) => { const handleSelectionChange = (val: any[]) => {