This commit is contained in:
dzc committed 2025-04-03 15:34:53 +08:00
1 parent 6e56d167de
commit 7d094a1c30
5 files changed
+144 -22

No files matched your search

+8
View File
@@ -1,5 +1,13 @@
import request from "/@/utils/request"
export function select(query?: Object) {
return request({
url: "/hard/hard-spu-repertory/select",
method: "get",
params: query,
})
}
export function fetchList(query?: Object) {
return request({
url: "/hard/hard-spu-repertory/page",
+8
View File
@@ -1,5 +1,13 @@
import request from "/@/utils/request"
export function select(query?: Object) {
return request({
url: "/hard/hard-spu/select",
method: "get",
params: query,
})
}
export function pageJoin(query?: Object) {
return request({
url: "/hard/hard-spu/page-join",
+115
View File
@@ -0,0 +1,115 @@
<template>
<el-select
style="width: 100%"
v-model="state.selectId"
:placeholder="props.placeholder"
:clearable="props.clearable"
remote-show-suffix
filterable
remote
:disabled="props.disabled"
:remote-method="remoteSearch"
:loading="state.loading"
@visible-change="(e: boolean) => e && getOptions()"
@change="change"
>
<el-option v-for="v in state.options" :key="v.id" :label="`${v.name}`" :value="v.id">
<div class="flex items-center">
<div class="color-primary">{{ v.name }}</div>
<div class="flex items-center justify-center ml5">
<dict-tag :options="state.hardType" :value="v.type" />
</div>
</div>
</el-option>
</el-select>
</template>
<script setup lang="ts" name="select-hard">
import { reactive } from "vue"
import { useDict } from "/@/hooks/dict"
import * as hardSpu from "/@/api/hard/hard-spu"
const emit = defineEmits(["change"])
const selectId = defineModel()
const props = withDefaults(
defineProps<{
placeholder?: string
disabled?: boolean
clearable?: boolean
autoFirst?: boolean
apiParams?: any
}>(),
{
placeholder: "请选择",
disabled: false,
clearable: true,
autoFirst: false,
apiParams: {},
},
)
const queryForm = reactive<any>({
name: "",
current: 1,
size: 10,
})
const state = reactive<any>({
loading: true,
selectId: selectId,
options: [],
hardType: [],
})
watch(
selectId,
(newVal, oldValue) => {
if (newVal == oldValue) return
state.selectId = newVal
getOptions()
},
{ immediate: true },
)
async function getOptions() {
try {
state.loading = true
const _pa = {
...queryForm,
...props.apiParams,
}
const { data } = await hardSpu.select(_pa)
state.options = data.records ?? []
if (props.autoFirst && state.options.length != 0) {
state.selectId = state.options[0].id
emit("change", state.selectId)
}
const { hard_type } = useDict("hard_type")
state.hardType = hard_type
} finally {
setTimeout(() => (state.loading = false), 500)
}
}
function remoteSearch(params: string) {
if (params != queryForm.name) {
queryForm.name = params
getOptions()
}
}
function clear() {
state.selectId = null
getOptions()
}
function change() {
emit("change", selectId)
}
onMounted(() => {
props.autoFirst && getOptions()
})
</script>
+2
View File
@@ -27,6 +27,7 @@ import SelectSupplier from "/@/components/Select/SelectSupplier.vue"
import SelectMchRule from "/@/components/Select/SelectMchRule.vue"
import SelectHardSpuCategory from "/@/components/Select/SelectHardSpuCategory.vue"
import SelectHard from "/@/components/Select/SelectHard.vue"
import SelectHardSpu from "/@/components/Select/SelectHardSpu.vue"
import TreeMultipleSelect from "/@/components/TreeMultipleSelect/index.vue"
// 第三方组件
@@ -67,6 +68,7 @@ export default {
app.component("TreeMultipleSelect", TreeMultipleSelect)
app.component("SelectHard", SelectHard)
app.component("SelectHardSpuCategory", SelectHardSpuCategory)
app.component("SelectHardSpu", SelectHardSpu)
app.component("SelectUser", SelectUser)
app.component("SelectWalletType", SelectWalletType)
+11 -22
View File
@@ -1,28 +1,15 @@
<template>
<el-dialog :title="form.id ? '编辑' : '新增'" v-model="visible" :close-on-click-modal="false" draggable>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="90px" v-loading="loading">
<el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="120px" v-loading="loading">
<el-row :gutter="24">
<el-col :span="12" class="mb20">
<el-form-item label="用户id" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户id" />
<el-col :span="24" class="mb20">
<el-form-item label="商品" prop="spuId">
<select-hard-spu v-model="form.spuId" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-form-item label="设备id" prop="hardId">
<el-input v-model="form.hardId" placeholder="请输入设备id" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-form-item label="商品id" prop="spuId">
<el-input v-model="form.spuId" placeholder="请输入商品id" />
</el-form-item>
</el-col>
<el-col :span="12" class="mb20">
<el-form-item label="更新库存数量" prop="count">
<el-input v-model="form.count" placeholder="请输入更新库存数量" />
<el-col :span="24" class="mb20">
<el-form-item label="更新库存量" prop="count">
<el-input-number style="width: 100%" :min="0" :step="1" v-model="form.count" placeholder="" />
</el-form-item>
</el-col>
</el-row>
@@ -40,7 +27,6 @@
import { useDict } from "/@/hooks/dict"
import { useMessage } from "/@/hooks/message"
import { getObj, addObj, putObj } from "/@/api/hard/hard-spu-repertory"
import { rule } from "/@/utils/validate"
const emit = defineEmits(["refresh"])
// 定义变量内容
@@ -59,7 +45,10 @@ const form = reactive({
})
// 定义校验规则
const dataRules = ref({})
const dataRules = ref({
spuId: [{ required: true, message: "请选择商品", trigger: "change" }],
count: [{ required: true, message: "请输入库存量", trigger: "blur" }],
})
// 打开弹窗
const openDialog = (id: string) => {