优化代码排版
parent
fa42f8e574
commit
dd009a1de0
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-carousel-item>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
<!-- 销量 -->
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
<!-- 销量 -->
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ const { getPrefixCls } = useDesign()
|
|||
const prefixCls = getPrefixCls('form')
|
||||
|
||||
export default defineComponent({
|
||||
|
||||
name: 'Form',
|
||||
props: {
|
||||
// 生成Form的布局结构数组
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ const displayUrl = computed(() => props.url || props.modelValue || '') // 显示
|
|||
const showPreview = computed(() => {
|
||||
return displayUrl.value && isUrl(displayUrl.value)
|
||||
}) // 是否显示预览
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 }} <Icon icon="ep:edit"
|
||||
/></el-button>
|
||||
<el-button v-else text @click="changeBtnDisplayName(index)">
|
||||
{{ item.displayName }} <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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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)"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
<!-- 传递子节点给添加节点组件。会在子节点前面添加节点 -->
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -112,9 +112,9 @@
|
|||
:placeholder="item.displayName"
|
||||
v-if="btnDisplayNameEdit[index]"
|
||||
/>
|
||||
<el-button v-else text @click="changeBtnDisplayName(index)"
|
||||
>{{ item.displayName }} <Icon icon="ep:edit"
|
||||
/></el-button>
|
||||
<el-button v-else text @click="changeBtnDisplayName(index)">
|
||||
{{ item.displayName }} <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">
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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'"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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' })
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -14,9 +14,7 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
|
||||
defineOptions({ name: 'Index' })
|
||||
|
||||
const currentSong = inject('currentSong', {})
|
||||
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@
|
|||
command="handleReport"
|
||||
v-if="
|
||||
checkPermi(['bpm:process-instance:manager-query']) &&
|
||||
scope.row.processDefinition
|
||||
scope.row.processDefinition
|
||||
"
|
||||
:disabled="!isManagerUser(scope.row)"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ const view = ref({
|
|||
bpmnXml: ''
|
||||
}) // BPMN 流程图数据
|
||||
|
||||
|
||||
/** 只有 loading 完成时,才去加载流程列表 */
|
||||
watch(
|
||||
() => props.modelView,
|
||||
|
|
|
|||
|
|
@ -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" /> 再次提交
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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 表达式配置 -->
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@
|
|||
<div
|
||||
v-if="
|
||||
selectedProperty.type === IoTThingModelTypeEnum.PROPERTY &&
|
||||
selectedProperty.accessMode
|
||||
selectedProperty.accessMode
|
||||
"
|
||||
class="flex items-start gap-8px"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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)"
|
||||
>
|
||||
<el-radio :value="row.id" v-model="selectedSkuId" @change="handleSelected(row)">
|
||||
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
|
|||
|
|
@ -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) }}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@
|
|||
<template
|
||||
v-if="
|
||||
scope.row.status === BrokerageWithdrawStatusEnum.AUDITING.status &&
|
||||
!scope.row.payTransferId
|
||||
!scope.row.payTransferId
|
||||
"
|
||||
>
|
||||
<el-button
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
"
|
||||
>
|
||||
审批
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
"
|
||||
>
|
||||
新增
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@
|
|||
<span
|
||||
v-if="
|
||||
scope.row.maintenPeriod != null &&
|
||||
scope.row.maintenType === MesMaintenTypeEnum.REGULAR
|
||||
scope.row.maintenType === MesMaintenTypeEnum.REGULAR
|
||||
"
|
||||
>
|
||||
{{ scope.row.maintenPeriod }} 天
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<div
|
||||
v-else-if="
|
||||
scope.row.responseMessageType === 'video' ||
|
||||
scope.row.responseMessageType === 'shortvideo'
|
||||
scope.row.responseMessageType === 'shortvideo'
|
||||
"
|
||||
>
|
||||
<WxVideoPlayer
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 />
|
||||
|
|
|
|||
|
|
@ -67,8 +67,9 @@
|
|||
type="primary"
|
||||
plain
|
||||
@click="showCreateVideo = true"
|
||||
>新建视频</el-button
|
||||
>
|
||||
新建视频
|
||||
</el-button>
|
||||
<!-- 新建视频的弹窗 -->
|
||||
<UploadVideo v-model="showCreateVideo" />
|
||||
<!-- 列表 -->
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
<!--右边配置-->
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
v-model="formData.data"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
placeholder="请输入模板数据(JSON 格式),例如:{"keyword1": {"value": "测试内容"}}"
|
||||
placeholder='请输入模板数据(JSON 格式),例如:{"keyword1": {"value": "测试内容"}}'
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跳转链接" prop="url">
|
||||
|
|
|
|||
|
|
@ -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[]) => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue