<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">

      <el-form-item label="商品分类" prop="cateId">
         <treeselect  v-model="queryParams.cateId"  style="width:205.4px" :options="categoryOptions" :normalizer="normalizer" placeholder="请选择分类"/>
      </el-form-item>

      <el-form-item label="商品名称" prop="productName">
        <el-input
          v-model="queryParams.productName"
          placeholder="请输入商品名称"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>

       <el-form-item label="商品编号" prop="barCode">
        <el-input
          v-model="queryParams.barCode"
          placeholder="请输入商品编号"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>


      <el-form-item label="商品类型" prop="productType">
        <el-select   v-model="queryParams.productType" placeholder="请选择商品类型" clearable size="small" >
         <el-option
                v-for="item in productTypeOptions"
                :key="item.dictValue"
                :label="item.dictLabel"
                :value="item.dictValue"
              />
        </el-select>
      </el-form-item>
      <el-form-item label="公司名称">
        <el-select style="width: 240px" v-model="companyId" multiple placeholder="请选择企业" clearable size="small" >
          <el-option
            v-for="item in companyOptions"
            :key="item.companyId"
            :label="item.companyName"
            :value="item.companyId"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="所属店铺">
        <el-select style="width: 240px" v-model="storeId" multiple placeholder="请选择企业" clearable size="small" >
          <el-option
            v-for="item in storeOptions"
            :key="item.storeId"
            :label="item.storeName"
            :value="item.storeId"
          />
        </el-select>
      </el-form-item>
      <!-- <el-form-item label="状态" prop="isShow">
         <el-select style="width: 240px" v-model="queryParams.isShow" placeholder="请选择状态" clearable size="small" >
         <el-option
                v-for="item in isShowOptions"
                :key="item.dictValue"
                :label="item.dictLabel"
                :value="item.dictValue"
              />
        </el-select>
      </el-form-item> -->

      <el-form-item>
        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>

    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="success"
          icon="el-icon-edit"
          size="mini"
          :disabled="multiple"
          @click="handleUpdate"
          v-hasPermi="['store:storeProductAudit:edit']"
        >批量审核</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['store:storePayment:export']"
        >导出</el-button>
      </el-col>

	    <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

<!--    <el-tabs type="card" v-model="activeName" @tab-click="handleClick">
      <el-tab-pane label="出售中" name="1"></el-tab-pane>
      <el-tab-pane label="待上架" name="0"></el-tab-pane>
    </el-tabs>-->

    <el-table  height="500" border v-loading="loading" :data="storeProductList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="ID" align="center" prop="productId" />
      <el-table-column label="商品图片" align="center" width="120">
        <template slot-scope="scope">
          <el-popover
            placement="right"
            title=""
            trigger="hover">
            <img slot="reference" :src="scope.row.image" width="100">
            <img :src="scope.row.image" style="max-width: 150px;">
          </el-popover>
        </template>
      </el-table-column>
      <el-table-column label="商品名称" show-overflow-tooltip align="center" prop="productName" />
      <el-table-column label="分类" align="center" prop="cateName" />
      <el-table-column label="公司名称" align="center" prop="companyName" />
      <el-table-column label="所属店铺" align="center" prop="storeName" />
      <el-table-column label="售价" align="center" prop="price" >
          <template slot-scope="scope" >
              <span v-if="scope.row.price!=null">{{scope.row.price.toFixed(2)}}</span>
          </template>
      </el-table-column>
      <el-table-column label="原价" align="center" prop="otPrice" >
          <template slot-scope="scope" >
              <span v-if="scope.row.otPrice!=null">{{scope.row.otPrice.toFixed(2)}}</span>
          </template>
      </el-table-column>
      <el-table-column label="销量" align="center" prop="sales" />
      <el-table-column label="库存" align="center" prop="stock" />
      <el-table-column label="类型" align="center" prop="productType" >
          <template slot-scope="scope">
              <el-tag prop="productType" v-for="(item, index) in productTypeOptions"    v-if="scope.row.productType==item.dictValue">{{item.dictLabel}}</el-tag>
          </template>
      </el-table-column>
      <el-table-column label="状态" align="center" prop="isShow" >
          <template slot-scope="scope">
              <el-tag prop="status" v-for="(item, index) in isShowOptions"    v-if="scope.row.isShow==item.dictValue">{{item.dictLabel}}</el-tag>
          </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['store:storeProductAudit:edit']"
          >审核</el-button>
        </template>
      </el-table-column>
    </el-table>

    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />

    <el-dialog :title="title" :visible.sync="open1" width="580px" append-to-body>
      <el-form ref="form1" :model="form1" :rules="rules1" label-width="80px">
        <el-form-item label="审核理由" prop="reason">
          <el-input v-model="form1.reason" type="textarea" placeholder="请输入审核理由" />
        </el-form-item>
        <el-form-item label="图片说明" prop="attachImage">
          <ImageUpload  v-model="form1.attachImage" type="image" :limit=5 :width="150"
                        :height="150"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="handleBatchUpdate(1)">审核通过</el-button>
        <el-button type="primary" @click="handleBatchUpdate(2)">审核退回</el-button>
        <el-button @click="cancel1">取 消</el-button>
      </div>
    </el-dialog>

    <!-- 添加或修改商品对话框 -->
    <el-dialog :title="title" v-if="open" :fullscreen="isFullscreen" :visible.sync="open" width="1000px" append-to-body :show-close="false">
      <template v-slot:title>
        <div style="display: flex; justify-content: space-between; align-items: center;">
          <span>{{ title }}</span>
          <div>
            <!-- 全屏按钮 -->
            <el-button type="text" @click="handleFullScreen" size="middle">
              <i class="el-icon-full-screen"></i>
            </el-button>
            <!--关闭按钮-->
            <el-button type="text" @click="open = false">
              <i class="el-icon-close"></i>
            </el-button>
          </div>
        </div>
      </template>
      <el-form ref="form" :model="form" :rules="rules" label-width="100px" disabled>
        <el-row >
          <el-col :span="12">
            <el-form-item label="商品名称" prop="productName">
              <el-input v-model="form.productName" placeholder="请输入商品名称" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="商品分类" prop="cateId">
               <treeselect v-model="form.cateId" :options="categoryOptions" :normalizer="normalizer" placeholder="请选择上级分类" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="关键字" prop="keyword">
              <el-input v-model="form.keyword" placeholder="请输入关键字" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="单位名" prop="unitName">
              <el-input v-model="form.unitName" placeholder="请输入单位名" />
            </el-form-item>
          </el-col>

        </el-row>
        <el-row :gutter="10">
          <el-col :span="12">
            <el-form-item label="是否药品" prop="isDrug">
              <el-radio-group v-model="form.isDrug">
                <el-radio
                  v-for="item in isDrugOptions"
                  :key="item.dictValue"
                  :label="item.dictValue"
                >{{ item.dictLabel }}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
        <div v-if="form.isDrug === '1'">
          <el-form-item label="药品展示图" prop="drugImage">
            <Material v-model="drugImageArr" type="image" :num="1" :width="150" :height="150" />
          </el-form-item>

          <el-row>
            <el-col :span="12">
              <el-form-item label="药品注册证书编号" prop="drugRegCertNo">
                <el-input v-model="form.drugRegCertNo" placeholder="请输入药品注册证书编号" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="通用名称" prop="commonName">
                <el-input v-model="form.commonName" placeholder="请输入通用名称" />
              </el-form-item>
            </el-col>
          </el-row>

          <el-row>
            <el-col :span="12">
              <el-form-item label="剂型" prop="dosageForm">
                <el-input v-model="form.dosageForm" placeholder="请输入剂型" />
              </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-form-item>
            </el-col>
          </el-row>

          <el-row>
            <el-col :span="12">
              <el-form-item label="批号" prop="batchNumber">
                <el-input v-model="form.batchNumber" placeholder="请输入批号" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="规格" prop="prescribeSpec">
                <el-input v-model="form.prescribeSpec" placeholder="请输入规格" />
              </el-form-item>
            </el-col>
          </el-row>

          <el-row>
            <el-col :span="12">
              <el-form-item label="上市许可持有人" prop="mah">
                <el-input v-model="form.mah" placeholder="请输入上市许可持有人" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="持有人地址" prop="mahAddress">
                <el-input v-model="form.mahAddress" placeholder="请输入上市许可持有人地址" />
              </el-form-item>
            </el-col>
          </el-row>

          <el-row>
            <el-col :span="12">
              <el-form-item label="生产企业" prop="manufacturer">
                <el-input v-model="form.manufacturer" placeholder="请输入生产企业" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="企业地址" prop="manufacturerAddress">
                <el-input v-model="form.manufacturerAddress" placeholder="请输入生产企业地址" />
              </el-form-item>
            </el-col>
          </el-row>

          <el-form-item label="功能主治" prop="indications">
            <el-input v-model="form.indications" type="textarea" placeholder="请输入功能主治" />
          </el-form-item>

          <el-form-item label="用法用量" prop="dosage">
            <el-input v-model="form.dosage" type="textarea" placeholder="请输入用法用量" />
          </el-form-item>

          <el-form-item label="不良反应" prop="adverseReactions">
            <el-input v-model="form.adverseReactions" type="textarea" placeholder="请输入不良反应" />
          </el-form-item>

          <el-form-item label="禁忌" prop="contraindications">
            <el-input v-model="form.contraindications" type="textarea" placeholder="请输入禁忌" />
          </el-form-item>

          <el-form-item label="注意事项" prop="precautions">
            <el-input v-model="form.precautions" type="textarea" placeholder="请输入注意事项" />
          </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-form-item>
          </el-col>
        </el-row>
        <el-form-item label="商品图片" prop="image">
          <Material v-model="imageArr" type="image" :num="1" :width="150" :height="150" />
        </el-form-item>
<!--        <el-form-item label="商品视频" prop="video">
          <div>
            <el-upload
              ref="upload"
              class="upload-demo"
              :action="uploadUrl"
              :on-success="handleSuccess"
              :before-upload="beforeUpload"
              :limit="1"
              :accept="videoAccept"
            >
              <el-button size="small" type="primary">点击上传视频</el-button>
            </el-upload>
            <video v-if="form.video" :src="form.video" controls style="max-width: 300px; max-height: 300px; margin-top: 10px"></video>
          </div>
        </el-form-item>-->
        <el-form-item label="轮播图" prop="sliderImage">
          <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
        </el-form-item>
        <el-row>
          <el-col :span="24">
            <el-form-item label="商品规格：" props="specType">
              <el-radio-group v-model="form.specType" >
                <el-radio :label="0" class="radio">单规格</el-radio>
                <el-radio :label="1">多规格</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
           <!-- 多规格添加-->
          <el-col :span="24" v-if="form.specType === 1" class="noForm" >
           <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-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>
                </div>
              </el-form-item>
            </el-col>

            <el-col :span="24">
              <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>
                  </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}}</el-tag>
                    <el-input placeholder="请输入属性名称" v-model="item.detail.attrsVal"
                              style="width: 200px">
                      <el-button slot="append" type="primary" @click="createAttr(item.detail.attrsVal,index)">添加</el-button>
                    </el-input>
                  </div>
                </div>
              </el-form-item>
            </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>
            </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-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-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-col>
            </el-col>
            <!-- 多规格设置-->
            <el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24" v-if="manyFormValidate!=null&&manyFormValidate.length">
              <!-- 多规格表格-->
              <el-col :span="24">
                <el-form-item label="商品属性：" class="labeltop">

                  <el-table :data="manyFormValidate" size="small" style="width: 90%;" border>
                    <el-table-column type="myindex" v-for="(item,index) in form.header" :key="index"  :width="item.minWidth" :label="item.title" :property="item.slot" align="center">
                      <template slot-scope="scope">
                        <div v-if="scope.column.property == 'image'" align="center">
                          <single-img v-model="scope.row[scope.column.property]" type="image" :num="1" :width="60" :height="60" />
                        </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>
                        </div>
                        <div v-else align="center">
                          <el-input  v-model="scope.row[scope.column.property]" align="center" />
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>

                </el-form-item>
              </el-col>
            </el-col>
          </el-col>

          <!-- 单规格表格-->
          <el-col :xl="23" :lg="24" :md="24" :sm="24" :xs="24" v-if="form.specType === 0" style="">
            <el-form-item >
              <el-table :data="oneFormValidate"  size="small" border>
                <el-table-column prop="image" label="图片" align="center">
                  <template slot-scope="scope">
                    <single-img v-model="scope.row.image" type="image" :num="1" :width="60" :height="60" />
                  </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"/>
                  </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"/>
                  </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"/>
                  </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"/>
                  </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"/>
                  </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"/>
                  </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"/>
                  </template>
                </el-table-column>
                <el-table-column prop="weight" label="重量（KG）" align="center">
                  <template slot-scope="scope">
                    <el-input type="text" v-model="scope.row.weight"/>
                  </template>
                </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"/>
                  </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"/>
                  </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"/>
                  </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"/>
                  </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"/>
                  </template>
                </el-table-column>
              </el-table>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="运费模板：" prop="tempId">
              <div class="acea-row">
                <el-select v-model="form.tempId"  class="mr20">
                  <el-option v-for="(item,index) in templateList" :value="item.id" :key="index" :label="item.name">
                  </el-option>
                </el-select>
              </div>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item label="商品详情" prop="description">
           <editor ref="myeditor"   @on-text-change="updateText" disabled/>
        </el-form-item>
        <el-row>
          <el-col :span="8">
            <el-form-item label="商品状态" prop="isShow">
              <el-radio-group v-model="form.isShow">
                <el-radio :label="item.dictValue" v-for="item in isShowOptions" >{{item.dictLabel}}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
           <el-form-item label="是否热卖" prop="isHot">
              <el-radio-group v-model="form.isHot">
                <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 :label="item.dictValue" v-for="item in isGoodOptions" >{{item.dictLabel}}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
         <el-row>
          <el-col :span="8">
            <el-form-item label="精品推荐" prop="isBest">
              <el-radio-group v-model="form.isBest">
                <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 :label="item.dictValue" v-for="item in isNewOptions" >{{item.dictLabel}}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="返还积分">
              <el-input-number  v-model="form.giveIntegral" :min="0" placeholder="请输入积分" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8">
            <el-form-item label="商城展示" prop="isDisplay">
              <el-radio-group v-model="form.isDisplay">
                <el-radio :label="item.dictValue" v-for="item in isDisplayOptions" >{{item.dictLabel}}</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">

            <el-form-item label="排序" prop="sort">
               <el-input-number :min="0"  v-model="form.sort" placeholder="请输入排序" />
            </el-form-item>
          </el-col>
           <el-col :span="8">
            <el-form-item label="销量" prop="sales">
               <el-input-number :min="0"  v-model="form.sales" placeholder="请输入销量" />
            </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-option
                    v-for="item in productTuiCateOptions"
                    :key="item.dictValue"
                    :label="item.dictLabel"
                    :value="item.dictValue"
                  />
            </el-select>
        </el-form-item>
        <el-form-item label="商品类型" prop="productType">
          <el-select style="width: 240px" v-model="form.productType" placeholder="请选择商品类型" clearable size="small" >
            <el-option
                    v-for="item in productTypeOptions"
                    :key="item.dictValue"
                    :label="item.dictLabel"
                    :value="item.dictValue"
                  />
            </el-select>
        </el-form-item>
        <el-form-item label="公司名称">
          <el-select style="width: 240px" v-model="form.companyIds" multiple placeholder="请选择企业" clearable size="small" >
            <el-option
                    v-for="item in companyOptions"
                    :key="item.companyId"
                    :label="item.companyName"
                    :value="item.companyId"
                  />
            </el-select>
        </el-form-item>
        <!-- 所属店铺 -->
        <el-form-item label="所属店铺">
          <el-select style="width: 240px" v-model="form.storeId" placeholder="请选择店铺" clearable size="small" >
            <el-option
              v-for="item in storeOptions"
              :key="item.storeId"
              :label="item.storeName"
              :value="item.storeId"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="所属小程序" prop="appIds">
          <el-select style="width: 240px" v-model="appIds" placeholder="请选择所属小程序" clearable size="small" multiple>
<!--            <el-option-->
<!--              v-for="dict in appMallOptions"-->
<!--              :key="dict.appid"-->
<!--              :label="dict.name + '(' + dict.appid + ')'"-->
<!--              :value="dict.appid"-->
<!--            />-->
          </el-select>
        </el-form-item>
        <el-form-item label="国药准字" v-if="form.productType===2" prop="prescribeCode">
          <el-input v-model="form.prescribeCode" placeholder="请输入国药准字" />
        </el-form-item>
        <el-form-item label="规格" v-if="form.productType===2" prop="prescribeSpec">
          <el-input v-model="form.prescribeSpec" placeholder="请输入规格" />
        </el-form-item>
        <el-form-item label="生产厂家" v-if="form.productType===2" prop="prescribeFactory">
          <el-input v-model="form.prescribeFactory" placeholder="请输入生产厂家" />
        </el-form-item>
        <el-form-item label="处方名" v-if="form.productType===2" prop="prescribeName">
          <el-input v-model="form.prescribeName" placeholder="请输入处方名" />
        </el-form-item>
      </el-form>
      <el-divider content-position="left">审核</el-divider>
      <el-form ref="form1" :model="form1" :rules="rules1" label-width="80px">
        <el-form-item label="审核理由" prop="reason">
          <el-input v-model="form1.reason" type="textarea" placeholder="请输入审核理由" />
        </el-form-item>
        <el-form-item label="图片说明" prop="attachment">
          <ImageUpload  v-model="form1.attachImage" type="image" :limit=5 :width="150"
                        :height="150"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="handleUpdate1(1)">审核通过</el-button>
        <el-button type="primary" @click="handleUpdate1(2)">审核退回</el-button>
      </div>
    </el-dialog>
    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
      <el-upload
        ref="upload"
        :limit="1"
        accept=".xlsx, .xls"
        :headers="upload.headers"
        :action="upload.url + '?updateSupport=' + upload.updateSupport"
        :disabled="upload.isUploading"
        :on-progress="handleFileUploadProgress"
        :on-success="handleFileSuccess"
        :auto-upload="false"
        drag
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处，或<em>点击上传</em></div>
        <div class="el-upload__tip text-center" slot="tip">
          <div class="el-upload__tip" slot="tip">
       <!--     <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 -->
          </div>
          <span>仅允许导入xls、xlsx格式文件。</span>
          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
        </div>
      </el-upload>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitFileForm">确 定</el-button>
        <el-button @click="upload.open = false">取 消</el-button>
      </div>
    </el-dialog>

  </div>
</template>

<script>
import {
  genFormatAttr,
  listStoreProduct,
  getStoreProduct,
  delStoreProduct,
  addOrEdit,
  exportStoreProduct,
  importTemplate,
  batchModify, batchAudit
} from '@/api/hisStore/storeProduct'
import { getAllStoreProductCategory } from "@/api/hisStore/storeProductCategory";
import { getAllStoreProductRule } from "@/api/hisStore/storeProductRule";
import { getAllShippingTemplates } from "@/api/hisStore/shippingTemplates";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import Editor from '@/components/Editor/wang';
import Material from '@/components/Material'
import singleImg from '@/components/Material/single'
import { getCompanyList } from "@/api/company/company";
import { audit, listStore } from '@/api/hisStore/store'
export default {
  name: "HisStoreProductAudit",
  components: {
    Treeselect,
    Editor,
    Material,
    singleImg,
  },
  watch: {
    imageArr: function(val) {
      this.form.image = val.join(',')
    },
    photoArr: function(val) {
      this.form.sliderImage = val.join(',')
    },
    drugImageArr: function(val) {
      this.form.drugImage = val.join(',');
    }
  },
  data() {
    return {
      companyId: null,
      storeId: null,
      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
      //videoAccept:"video/*",
      upload: {
        // 是否显示弹出层
        open: false,
        // 弹出层标题
        title: "",
        // 是否禁用上传
        isUploading: false,
        // 是否更新已经存在的用户数据
        updateSupport: 0,
        // 设置上传的请求头部
        headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url: process.env.VUE_APP_BASE_API + "/store/storeProduct/importData"
      },
      // 添加药品相关字段
      isDrugOptions: [
        { dictValue: "0", dictLabel: "否" },
        { dictValue: "1", dictLabel: "是" }
      ],

      // 药品展示图
      drugImageArr: [],

      productTuiCateOptions:[],
      showIput: false,
      createBnt:true,
      // 规格数据
      formDynamic: {
        attrsName: '',
        attrsVal: ''
      },
      open1: false,
      form1: {},
      isBtn: false,
      columns: [],
      attrs:[],
      templateList:[],
      ruleList:[],
      // 多规格表格data
      manyFormValidate: [],
      // 单规格表格data
      oneFormValidate: [
        {
          image: '',
          price: 0,
          cost: 0,
          agentPrice: 0,
          otPrice: 0,
          stock: 0,
          barCode: '',
          weight: 0,
          volume: 0,
          integral: 0
        }
      ],
      photoArr:[],
      imageArr:[],
      activeName:"1",
      productTypeOptions:[],
      isDisplayOptions:[],
      isGoodOptions:[],
      isNewOptions:[],
      isBestOptions:[],
      isHotOptions:[],
      isShowOptions:[],
      categoryOptions:[],
      // 企业列表
      companyOptions:[],
      storeOptions:[],
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: false,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      isFullscreen: false,
      // 总条数
      total: 0,
      // 商品表格数据
      storeProductList: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      appIds:[],
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        productName: null,
        productType: null,
        isShow: "1",
        barCode:null,
        companyIds: null
      },
      // 表单参数
      form: {},
      rules1: {
        reason: [
          { required: true, message: "审核理由不能为空", trigger: "blur" }
        ]
      },
      // 表单校验
      rules: {
        image: [
          { required: true, message: "商品图片不能为空", trigger: "blur" }
        ],
        sliderImage: [
          { required: true, message: "轮播图不能为空", trigger: "blur" }
        ],
        productName: [
          { required: true, message: "商品名称不能为空", trigger: "blur" }
        ],
        productInfo: [
          { required: true, message: "商品简介不能为空", trigger: "blur" }
        ],
        unitName: [
          { required: true, message: "单位名不能为空", trigger: "blur" }
        ],
        keyword: [
          { required: true, message: "关键字不能为空", trigger: "blur" }
        ],
        cateId: [
          { required: true, message: "分类id不能为空", trigger: "blur" }
        ],
        price: [
          { required: true, message: "商品价格不能为空", trigger: "blur" }
        ],
        prescribeCode: [
          { required: true, message: "国药准字不能为空", trigger: "blur" }
        ],
        prescribeSpec: [
          { required: true, message: "规格不能为空", trigger: "blur" }
        ],
        prescribeFactory: [
          { required: true, message: "生产厂家不能为空", trigger: "blur" }
        ],
        prescribeName: [
          { required: true, message: "处方药不能为空", trigger: "blur" }
        ],
        companyIds: [
          { required: true, message: "销售公司不能为空", trigger: "blur" }
        ],
        // 药品相关字段校验（仅在是药品时必填）
        drugImage: [
          { required: true, message: "药品展示图不能为空", trigger: "blur" }
        ],
        drugRegCertNo: [
          { required: true, message: "药品注册证书编号不能为空", trigger: "blur" }
        ],
        commonName: [
          { required: true, message: "通用名称不能为空", trigger: "blur" }
        ],
        dosageForm: [
          { required: true, message: "剂型不能为空", trigger: "blur" }
        ],
        unitPrice: [
          { required: true, message: "单价不能为空", trigger: "blur" }
        ],
        batchNumber: [
          { required: true, message: "批号不能为空", trigger: "blur" }
        ],
        mah: [
          { required: true, message: "上市许可持有人不能为空", trigger: "blur" }
        ],
        mahAddress: [
          { required: true, message: "上市许可持有人地址不能为空", trigger: "blur" }
        ],
        manufacturer: [
          { required: true, message: "生产企业不能为空", trigger: "blur" }
        ],
        manufacturerAddress: [
          { required: true, message: "生产企业地址不能为空", trigger: "blur" }
        ],
        indications: [
          { required: true, message: "功能主治不能为空", trigger: "blur" }
        ],
        dosage: [
          { required: true, message: "用法用量不能为空", trigger: "blur" }
        ],
        adverseReactions: [
          { required: true, message: "不良反应不能为空", trigger: "blur" }
        ],
        contraindications: [
          { required: true, message: "禁忌不能为空", trigger: "blur" }
        ],
        precautions: [
          { required: true, message: "注意事项不能为空", trigger: "blur" }
        ]
      }
    };
  },
  created() {
    this.getDicts("store_product_tui_cate").then((response) => {
      this.productTuiCateOptions = response.data;
    });
    this.getDicts("store_product_enable").then((response) => {
      this.isNewOptions = response.data;
      this.isBestOptions = response.data;
      this.isHotOptions = response.data;
      this.isGoodOptions=response.data;
      this.isDisplayOptions=response.data;
    });
    this.getDicts("store_product_type").then((response) => {
      this.productTypeOptions = response.data;
    });
    this.getDicts("store_product_is_show").then((response) => {
      this.isShowOptions = response.data;
    });
    getAllShippingTemplates().then(response => {
      this.templateList =response.data;
    });
    getAllStoreProductRule().then(response => {
      this.ruleList =response.data;
    });
    getCompanyList().then(response => {
      this.companyOptions = response.data;
    });
    listStore().then(response => {
      this.storeOptions = response.rows;
    });
    this.getTreeselect();
    this.getList();
  },
  methods: {
    cancel1(){
      this.open1 = false;
      this.form1.attachImage=null;
      this.form1.reason=null;
    },
    handleFullScreen(){
      this.isFullscreen = !this.isFullscreen;
    },
    handleSuccess(response, file) {
      // 上传成功后的回调函数
      this.myloading.close();
      //this.form.video = response.url;
      this.$refs.upload.clearFiles();
    },
    beforeUpload(file) {
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!isLt2M) {
        this.$message.error('上传视频文件大小不能超过 2MB!');
        return false;
      }
      this.myloading = this.$loading({
        lock: true,
        text: '上传中',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.7)'
      });

    },
    // 提交上传文件
    submitFileForm() {
      this.$refs.upload.submit();
    },
    // 文件上传中处理
    handleFileUploadProgress(event, file, fileList) {
      this.upload.isUploading = true;
    },
    // 文件上传成功处理
    handleFileSuccess(response, file, fileList) {
      this.upload.open = false;
      this.upload.isUploading = false;
      this.$refs.upload.clearFiles();
      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
      this.getList();
    },
    handleImport() {
      this.upload.title = "商品导入";
      this.upload.open = true;
    },
    importTemplate() {
      importTemplate().then(response => {
        this.download(response.msg);
      });
    },
    // 删除表格中的属性
    delAttrTable (index) {
      this.manyFormValidate.splice(index, 1);
    },
    addBtn () {
      this.clearAttr();
      this.createBnt = false;
      this.showIput = true;
    },
    //生成SKU
    generate () {
      genFormatAttr(this.form.productId, { attrs: this.attrs }).then(res => {
        if(this.form.specType === 0){
            this.oneFormValidate = res.value;
            this.form.header = res.header;
            let header = res.header;
            header.pop();
            this.oneFormValidate.map((item) => {
              if(this.imageArr.length>0){
                item.image = this.imageArr[0]
              }
            });
        }else if(this.form.specType === 1) {
            this.manyFormValidate = res.value;
            let headerdel = {
              title: '操作',
              slot: 'action',
              fixed: 'right',
              width: 220
            };
            res.header.push(headerdel);
            this.form.header = res.header;
            let header = res.header;
            header.pop();
            // this.manyFormValidate.map((item) => {
            //   if(this.imageArr.length>0){
            //     item.image = this.imageArr[0]
            //   }
            // });
        }

      }).catch(res => {
      })
    },
    // 取消添加新规格
    closeAttrName () {
      this.showIput = false;
      this.createBnt = true;
    },
    clearAttr () {
      this.formDynamic.attrsName = '';
      this.formDynamic.attrsVal = '';
    },
    // 删除规格
    handleRemoveRole (index) {
      this.attrs.splice(index, 1);
      this.manyFormValidate.splice(index, 1);
    },
    // 删除属性
    handleRemove2 (item, index) {
      item.splice(index, 1);
    },
    // 添加规则名称
    createAttrName () {
      if (this.formDynamic.attrsName && this.formDynamic.attrsVal) {
        let data = {
          value: this.formDynamic.attrsName,
          detail: [
            this.formDynamic.attrsVal
          ]
        };
        this.attrs.push(data);
        var hash = {};
        this.attrs = this.attrs.reduce(function (item, next) {
          hash[next.value] ? '' : hash[next.value] = true && item.push(next);
          return item
        }, [])
        this.clearAttr();
        this.showIput = false;
        this.createBnt = true;
      } else {
        this.$message.warning('请添加完整的规格！');
      }
    },
    // 添加属性
    createAttr (num, idx) {
      if (num) {
        this.attrs[idx].detail.push(num);
        var hash = {};
        this.attrs[idx].detail = this.attrs[idx].detail.reduce(function (item, next) {
          hash[next] ? '' : hash[next] = true && item.push(next);
          return item
        }, [])
      } else {
        this.$message.warning('请添加属性！');
      }
    },
    confirm () {
      let that = this;
      that.createBnt = true;
      if (that.form.selectRule==null||that.form.selectRule.trim().length <= 0) {
        return this.$message({
          message:'请选择属性',
          type: 'error'
        });
      }
      that.ruleList.forEach(function (item, index) {
        if (item.ruleName === that.form.selectRule) {
          that.attrs =JSON.parse( item.ruleValue);

        }
      });

    },
    updateText(text){
      this.form.description=text
    },
    handleClick(tab, event) {
      this.queryParams.isShow=tab.name;
      this.getList();
    },
    /** 转换商品分类数据结构 */
    normalizer(node) {
      if (node.children && !node.children.length) {
        delete node.children;
      }
      return {
        id: node.cateId,
        label: node.cateName,
        children: node.children
      };
    },
    getTreeselect() {
      getAllStoreProductCategory().then(response => {
        this.categoryOptions = [];
        const data = this.handleTree(response.data, "cateId", "pid");
        this.categoryOptions=data;
      });
    },
    /** 查询商品列表 */
    getList() {
      this.loading = true;
      this.queryParams.isAudit= "0";
      listStoreProduct(this.queryParams).then(response => {
        this.storeProductList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // 取消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // 表单重置
    reset() {
      this.form = {
        productId: 0,
        image: null,
        video: null,
        sliderImage: null,
        productName: null,
        productInfo: null,
        keyword: null,
        barCode: null,
        cateId: null,
        price: null,
        vipPrice: null,
        otPrice: null,
        postage: null,
        unitName: null,
        sort: null,
        sales: null,
        stock: null,
        isShow: "0",
        isHot: "0",
        isBenefit: "0",
        isBest: "0",
        isNew: "0",
        description: null,
        createTime: null,
        updateTime: null,
        isPostage: null,
        isDel: null,
        giveIntegral: null,
        cost: null,
        isGood: "0",
        browse: null,
        codePath: null,
        tempId: "",
        specType: 0,
        isIntegral: null,
        integral: null,
        productType: "1",
        prescribeCode: null,
        prescribeSpec: null,
        prescribeFactory: null,
        prescribeName: null,
        isDisplay:"1",
        companyIds:[],
        isDrug: "0", // 是否药品
        drugImage: null, // 药品展示图
        drugRegCertNo: null, // 药品注册证书编号
        commonName: null, // 通用名称
        dosageForm: null, // 剂型
        unitPrice: null, // 单价
        batchNumber: null, // 批号
        mah: null, // 上市许可持有人
        mahAddress: null, // 上市许可持有人地址
        manufacturer: null, // 生产企业
        manufacturerAddress: null, // 生产企业地址
        indications: null, // 功能主治
        dosage: null, // 用法用量
        adverseReactions: null, // 不良反应
        contraindications: null, // 禁忌
        precautions: null // 注意事项
      };
      // 重置药品展示图
      this.drugImageArr = [];
      this.resetForm("form");
      this.oneFormValidate = [
        {
          image: '',
          price: 0,
          agentPrice: 0,
          cost: 0,
          otPrice: 0,
          stock: 0,
          barCode: '',
          weight: 0,
          volume: 0,
          integral: 0,
          brokerage:0,
          brokerageTwo:0
        }
      ]
      this.attrs=[];
      this.photoArr=[];
      this.imageArr=[];
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.queryParams.companyIds = this.companyId +''
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.queryParams = {
        pageNum:1,
        pageSize:10,
        isShow:1,
        isAudit:0
      }
      this.companyId = ''
      this.storeId = ''
      this.handleQuery();
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.productId)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      if(this.ids.length > 1){
        //判断是否为药品
        this.title = "批量审核商品";
        this.open1 = true;
        return;
      }
      var that=this;
      this.reset();
      const productId = row.productId || this.ids
      getStoreProduct(productId).then(response => {
        this.form = response.data;
        //设置cateId => cateName
        this.form.cateName = this.selectDictLabel(this.categoryOptions, response.data.cateId);
        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.tuiCateId!=null){
          this.form.tuiCateId = response.data.tuiCateId.toString();
        }

        this.form.isDrug = response.data.isDrug ? response.data.isDrug.toString() : "0";
        if (this.form.drugImage != null) {
          this.drugImageArr = this.form.drugImage.split(",");
        }

        //组装attrs数据
        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);
          });
        }
        // 组装companyIds
        if (response.data.companyIds != null && response.data.companyIds != undefined && response.data.companyIds.length > 0) {
          this.form.companyIds = response.data.companyIds.split(',').map(Number);
        }

        this.appIds = this.form.appIds ? this.form.appIds.split(',') : [];
        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(() => {
          if(this.form.description==null){
            this.$refs.myeditor.setText("");
          }
          else{
            this.$refs.myeditor.setText(this.form.description);
          }
        }, 200);
        if(this.form.image!=null){
          this.imageArr=this.form.image.split(",");
        }
        if(this.form.sliderImage!=null){
          this.photoArr=this.form.sliderImage.split(",");
        }
        this.open = true;
        this.title = "审核商品";
      });
    },
    handleUpdate1(oper) {
      let operStr = oper === 1 ? "审核通过" : "审核退回";
      this.$confirm("是否确认"+operStr+"商品?", "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(()=> {
        let param = {}
        param.productIds = [this.form.productId];
        param.reason = this.form1.reason;
        param.attachImage = this.form1.attachImage;
        param.isAudit=oper;
        return batchAudit(param);
      }).then(res => {
        if(res.code === 200){
          this.$message.success("审核成功");
          this.open = false;
          this.form = null;
          this.form1.auditReason = null;
          this.form1.attachment = null;
          this.getList();
        }else{
          this.$message.error("审核失败",res.msg);
        }
      }).catch(function() {

      }).finally(()=>{
      });
    },
    /** 导出按钮操作 */
    handleExport() {
      const queryParams = this.queryParams;
      this.$confirm('是否确认导出所有商品数据项?', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(function() {
          return exportStoreProduct(queryParams);
        }).then(response => {
          this.download(response.msg);
        }).catch(function() {});
    },
    /** 批量审核按钮操作 */
    handleBatchUpdate(oper) {
      let operStr = oper === 1 ? "审核通过" : "审核退回";
      this.$confirm("是否确认批量"+operStr+"商品?", "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(()=> {
        let param = {}
        param.productIds = this.ids;
        param.reason = this.form1.reason;
        param.attachImage = this.form1.attachImage;
        param.isAudit=oper;
        return batchAudit(param);
      }).then(res => {
        if(res.code === 200){
          this.$message.success("批量审核成功");
          this.getList();
        }else{
          this.$message.error("批量审核失败",res.msg);
        }
      }).catch(function() {

      }).finally(()=>{
        this.open1 = false;
        this.form1.reason = null;
        this.form1.attachImage = null;
      });
    }
  }
};
</script>
<style scoped>::v-deep .el-upload-list__item-delete {
  display: none !important;
}
</style>
