|
|
@@ -180,7 +180,7 @@
|
|
|
icon="el-icon-plus"
|
|
|
size="mini"
|
|
|
@click="handleAdd"
|
|
|
- v-hasPermi="['store:storeProduct:add']"
|
|
|
+ v-hasPermi="['store:platformProduct:add']"
|
|
|
>新增
|
|
|
</el-button>
|
|
|
</el-col>
|
|
|
@@ -191,7 +191,7 @@
|
|
|
size="mini"
|
|
|
:disabled="multiple"
|
|
|
@click="handleUpdate"
|
|
|
- v-hasPermi="['store:storeProduct:edit']"
|
|
|
+ v-hasPermi="['store:platformProduct:edit']"
|
|
|
>修改
|
|
|
</el-button>
|
|
|
</el-col>
|
|
|
@@ -202,7 +202,7 @@
|
|
|
size="mini"
|
|
|
:disabled="multiple"
|
|
|
@click="handleDelete"
|
|
|
- v-hasPermi="['store:storeProduct:remove']"
|
|
|
+ v-hasPermi="['store:platformProduct:remove']"
|
|
|
>删除
|
|
|
</el-button>
|
|
|
</el-col>
|
|
|
@@ -213,7 +213,7 @@
|
|
|
icon="el-icon-upload2"
|
|
|
size="mini"
|
|
|
@click="handleImport"
|
|
|
- v-hasPermi="['store:storeProduct:import']"
|
|
|
+ v-hasPermi="['store:platformProduct:import']"
|
|
|
>导入
|
|
|
</el-button>
|
|
|
</el-col>
|
|
|
@@ -289,12 +289,20 @@
|
|
|
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
|
|
|
<template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-view"
|
|
|
+ v-hasPermi="['store:platformProduct:query']"
|
|
|
+ @click="handleDetail(scope.row)"
|
|
|
+ >详情
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
|
size="mini"
|
|
|
type="text"
|
|
|
icon="el-icon-edit"
|
|
|
@click="handleUpdate(scope.row)"
|
|
|
- v-hasPermi="['store:storeProduct:edit']"
|
|
|
+ v-hasPermi="['store:platformProduct:edit']"
|
|
|
>修改
|
|
|
</el-button>
|
|
|
<el-button
|
|
|
@@ -302,7 +310,7 @@
|
|
|
type="text"
|
|
|
icon="el-icon-postcard"
|
|
|
@click="showOperLog(scope.row)"
|
|
|
- v-hasPermi="['his:storeProduct:auditLog']"
|
|
|
+ v-hasPermi="['his:platformProduct:auditLog']"
|
|
|
>审核记录
|
|
|
</el-button>
|
|
|
<el-button
|
|
|
@@ -310,7 +318,7 @@
|
|
|
type="text"
|
|
|
icon="el-icon-delete"
|
|
|
@click="handleDelete(scope.row)"
|
|
|
- v-hasPermi="['store:storeProduct:remove']"
|
|
|
+ v-hasPermi="['store:platformProduct:remove']"
|
|
|
>删除
|
|
|
</el-button>
|
|
|
<el-button
|
|
|
@@ -318,7 +326,7 @@
|
|
|
type="text"
|
|
|
icon="el-icon-document-copy"
|
|
|
@click="productCopy(scope.row)"
|
|
|
- v-hasPermi="['his:storeProduct:copyProduct']"
|
|
|
+ v-hasPermi="['his:platformProduct:copyProduct']"
|
|
|
>一键复制
|
|
|
</el-button>
|
|
|
</template>
|
|
|
@@ -375,14 +383,14 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="商品分类" prop="cateId">
|
|
|
<treeselect v-model="form.cateId" :options="categoryOptions" :normalizer="normalizer"
|
|
|
- placeholder="请选择上级分类" @input="onCategoryOrStoreChange"/>
|
|
|
+ placeholder="请选择上级分类" @input="onCategoryOrStoreChange" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="商品类型" prop="productType">
|
|
|
<el-select style="width: 240px" v-model="form.productType" placeholder="请选择商品类型" clearable
|
|
|
- size="small">
|
|
|
+ size="small" :disabled="isDetail">
|
|
|
<el-option
|
|
|
v-for="item in productTypeOptions"
|
|
|
:key="item.dictValue"
|
|
|
@@ -397,12 +405,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="商品名称" prop="productName">
|
|
|
- <el-input v-model="form.productName" @blur="handleProductNameBlur" placeholder="请输入商品名称" @input="onProductNameInput"/>
|
|
|
+ <el-input v-model="form.productName" @blur="handleProductNameBlur" placeholder="请输入商品名称" @input="onProductNameInput" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="通用名称-" prop="commonName" v-if="!isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.commonName" placeholder="请输入通用名称(没有请填写-)"/>
|
|
|
+ <el-input v-model="form.commonName" placeholder="请输入通用名称(没有请填写-)" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -410,13 +418,13 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="存储条件" prop="storageConditions" v-if="!isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.storageConditions" placeholder="请输入存储条件"/>
|
|
|
+ <el-input v-model="form.storageConditions" placeholder="请输入存储条件" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="器械编码" prop="medicalDeviceCode" v-if="showMedicalDeviceCode">
|
|
|
- <el-input v-model="form.medicalDeviceCode" placeholder="请输入器械编码" @blur="onCategoryOrStoreChange" style="width: calc(100% - 120px);"/>
|
|
|
+ <el-input v-model="form.medicalDeviceCode" placeholder="请输入器械编码" @blur="onCategoryOrStoreChange" style="width: calc(100% - 120px);" :disabled="isDetail"/>
|
|
|
<el-button type="primary" @click="showExemptDeviceDialog" style="margin-left: 10px;" v-if="shouldShowExemptDeviceButton">显示器免</el-button>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -425,7 +433,7 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="关键字" prop="keyword">
|
|
|
- <el-input v-model="form.keyword" placeholder="请输入关键字"/>
|
|
|
+ <el-input v-model="form.keyword" placeholder="请输入关键字" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
@@ -451,13 +459,15 @@
|
|
|
</el-row>
|
|
|
<div v-if="form.isDrug === '1' ">
|
|
|
<el-form-item label="头图展示" prop="drugImage">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<Material v-model="drugImageArr" type="image" :num="1" :width="150" :height="150"/>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
<div v-if="medicalMallConfig.isMedicalMall">
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item :label="isMedicalDeviceCategory ? '注册证号/备案凭证号' : '批准文号'" prop="drugRegCertNo">
|
|
|
- <el-input v-model="form.drugRegCertNo" :placeholder="isMedicalDeviceCategory ?'请输入注册证号/备案凭证号' : '请输入批准文号'"/>
|
|
|
+ <el-input v-model="form.drugRegCertNo" :placeholder="isMedicalDeviceCategory ?'请输入注册证号/备案凭证号' : '请输入批准文号'" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -465,12 +475,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="剂型" prop="dosageForm" v-if="!isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.dosageForm" placeholder="请输入剂型"/>
|
|
|
+ <el-input v-model="form.dosageForm" placeholder="请输入剂型" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="单价" prop="unitPrice">
|
|
|
- <el-input v-model="form.unitPrice" placeholder="请输入单价" type="number"/>
|
|
|
+ <el-input v-model="form.unitPrice" placeholder="请输入单价" type="number" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -478,12 +488,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item :label="isMedicalDeviceCategory ? '规格/型号' : '包装规格'" prop="prescribeSpec">
|
|
|
- <el-input v-model="form.prescribeSpec" :placeholder="isMedicalDeviceCategory ? '请输入规格/型号':'请输入包装规格'"/>
|
|
|
+ <el-input v-model="form.prescribeSpec" :placeholder="isMedicalDeviceCategory ? '请输入规格/型号':'请输入包装规格'" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="规格" v-if="!isMedicalDeviceCategory" prop="specification">
|
|
|
- <el-input v-model="form.specification" placeholder="请输入规格"/>
|
|
|
+ <el-input v-model="form.specification" placeholder="请输入规格" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -491,12 +501,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item :label="isMedicalDeviceCategory ? '注册人/备案人' : '上市许可持有人'" prop="mah">
|
|
|
- <el-input v-model="form.mah" :placeholder= "isMedicalDeviceCategory ? '请输入注册人/备案人' : '请输入上市许可持有人'"/>
|
|
|
+ <el-input v-model="form.mah" :placeholder= "isMedicalDeviceCategory ? '请输入注册人/备案人' : '请输入上市许可持有人'" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item :label="isMedicalDeviceCategory ? '注册人/备案人地址' : '持有人地址'" prop="mahAddress">
|
|
|
- <el-input v-model="form.mahAddress" :placeholder= "isMedicalDeviceCategory ? '请输入注册人/备案人地址' : '请输入持有人地址'"/>
|
|
|
+ <el-input v-model="form.mahAddress" :placeholder= "isMedicalDeviceCategory ? '请输入注册人/备案人地址' : '请输入持有人地址'" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -504,12 +514,12 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="生产企业" prop="manufacturer">
|
|
|
- <el-input v-model="form.manufacturer" placeholder="请输入生产企业"/>
|
|
|
+ <el-input v-model="form.manufacturer" placeholder="请输入生产企业" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="企业地址" prop="manufacturerAddress">
|
|
|
- <el-input v-model="form.manufacturerAddress" placeholder="请输入生产企业地址"/>
|
|
|
+ <el-input v-model="form.manufacturerAddress" placeholder="请输入生产企业地址" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -526,23 +536,23 @@
|
|
|
<!-- </el-form-item>-->
|
|
|
|
|
|
<el-form-item label="生产许可证或者备案凭证编号" prop="prodLicenseNo" v-if="isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.prodLicenseNo" type="textarea" placeholder="请输入生产许可证或者备案凭证编号"/>
|
|
|
+ <el-input v-model="form.prodLicenseNo" type="textarea" placeholder="请输入生产许可证或者备案凭证编号" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="产品技术要求编号" prop="prodTechReqNo" v-if="isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.prodTechReqNo" type="textarea" placeholder="请输入产品技术要求编号"/>
|
|
|
+ <el-input v-model="form.prodTechReqNo" type="textarea" placeholder="请输入产品技术要求编号" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="结构及组成" prop="productStructure" v-if="isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.productStructure" type="textarea" placeholder="请输入结构及组成"/>
|
|
|
+ <el-input v-model="form.productStructure" type="textarea" placeholder="请输入结构及组成" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="功能主治/适用范围" prop="indications">
|
|
|
- <el-input v-model="form.indications" type="textarea" placeholder="请输入功能主治/适用范围"/>
|
|
|
+ <el-input v-model="form.indications" type="textarea" placeholder="请输入功能主治/适用范围" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="禁忌症" prop="contraindications">
|
|
|
- <el-input v-model="form.contraindications" type="textarea" placeholder="请输入禁忌症"/>
|
|
|
+ <el-input v-model="form.contraindications" type="textarea" placeholder="请输入禁忌症" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="成分" prop="ingredient" v-if="!isMedicalDeviceCategory">
|
|
|
@@ -552,46 +562,51 @@
|
|
|
placeholder="请输入成分"
|
|
|
@blur="handleIngredientBlur"
|
|
|
@input="onIngredientInput"
|
|
|
+ :disabled="isDetail"
|
|
|
/>
|
|
|
<div v-if="ingredientError" class="el-form-item__error">{{ ingredientError }}</div>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="用法用量" prop="dosage" v-if="!isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.dosage" type="textarea" placeholder="请输入用法用量"/>
|
|
|
+ <el-input v-model="form.dosage" type="textarea" placeholder="请输入用法用量" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="不良反应" prop="adverseReactions" v-if="!isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.adverseReactions" type="textarea" placeholder="请输入不良反应"/>
|
|
|
+ <el-input v-model="form.adverseReactions" type="textarea" placeholder="请输入不良反应" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="注意事项" prop="precautions" v-if="!isMedicalDeviceCategory">
|
|
|
- <el-input v-model="form.precautions" type="textarea" placeholder="请输入注意事项"/>
|
|
|
+ <el-input v-model="form.precautions" type="textarea" placeholder="请输入注意事项" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-collapse-item>
|
|
|
</el-collapse>
|
|
|
</div>
|
|
|
<el-form-item label="说明书" prop="instructionManual">
|
|
|
- <editor ref="instructionManualRef" @on-text-change="updateInstructionManualText"/>
|
|
|
+ <editor ref="instructionManualRef" @on-text-change="updateInstructionManualText" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="商品简介" prop="productInfo">
|
|
|
- <el-input v-model="form.productInfo" type="textarea" :rows="2" placeholder="请输入商品简介"/>
|
|
|
+ <el-input v-model="form.productInfo" type="textarea" :rows="2" placeholder="请输入商品简介" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="商品图片" prop="image">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<Material v-model="imageArr" type="image" :num="1" :width="150" :height="150"/>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="轮播图" prop="sliderImage">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<Material v-model="photoArr" type="image" :num="10" :width="150" :height="150"/>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="商品规格:" props="specType">
|
|
|
- <el-radio-group v-model="form.specType">
|
|
|
+ <el-radio-group v-model="form.specType" :disabled="isDetail">
|
|
|
<el-radio :label="0" class="radio">单规格</el-radio>
|
|
|
<el-radio :label="1">多规格</el-radio>
|
|
|
</el-radio-group>
|
|
|
@@ -602,13 +617,13 @@
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="选择规格:" prop="">
|
|
|
<div class="acea-row row-middle">
|
|
|
- <el-select v-model="form.selectRule" style="width: 23%;">
|
|
|
+ <el-select v-model="form.selectRule" style="width: 23%;" :disabled="isDetail">
|
|
|
<el-option v-for="(item, index) in ruleList" :value="item.ruleName" :key="index">{{
|
|
|
item.ruleName
|
|
|
}}
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
- <el-button style="margin-left:10px;" type="primary" class="mr20" @click="confirm">确认</el-button>
|
|
|
+ <el-button style="margin-left:10px;" type="primary" class="mr20" @click="confirm" v-if="!isDetail">确认</el-button>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -617,14 +632,14 @@
|
|
|
<el-form-item v-if="attrs!=null&&attrs.length!==0">
|
|
|
<div v-for="(item, index) in attrs" :key="index">
|
|
|
<div class="acea-row row-middle"><span class="mr5">{{ item.value }}</span>
|
|
|
- <i class="el-icon-circle-close" @click="handleRemoveRole(index)"></i>
|
|
|
+ <i v-if="!isDetail" class="el-icon-circle-close" @click="handleRemoveRole(index)"></i>
|
|
|
</div>
|
|
|
<div class="rulesBox">
|
|
|
<el-tag type="dot" closable color="primary" v-for="(j, indexn) in item.detail" :key="indexn"
|
|
|
- :name="j" class="mr20" @close="handleRemove2(item.detail,indexn)">{{ j }}
|
|
|
+ :name="j" class="mr20" @close="isDetail ? null : handleRemove2(item.detail,indexn)" :closable="!isDetail">{{ j }}
|
|
|
</el-tag>
|
|
|
<el-input placeholder="请输入属性名称" v-model="item.detail.attrsVal"
|
|
|
- style="width: 200px">
|
|
|
+ style="width: 200px" :disabled="isDetail">
|
|
|
<el-button slot="append" type="primary" @click="createAttr(item.detail.attrsVal,index)">添加
|
|
|
</el-button>
|
|
|
</el-input>
|
|
|
@@ -634,25 +649,25 @@
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="24" v-if="createBnt">
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" size="small" icon="md-add" @click="addBtn" class="mr15">添加新规格</el-button>
|
|
|
- <el-button type="success" size="small" @click="generate">立即生成</el-button>
|
|
|
+ <el-form-item v-if="createBnt">
|
|
|
+ <el-button type="primary" size="small" icon="md-add" @click="addBtn" class="mr15" v-if="!isDetail">添加新规格</el-button>
|
|
|
+ <el-button type="success" size="small" @click="generate" v-if="!isDetail">立即生成</el-button>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24" v-if="showIput">
|
|
|
<el-col :xl="6" :lg="9" :md="10" :sm="24" :xs="24">
|
|
|
<el-form-item label="规格:">
|
|
|
- <el-input placeholder="请输入规格" v-model="formDynamic.attrsName"/>
|
|
|
+ <el-input placeholder="请输入规格" v-model="formDynamic.attrsName" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xl="6" :lg="9" :md="10" :sm="24" :xs="24">
|
|
|
<el-form-item label="规格值:">
|
|
|
- <el-input v-model="formDynamic.attrsVal" placeholder="请输入规格值"/>
|
|
|
+ <el-input v-model="formDynamic.attrsVal" placeholder="请输入规格值" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xl="6" :lg="5" :md="10" :sm="24" :xs="24">
|
|
|
- <el-button type="primary" @click="createAttrName">确定</el-button>
|
|
|
- <el-button type="danger" @click="closeAttrName">取消</el-button>
|
|
|
+ <el-button type="primary" @click="createAttrName" v-if="!isDetail">确定</el-button>
|
|
|
+ <el-button type="danger" @click="closeAttrName" v-if="!isDetail">取消</el-button>
|
|
|
</el-col>
|
|
|
</el-col>
|
|
|
<!-- 多规格设置-->
|
|
|
@@ -666,17 +681,19 @@
|
|
|
:width="item.minWidth" :label="item.title" :property="item.slot" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.column.property == 'image'" align="center">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<single-img v-model="scope.row[scope.column.property]" type="image" :num="1" :width="60"
|
|
|
:height="60"/>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.property.indexOf('value') != -1" align="center">
|
|
|
{{ scope.row[scope.column.property] }}
|
|
|
</div>
|
|
|
<div v-else-if="scope.column.property == 'action'" align="center">
|
|
|
- <a @click="delAttrTable(scope.$index)" align="center">删除</a>
|
|
|
+ <a v-if="!isDetail" @click="delAttrTable(scope.$index)" align="center">删除</a>
|
|
|
</div>
|
|
|
<div v-else align="center">
|
|
|
- <el-input v-model="scope.row[scope.column.property]" align="center"/>
|
|
|
+ <el-input v-model="scope.row[scope.column.property]" align="center" :disabled="isDetail"/>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -693,42 +710,44 @@
|
|
|
<el-table :data="oneFormValidate" size="small" border>
|
|
|
<el-table-column prop="image" label="图片" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<single-img v-model="scope.row.image" type="image" :num="1" :width="60" :height="60"/>
|
|
|
</template>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="price" label="售价" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.price"/>
|
|
|
+ <el-input type="text" v-model="scope.row.price" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="agentPrice" label="代理价" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.agentPrice"/>
|
|
|
+ <el-input type="text" v-model="scope.row.agentPrice" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="cost" label="成本价" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.cost"/>
|
|
|
+ <el-input type="text" v-model="scope.row.cost" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="otPrice" label="原价" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.otPrice"/>
|
|
|
+ <el-input type="text" v-model="scope.row.otPrice" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="stock" label="库存" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.stock" maxlength="7"/>
|
|
|
+ <el-input type="text" v-model="scope.row.stock" maxlength="7" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="barCode" label="商品条码" width="130px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.barCode"/>
|
|
|
+ <el-input type="text" v-model="scope.row.barCode" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="barCode" label="组合编号" width="130px" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.groupBarCode"/>
|
|
|
+ <el-input type="text" v-model="scope.row.groupBarCode" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="weight" label="重量(KG)" align="center">
|
|
|
@@ -738,27 +757,27 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="volume" label="体积(m³)" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.volume"/>
|
|
|
+ <el-input type="text" v-model="scope.row.volume" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="volume" label="所需积分" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.integral"/>
|
|
|
+ <el-input type="text" v-model="scope.row.integral" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="volume" label="一级返佣" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.brokerage"/>
|
|
|
+ <el-input type="text" v-model="scope.row.brokerage" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="volume" label="二级返佣" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.brokerageTwo"/>
|
|
|
+ <el-input type="text" v-model="scope.row.brokerageTwo" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="volume" label="三级返佣" align="center">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-input type="text" v-model="scope.row.brokerageThree"/>
|
|
|
+ <el-input type="text" v-model="scope.row.brokerageThree" :disabled="isDetail"/>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
@@ -767,7 +786,7 @@
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="运费模板:" prop="tempId">
|
|
|
<div class="acea-row">
|
|
|
- <el-select v-model="form.tempId" class="mr20">
|
|
|
+ <el-select v-model="form.tempId" class="mr20" :disabled="isDetail">
|
|
|
<el-option v-for="(item,index) in templateList" :value="item.id" :key="index" :label="item.name">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
@@ -776,7 +795,7 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="商品详情" prop="description">
|
|
|
- <editor ref="myeditor" @on-text-change="updateText"/>
|
|
|
+ <editor ref="myeditor" @on-text-change="updateText" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
<el-row>
|
|
|
<el-col :span="8">
|
|
|
@@ -786,7 +805,8 @@
|
|
|
:label="item.dictValue"
|
|
|
v-for="item in isShowOptions"
|
|
|
:key="item.dictValue"
|
|
|
- v-if="item.dictValue === '0' || item.dictValue === '1'">
|
|
|
+ v-if="item.dictValue === '0' || item.dictValue === '1'"
|
|
|
+ :disabled="isDetail">
|
|
|
{{ item.dictLabel }}
|
|
|
</el-radio>
|
|
|
</el-radio-group>
|
|
|
@@ -794,14 +814,14 @@
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="是否热卖" prop="isHot">
|
|
|
- <el-radio-group v-model="form.isHot">
|
|
|
+ <el-radio-group v-model="form.isHot" :disabled="isDetail">
|
|
|
<el-radio :label="item.dictValue" v-for="item in isHotOptions">{{ item.dictLabel }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="猜你喜欢" prop="isGood">
|
|
|
- <el-radio-group v-model="form.isGood">
|
|
|
+ <el-radio-group v-model="form.isGood" :disabled="isDetail">
|
|
|
<el-radio :label="item.dictValue" v-for="item in isGoodOptions">{{ item.dictLabel }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
@@ -810,14 +830,14 @@
|
|
|
<el-row>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="精品推荐" prop="isBest">
|
|
|
- <el-radio-group v-model="form.isBest">
|
|
|
+ <el-radio-group v-model="form.isBest" :disabled="isDetail">
|
|
|
<el-radio :label="item.dictValue" v-for="item in isBestOptions">{{ item.dictLabel }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="新品首发" prop="isNew">
|
|
|
- <el-radio-group v-model="form.isNew">
|
|
|
+ <el-radio-group v-model="form.isNew" :disabled="isDetail">
|
|
|
<el-radio :label="item.dictValue" v-for="item in isNewOptions">{{ item.dictLabel }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
@@ -831,7 +851,7 @@
|
|
|
<el-row>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="商城展示" prop="isDisplay">
|
|
|
- <el-radio-group v-model="form.isDisplay">
|
|
|
+ <el-radio-group v-model="form.isDisplay" :disabled="isDetail">
|
|
|
<el-radio :label="item.dictValue" v-for="item in isDisplayOptions">{{ item.dictLabel }}</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
@@ -844,13 +864,13 @@
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="销量" prop="sales">
|
|
|
- <el-input-number :min="0" v-model="form.sales" placeholder="请输入销量"/>
|
|
|
+ <el-input-number :min="0" v-model="form.sales" placeholder="请输入销量" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
<el-form-item label="推广分类" prop="tuiCateId">
|
|
|
- <el-select style="width: 240px" v-model="form.tuiCateId" placeholder="请选择推广分类" clearable size="small">
|
|
|
+ <el-select style="width: 240px" v-model="form.tuiCateId" placeholder="请选择推广分类" clearable size="small" :disabled="isDetail">
|
|
|
<el-option
|
|
|
v-for="item in productTuiCateOptions"
|
|
|
:key="item.dictValue"
|
|
|
@@ -863,7 +883,7 @@
|
|
|
<div v-if="form.isDrug === '1'">
|
|
|
<el-form-item v-if="form.isShow==='1'" label="审核说明" prop="reviewAudit">
|
|
|
<el-select style="width: 240px" v-model="form.reviewAudit" placeholder="请选择审核说明" clearable
|
|
|
- size="small">
|
|
|
+ size="small" :disabled="isDetail">
|
|
|
<el-option
|
|
|
v-for="item in reviewAuditOptions"
|
|
|
:key="item.dictValue"
|
|
|
@@ -873,16 +893,18 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="非首营链接" prop="businessLink" v-if="form.reviewAudit === '1'">
|
|
|
- <el-input :min="0" v-model="form.businessLink" placeholder="请输入非首营链接"/>
|
|
|
+ <el-input :min="0" v-model="form.businessLink" placeholder="请输入非首营链接" :disabled="isDetail"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<!-- 生产企业营业执照 -->
|
|
|
<el-form-item v-if="form.isShow === '1'" label="生产企业营业执照" prop="business">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<Material v-model="businessArr" type="image" :num="1" :width="150" :height="150"/>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="form.isShow === '1' && businessArr.length > 0" label="生产企业营业执照是否长期有效" prop="isBusinessPermanent">
|
|
|
- <el-switch v-model="businessValue" active-color="#13ce66" inactive-color="#ff4949" />
|
|
|
+ <el-switch v-model="businessValue" active-color="#13ce66" inactive-color="#ff4949" :disabled="isDetail" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="form.isShow === '1' && businessArr.length > 0 && !businessValue" prop="businessExpire">
|
|
|
@@ -898,11 +920,13 @@
|
|
|
|
|
|
<!--生产企业的生产许可证/备案凭证-->
|
|
|
<el-form-item v-if="form.isShow === '1'" label="生产企业的生产许可证/备案凭证" prop="license">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<Material v-model="licenseArr" type="image" :num="1" :width="150" :height="150"/>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="form.isShow === '1' && licenseArr.length > 0" label="生产企业的生产许可证/备案凭证是否长期有效" prop="isLicensePermanent">
|
|
|
- <el-switch v-model="licenseValue" active-color="#13ce66" inactive-color="#ff4949" />
|
|
|
+ <el-switch v-model="licenseValue" active-color="#13ce66" inactive-color="#ff4949" :disabled="isDetail" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="form.isShow === '1' && licenseArr.length > 0 && !licenseValue" prop="licenseExpire">
|
|
|
@@ -912,17 +936,20 @@
|
|
|
value-format="yyyy-MM-dd"
|
|
|
range-separator="至"
|
|
|
start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期">
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :disabled="isDetail">
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
|
|
|
<!--商品注册证/备案凭证-->
|
|
|
<el-form-item v-if="form.isShow === '1'" label="商品注册证/备案凭证" prop="certificate">
|
|
|
+ <template v-if="!isDetail">
|
|
|
<Material v-model="certificateArr" type="image" :num="1" :width="150" :height="150"/>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="form.isShow === '1' && licenseArr.length > 0" label="商品注册证/备案凭证是否长期有效" prop="isCertificatePermanent">
|
|
|
- <el-switch v-model="certificateValue" active-color="#13ce66" inactive-color="#ff4949" />
|
|
|
+ <el-switch v-model="certificateValue" active-color="#13ce66" inactive-color="#ff4949" :disabled="isDetail" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item v-if="form.isShow === '1' && certificateArr.length > 0 && !certificateValue" prop="certificateExpire">
|
|
|
@@ -932,7 +959,8 @@
|
|
|
value-format="yyyy-MM-dd"
|
|
|
range-separator="至"
|
|
|
start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期">
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :disabled="isDetail">
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
@@ -951,8 +979,8 @@
|
|
|
<!-- </el-form-item>-->
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
- <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
- <el-button @click="cancel">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm" v-if="!isDetail">确 定</el-button>
|
|
|
+ <el-button @click="cancel">{{ isDetail ? '关 闭' : '取 消' }}</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
|
|
|
@@ -1486,7 +1514,8 @@ export default {
|
|
|
title: "",
|
|
|
// 是否显示弹出层
|
|
|
open: false,
|
|
|
-
|
|
|
+ // 是否详情查看模式(复用修改弹窗,只读)
|
|
|
+ isDetail: false,
|
|
|
// 查询参数
|
|
|
queryParams: {
|
|
|
pageNum: 1,
|
|
|
@@ -2154,6 +2183,7 @@ export default {
|
|
|
},
|
|
|
// 取消按钮
|
|
|
cancel() {
|
|
|
+ this.isDetail = false;
|
|
|
this.open = false;
|
|
|
this.reset();
|
|
|
},
|
|
|
@@ -2302,6 +2332,7 @@ export default {
|
|
|
this.reset();
|
|
|
this.clearExpireErrors(); // 清空过期错误提示
|
|
|
this.isFormInitialized = true; // 新增时直接设置为已初始化
|
|
|
+ this.isDetail = false;
|
|
|
this.open = true;
|
|
|
this.title = "添加商品";
|
|
|
setTimeout(() => {
|
|
|
@@ -2457,6 +2488,139 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
+ /** 详情查看按钮操作 */
|
|
|
+ handleDetail(row) {
|
|
|
+ this.reset();
|
|
|
+ this.isDetail = true;
|
|
|
+ var that = this;
|
|
|
+ this.clearExpireErrors();
|
|
|
+ const productId = row.productId || this.ids
|
|
|
+ getStoreProduct(productId).then(response => {
|
|
|
+ this.open = true;
|
|
|
+ this.title = "查看商品详情";
|
|
|
+ this.form = response.data;
|
|
|
+ this.form.isShow = response.data.isShow.toString();
|
|
|
+ this.form.isHot = response.data.isHot.toString();
|
|
|
+ this.form.isGood = response.data.isGood.toString();
|
|
|
+ this.form.isBest = response.data.isBest.toString();
|
|
|
+ this.form.isNew = response.data.isNew.toString();
|
|
|
+ this.form.productType = response.data.productType.toString();
|
|
|
+ this.form.isDisplay = response.data.isDisplay.toString();
|
|
|
+
|
|
|
+ if (this.form.business) {
|
|
|
+ this.businessArr = this.form.business.split(',');
|
|
|
+ }
|
|
|
+ if (this.form.license) {
|
|
|
+ this.licenseArr = this.form.license.split(',');
|
|
|
+ }
|
|
|
+ if (this.form.certificate) {
|
|
|
+ this.certificateArr = this.form.certificate.split(',');
|
|
|
+ }
|
|
|
+ if (this.form.voucher) {
|
|
|
+ this.voucherArr = this.form.voucher.split(',');
|
|
|
+ }
|
|
|
+ if (this.form.gmpAuth) {
|
|
|
+ this.gmpAuthArr = this.form.gmpAuth.split(',');
|
|
|
+ }
|
|
|
+ if (this.form.image != null) {
|
|
|
+ this.imageArr = this.form.image.split(",");
|
|
|
+ }
|
|
|
+ if (this.form.sliderImage != null) {
|
|
|
+ this.photoArr = this.form.sliderImage.split(",");
|
|
|
+ }
|
|
|
+ if (this.form.drugImage != null) {
|
|
|
+ this.drugImageArr = this.form.drugImage.split(",");
|
|
|
+ }
|
|
|
+ if (this.form.qualificationCertificate != null) {
|
|
|
+ this.qualificationArr = this.form.qualificationCertificate.split(",");
|
|
|
+ }
|
|
|
+ if (this.form.tuiCateId != null) {
|
|
|
+ this.form.tuiCateId = response.data.tuiCateId.toString();
|
|
|
+ }
|
|
|
+ if (this.form.reviewAudit != null) {
|
|
|
+ this.form.reviewAudit = response.data.reviewAudit.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ this.form.isDrug = response.data.isDrug === 0 ? "0" :
|
|
|
+ (response.data.isDrug ? response.data.isDrug.toString() : "1");
|
|
|
+
|
|
|
+ this.businessValue = this.form.isBusinessPermanent == 1;
|
|
|
+ this.licenseValue = this.form.isLicensePermanent == 1;
|
|
|
+ this.certificateValue = this.form.isCertificatePermanent == 1;
|
|
|
+
|
|
|
+ const expireFieldMap = [
|
|
|
+ { expireKey: 'businessExpire', startKey: 'businessStart', endKey: 'businessEnd' },
|
|
|
+ { expireKey: 'licenseExpire', startKey: 'licenseStart', endKey: 'licenseEnd' },
|
|
|
+ { expireKey: 'certificateExpire', startKey: 'certificateStart', endKey: 'certificateEnd' },
|
|
|
+ { expireKey: 'voucherExpire', startKey: 'voucherStart', endKey: 'voucherEnd' },
|
|
|
+ {
|
|
|
+ expireKey: 'qualificationExpire',
|
|
|
+ startKey: 'qualificationCertificateStart',
|
|
|
+ endKey: 'qualificationCertificateEnd'
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ expireFieldMap.forEach(item => {
|
|
|
+ const startVal = response.data[item.startKey];
|
|
|
+ const endVal = response.data[item.endKey];
|
|
|
+ if (startVal && endVal) {
|
|
|
+ this.$set(this.form, item.expireKey, [startVal, endVal]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (response.attrs != null) {
|
|
|
+ this.attrs = [];
|
|
|
+ response.attrs.forEach(function(item, index) {
|
|
|
+ var data = { value: item.attrName, detail: item.attrValues.split(',') }
|
|
|
+ that.attrs.push(data);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ const dateFields = [
|
|
|
+ 'qualificationExpire'
|
|
|
+ ];
|
|
|
+ dateFields.forEach(field => {
|
|
|
+ const startField = field.replace('Expire', 'CertificateStart');
|
|
|
+ const endField = field.replace('Expire', 'CertificateEnd');
|
|
|
+ if (this.form[startField] && this.form[endField]) {
|
|
|
+ this.$set(this.form, field, [this.form[startField], this.form[endField]]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ setTimeout(() => {
|
|
|
+ that.generate();
|
|
|
+ }, 200);
|
|
|
+ if (this.form.specType === 0) {
|
|
|
+ that.manyFormValidate = [];
|
|
|
+ } else {
|
|
|
+ that.createBnt = true;
|
|
|
+ that.oneFormValidate = [
|
|
|
+ {
|
|
|
+ image: '',
|
|
|
+ price: 0,
|
|
|
+ agentPrice: 0,
|
|
|
+ cost: 0,
|
|
|
+ otPrice: 0,
|
|
|
+ stock: 0,
|
|
|
+ barCode: '',
|
|
|
+ weight: 0,
|
|
|
+ volume: 0,
|
|
|
+ integral: 0,
|
|
|
+ brokerage: 0,
|
|
|
+ brokerageTwo: 0
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$refs.myeditor.setText(this.form.description==null?"":this.form.description);
|
|
|
+ this.$refs.instructionManualRef.setText(this.form.instructionManual == null?""
|
|
|
+ :this.form.instructionManual);
|
|
|
+ }, 200);
|
|
|
+
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.isFormInitialized = true;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
/** 提交按钮 */
|
|
|
submitForm() {
|
|
|
// 1. 先执行 Element UI 的表单验证
|