Merge remote-tracking branch 'origin/master' into master-bpm-bug-fix

master-bpm-bug-fix
jason 2026-06-20 23:56:36 +08:00
commit 2c4b6a65c8
102 changed files with 55 additions and 496 deletions

View File

@ -87,7 +87,7 @@ const open = async (selectedList?: DeptApi.DeptVO[]) => {
}
/** 处理选中状态变化 */
const handleCheck = (data: any, checked: any) => {
const handleCheck = (_data: any, _checked: any) => {
selectedDeptIds.value = treeRef.value.getCheckedKeys()
if (!props.multiple && selectedDeptIds.value.length > 1) {
//

View File

@ -201,7 +201,6 @@ import { propTypes } from '@/utils/propTypes'
defineOptions({ name: 'DiyPageDetail' })
//
const componentLibrary = ref()
//
const pageConfigComponent = ref<DiyComponent<any>>(cloneDeep(PAGE_CONFIG_COMPONENT))
//

View File

@ -118,7 +118,6 @@ provide('startDeptIds', props.startDeptIds)
provide('tasks', [])
provide('processInstance', {})
const message = useMessage() //
const processNodeTree = ref<SimpleFlowNode | undefined>()
provide('processNodeTree', processNodeTree)
const errorDialogVisible = ref(false)
@ -230,7 +229,5 @@ onMounted(async () => {
}
})
const simpleProcessModelRef = ref()
defineExpose({})
</script>

View File

@ -68,7 +68,7 @@
</template>
<script lang="ts" setup>
import { propTypes } from '@/utils/propTypes'
import type { UploadInstance, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus'
import type { UploadProps, UploadRawFile, UploadUserFile } from 'element-plus'
import { isString } from '@/utils/is'
import { useUpload } from '@/components/UploadFile/src/useUpload'
import { UploadFile } from 'element-plus/es/components/upload/src/upload'
@ -91,7 +91,6 @@ const props = defineProps({
})
// ========== ==========
const uploadRef = ref<UploadInstance>()
const uploadList = ref<UploadUserFile[]>([])
const fileList = ref<UploadUserFile[]>([])
const uploadNumber = ref<number>(0)

View File

@ -238,7 +238,6 @@ import 'highlight.js/styles/github.css' // 导入代码高亮样式
defineOptions({ name: 'MyProcessDesigner' })
const bpmnCanvas = ref()
const refFile = ref()
const emit = defineEmits([
'destroy',

View File

@ -90,7 +90,7 @@ import ElementProperties from './properties/ElementProperties.vue'
import UserTaskListeners from './listeners/UserTaskListeners.vue'
import { getTaskCollapseItemName, isTaskCollapseItemShow } from './task/data'
import TimeEventConfig from './time-event-config/TimeEventConfig.vue'
import { ref, watch, onMounted } from 'vue'
import { ref, watch } from 'vue'
defineOptions({ name: 'MyPropertiesPanel' })
@ -129,8 +129,6 @@ const formVisible = ref(false) // 表单配置
const bpmnElement = ref()
const isReady = ref(false)
const type = ref('time')
const condition = ref('')
provide('prefix', props.prefix)
provide('width', props.width)
@ -167,7 +165,7 @@ const initBpmnInstances = () => {
const bpmnInstances = () => (window as any)?.bpmnInstances
// props.bpmnModeler initModels
const unwatchBpmn = watch(
watch(
() => props.bpmnModeler,
async () => {
//
@ -265,48 +263,4 @@ watch(
activeTab.value = 'base'
}
)
function updateNode() {
const moddle = window.bpmnInstances?.moddle
const modeling = window.bpmnInstances?.modeling
const elementRegistry = window.bpmnInstances?.elementRegistry
if (!moddle || !modeling || !elementRegistry) return
const element = elementRegistry.get(props.businessObject.id)
if (!element) return
let timerDef = moddle.create('bpmn:TimerEventDefinition', {})
if (type.value === 'time') {
timerDef.timeDate = moddle.create('bpmn:FormalExpression', { body: condition.value })
} else if (type.value === 'duration') {
timerDef.timeDuration = moddle.create('bpmn:FormalExpression', { body: condition.value })
} else if (type.value === 'cycle') {
timerDef.timeCycle = moddle.create('bpmn:FormalExpression', { body: condition.value })
}
modeling.updateModdleProperties(element, element.businessObject, {
eventDefinitions: [timerDef]
})
}
//
function syncFromBusinessObject() {
if (props.businessObject) {
const timerDef = (props.businessObject.eventDefinitions || [])[0]
if (timerDef) {
if (timerDef.timeDate) {
type.value = 'time'
condition.value = timerDef.timeDate.body
} else if (timerDef.timeDuration) {
type.value = 'duration'
condition.value = timerDef.timeDuration.body
} else if (timerDef.timeCycle) {
type.value = 'cycle'
condition.value = timerDef.timeCycle.body
}
}
}
}
onMounted(syncFromBusinessObject)
watch(() => props.businessObject, syncFromBusinessObject, { deep: true })
</script>

View File

@ -18,7 +18,6 @@ const props = defineProps({
}
})
const bpmnInstances = () => (window as any)?.bpmnInstances
const customConfigComponent = ref<any>(null)
watch(

View File

@ -235,30 +235,8 @@ const props = defineProps({
type: String
})
const prefix = inject('prefix')
const width = inject('width')
const formKey = ref(undefined)
const businessKey = ref('')
const optionModelTitle = ref('')
const fieldList = ref<any[]>([])
const formFieldForm = ref<any>({})
const fieldType = ref({
long: '长整型',
string: '字符串',
boolean: '布尔类',
date: '日期类',
enum: '枚举类',
custom: '自定义类型'
})
const formFieldIndex = ref(-1) // -1
const formFieldOptionIndex = ref(-1) // -1
const fieldModelVisible = ref(false)
const fieldOptionModelVisible = ref(false)
const fieldOptionForm = ref<any>({}) //
const fieldOptionType = ref('') //
const fieldEnumList = ref<any[]>([]) //
const fieldConstraintsList = ref<any[]>([]) //
const fieldPropertiesList = ref<any[]>([]) //
const bpmnELement = ref()
const elExtensionElements = ref()
const formData = ref()
@ -280,17 +258,11 @@ const resetFormList = () => {
elExtensionElements.value.values.filter((ex) => ex.$type === `${prefix}:FormData`)?.[0] ||
bpmnInstances().moddle.create(`${prefix}:FormData`, { fields: [] })
// businessKey formData
businessKey.value = formData.value.businessKey
// 便
otherExtensions.value = elExtensionElements.value.values.filter(
(ex) => ex.$type !== `${prefix}:FormData`
)
//
fieldList.value = JSON.parse(JSON.stringify(formData.value.fields || []))
//
updateElementExtensions()
}
@ -299,155 +271,6 @@ const updateElementFormKey = () => {
formKey: formKey.value
})
}
const updateElementBusinessKey = () => {
bpmnInstances().modeling.updateModdleProperties(toRaw(bpmnELement.value), formData.value, {
businessKey: businessKey.value
})
}
// type
const changeFieldTypeType = (type) => {
// this.$set(this.formFieldForm, "type", type === "custom" ? "" : type);
formFieldForm.value['type'] = type === 'custom' ? '' : type
}
//
const openFieldForm = (field, index) => {
formFieldIndex.value = index
if (index !== -1) {
const FieldObject = formData.value.fields[index]
formFieldForm.value = JSON.parse(JSON.stringify(field))
//
// this.$set(this.formFieldForm, "typeType", !this.fieldType[field.type] ? "custom" : field.type);
formFieldForm.value['typeType'] = !fieldType.value[field.type] ? 'custom' : field.type
//
field.type === 'enum' &&
(fieldEnumList.value = JSON.parse(JSON.stringify(FieldObject?.values || [])))
//
fieldConstraintsList.value = JSON.parse(
JSON.stringify(FieldObject?.validation?.constraints || [])
)
//
fieldPropertiesList.value = JSON.parse(JSON.stringify(FieldObject?.properties?.values || []))
} else {
formFieldForm.value = {}
//
fieldEnumList.value = []
//
fieldConstraintsList.value = []
//
fieldPropertiesList.value = []
}
fieldModelVisible.value = true
}
//
const openFieldOptionForm = (option, index, type) => {
fieldOptionModelVisible.value = true
fieldOptionType.value = type
formFieldOptionIndex.value = index
if (type === 'property') {
fieldOptionForm.value = option ? JSON.parse(JSON.stringify(option)) : {}
return (optionModelTitle.value = '属性配置')
}
if (type === 'enum') {
fieldOptionForm.value = option ? JSON.parse(JSON.stringify(option)) : {}
return (optionModelTitle.value = '枚举值配置')
}
fieldOptionForm.value = option ? JSON.parse(JSON.stringify(option)) : {}
return (optionModelTitle.value = '约束条件配置')
}
//
const saveFieldOption = () => {
if (formFieldOptionIndex.value === -1) {
if (fieldOptionType.value === 'property') {
fieldPropertiesList.value.push(fieldOptionForm.value)
}
if (fieldOptionType.value === 'constraint') {
fieldConstraintsList.value.push(fieldOptionForm.value)
}
if (fieldOptionType.value === 'enum') {
fieldEnumList.value.push(fieldOptionForm.value)
}
} else {
fieldOptionType.value === 'property' &&
fieldPropertiesList.value.splice(formFieldOptionIndex.value, 1, fieldOptionForm.value)
fieldOptionType.value === 'constraint' &&
fieldConstraintsList.value.splice(formFieldOptionIndex.value, 1, fieldOptionForm.value)
fieldOptionType.value === 'enum' &&
fieldEnumList.value.splice(formFieldOptionIndex.value, 1, fieldOptionForm.value)
}
fieldOptionModelVisible.value = false
fieldOptionForm.value = {}
}
//
const saveField = () => {
const { id, type, label, defaultValue, datePattern } = formFieldForm.value
const Field = bpmnInstances().moddle.create(`${prefix}:FormField`, { id, type, label })
defaultValue && (Field.defaultValue = defaultValue)
datePattern && (Field.datePattern = datePattern)
//
if (fieldPropertiesList.value && fieldPropertiesList.value.length) {
const fieldPropertyList = fieldPropertiesList.value.map((fp) => {
return bpmnInstances().moddle.create(`${prefix}:Property`, {
id: fp.id,
value: fp.value
})
})
Field.properties = bpmnInstances().moddle.create(`${prefix}:Properties`, {
values: fieldPropertyList
})
}
//
if (fieldConstraintsList.value && fieldConstraintsList.value.length) {
const fieldConstraintList = fieldConstraintsList.value.map((fc) => {
return bpmnInstances().moddle.create(`${prefix}:Constraint`, {
name: fc.name,
config: fc.config
})
})
Field.validation = bpmnInstances().moddle.create(`${prefix}:Validation`, {
constraints: fieldConstraintList
})
}
//
if (fieldEnumList.value && fieldEnumList.value.length) {
Field.values = fieldEnumList.value.map((fe) => {
return bpmnInstances().moddle.create(`${prefix}:Value`, { name: fe.name, id: fe.id })
})
}
//
if (formFieldIndex.value === -1) {
fieldList.value.push(formFieldForm.value)
formData.value.fields.push(Field)
} else {
fieldList.value.splice(formFieldIndex.value, 1, formFieldForm.value)
formData.value.fields.splice(formFieldIndex.value, 1, Field)
}
updateElementExtensions()
fieldModelVisible.value = false
}
//
const removeFieldOptionItem = (option, index, type) => {
// console.log(option, 'option')
if (type === 'property') {
fieldPropertiesList.value.splice(index, 1)
return
}
if (type === 'enum') {
fieldEnumList.value.splice(index, 1)
return
}
fieldConstraintsList.value.splice(index, 1)
}
//
const removeField = (field, index) => {
console.log(field, 'field')
fieldList.value.splice(index, 1)
formData.value.fields.splice(index, 1)
updateElementExtensions()
}
const updateElementExtensions = () => {
//
const newElExtensionElements = bpmnInstances().moddle.create(`bpmn:ExtensionElements`, {

View File

@ -116,56 +116,11 @@ const props = defineProps({
})
const prefix = inject('prefix')
const loopCharacteristics = ref('')
//
const defaultLoopInstanceForm = ref({
completionCondition: '',
loopCardinality: '',
extensionElements: [],
asyncAfter: false,
asyncBefore: false,
exclusive: false
})
const loopInstanceForm = ref<any>({})
const bpmnElement = ref(null)
const multiLoopInstance = ref(null)
const bpmnInstances = () => (window as any)?.bpmnInstances
const getElementLoop = (businessObject) => {
if (!businessObject.loopCharacteristics) {
loopCharacteristics.value = 'Null'
loopInstanceForm.value = {}
return
}
if (businessObject.loopCharacteristics.$type === 'bpmn:StandardLoopCharacteristics') {
loopCharacteristics.value = 'StandardLoop'
loopInstanceForm.value = {}
return
}
if (businessObject.loopCharacteristics.isSequential) {
loopCharacteristics.value = 'SequentialMultiInstance'
} else {
loopCharacteristics.value = 'ParallelMultiInstance'
}
//
loopInstanceForm.value = {
...defaultLoopInstanceForm.value,
...businessObject.loopCharacteristics,
completionCondition: businessObject.loopCharacteristics?.completionCondition?.body ?? '',
loopCardinality: businessObject.loopCharacteristics?.loopCardinality?.body ?? ''
}
// businessObject loopCharacteristics
multiLoopInstance.value = bpmnInstances().bpmnElement.businessObject.loopCharacteristics
//
if (
businessObject.loopCharacteristics.extensionElements &&
businessObject.loopCharacteristics.extensionElements.values &&
businessObject.loopCharacteristics.extensionElements.values.length
) {
loopInstanceForm.value['timeCycle'] =
businessObject.loopCharacteristics.extensionElements.values[0].body
}
}
const changeLoopCharacteristicsType = (type) => {
// this.loopInstanceForm = { ...this.defaultLoopInstanceForm }; //
//

View File

@ -164,7 +164,6 @@ const outVariableList = ref()
const variableType = ref() //
const editingVariableIndex = ref(-1) //
const variableDialogVisible = ref(false)
const varialbeFormRef = ref()
const varialbeFormData = ref({
source: '',
target: ''

View File

@ -9,14 +9,14 @@
<el-button
v-for="val in unit.presets"
:key="val"
size="mini"
size="small"
@click="setUnit(unit.key, val)"
>
{{ val }}
</el-button>
<el-input
v-model.number="custom[unit.key]"
size="mini"
size="small"
style="width: 60px; margin-left: 8px"
placeholder="自定义"
@change="setUnit(unit.key, custom[unit.key])"

View File

@ -3,17 +3,17 @@
<div style="margin-top: 10px">
<span>类型</span>
<el-button-group>
<el-button size="mini" :type="type === 'time' ? 'primary' : ''" @click="setType('time')">
<el-button size="small" :type="type === 'time' ? 'primary' : ''" @click="setType('time')">
时间
</el-button>
<el-button
size="mini"
size="small"
:type="type === 'duration' ? 'primary' : ''"
@click="setType('duration')"
>
持续
</el-button>
<el-button size="mini" :type="type === 'cycle' ? 'primary' : ''" @click="setType('cycle')">
<el-button size="small" :type="type === 'cycle' ? 'primary' : ''" @click="setType('cycle')">
循环
</el-button>
</el-button-group>
@ -128,7 +128,6 @@ import { ref, computed, watch, onMounted } from 'vue'
import { CircleCheckFilled, WarningFilled, QuestionFilled } from '@element-plus/icons-vue'
import DurationConfig from './DurationConfig.vue'
import CycleConfig from './CycleConfig.vue'
import { createListenerObject, updateElementExtensions } from '../../utils'
const bpmnInstances = () => (window as any).bpmnInstances
const props = defineProps({ businessObject: Object })
const type = ref('time')
@ -139,7 +138,6 @@ const showDurationDialog = ref(false)
const showCycleDialog = ref(false)
const showHelp = ref(false)
const dateValue = ref(null)
const bpmnElement = ref(null)
const placeholder = computed(() => {
if (type.value === 'time') return '请输入时间'

View File

@ -7,10 +7,6 @@ defineOptions({ name: 'AppView' })
const appStore = useAppStore()
const layout = computed(() => appStore.getLayout)
const fixedHeader = computed(() => appStore.getFixedHeader)
const footer = computed(() => appStore.getFooter)
const tagsViewStore = useTagsViewStore()
@ -19,8 +15,6 @@ const getCaches = computed((): string[] => {
return tagsViewStore.getCachedViews
})
const tagsView = computed(() => appStore.getTagsView)
//region
const routerAlive = ref(true)
//

View File

@ -1,5 +1,4 @@
<script lang="ts" setup>
import { resetRouter } from '@/router'
import { deleteUserCache } from '@/hooks/web/useCache'
import { useLockStore } from '@/store/modules/lock'
import { useNow } from '@/hooks/web/useNow'

View File

@ -158,6 +158,7 @@ export enum DICT_TYPE {
PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态
PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态
PAY_NOTIFY_TYPE = 'pay_notify_type', // 商户支付回调状态
PAY_TRANSFER_TYPE = 'pay_transfer_type', // 转账订单类型
PAY_TRANSFER_STATUS = 'pay_transfer_status', // 转账订单状态
// ========== MP 模块 ==========

View File

@ -167,7 +167,7 @@ const emits = defineEmits([
])
/** 搜索对话 */
const searchConversation = async (e) => {
const searchConversation = async (_e) => {
//
if (!searchName.value.trim().length) {
conversationMap.value = await getConversationGroupByCreateTime(conversationList.value)
@ -365,7 +365,7 @@ const handleRoleRepository = async () => {
/** 监听选中的对话 */
const { activeId } = toRefs(props)
watch(activeId, async (newValue, oldValue) => {
watch(activeId, async (newValue, _oldValue) => {
activeConversationId.value = newValue as string
})

View File

@ -73,7 +73,6 @@ const document = ref<{
}[]
} | null>(null) //
const dialogVisible = ref(false) //
const documentRef = ref<HTMLElement>() // Ref
/** 按照 document 聚合 segments */
const documentList = computed(() => {

View File

@ -158,7 +158,6 @@ const selectedResult = ref<{
summary: string
} | null>(null) //
const dialogVisible = ref(false) //
const resultRef = ref<HTMLElement>() // Ref
/** 切换展开/收起状态 */
const toggleExpanded = () => {

View File

@ -167,7 +167,7 @@ const handlerCardEdit = async (role) => {
}
/** 添加角色成功 */
const handlerAddRoleSuccess = async (e) => {
const handlerAddRoleSuccess = async (_e) => {
//
await getActiveTabsRole()
}

View File

@ -100,7 +100,7 @@ const emits = defineEmits(['onBtnClick', 'onMjBtnClick']) // emits
/** 监听详情 */
const { detail } = toRefs(props)
watch(detail, async (newVal, oldVal) => {
watch(detail, async (newVal, _oldVal) => {
await handleLoading(newVal.status as string)
})

View File

@ -57,7 +57,6 @@ const imageListRef = ref<any>() // image 列表 ref
const dall3Ref = ref<any>() // dall3(openai) ref
const midjourneyRef = ref<any>() // midjourney ref
const stableDiffusionRef = ref<any>() // stable diffusion ref
const commonRef = ref<any>() // stable diffusion ref
//
const selectPlatform = ref('common') //

View File

@ -83,8 +83,6 @@ const props = defineProps({
const emit = defineEmits(['update:modelValue'])
const formRef = ref() //
const uploadRef = ref() //
const parent = inject('parent', null) //
const { uploadUrl, httpRequest } = useUpload() // 使
const message = useMessage() //

View File

@ -126,7 +126,6 @@ const queryParams = reactive({
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -156,7 +156,6 @@
<script setup lang="ts">
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import { useRouter } from 'vue-router'
import { WriteApi, AiWritePageReqVO, AiWriteRespVo } from '@/api/ai/write'
import * as UserApi from '@/api/system/user'
@ -165,7 +164,6 @@ defineOptions({ name: 'AiWriteManager' })
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter() //
const loading = ref(true) //
const list = ref<AiWriteRespVo[]>([]) //

View File

@ -147,7 +147,6 @@ const queryParams = reactive({
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -536,7 +536,6 @@ const handleModelSortCancel = () => {
}
/** 创建拖拽实例 */
const tableRef = ref()
const initSort = useDebounceFn(() => {
const table = document.querySelector(`.${props.categoryInfo.name} .el-table__body-wrapper tbody`)
if (!table) return

View File

@ -62,7 +62,6 @@ const xmlString = inject('processData') as Ref
const modelData = inject('modelData') as Ref
const modeler = shallowRef() // BPMN Modeler
const processDesigner = ref()
const controlForm = ref({
simulation: true,
labelEditing: false,

View File

@ -110,7 +110,6 @@ const isCategorySorting = ref(false) // 是否 category 正处于排序状态
const queryParams = reactive({
name: undefined
})
const queryFormRef = ref() //
const categoryGroup: any = ref([]) // category
const originalData: any = ref([]) //

View File

@ -130,7 +130,6 @@ const queryParams = reactive({
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -169,7 +169,6 @@ import { ElMessageBox } from 'element-plus'
import * as ProcessInstanceApi from '@/api/bpm/processInstance'
import { CategoryApi } from '@/api/bpm/category'
import * as UserApi from '@/api/system/user'
import { cancelProcessInstanceByAdmin } from '@/api/bpm/processInstance'
//
defineOptions({ name: 'BpmProcessInstanceManager' })

View File

@ -133,7 +133,6 @@ const queryParams = reactive({
event: undefined
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -26,7 +26,6 @@ defineProps<{
}>()
const emit = defineEmits(['success'])
const designerRef = ref()
//
const handleSuccess = (data?: any) => {

View File

@ -116,7 +116,6 @@ const queryParams = reactive({
followUpStatus: false,
transformStatus: false
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -187,7 +187,6 @@ const queryParams = reactive({
sceneType: 1, //
auditStatus: 10
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -174,7 +174,6 @@
<script setup lang="ts" name="EndContract">
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import * as ContractApi from '@/api/crm/contract'
import { fenToYuanFormat } from '@/utils/formatter'
import { DICT_TYPE } from '@/utils/dict'
import { CONTRACT_EXPIRY_TYPE } from './common'
import { erpPriceInputFormatter, erpPriceTableColumnFormatter } from '@/utils'
@ -188,7 +187,6 @@ const queryParams = reactive({
sceneType: '1', //
expiryType: 1
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -133,7 +133,6 @@ const queryParams = ref({
sceneType: 1,
followUpStatus: false
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -129,7 +129,6 @@ const queryParams = ref({
sceneType: 1, //
pool: true // true
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -146,7 +146,6 @@ const queryParams = ref({
sceneType: 1,
pool: null //
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -148,7 +148,6 @@ const queryParams = reactive({
pageSize: 10,
auditStatus: 10
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -171,7 +171,6 @@ const queryParams = reactive({
pageSize: 10,
remindType: 1
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {

View File

@ -34,7 +34,6 @@
import * as BusinessApi from '@/api/crm/business'
import * as BusinessStatusApi from '@/api/crm/business/status'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //

View File

@ -80,10 +80,8 @@
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as BusinessStatusApi from '@/api/crm/business/status'
import BusinessStatusForm from './BusinessStatusForm.vue'
import { deleteBusinessStatus } from '@/api/crm/business/status'
defineOptions({ name: 'CrmBusinessStatus' })
@ -97,8 +95,6 @@ const queryParams = reactive({
pageNo: 1,
pageSize: 10
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
@ -112,18 +108,6 @@ const getList = async () => {
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {

View File

@ -58,9 +58,7 @@ import * as CustomerLimitConfigApi from '@/api/crm/customer/limitConfig'
import * as DeptApi from '@/api/system/dept'
import { defaultProps, handleTree } from '@/utils/tree'
import * as UserApi from '@/api/system/user'
import { cloneDeep } from 'lodash-es'
import { LimitConfType } from '@/api/crm/customer/limitConfig'
import { aw } from '../../../../../dist-prod/assets/index-9eac537b'
const { t } = useI18n() //
const message = useMessage() //

View File

@ -27,9 +27,7 @@
<script lang="ts" setup>
import * as CustomerApi from '@/api/crm/customer'
import * as UserApi from '@/api/system/user'
import { distributeCustomer } from '@/api/crm/customer'
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //

View File

@ -101,7 +101,6 @@ const { t } = useI18n() // 国际化
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formData = ref({
bizType: undefined,
@ -154,7 +153,7 @@ const contactTableSelectRef = ref<InstanceType<typeof ContactListModal>>()
const handleOpenContact = () => {
contactTableSelectRef.value?.open()
}
const handleAddContact = (contactId: [], newContacts: ContactApi.ContactVO[]) => {
const handleAddContact = (_contactId: [], newContacts: ContactApi.ContactVO[]) => {
newContacts.forEach((contact) => {
if (!formData.value.contacts.some((item) => item.id === contact.id)) {
formData.value.contacts.push(contact)
@ -167,7 +166,7 @@ const businessTableSelectRef = ref<InstanceType<typeof BusinessListModal>>()
const handleOpenBusiness = () => {
businessTableSelectRef.value?.open()
}
const handleAddBusiness = (businessId: [], newBusinesses: BusinessApi.BusinessVO[]) => {
const handleAddBusiness = (_businessId: [], newBusinesses: BusinessApi.BusinessVO[]) => {
newBusinesses.forEach((business) => {
if (!formData.value.businesses.some((item) => item.id === business.id)) {
formData.value.businesses.push(business)

View File

@ -185,7 +185,7 @@ const openForm = (type: string, id?: number) => {
}
/** 打开详情 */
const { currentRoute, push } = useRouter()
const { push } = useRouter()
const openDetail = (id: number) => {
push({ name: 'CrmProductDetail', params: { id } })
}

View File

@ -86,7 +86,6 @@ const close = () => {
}
/** 初始化 */
const { params } = useRoute()
onMounted(async () => {
const id = props.id || route.params.id
if (!id) {

View File

@ -148,7 +148,7 @@
import { FinancePaymentApi, FinancePaymentVO } from '@/api/erp/finance/payment'
import FinancePaymentItemForm from './components/FinancePaymentItemForm.vue'
import { SupplierApi, SupplierVO } from '@/api/erp/purchase/supplier'
import { erpPriceInputFormatter, erpPriceMultiply } from '@/utils'
import { erpPriceInputFormatter } from '@/utils'
import * as UserApi from '@/api/system/user'
import { AccountApi, AccountVO } from '@/api/erp/finance/account'

View File

@ -9,7 +9,6 @@
</template>
<script lang="ts" setup>
import { EChartsOption } from 'echarts'
import { formatDate } from '@/utils/formatTime'
import { CardTitle } from '@/components/Card'
import { propTypes } from '@/utils/propTypes'

View File

@ -112,7 +112,6 @@
<script setup lang="ts">
import { DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { SupplierApi, SupplierVO } from '@/api/erp/purchase/supplier'
import SupplierForm from './SupplierForm.vue'

View File

@ -112,7 +112,6 @@
<script setup lang="ts">
import { DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { CustomerApi, CustomerVO } from '@/api/erp/sale/customer'
import CustomerForm from './CustomerForm.vue'

View File

@ -252,7 +252,6 @@ import { StockOutApi, StockOutVO } from '@/api/erp/stock/out'
import StockOutForm from './StockOutForm.vue'
import { ProductApi, ProductVO } from '@/api/erp/product/product'
import { WarehouseApi, WarehouseVO } from '@/api/erp/stock/warehouse'
import { SupplierApi, SupplierVO } from '@/api/erp/purchase/supplier'
import { UserVO } from '@/api/system/user'
import * as UserApi from '@/api/system/user'
import { erpCountTableColumnFormatter, erpPriceTableColumnFormatter } from '@/utils'

View File

@ -159,8 +159,6 @@ import { erpCountTableColumnFormatter } from '@/utils'
defineOptions({ name: 'ErpStockRecord' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<StockRecordVO[]>([]) //
const total = ref(0) //
@ -208,19 +206,6 @@ const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await StockRecordApi.deleteStockRecord(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {

View File

@ -102,8 +102,6 @@ import { erpCountTableColumnFormatter } from '@/utils'
defineOptions({ name: 'ErpStock' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<StockVO[]>([]) //
const total = ref(0) //
@ -148,19 +146,6 @@ const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await StockApi.deleteStock(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {

View File

@ -8,7 +8,7 @@
<!-- 视频呼叫自己摄像头预览铺底对方头像悬浮顶部 -->
<video
v-if="isVideo && localStream"
ref="localVideoRef"
:ref="localVideoRef"
class="absolute inset-0 object-cover w-full h-full scale-x-[-1]"
autoplay
muted

View File

@ -11,7 +11,7 @@
<!-- 视频可用渲染 video否则渲染头像或默认占位 -->
<video
v-if="participant.videoStream"
ref="videoRef"
:ref="videoRef"
class="object-cover w-full h-full"
autoplay
playsinline
@ -30,7 +30,7 @@
<!-- 远端音频通过 audio 元素播放本端静音避免回声扬声器关闭时整体静音 -->
<audio
v-if="participant.audioStream && !participant.isLocal"
ref="audioRef"
:ref="audioRef"
autoplay
:muted="!speakerEnabled"
></audio>

View File

@ -31,7 +31,7 @@
<template v-else-if="isVideo">
<div v-show="hasRemoteVideo" class="absolute inset-0">
<video
ref="remoteVideoRef"
:ref="remoteVideoRef"
class="object-cover w-full h-full"
autoplay
playsinline
@ -53,7 +53,7 @@
class="absolute top-4 right-4 z-[2] overflow-hidden w-30 rounded-lg aspect-[9/16] bg-[#333]"
>
<video
ref="localVideoRef"
:ref="localVideoRef"
class="object-cover w-full h-full scale-x-[-1]"
autoplay
muted
@ -78,7 +78,7 @@
</template>
<audio
v-if="!isGroup && remoteAudioStream"
ref="remoteAudioRef"
:ref="remoteAudioRef"
autoplay
:muted="!speakerEnabled"
></audio>

View File

@ -1,4 +1,4 @@
import { ref, watch, type Ref } from 'vue'
import { watch, type VNodeRef } from 'vue'
/**
* MediaStream `<video>` / `<audio>` srcObject
@ -6,16 +6,34 @@ import { ref, watch, type Ref } from 'vue'
*/
export function useMediaStreamElement<T extends HTMLMediaElement>(
streamSource: () => MediaStream | null | undefined
): Ref<T | undefined> {
const elRef = ref<T>()
): VNodeRef {
let el: T | null = null
let currentStream: MediaStream | null | undefined
const syncStream = () => {
if (el) {
el.srcObject = currentStream || null
}
}
watch(
streamSource,
(stream) => {
if (elRef.value) {
elRef.value.srcObject = stream || null
}
currentStream = stream
syncStream()
},
{ flush: 'post', immediate: true }
)
return elRef
return (value) => {
if (value instanceof HTMLMediaElement) {
el = value as T
syncStream()
return
}
if (el) {
el.srcObject = null
}
el = null
}
}

View File

@ -39,7 +39,6 @@ const { delView } = useTagsViewStore() // 视图操作
const formLoading = ref(false) // 12
const activeName = ref('colum') // Tag
const basicInfoRef = ref<ComponentRef<typeof BasicInfoForm>>()
const columInfoRef = ref<ComponentRef<typeof ColumInfoForm>>()
const generateInfoRef = ref<ComponentRef<typeof GenerateInfoForm>>()
const formData = ref<CodegenApi.CodegenUpdateReqVO>({
table: {},

View File

@ -90,7 +90,6 @@ const queryParams = reactive({
comment: undefined,
dataSourceConfigId: 0
})
const queryFormRef = ref() //
const dataSourceConfigList = ref<DataSourceConfigApi.DataSourceConfigVO[]>([]) //
/** 查询表数据 */

View File

@ -302,7 +302,6 @@ import { PropType } from 'vue'
defineOptions({ name: 'InfraCodegenGenerateInfoForm' })
const message = useMessage() //
const props = defineProps({
table: {
type: Object as PropType<Nullable<CodegenApi.CodegenTableVO>>,

View File

@ -77,7 +77,7 @@
<script setup lang="ts">
import { DeviceApi, DeviceVO } from '@/api/iot/device/device'
import { DeviceGroupApi } from '@/api/iot/device/group'
import { DeviceTypeEnum, ProductApi, ProductVO } from '@/api/iot/product/product'
import { ProductApi, ProductVO } from '@/api/iot/product/product'
import { UploadImg } from '@/components/UploadFile'
import { MapDialog } from '@/components/Map'
import { ref } from 'vue'

View File

@ -152,8 +152,6 @@ const selectedIds = ref<number[]>([]) // 选中的设备ID
const bindDialogVisible = ref(false) //
const bindFormLoading = ref(false) //
const bindTableRef = ref()
const bindQueryFormRef = ref()
const bindableDevices = ref<DeviceVO[]>([]) //
const bindSelectedIds = ref<number[]>([]) // ID
const bindTotal = ref(0) //

View File

@ -167,8 +167,6 @@ const autoRefresh = ref(false) // 自动刷新开关
let autoRefreshTimer: any = null //
const viewMode = ref<'card' | 'list'>('card') //
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {
loading.value = true

View File

@ -94,7 +94,6 @@ const queryParams = reactive({
formatDate(endOfDay(new Date()))
]
})
const queryFormRef = ref() //
// struct array
const isComplexDataType = computed(() => {

View File

@ -129,7 +129,6 @@ const queryParams = reactive({
name: '',
firmwareId: props.firmwareId
})
const queryFormRef = ref() //
const taskFormRef = ref() //
const taskDetailRef = ref() //

View File

@ -295,22 +295,6 @@ const emptyMessage = computed(() => {
}
})
//
const noConfigMessage = computed(() => {
switch (props.type) {
case JsonParamsInputTypeEnum.SERVICE:
return JSON_PARAMS_INPUT_CONSTANTS.NO_CONFIG_MESSAGES.SERVICE
case JsonParamsInputTypeEnum.EVENT:
return JSON_PARAMS_INPUT_CONSTANTS.NO_CONFIG_MESSAGES.EVENT
case JsonParamsInputTypeEnum.PROPERTY:
return JSON_PARAMS_INPUT_CONSTANTS.NO_CONFIG_MESSAGES.PROPERTY
case JsonParamsInputTypeEnum.CUSTOM:
return JSON_PARAMS_INPUT_CONSTANTS.NO_CONFIG_MESSAGES.CUSTOM
default:
return JSON_PARAMS_INPUT_CONSTANTS.NO_CONFIG_MESSAGES.DEFAULT
}
})
/**
* 处理参数变化事件
*/

View File

@ -282,7 +282,6 @@ const loading = ref(true) // 列表的加载中
const list = ref<IotSceneRule[]>([]) //
const total = ref(0) //
const selectedRows = ref<IotSceneRule[]>([]) //
const queryFormRef = ref() //
/** 表单状态 */
const formVisible = ref(false) //

View File

@ -122,7 +122,6 @@ const queryParams = reactive({
productId: -1
})
const queryFormRef = ref() //
const product = inject<Ref<ProductVO>>(IOT_PROVIDE_KEY.PRODUCT) //
/** 查询列表 */

View File

@ -179,7 +179,6 @@ import ReplyForm from './ReplyForm.vue'
defineOptions({ name: 'ProductComment' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //

View File

@ -44,7 +44,6 @@ const props = defineProps({
spuId: propTypes.number.def(null)
})
const message = useMessage() //
const list = ref<any[]>([]) //
const loading = ref(false) //
const dialogVisible = ref(false) //

View File

@ -140,7 +140,6 @@ const queryParams = reactive({
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 分类图预览 */
const imagePreview = (imgUrl: string) => {

View File

@ -167,7 +167,6 @@ const queryParams = reactive({
status: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -43,8 +43,6 @@ import { fenToYuanFormat } from '@/utils/formatter'
/** 助力列表 */
defineOptions({ name: 'BargainRecordListDialog' })
const message = useMessage() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //

View File

@ -145,9 +145,6 @@ import BargainRecordListDialog from './BargainRecordListDialog.vue'
defineOptions({ name: 'PromotionBargainRecord' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //

View File

@ -142,8 +142,6 @@ import { dateFormatter } from '@/utils/formatTime'
import * as DiscountActivity from '@/api/mall/promotion/discount/discountActivity'
import DiscountActivityForm from './DiscountActivityForm.vue'
import { formatDate } from '@/utils/formatTime'
import { fenToYuanFormat } from '@/utils/formatter'
import { fenToYuan } from '@/utils'
defineOptions({ name: 'DiscountActivity' })
@ -161,7 +159,6 @@ const queryParams = reactive({
status: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
@ -219,19 +216,6 @@ const handleDelete = async (id: number) => {
} catch {}
}
const configList = ref([]) //
// const formatConfigNames = (configId) => {
// const config = configList.value.find((item) => item.id === configId)
// return config != null ? `${config.name}[${config.startTime} ~ ${config.endTime}]` : ''
// }
const formatSeckillPrice = (products) => {
// const seckillPrice = Math.min(...products.map((item) => item.seckillPrice))
console.log(products)
const seckillPrice = 200
return `${fenToYuan(seckillPrice)}`
}
/** 初始化 **/
onMounted(async () => {
await getList()

View File

@ -178,7 +178,6 @@ const queryParams = reactive({
status: null
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -142,7 +142,6 @@ const queryParams = reactive({
status: undefined
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -76,7 +76,6 @@ const handleDateRangeChange = (times: any[]) => {
getSpuList()
}
const shortcutDateRangePicker = ref()
//
const queryParams = reactive({
pageNo: 1,

View File

@ -88,8 +88,6 @@ import * as BrokerageUserApi from '@/api/mall/trade/brokerage/user'
/** 推广人列表 */
defineOptions({ name: 'BrokerageUserListDialog' })
const message = useMessage() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //

View File

@ -88,8 +88,6 @@ import * as SignInRecordApi from '@/api/member/signin/record'
defineOptions({ name: 'SignInRecord' })
const message = useMessage() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
@ -101,7 +99,6 @@ const queryParams = reactive({
createTime: []
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {

View File

@ -88,7 +88,6 @@
<script setup lang="ts" name="MemberTag">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as TagApi from '@/api/member/tag'
import TagForm from './TagForm.vue'
const message = useMessage() //

View File

@ -32,7 +32,6 @@ const { userId }: { userId: number } = defineProps({
})
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
/** 查询列表 */

View File

@ -42,9 +42,6 @@ import { dateFormatter } from '@/utils/formatTime'
import * as FavoriteApi from '@/api/mall/product/favorite'
import { floatToFixed2 } from '@/utils'
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const total = ref(0) //
const list = ref([]) //
@ -55,7 +52,6 @@ const queryParams = reactive({
createTime: [],
userId: NaN
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {
@ -69,18 +65,6 @@ const getList = async () => {
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
const { userId } = defineProps({
userId: {
type: Number,

View File

@ -89,7 +89,6 @@ const props = defineProps<{
const isDetail = computed(() => props.formType === 'detail') // DONE @AI formType
const { t } = useI18n() //
const message = useMessage() //
const loading = ref(false) //

View File

@ -48,7 +48,6 @@ const props = defineProps<{
const message = useMessage() //
const loading = ref(false) //
const formRef = ref() // Ref
const formData = ref<MdItemBatchConfigVO>({
itemId: props.itemId,
produceDateFlag: false,

View File

@ -75,7 +75,6 @@ const loading = ref(false) // 列表加载中
const list = ref<MdProductBomVO[]>([]) // BOM
// ==================== ====================
const tableRef = ref() // Ref
const selectedRadioId = ref<number>() // bomItemId
const currentRow = ref<MdProductBomVO>() //

View File

@ -191,7 +191,6 @@ const formLoading = ref(false) // 表单的加载中
const formType = ref('') // detail - schedule -
const isReadonly = computed(() => formType.value === 'detail') //
const formData = ref<any>({})
const formRef = ref() // Ref
const routeProcessList = ref<ProRouteProcessVO[]>([]) // 线
const activeProcessStep = ref(0) //

View File

@ -83,7 +83,6 @@ const list = ref<WmArrivalNoticeLineVO[]>([]) // 列表
const total = ref(0) //
// ==================== ====================
const tableRef = ref() // Ref
const selectedRadioId = ref<number>() // ID
const currentRadioRow = ref<WmArrivalNoticeLineVO>() //
const preSelectedIds = ref<number[]>([]) // ID

View File

@ -178,7 +178,6 @@ const isEditable = computed(() => ['create', 'update'].includes(formType.value))
const isSubmit = computed(() => formType.value === 'submit') //
const isExecute = computed(() => formType.value === 'execute') //
const isDetail = computed(() => ['detail', 'submit', 'execute'].includes(formType.value)) //
const isHeaderReadonly = computed(() => ['submit', 'execute', 'detail'].includes(formType.value)) //
const resultVisible = computed(
() => formData.value.status && formData.value.status !== MesWmStockTakingTaskStatusEnum.PREPARE
)
@ -220,7 +219,6 @@ const formRules = reactive({
})
const formRef = ref() // Ref
const activeTab = ref('lines') // tab
const resultListRef = ref() // Ref
const originalFormData = ref<string>('') //
/** 生成任务编码 */

View File

@ -88,7 +88,6 @@ const list = ref<MsgTemplateVO[]>([]) // 列表的数据
const queryParams = reactive({
accountId: -1
})
const queryFormRef = ref() //
const syncLoading = ref(false) //
/** 公众号选择变化 */

View File

@ -116,7 +116,6 @@ import { ref } from 'vue'
defineOptions({ name: 'MpUser' })
const { t } = useI18n() //
const message = useMessage() //
const isDialog = ref(false) //

View File

@ -48,13 +48,13 @@
</el-descriptions-item>
<el-descriptions-item label="支付 IP">{{ detailData.userIp }}</el-descriptions-item>
<el-descriptions-item label="渠道单号">
<el-tag size="mini" type="success" v-if="detailData.channelOrderNo">
<el-tag size="small" type="success" v-if="detailData.channelOrderNo">
{{ detailData.channelOrderNo }}
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="渠道用户">{{ detailData.channelUserId }}</el-descriptions-item>
<el-descriptions-item label="退款金额">
<el-tag size="mini" type="danger">
<el-tag size="small" type="danger">
{{ ((detailData.refundPrice || 0) / 100.0).toFixed(2) }}
</el-tag>
</el-descriptions-item>

View File

@ -23,7 +23,7 @@
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="退款金额">
<el-tag size="mini" type="danger">
<el-tag size="small" type="danger">
{{ (refundDetail.refundPrice / 100.0).toFixed(2) }}
</el-tag>
</el-descriptions-item>

View File

@ -31,7 +31,7 @@
</el-descriptions-item>
<el-descriptions-item label="支付 IP">{{ detailData.userIp }}</el-descriptions-item>
<el-descriptions-item label="渠道单号">
<el-tag size="mini" type="success" v-if="detailData.channelTransferNo">
<el-tag size="small" type="success" v-if="detailData.channelTransferNo">
{{ detailData.channelTransferNo }}
</el-tag>
</el-descriptions-item>

View File

@ -10,7 +10,6 @@
import WalletTransactionList from '../transaction/WalletTransactionList.vue'
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const walletId = ref(0)
/** 打开弹窗 */
const open = async (theWalletId: number) => {

View File

@ -191,7 +191,7 @@
</template>
<script lang="ts" setup>
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as MailAccountApi from '@/api/system/mail/account'
import * as MailLogApi from '@/api/system/mail/log'

View File

@ -226,7 +226,6 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const isExpandAll = ref(false) //
const refreshTable = ref(true) //
//
const expandedRowKeys = ref<number[]>([])

View File

@ -465,7 +465,6 @@ function getDefaultQueryParams() {
}
}
const queryParams = reactive(getDefaultQueryParams())
const queryFormRef = ref() //
const exportLoading = ref(false) //
const detailMap = reactive<Record<number, CheckOrderDetailVO[]>>({}) //

View File

@ -438,7 +438,6 @@ function getDefaultQueryParams() {
}
}
const queryParams = reactive(getDefaultQueryParams())
const queryFormRef = ref() //
const exportLoading = ref(false) //
const detailMap = reactive<Record<number, MovementOrderDetailVO[]>>({}) //

Some files were not shown because too many files have changed in this diff Show More