yjwang 1 день тому
батько
коміт
c8fd878ede
1 змінених файлів з 245 додано та 81 видалено
  1. 245 81
      src/views/hisStore/platformProduct/index.vue

+ 245 - 81
src/views/hisStore/platformProduct/index.vue

@@ -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 的表单验证