优化代码排版

master
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="{
label: item.label
}"
>{{ item.label }}
>
{{ item.label }}
</slot>
</template>
@ -130,9 +131,7 @@ const toggleClick = () => {
<DictTag :type="item.dictType" :value="data[item.field] + ''" />
</slot>
<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>
</template>
</ElDescriptionsItem>

View File

@ -22,8 +22,9 @@
<div
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"
>{{ currentIndex }} / {{ property.items.length }}</div
>
{{ currentIndex }} / {{ property.items.length }}
</div>
</div>
</template>
<script setup lang="ts">

View File

@ -39,7 +39,7 @@
</span>
</div>
</div>
</el-carousel-item>
</el-carousel-item>
</el-carousel>
</template>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,8 +8,8 @@
<UserTaskNode
v-if="
currentNode &&
(currentNode.type === NodeType.USER_TASK_NODE ||
currentNode.type === NodeType.TRANSACTOR_NODE)
(currentNode.type === NodeType.USER_TASK_NODE ||
currentNode.type === NodeType.TRANSACTOR_NODE)
"
:flow-node="currentNode"
@update:flow-node="handleModelValueUpdate"

View File

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

View File

@ -60,8 +60,8 @@
<el-form-item
v-if="
configForm.candidateStrategy == CandidateStrategy.DEPT_MEMBER ||
configForm.candidateStrategy == CandidateStrategy.DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER
configForm.candidateStrategy == CandidateStrategy.DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER
"
label="指定部门"
prop="deptIds"
@ -156,10 +156,10 @@
<el-form-item
v-if="
configForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.START_USER_DEPT_LEADER ||
configForm.candidateStrategy ==
configForm.candidateStrategy == CandidateStrategy.START_USER_DEPT_LEADER ||
configForm.candidateStrategy ==
CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.FORM_DEPT_LEADER
configForm.candidateStrategy == CandidateStrategy.FORM_DEPT_LEADER
"
:label="deptLevelLabel!"
prop="deptLevel"
@ -218,8 +218,9 @@
:value="FieldPermissionType.READ"
size="large"
:label="FieldPermissionType.WRITE"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
<div class="item-radio-wrap">
<el-radio
@ -227,16 +228,18 @@
size="large"
:label="FieldPermissionType.WRITE"
disabled
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
<div class="item-radio-wrap">
<el-radio
:value="FieldPermissionType.NONE"
size="large"
:label="FieldPermissionType.NONE"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
</el-radio-group>
</div>

View File

@ -28,7 +28,7 @@
<el-text
v-if="
(!startUserIds || startUserIds.length === 0) &&
(!startDeptIds || startDeptIds.length === 0)
(!startDeptIds || startDeptIds.length === 0)
"
>
全部成员可以发起流程
@ -95,24 +95,27 @@
:value="FieldPermissionType.READ"
size="large"
:label="FieldPermissionType.READ"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
<div class="item-radio-wrap">
<el-radio
:value="FieldPermissionType.WRITE"
size="large"
:label="FieldPermissionType.WRITE"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
<div class="item-radio-wrap">
<el-radio
:value="FieldPermissionType.NONE"
size="large"
:label="FieldPermissionType.NONE"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
</el-radio-group>
</div>

View File

@ -79,8 +79,8 @@
<el-form-item
v-if="
configForm.candidateStrategy == CandidateStrategy.DEPT_MEMBER ||
configForm.candidateStrategy == CandidateStrategy.DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER
configForm.candidateStrategy == CandidateStrategy.DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER
"
label="指定部门"
prop="deptIds"
@ -194,10 +194,10 @@
<el-form-item
v-if="
configForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.START_USER_DEPT_LEADER ||
configForm.candidateStrategy ==
configForm.candidateStrategy == CandidateStrategy.START_USER_DEPT_LEADER ||
configForm.candidateStrategy ==
CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER ||
configForm.candidateStrategy == CandidateStrategy.FORM_DEPT_LEADER
configForm.candidateStrategy == CandidateStrategy.FORM_DEPT_LEADER
"
:label="deptLevelLabel!"
prop="deptLevel"
@ -245,7 +245,7 @@
size="small"
v-if="
item.value === ApproveMethodType.APPROVE_BY_RATIO &&
configForm.approveMethod === ApproveMethodType.APPROVE_BY_RATIO
configForm.approveMethod === ApproveMethodType.APPROVE_BY_RATIO
"
/>
</el-form-item>
@ -444,9 +444,9 @@
:placeholder="item.displayName"
v-if="btnDisplayNameEdit[index]"
/>
<el-button v-else text @click="changeBtnDisplayName(index)"
>{{ item.displayName }} &nbsp;<Icon icon="ep:edit"
/></el-button>
<el-button v-else text @click="changeBtnDisplayName(index)">
{{ item.displayName }} &nbsp;<Icon icon="ep:edit" />
</el-button>
</div>
<div class="button-setting-item-label">
<el-switch v-model="item.enable" />
@ -483,24 +483,27 @@
:value="FieldPermissionType.READ"
size="large"
:label="FieldPermissionType.READ"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
<div class="item-radio-wrap">
<el-radio
:value="FieldPermissionType.WRITE"
size="large"
:label="FieldPermissionType.WRITE"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
<div class="item-radio-wrap">
<el-radio
:value="FieldPermissionType.NONE"
size="large"
:label="FieldPermissionType.NONE"
><span></span
></el-radio>
>
<span></span>
</el-radio>
</div>
</el-radio-group>
</div>

View File

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

View File

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

View File

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

View File

@ -1,6 +1,10 @@
<template>
<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>
</div>
</div>
@ -49,7 +53,7 @@
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column align="center" label="耗时" prop="durationInMillis" width="100">
<template #default="scope">
{{ formatPast2(scope.row.durationInMillis) }}
@ -83,17 +87,17 @@ const dialogVisible = ref(false) // 弹窗可见性
const processInstanceInfos = ref<any[]>([]) //
const nodeClick = () => {
if (readonly) {
if(processInstance && processInstance.value){
if (readonly) {
if (processInstance && processInstance.value) {
processInstanceInfos.value = [
{
assigneeUser: processInstance.value.startUser,
createTime: processInstance.value.startTime,
endTime: processInstance.value.endTime,
status: processInstance.value.status,
durationInMillis: processInstance.value.durationInMillis
}
]
{
assigneeUser: processInstance.value.startUser,
createTime: processInstance.value.startTime,
endTime: processInstance.value.endTime,
status: processInstance.value.status,
durationInMillis: processInstance.value.durationInMillis
}
]
dialogVisible.value = true
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -112,9 +112,9 @@
:placeholder="item.displayName"
v-if="btnDisplayNameEdit[index]"
/>
<el-button v-else text @click="changeBtnDisplayName(index)"
>{{ item.displayName }} &nbsp;<Icon icon="ep:edit"
/></el-button>
<el-button v-else text @click="changeBtnDisplayName(index)">
{{ item.displayName }} &nbsp;<Icon icon="ep:edit" />
</el-button>
</div>
<div class="button-setting-item-label">
<el-switch v-model="item.enable" @change="updateElementExtensions" />
@ -127,15 +127,15 @@
<div class="field-permit-title">
<div class="setting-title-label first-title"> 字段名称 </div>
<div class="other-titles">
<span class="setting-title-label cursor-pointer" @click="updatePermission('READ')"
>只读</span
>
<span class="setting-title-label cursor-pointer" @click="updatePermission('WRITE')"
>可编辑</span
>
<span class="setting-title-label cursor-pointer" @click="updatePermission('NONE')"
>隐藏</span
>
<span class="setting-title-label cursor-pointer" @click="updatePermission('READ')">
只读
</span>
<span class="setting-title-label cursor-pointer" @click="updatePermission('WRITE')">
可编辑
</span>
<span class="setting-title-label cursor-pointer" @click="updatePermission('NONE')">
隐藏
</span>
</div>
</div>
<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">
<template #default="scope">
<el-button size="small" link @click="openListenerForm(scope.row, scope.$index)"
>编辑</el-button
>
<el-button size="small" link @click="openListenerForm(scope.row, scope.$index)">
编辑
</el-button>
<el-divider direction="vertical" />
<el-button size="small" link style="color: #ff4d4f" @click="removeListener(scope.$index)"
>移除</el-button
>
<el-button size="small" link style="color: #ff4d4f" @click="removeListener(scope.$index)">
移除
</el-button>
</template>
</el-table-column>
</el-table>
@ -167,17 +167,18 @@
/>
<el-table-column label="操作" width="130px">
<template #default="scope">
<el-button size="small" link @click="openListenerFieldForm(scope.row, scope.$index)"
>编辑</el-button
>
<el-button size="small" link @click="openListenerFieldForm(scope.row, scope.$index)">
编辑
</el-button>
<el-divider direction="vertical" />
<el-button
size="small"
link
style="color: #ff4d4f"
@click="removeListenerField(scope.$index)"
>移除</el-button
>
移除
</el-button>
</template>
</el-table-column>
</el-table>
@ -419,10 +420,7 @@ const saveListenerConfig = async () => {
bpmnElement.businessObject?.extensionElements?.values?.filter(
(ex) => ex.$type !== `${prefix}:ExecutionListener`
) ?? []
updateElementExtensions(
bpmnElement,
otherExtensionList.value.concat(bpmnElementListeners.value)
)
updateElementExtensions(bpmnElement, otherExtensionList.value.concat(bpmnElementListeners.value))
// 4.
listenerFormModelVisible.value = false
listenerForm.value = {}
@ -448,10 +446,7 @@ const selectProcessListener = (listener) => {
bpmnElement.businessObject?.extensionElements?.values?.filter(
(ex) => ex.$type !== `${prefix}:ExecutionListener`
) ?? []
updateElementExtensions(
bpmnElement,
otherExtensionList.value.concat(bpmnElementListeners.value)
)
updateElementExtensions(bpmnElement, otherExtensionList.value.concat(bpmnElementListeners.value))
}
watch(

View File

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

View File

@ -19,7 +19,7 @@
size="small"
v-if="
item.value === ApproveMethodType.APPROVE_BY_RATIO &&
approveMethod === ApproveMethodType.APPROVE_BY_RATIO
approveMethod === ApproveMethodType.APPROVE_BY_RATIO
"
@change="onApproveRatioChange"
/>
@ -27,9 +27,7 @@
</div>
</div>
</el-radio-group>
<div v-else>
除了UserTask以外节点的多实例待实现
</div>
<div v-else> UserTask </div>
<!-- 与Simple设计器配置合并保留以前的代码 -->
<el-form label-width="90px" style="display: none">
<el-form-item label="快捷配置">
@ -47,7 +45,7 @@
<template
v-if="
loopCharacteristics === 'ParallelMultiInstance' ||
loopCharacteristics === 'SequentialMultiInstance'
loopCharacteristics === 'SequentialMultiInstance'
"
>
<el-form-item label="循环数量" key="loopCardinality">

View File

@ -33,8 +33,8 @@
<el-form-item
v-if="
userTaskForm.candidateStrategy == CandidateStrategy.DEPT_MEMBER ||
userTaskForm.candidateStrategy == CandidateStrategy.DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER
userTaskForm.candidateStrategy == CandidateStrategy.DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER
"
label="指定部门"
prop="candidateParam"
@ -152,9 +152,9 @@
<el-form-item
v-if="
userTaskForm.candidateStrategy == CandidateStrategy.MULTI_LEVEL_DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.START_USER_DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.FORM_DEPT_LEADER
userTaskForm.candidateStrategy == CandidateStrategy.START_USER_DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER ||
userTaskForm.candidateStrategy == CandidateStrategy.FORM_DEPT_LEADER
"
:label="deptLevelLabel!"
prop="deptLevel"

View File

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

View File

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

View File

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

View File

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

View File

@ -33,7 +33,7 @@
<!-- 右上角的主题语言选择 -->
<div
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">
<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 { 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' })

View File

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

View File

@ -53,11 +53,12 @@
<Icon :icon="getFileIcon(file.name)" class="text-blue-500 mr-2 flex-shrink-0" />
<span
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 class="flex items-center gap-1 flex-shrink-0 ml-2">
<el-progress

View File

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

View File

@ -1,34 +1,55 @@
<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]">
<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>{{ currentSong.name }}</div>
<div class="text-[12px] text-gray-400">{{ currentSong.singer }}</div>
</div>
</div>
<!-- 音频controls -->
<div class="flex gap-[12px] items-center">
<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" />
<div class="flex gap-[16px] items-center">
<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>
</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" />
</audio>
</div>
<!-- 音量控制器 -->
<div class="flex gap-[16px] items-center">
<Icon :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] " />
<Icon
: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>
</template>
@ -42,17 +63,17 @@ defineOptions({ name: 'Index' })
const currentSong = inject('currentSong', {})
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({
autoplay: true,
paused: false,
currentTime: '00:00',
duration: '00:00',
muted: false,
volume: 50,
muted: false,
volume: 50
})
function toggleStatus (type: string) {
function toggleStatus(type: string) {
audioProps[type] = !audioProps[type]
if (type === 'paused' && audioRef.value) {
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')
}
</script>

View File

@ -36,7 +36,6 @@ import audioBar from './audioBar/index.vue'
defineOptions({ name: 'Index' })
const currentType = ref('mine')
// loading
const loading = ref(false)
@ -52,9 +51,9 @@ provide('currentSong', currentSong)
*@Description: 调接口生成音乐列表
*@MethodAuthor: xiaohong
*@Date: 2024-06-27 17:06:44
*/
function generateMusic (formData: Recordable) {
console.log(formData);
*/
function generateMusic(formData: Recordable) {
console.log(formData)
loading.value = true
setTimeout(() => {
mySongList.value = Array.from({ length: 20 }, (_, index) => {
@ -63,7 +62,8 @@ function generateMusic (formData: Recordable) {
audioUrl: '',
videoUrl: '',
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',
date: '2024年04月30日 14:02:57',
lyric: `<div class="_words_17xen_66"><div>大江东去,浪淘尽,千古风流人物。
@ -85,8 +85,8 @@ function generateMusic (formData: Recordable) {
*@Description: 设置当前播放的音乐
*@MethodAuthor: xiaohong
*@Date: 2024-07-19 11:22:33
*/
function setCurrentSong (music: Recordable) {
*/
function setCurrentSong(music: Recordable) {
currentSong.value = music
}
@ -95,7 +95,6 @@ defineExpose({
})
</script>
<style lang="scss" scoped>
:deep(.el-tabs) {
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="relative" @click="playSong">
<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">
<Icon :icon="currentSong.id === songInfo.id ? 'solar:pause-circle-bold':'mdi:arrow-right-drop-circle'" :size="30" />
<div
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 class="ml-8px">
@ -16,7 +25,6 @@
</template>
<script lang="ts" setup>
defineOptions({ name: 'Index' })
defineProps({
@ -30,7 +38,7 @@ const emits = defineEmits(['play'])
const currentSong = inject('currentSong', {})
function playSong () {
function playSong() {
emits('play')
}
</script>

View File

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

View File

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

View File

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

View File

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

View File

@ -214,7 +214,7 @@
command="handleReport"
v-if="
checkPermi(['bpm:process-instance:manager-query']) &&
scope.row.processDefinition
scope.row.processDefinition
"
:disabled="!isManagerUser(scope.row)"
>

View File

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

View File

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

View File

@ -501,8 +501,8 @@
class="hover-bg-gray-100 rounded-xl p-6px"
v-if="
userId === processInstance?.startUser?.id &&
isEndProcessStatus(processInstance?.status) &&
processDefinition?.formType === 10
isEndProcessStatus(processInstance?.status) &&
processDefinition?.formType === 10
"
>
<Icon :size="14" icon="ep:refresh" />&nbsp; 再次提交

View File

@ -55,10 +55,10 @@
class="flex flex-wrap gap2 items-center"
v-if="
isEmpty(activity.tasks) &&
((CandidateStrategy.START_USER_SELECT === activity.candidateStrategy &&
isEmpty(activity.candidateUsers)) ||
(props.enableApproveUserSelect &&
CandidateStrategy.APPROVE_USER_SELECT === activity.candidateStrategy))
((CandidateStrategy.START_USER_SELECT === activity.candidateStrategy &&
isEmpty(activity.candidateUsers)) ||
(props.enableApproveUserSelect &&
CandidateStrategy.APPROVE_USER_SELECT === activity.candidateStrategy))
"
>
<!-- && activity.nodeType === NodeType.USER_TASK_NODE -->
@ -131,7 +131,7 @@
<div
v-if="
task.reason &&
[NodeType.USER_TASK_NODE, NodeType.END_EVENT_NODE].includes(activity.nodeType)
[NodeType.USER_TASK_NODE, NodeType.END_EVENT_NODE].includes(activity.nodeType)
"
class="text-#a5a5a5 text-13px mt-1 w-full bg-#f8f8fa p2 rounded-md"
>

View File

@ -95,14 +95,16 @@
</el-table-column>
<el-table-column label="字典类型" min-width="12%">
<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>
<div class="flex justify-end">
<el-popover
class="box-item"
content="加载最新字典"
placement="top-start"
>
<el-popover class="box-item" content="加载最新字典" placement="top-start">
<template #reference>
<el-button :icon="Refresh" size="small" circle @click="getDictOptions" class="" />
</template>

View File

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

View File

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

View File

@ -35,9 +35,9 @@
>
{{ conditionIndex + 1 }}
</div>
<span class="text-12px font-500 text-[var(--el-text-color-primary)]"
>条件 {{ conditionIndex + 1 }}</span
>
<span class="text-12px font-500 text-[var(--el-text-color-primary)]">
条件 {{ conditionIndex + 1 }}
</span>
</div>
<el-button
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)]"
>
<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
>
<span class="text-14px font-500 text-[var(--el-text-color-primary)]">
定时触发配置
</span>
</div>
<!-- CRON 表达式配置 -->

View File

@ -107,7 +107,7 @@
<div
v-if="
selectedProperty.type === IoTThingModelTypeEnum.PROPERTY &&
selectedProperty.accessMode
selectedProperty.accessMode
"
class="flex items-start gap-8px"
>

View File

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

View File

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

View File

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

View File

@ -169,7 +169,7 @@
<template
v-if="
scope.row.status === BrokerageWithdrawStatusEnum.AUDITING.status &&
!scope.row.payTransferId
!scope.row.payTransferId
"
>
<el-button

View File

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

View File

@ -194,7 +194,7 @@
<el-dropdown-item
v-if="
row.deliveryType === DeliveryTypeEnum.EXPRESS.type &&
row.status === TradeOrderStatusEnum.UNDELIVERED.status
row.status === TradeOrderStatusEnum.UNDELIVERED.status
"
command="delivery"
>

View File

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

View File

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

View File

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

View File

@ -69,10 +69,10 @@
</el-form-item>
<el-form-item>
<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
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
>
<el-button
type="primary"

View File

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

View File

@ -1,6 +1,9 @@
<!-- MES 物料产品列表 -->
<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">
<!-- 左侧分类树 -->
@ -54,10 +57,10 @@
</el-form-item>
<el-form-item>
<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
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
>
<el-button
type="primary"

View File

@ -61,9 +61,7 @@
v-model="formData.taskId"
:workOrderId="formData.workOrderId"
:workstationId="formData.workstationId"
:statuses="[
MesProTaskStatusEnum.PREPARE
]"
:statuses="[MesProTaskStatusEnum.PREPARE]"
:disabled="isHeaderReadonly || !formData.workOrderId"
placeholder="请选择任务"
@change="handleTaskChange"
@ -241,8 +239,8 @@
<el-tabs
v-if="
formData.id &&
formData.status !== MesProFeedbackStatusEnum.PREPARE &&
formData.status !== MesProFeedbackStatusEnum.APPROVING
formData.status !== MesProFeedbackStatusEnum.PREPARE &&
formData.status !== MesProFeedbackStatusEnum.APPROVING
"
type="border-card"
class="mt-10px"

View File

@ -181,7 +181,7 @@
v-hasPermi="['mes:pro-feedback:approve']"
v-if="
scope.row.status === MesProFeedbackStatusEnum.APPROVING &&
scope.row.approveUserId === currentUserId
scope.row.approveUserId === currentUserId
"
>
审批

View File

@ -85,7 +85,7 @@
:span="8"
v-if="
formData.type === MesProWorkOrderTypeEnum.OUTSOURCE ||
formData.type === MesProWorkOrderTypeEnum.PURCHASE
formData.type === MesProWorkOrderTypeEnum.PURCHASE
"
>
<el-form-item label="供应商" prop="vendorId">

View File

@ -37,8 +37,8 @@
<el-button
v-if="
isConfirmed &&
workOrder.type === MesProWorkOrderTypeEnum.SELF &&
scope.row.itemOrProduct === 'PRODUCT'
workOrder.type === MesProWorkOrderTypeEnum.SELF &&
scope.row.itemOrProduct === 'PRODUCT'
"
link
type="success"

View File

@ -106,7 +106,7 @@
:span="8"
v-if="
formData.type === MesProWorkOrderTypeEnum.OUTSOURCE ||
formData.type === MesProWorkOrderTypeEnum.PURCHASE
formData.type === MesProWorkOrderTypeEnum.PURCHASE
"
>
<el-form-item label="供应商" prop="vendorId">
@ -187,7 +187,12 @@
<el-button v-if="isFinish" @click="handleFinish" type="success" :disabled="formLoading">
</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 @click="dialogVisible = false"> </el-button>
@ -275,7 +280,10 @@ const originalFormData = ref<string>('') // 原始表单数据快照,用于脏
/** 查看条码 */
const handleBarcode = () => {
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

@ -185,7 +185,7 @@
v-hasPermi="['mes:pro-work-order:create']"
v-if="
scope.row.status === MesProWorkOrderStatusEnum.CONFIRMED &&
scope.row.type === MesProWorkOrderTypeEnum.SELF
scope.row.type === MesProWorkOrderTypeEnum.SELF
"
>
新增

View File

@ -72,10 +72,10 @@
</el-form-item>
<el-form-item>
<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
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
>
<el-button
type="primary"

View File

@ -99,7 +99,7 @@
<span
v-if="
scope.row.maintenPeriod != null &&
scope.row.maintenType === MesMaintenTypeEnum.REGULAR
scope.row.maintenType === MesMaintenTypeEnum.REGULAR
"
>
{{ scope.row.maintenPeriod }}

View File

@ -74,10 +74,10 @@
</el-form-item>
<el-form-item>
<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
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
>
</el-form-item>
</el-form>

View File

@ -41,7 +41,7 @@
<div
v-else-if="
scope.row.responseMessageType === 'video' ||
scope.row.responseMessageType === 'shortvideo'
scope.row.responseMessageType === 'shortvideo'
"
>
<WxVideoPlayer

View File

@ -8,12 +8,12 @@
target="_blank"
:href="
'https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx=' +
locationY +
'&pointy=' +
locationX +
'&name=' +
label +
'&ref=yudao'
locationY +
'&pointy=' +
locationX +
'&name=' +
label +
'&ref=yudao'
"
>
<el-col>
@ -21,12 +21,12 @@
<img
:src="
'https://apis.map.qq.com/ws/staticmap/v2/?zoom=10&markers=color:blue|label:A|' +
locationX +
',' +
locationY +
'&key=' +
qqMapKey +
'&size=250*180'
locationX +
',' +
locationY +
'&key=' +
qqMapKey +
'&size=250*180'
"
/>
</el-row>

View File

@ -48,8 +48,8 @@
/>
<el-table-column label="操作" align="center" fixed="right">
<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" />
</el-button>
</template>
@ -90,8 +90,8 @@
class-name="small-padding fixed-width"
>
<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" />
</el-button>
</template>

View File

@ -12,10 +12,10 @@
<div v-loading="loading"></div>
<div v-if="!loading">
<div class="el-table__empty-block" v-if="hasMore" @click="loadMore"
><span class="el-table__empty-text">点击加载更多</span></div
><span class="el-table__empty-text">点击加载更多</span></div
>
<div class="el-table__empty-block" v-if="!hasMore"
><span class="el-table__empty-text">没有更多了</span></div
><span class="el-table__empty-text">没有更多了</span></div
>
</div>

View File

@ -23,8 +23,13 @@
<template #trigger>
<el-button type="primary" link>本地上传</el-button>
</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-upload>
</div>

View File

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

View File

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

View File

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

View File

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

View File

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