|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div class="club-device">
|
|
|
- <template v-for="formItem in formList">
|
|
|
+ <template v-for="(formItem, index) in formList">
|
|
|
<div :key="formItem.uid" class="device-section">
|
|
|
<span
|
|
|
class="remove-btn"
|
|
@@ -9,96 +9,136 @@
|
|
|
>删除这台设备</span
|
|
|
>
|
|
|
<el-form :model="formItem" :rules="rules" ref="form">
|
|
|
- <el-form-item prop="productName" :label="`设备名称${formItem.uuid}:`">
|
|
|
- <el-select
|
|
|
- v-model="formItem.productName"
|
|
|
- filterable
|
|
|
- allow-create
|
|
|
- placeholder="请输入新设备名称或选择已有设备"
|
|
|
- @change="onProductNameChange(formItem, $event)"
|
|
|
+ <el-form-item label="认证方式:">
|
|
|
+ <el-radio-group
|
|
|
+ v-model="formItem.authType"
|
|
|
+ @change="onAuthTypeChange(formItem, index)"
|
|
|
>
|
|
|
- <el-option
|
|
|
- v-for="item in deviceList"
|
|
|
- :key="item.productTypeId"
|
|
|
- :label="item.name"
|
|
|
- :value="item.productTypeId"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="productImage" label="设备图片:">
|
|
|
- <br />
|
|
|
- <el-input v-show="false" v-model="formItem.productImage"></el-input>
|
|
|
- <SimpleUploadImage
|
|
|
- :disabled="Boolean(formItem.productTypeId)"
|
|
|
- :limit="1"
|
|
|
- :image-list="formItem.productImageList"
|
|
|
- :before-upload="beforeProductImageUpload"
|
|
|
- @success="uploadProductImageSuccess(formItem, $event)"
|
|
|
- @remove="handleProductImageRemove(formItem, $event)"
|
|
|
- />
|
|
|
+ <el-radio :label="1">新设备认证</el-radio>
|
|
|
+ <el-radio :label="2">关联已认证设备</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="所属品牌:" prop="brandId" v-if="editPrams">
|
|
|
- <el-select v-model="formItem.brandId" placeholder="请选择品牌">
|
|
|
- <el-option
|
|
|
- v-for="item in brandList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
+ <template
|
|
|
+ v-if="
|
|
|
+ formItem.authType === 1 ||
|
|
|
+ (formItem.authType === 2 && formItem.snCode)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-form-item
|
|
|
+ prop="productName"
|
|
|
+ :label="`设备名称${formItem.uuid}:`"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="formItem.productName"
|
|
|
+ filterable
|
|
|
+ allow-create
|
|
|
+ placeholder="请输入新设备名称或选择已有设备"
|
|
|
+ @change="onProductNameChange(formItem, $event)"
|
|
|
+ clearable
|
|
|
+ :disabled="formItem.authType === 2"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in deviceList"
|
|
|
+ :key="item.productTypeId"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.productTypeId"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="productImage" label="设备图片:">
|
|
|
+ <br />
|
|
|
+ <el-input
|
|
|
+ v-show="false"
|
|
|
+ v-model="formItem.productImage"
|
|
|
+ ></el-input>
|
|
|
+ <SimpleUploadImage
|
|
|
+ :disabled="Boolean(formItem.productTypeId)"
|
|
|
+ :limit="1"
|
|
|
+ :image-list="formItem.productImageList"
|
|
|
+ :before-upload="beforeProductImageUpload"
|
|
|
+ @success="uploadProductImageSuccess(formItem, $event)"
|
|
|
+ @remove="handleProductImageRemove(formItem, $event)"
|
|
|
/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="purchaseWay" label="购买渠道:">
|
|
|
- <el-input
|
|
|
- placeholder="请输入购买渠道"
|
|
|
- v-model="formItem.purchaseWay"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="invoiceImage" label="发票:">
|
|
|
- <br />
|
|
|
- <el-input v-show="false" v-model="formItem.invoiceImage"></el-input>
|
|
|
- <SimpleUploadImage
|
|
|
- :limit="1"
|
|
|
- :image-list="formItem.invoiceImageList"
|
|
|
- :before-upload="beforeInvoiceImageUpload"
|
|
|
- @success="uploadInvoiceImageSuccess(formItem, $event)"
|
|
|
- @remove="handleInvoiceImageRemove(formItem, $event)"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="snCode" label="设备SN码:">
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="所属品牌:" prop="infoId" v-if="editPrams">
|
|
|
+ <el-select
|
|
|
+ v-model="formItem.infoId"
|
|
|
+ placeholder="请选择品牌"
|
|
|
+ :disabled="formItem.authType === 2"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in brandList"
|
|
|
+ :key="item.infoId"
|
|
|
+ :label="item.brandName"
|
|
|
+ :value="item.infoId"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="purchaseWay" label="购买渠道:">
|
|
|
+ <el-input
|
|
|
+ placeholder="请输入购买渠道"
|
|
|
+ v-model="formItem.purchaseWay"
|
|
|
+ :disabled="formItem.authType === 2"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="invoiceImage" label="发票:">
|
|
|
+ <br />
|
|
|
+ <el-input
|
|
|
+ v-show="false"
|
|
|
+ v-model="formItem.invoiceImage"
|
|
|
+ ></el-input>
|
|
|
+ <SimpleUploadImage
|
|
|
+ :disabled="formItem.authType === 2"
|
|
|
+ :limit="1"
|
|
|
+ :image-list="formItem.invoiceImageList"
|
|
|
+ :before-upload="beforeInvoiceImageUpload"
|
|
|
+ @success="uploadInvoiceImageSuccess(formItem, $event)"
|
|
|
+ @remove="handleInvoiceImageRemove(formItem, $event)"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ <el-form-item prop="snCode" :label="`设备SN码${formItem.uuid}:`">
|
|
|
<el-input
|
|
|
- placeholder="请输入设备SN码"
|
|
|
- v-model="formItem.snCode"
|
|
|
+ :placeholder="
|
|
|
+ formItem.authType === 1
|
|
|
+ ? '请输入设备SN码'
|
|
|
+ : '请输入已认证过的设备SN码'
|
|
|
+ "
|
|
|
+ @blur="onSnCodeBlur(formItem)"
|
|
|
+ v-model.lazy="formItem.snCode"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item prop="paramList" label="设备参数:">
|
|
|
- <br />
|
|
|
- <div class="device-param-list">
|
|
|
- <span class="add-param" @click="insertParam(formItem)"
|
|
|
- >添加参数</span
|
|
|
- >
|
|
|
- <template v-for="(param, index) in formItem.paramList">
|
|
|
- <div :key="index">
|
|
|
- <div class="param flex justify-between mb-4">
|
|
|
- <el-input
|
|
|
- style="width: 40%"
|
|
|
- placeholder="例如:品牌"
|
|
|
- class="mr-2"
|
|
|
- v-model="param.paramName"
|
|
|
- ></el-input>
|
|
|
- <el-input
|
|
|
- placeholder="请输入参数信息"
|
|
|
- v-model="param.paramContent"
|
|
|
- ></el-input>
|
|
|
- <span
|
|
|
- class="remove el-icon-close"
|
|
|
- @click="removeParam(formItem, index)"
|
|
|
- v-if="formItem.paramList.length > 4"
|
|
|
- ></span>
|
|
|
+ <template v-if="formItem.authType === 1">
|
|
|
+ <el-form-item prop="paramList" label="设备参数:" v-if="editPrams">
|
|
|
+ <br />
|
|
|
+ <div class="device-param-list">
|
|
|
+ <span class="add-param" @click="insertParam(formItem)"
|
|
|
+ >添加参数</span
|
|
|
+ >
|
|
|
+ <template v-for="(param, index) in formItem.paramList">
|
|
|
+ <div :key="index">
|
|
|
+ <div class="param flex justify-between mb-4">
|
|
|
+ <el-input
|
|
|
+ style="width: 40%"
|
|
|
+ placeholder="例如:品牌"
|
|
|
+ class="mr-2"
|
|
|
+ v-model="param.paramName"
|
|
|
+ ></el-input>
|
|
|
+ <el-input
|
|
|
+ placeholder="请输入参数信息"
|
|
|
+ v-model="param.paramContent"
|
|
|
+ ></el-input>
|
|
|
+ <span
|
|
|
+ class="remove el-icon-close"
|
|
|
+ @click="removeParam(formItem, index)"
|
|
|
+ v-if="formItem.paramList.length > 4"
|
|
|
+ ></span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
</el-form>
|
|
|
<el-divider></el-divider>
|
|
|
</div>
|
|
@@ -168,7 +208,7 @@ export default {
|
|
|
productImage: [
|
|
|
{ required: true, message: '设备图片不能为空', trigger: ['change'] },
|
|
|
],
|
|
|
- brandId: [
|
|
|
+ infoId: [
|
|
|
{ required: true, message: '所属品牌不能为空', trigger: ['change'] },
|
|
|
],
|
|
|
snCode: [
|
|
@@ -193,11 +233,14 @@ export default {
|
|
|
invoiceImage: [
|
|
|
{ required: true, message: '请上传发票', trigger: ['change'] },
|
|
|
],
|
|
|
+ authType: [
|
|
|
+ { required: true, message: '请选择认证方式', trigger: ['change'] },
|
|
|
+ ],
|
|
|
},
|
|
|
formList: [],
|
|
|
brandList: [],
|
|
|
deviceList: [],
|
|
|
- editPrams: true
|
|
|
+ editPrams: true,
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -212,6 +255,47 @@ export default {
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
+ // sn码输入框是去焦点
|
|
|
+ async onSnCodeBlur(formItem) {
|
|
|
+ if (!formItem.authType === 1) return
|
|
|
+ if (!formItem.snCode) return
|
|
|
+ try {
|
|
|
+ const res = await this.$http.api.fetchDetialBySnCode({
|
|
|
+ snCode: formItem.snCode,
|
|
|
+ })
|
|
|
+ formItem.invoiceImage = res.data.invoiceImage
|
|
|
+ formItem.purchaseWay = res.data.purchaseWay
|
|
|
+ formItem.productTypeId = res.data.productTypeId
|
|
|
+ formItem.productName = res.data.productName
|
|
|
+ formItem.infoId = res.data.infoId
|
|
|
+ formItem.productImage = res.data.productImage
|
|
|
+ if (res.data.invoiceImage) {
|
|
|
+ formItem.invoiceImageList = [
|
|
|
+ { name: '发票', url: res.data.invoiceImage },
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ if (res.data.productImage) {
|
|
|
+ formItem.productImageList = [
|
|
|
+ { name: '产品图片', url: res.data.productImage },
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 认证方式切换
|
|
|
+ onAuthTypeChange(formItem, index) {
|
|
|
+ formItem.purchaseWay = ''
|
|
|
+ formItem.invoiceImage = ''
|
|
|
+ formItem.productName = ''
|
|
|
+ formItem.productTypeId = ''
|
|
|
+ formItem.productImageList = []
|
|
|
+ formItem.invoiceImageList = []
|
|
|
+ formItem.paramList = this.initParams()
|
|
|
+ this.$refs.form[index]?.resetFields()
|
|
|
+ },
|
|
|
+
|
|
|
// 表单验证
|
|
|
validate() {
|
|
|
this.$emit('step', this.formatFormList())
|
|
@@ -233,12 +317,13 @@ export default {
|
|
|
},
|
|
|
]
|
|
|
obj.uuid = ++this.uuid
|
|
|
+ obj.authType = formData.authType
|
|
|
obj.productImageList = productImageList
|
|
|
obj.invoiceImageList = invoiceImageList
|
|
|
obj.productImage = formData.productImage
|
|
|
obj.productName = formData.productName
|
|
|
obj.snCode = formData.snCode
|
|
|
- obj.brandId = formData.brandId
|
|
|
+ obj.infoId = formData.infoId
|
|
|
obj.productId = formData.productId
|
|
|
obj.productTypeId = formData.productTypeId
|
|
|
obj.purchaseWay = formData.purchaseWay
|
|
@@ -252,9 +337,10 @@ export default {
|
|
|
this.formList.forEach((formItem) => {
|
|
|
const obj = {}
|
|
|
obj.productImage = formItem.productImage
|
|
|
+ obj.authType = formItem.authType
|
|
|
obj.productName = formItem.productName
|
|
|
obj.snCode = formItem.snCode
|
|
|
- obj.brandId = formItem.brandId
|
|
|
+ obj.infoId = formItem.infoId
|
|
|
obj.productId = formItem.productId
|
|
|
obj.source = 2
|
|
|
obj.productTypeId = formItem.productTypeId
|
|
@@ -278,12 +364,13 @@ export default {
|
|
|
productImage: '', // 设备图片
|
|
|
productName: '', // 设备名称
|
|
|
snCode: '', // 设备SN码
|
|
|
- brandId: '',
|
|
|
+ infoId: '',
|
|
|
productTypeId: '',
|
|
|
purchaseWay: '', // 购买渠道
|
|
|
invoiceImage: '', // 发票
|
|
|
productImageList: [],
|
|
|
invoiceImageList: [],
|
|
|
+ authType: 1,
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -411,10 +498,20 @@ export default {
|
|
|
border-color: themed('color');
|
|
|
}
|
|
|
}
|
|
|
+ .el-radio__input.is-checked + .el-radio__label {
|
|
|
+ @include themify($themes) {
|
|
|
+ color: themed('color');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-radio__input.is-checked .el-radio__inner {
|
|
|
+ @include themify($themes) {
|
|
|
+ background-color: themed('color');
|
|
|
+ border-color: themed('color');
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// pc端
|
|
|
@media screen and (min-width: 768px) {
|
|
|
.el-select {
|