商品管理更新

This commit is contained in:
songyang 2023-12-06 09:38:11 +08:00
parent a86e78fa55
commit 93aa763064
6 changed files with 477 additions and 95 deletions

4
env/.env.dev vendored
View File

@ -9,9 +9,9 @@ VITE_API_URL = '/proxyApi'
# VITE_proxyTarget = 'http://10.40.92.185:9200' # 赵福海 (登录)
# VITE_proxyTarget = 'http://10.40.92.185:9301' # 赵福海 (商品分类)
VITE_proxyTarget = 'http://10.40.92.185:9206' # 赵福海 ( 设备类型)
VITE_proxyTarget = 'http://10.40.92.253:8080' # 牛 (个人中心 基础信息企业申请认证)
# VITE_proxyTarget = 'http://10.40.92.253:8080' # 牛 (个人中心 基础信息企业申请认证)

View File

@ -1,5 +1,5 @@
<template>
<div>
<div class="upload_ss_c">
<!--action="/api/abk/web/v1/resource/file" -->
<el-upload
:action="actionUrl"
@ -19,7 +19,7 @@
:on-progress="(event, file, fileList) => onProgressFn(event, file, fileList)"
list-type="picture-card">
<!-- 上传的按钮 或者 icon 通过具名插槽的方式 -->
<slot name="uploadBtn"></slot>
<slot name="default"></slot>
</el-upload>
<el-progress v-if="showProcessFlag && processFlag" :percentage="loadProcess"></el-progress>
</div>
@ -35,6 +35,16 @@
type: String,
default: ''
},
width: {
//
type: String,
default: '72px'
},
height: {
//
type: String,
default: '72px'
},
autoUpload: {
//
type: Boolean,
@ -222,4 +232,14 @@
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
:deep(.el-upload) {
width: v-bind('props.width') !important;
height: v-bind('props.height') !important;
}
:deep(.el-upload-list__item) {
width: v-bind('props.width') !important;
height: v-bind('props.height') !important;
}
</style>
<style></style>

View File

@ -0,0 +1,13 @@
// 个人中心 承租下的商品管理
import { get, post } from '../../index'
// 装备入驻提交
export const equipmentDeploymentApi = (data: any) => {
return post('/dev', data)
}
// 获取商品入驻列表
export const getEquipmentListApi = (data: any) => {
return post('/dev/list', data)
}

View File

@ -15,7 +15,10 @@ export const useStore = defineStore('myUser', {
areaList: [], // 区级信息
idTypeList: [], // 证件类型
companyTypeList: [],//企业类型
companyLtdList: [] //企业所属
companyLtdList: [],//企业所属
deviceTypeList: [], // 设备类型大类
deviceTypeSonList: [], // 设备类型子类
deviceTypeSunList: [], // 设备类型小类
}
},
getters: {
@ -70,7 +73,29 @@ export const useStore = defineStore('myUser', {
const res: any = await post('/company_type/selectCompanyLtd', {})
console.log(res, '企业所属');
this.companyLtdList = res.rows
}
},
// 获取设备类型大类
async getDeviceTypeList() {
const res: any = await post('/type/list', {})
this.deviceTypeList = res.rows
console.log(res, '设备类型大类**---***');
},
// 获取设备类型小类
async getDeviceTypeSonList(val: any) {
const res: any = await post('/type/list', { typeId: val })
this.deviceTypeSonList = res.rows
console.log(res, '设备类型子类**---***');
},
// 获取设备类型大类
async getDeviceTypeSunList(val: any) {
const res: any = await post('/type/list', { typeId: val })
this.deviceTypeSunList = res.rows
console.log(res, '设备类型小类**---***');
},
},
persist: {
enabled: true, // 开启数据缓存

View File

@ -130,7 +130,8 @@
<el-select
v-model="applyParams.operateAddressProvince"
placeholder="请选择市"
@change="opeChangeMarket">
@change="opeChangeMarket"
clearable>
<el-option
v-for="item in selMarketList"
:key="item.id"
@ -142,7 +143,8 @@
<el-select
v-model="applyParams.operateAddressArea"
placeholder="请选择区"
@change="opeChangeArea">
@change="opeChangeArea"
clearable>
<el-option
v-for="item in selAreaList"
:key="item.id"
@ -184,21 +186,39 @@
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="8">
<el-form-item class="" label="营业执照">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent />
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-col :span="4">
<el-row :gutter="20">
<el-col :span="10">
<el-form-item class="" label="身份证国徽面">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent />
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
@ -206,10 +226,18 @@
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="10">
<el-form-item class="" label="身份证肖像面">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent />
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
@ -304,44 +332,65 @@
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="5">
<el-form-item label="法人授权书">
<div style="width: 72px; height: 72px">
<uploadComponent
:maxLimit="1"
:acceptTypeList="['.jpg', '.jpeg', '.png']">
<template v-slot:uploadBtn>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
</div>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="被授权人身份证国徽面">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent />
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="5">
<el-col :span="10">
<el-form-item label="被授权人身份证肖像面">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent />
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="5" class="d-flex align-center">
<el-col :span="10">
<el-form-item label="被授权人身份证国徽面000000">
<!-- <upload-img width="80" @onClick="test" /> -->
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="10">
<el-form-item label="法人授权书">
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
<div class="previewExample">
<span>预览</span>
<span>查看示例</span>
</div>
</el-form-item>
</el-col>
<el-col :span="10" class="d-flex align-center">
<el-checkbox size="large" />
<div class="agreement">
我已阅读并同意相关条款内容
@ -444,8 +493,8 @@
certificatetype: '', //
idNumber: '', //
businessLicense: '', //
// idNationUrl: '', //
// idFaceUrl: '', //
legalFaceUrl: '', //
legalNationUrl: '', //
legalPerson: '', //
invitationCode: '', //
invitationCoName: '', //

View File

@ -2,16 +2,164 @@
import TableComponent from 'components/TableComponent/index.vue'
import FormComponent from 'components/FormComponent/index.vue'
import PagingComponent from 'components/PagingComponent/index.vue'
import uploadComponent from 'components/uploadComponent/index.vue'
import { ref } from 'vue'
import { useStore } from 'store/user'
const store = useStore()
import { equipmentDeploymentApi, getEquipmentListApi } from 'http/api/usercenter/goodsmang'
//
const AssemblyRegisterAddress: any = reactive([])
const deviceType: any = reactive([])
onMounted(() => {
//
store.getprovinceList()
//
store.getDeviceTypeList()
})
//
const selProvinceList: any = computed(() => {
return store.provinceList
})
//
const selMarketList: any = computed(() => {
return store.marketList
})
//
const selAreaList: any = computed(() => {
return store.areaList
})
//
const selDeviceTypeList: any = computed(() => {
return store.deviceTypeList
})
//
const selDeviceTypeSonList: any = computed(() => {
return store.deviceTypeSonList
})
//
const selDeviceTypeSunList: any = computed(() => {
return store.deviceTypeSunList
})
//
const changeProvince = (val: any) => {
// console.log(val, '**')
store.getmarketList(val.split(',')[0])
AssemblyRegisterAddress[0] = val.split(',')[1]
}
//
const changeMarket = (val: any) => {
store.getareaList(val.split(',')[0])
AssemblyRegisterAddress[1] = val.split(',')[1]
}
//
const opeChangeArea = (val: any) => {
AssemblyRegisterAddress[2] = val.split(',')[1]
}
//
const changeDeviceType = (val: any) => {
store.getDeviceTypeSonList(val.split(',')[0])
deviceType[0] = val.split(',')[1]
}
//
const changeDeviceTypeSon = (val: any) => {
store.getDeviceTypeSunList(val.split(',')[0])
deviceType[1] = val.split(',')[1]
}
//
const changeDeviceTypeSun = (val: any) => {
deviceType[2] = val.split(',')[1]
}
/*
* 商品入驻弹框参数
*/
const equipmentDeploymentParams = reactive({
/* 租赁范围 */
easeScope: '',
/* 设备所在地 */
location: '',
/* 设备所在地 省 */
addressEconomize: '',
/* 设备所在地 市 */
addressProvince: '',
/* 设备所在地 区 */
addressArea: '',
/* 设备类型 */
typeId: '',
/* 设备类型大类 */
deviceType: '',
/* 设备类型子类 */
deviceTypeSon: '',
/* 设备类型小类*/
deviceTypeSun: '',
/* 设备品牌 */
brand: '',
/* 设备型号 */
modelName: '',
/* 出场日期 */
productionDate: '',
/* 工作小时数 */
workingHours: '',
/* 整机序列号 */
serialNumber: '',
/* 月租金 */
monthLeasePrice: '',
/* 日租金 */
dayLeasePrice: '',
/* 是否提供机手 */
isOperator: '',
/* 机手月费用 */
jsMonthPrice: '',
/* 机手日费用 */
jsDayPrice: '',
/* 详细说明 */
description: '',
/* 设备图片 */
picUrl: '',
/* 检测信息 ,保险信息*/
fileList: [
/* 检测信息 */
{
id: '28',
url: 'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png'
},
/* 保险信息 */
{
id: '29',
utr: 'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png'
},
/* 设备图片 */
{
id: '20',
utr: 'https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/488bab245180ebf9f1f3d7db5301be4.png'
}
]
})
const pageSize = 20
const pageNumber = 1
const total: any = 20
//
const getList = () => {
console.log('获取数据列表***')
const getList = async () => {
const res = await getEquipmentListApi({})
console.log('获取数据列表***', res)
}
getList()
//
const getRowId = (val: any) => {
console.log(val, '需要删除的数据源**')
@ -35,10 +183,16 @@
const ruleFormRef = ref()
//
const submitBtn = () => {
ruleFormRef.value.validate((valid: any) => {
const submitBtn = async () => {
console.log(AssemblyRegisterAddress, '地址***---***')
equipmentDeploymentParams.location = AssemblyRegisterAddress.join(',')
// equipmentDeploymentParams.typeId = deviceType.join(',')
const res = await equipmentDeploymentApi(equipmentDeploymentParams)
console.log(res, '商品入驻结果999')
/* ruleFormRef.value.validate((valid: any) => {
console.log(valid)
})
}) */
}
const tableProps: any = ref([
@ -111,12 +265,6 @@
//
const dialogFormVisibleSettlein = ref(false)
//
const ruleForm = ref({
v_name: 'Hello',
v_region: ''
})
const rules = ref({
v_name: [
{
@ -166,92 +314,219 @@
<!-- 装备入驻弹框 -->
<el-dialog v-model="dialogFormVisibleSettlein" title="装备入驻" width="60%" align-center>
<el-form label-width="160" ref="ruleFormRef" :model="ruleForm" :rules="rules">
<el-form-item label="租赁范围" prop="v_name">
<el-form
label-width="160"
ref="ruleFormRef"
:model="equipmentDeploymentParams"
:rules="rules">
<el-form-item label="租赁范围" prop="easeScope">
<el-input
autocomplete="off"
style="width: 360px"
v-model="ruleForm.v_name"
v-model="equipmentDeploymentParams.easeScope"
clearable />
</el-form-item>
<el-form-item label="设备所在地">
<el-select placeholder="选择省" style="width: 220px; margin: 0 5px" clearable>
<el-option label="Zone No.1" value="shanghai" />
<el-select
v-model="equipmentDeploymentParams.location"
placeholder="选择省"
style="width: 220px; margin: 0 5px"
@change="changeProvince"
clearable>
<el-option
v-for="item in selProvinceList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
<el-select placeholder="选择市" style="width: 220px; margin: 0 5px" clearable>
<el-option label="Zone No.1" value="shanghai" />
<el-select
v-model="equipmentDeploymentParams.addressProvince"
placeholder="选择市"
style="width: 220px; margin: 0 5px"
@change="changeMarket"
clearable>
<el-option
v-for="item in selMarketList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
<el-select placeholder="选择区" style="width: 220px; margin: 0 5px" clearable>
<el-option label="Zone No.1" value="shanghai" />
<el-select
v-model="equipmentDeploymentParams.addressArea"
placeholder="选择区"
style="width: 220px; margin: 0 5px"
clearable
@change="opeChangeArea">
<el-option
v-for="item in selAreaList"
:key="item.id"
:label="item.name"
:value="item.code + ',' + item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备类型">
<el-select placeholder="选择类别" style="width: 220px; margin: 0 5px" clearable>
<el-option label="Zone No.1" value="shanghai" />
<el-select
v-model="equipmentDeploymentParams.deviceType"
placeholder="选择设备类型"
style="width: 220px; margin: 0 5px"
clearable
@change="changeDeviceType">
<el-option
v-for="item in selDeviceTypeList"
:key="item.typeId"
:label="item.typeName"
:value="item.typeId + ',' + item.typeName"></el-option>
</el-select>
<el-select placeholder="选择组别" style="width: 220px; margin: 0 5px" clearable>
<el-option label="Zone No.1" value="shanghai" />
<el-select
placeholder="选择组别"
style="width: 220px; margin: 0 5px"
clearable
@change="changeDeviceTypeSon"
v-model="equipmentDeploymentParams.deviceTypeSon">
<el-option
v-for="item in selDeviceTypeSonList"
:key="item.typeId"
:label="item.typeName"
:value="item.typeId + ',' + item.typeName"></el-option>
</el-select>
<el-select placeholder="选择产品名称" style="width: 220px; margin: 0 5px" clearable>
<el-option label="Zone No.1" value="shanghai" />
<el-select
placeholder="选择产品名称"
style="width: 220px; margin: 0 5px"
clearable
@change="changeDeviceTypeSun"
v-model="equipmentDeploymentParams.typeId">
<el-option
v-for="item in selDeviceTypeSunList"
:key="item.typeId"
:label="item.typeName"
:value="item.typeId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备品牌" prop="v_region">
<el-form-item label="设备品牌" prop="brand">
<el-input
autocomplete="off"
style="width: 360px"
v-model="ruleForm.v_region"
v-model="equipmentDeploymentParams.brand"
clearable />
</el-form-item>
<el-form-item label="设备型号">
<el-input autocomplete="off" style="width: 360px" clearable />
<el-input
v-model="equipmentDeploymentParams.modelName"
autocomplete="off"
style="width: 360px"
clearable />
</el-form-item>
<el-form-item label="出厂日期">
<el-input autocomplete="off" style="width: 360px" clearable />
<el-input
v-model="equipmentDeploymentParams.productionDate"
autocomplete="off"
style="width: 360px"
clearable />
</el-form-item>
<el-form-item label="工作小时数">
<el-input autocomplete="off" style="width: 360px; margin-right: 5px" clearable />
<el-input
v-model="equipmentDeploymentParams.workingHours"
autocomplete="off"
style="width: 360px; margin-right: 5px"
clearable />
小时
</el-form-item>
<el-form-item label="整机序列号">
<el-input autocomplete="off" style="width: 360px" clearable />
<el-input
v-model="equipmentDeploymentParams.serialNumber"
autocomplete="off"
style="width: 360px"
clearable />
</el-form-item>
<el-form-item label="月租金">
<el-input autocomplete="off" style="width: 360px; margin-right: 5px" clearable />
<el-input
v-model="equipmentDeploymentParams.monthLeasePrice"
autocomplete="off"
style="width: 360px; margin-right: 5px"
clearable />
/
</el-form-item>
<el-form-item label="日租金">
<el-input autocomplete="off" style="width: 360px; margin-right: 5px" clearable />
<el-input
v-model="equipmentDeploymentParams.dayLeasePrice"
autocomplete="off"
style="width: 360px; margin-right: 5px"
clearable />
/
</el-form-item>
<el-form-item label="检测信息">
<!-- <el-input autocomplete="off" /> -->
上传
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
</el-form-item>
<el-form-item label="保险信息">
<!-- <el-input autocomplete="off" /> -->
上传
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
</el-form-item>
<el-form-item label="是否提供机手">
<el-radio></el-radio>
<el-radio></el-radio>
<el-select
placeholder="选择是否提供机手"
style="width: 220px; margin: 0 5px"
clearable
v-model="equipmentDeploymentParams.isOperator">
<el-option label="是" value="1"></el-option>
<el-option label="是" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="机手月费用">
<el-input autocomplete="off" style="width: 360px; margin-right: 5px" clearable />
<el-input
v-model="equipmentDeploymentParams.jsMonthPrice"
autocomplete="off"
style="width: 360px; margin-right: 5px"
clearable />
/
</el-form-item>
<el-form-item label="机手日费用">
<el-input autocomplete="off" style="width: 360px; margin-right: 5px" clearable />
<el-input
v-model="equipmentDeploymentParams.jsDayPrice"
autocomplete="off"
style="width: 360px; margin-right: 5px"
clearable />
/
</el-form-item>
<el-form-item label="详细说明">
<el-input autocomplete="off" style="width: 360px; margin-right: 5px" clearable />
<el-input
v-model="equipmentDeploymentParams.description"
autocomplete="off"
style="width: 360px; margin-right: 5px"
clearable
type="textarea"
:rows="5" />
/
</el-form-item>
<el-form-item label="设备图片">
<el-input autocomplete="off" clearable />
<uploadComponent
:maxLimit="3"
listType="picture-card"
:acceptTypeList="['.jpg', '.jpeg', '.png']"
width="120px"
height="120px">
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
</template>
</uploadComponent>
至少一张最多八张
设备图片格式为jpgpng和gif文件不得超过5M否则将无法上传请从前后左右四个方向以及从主要工作部件内部结构等方面展示设备
</el-form-item>