|
|
|
@ -244,7 +244,7 @@ |
|
|
|
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="类型" align="center" prop="type" width="100"> |
|
|
|
<el-table-column label="产品类型" align="center" prop="type" width="100"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-tag |
|
|
|
:type="getTypeTagType(scope.row.type)" |
|
|
|
@ -254,7 +254,7 @@ |
|
|
|
</el-tag> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="分类" align="center" prop="category" width="120"> |
|
|
|
<el-table-column label="产品分类" align="center" prop="category" width="120"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-tag |
|
|
|
:type="getCategoryTagType(scope.row.category)" |
|
|
|
@ -286,7 +286,7 @@ |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="生产厂家" align="center" prop="manufacturer" width="150" show-overflow-tooltip/> |
|
|
|
<el-table-column label="状态" prop="status" width="100" align="center"> |
|
|
|
<el-table-column label="产品状态" prop="status" width="100" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-tag :type="getStatusTagType(scope.row.status)" size="small"> |
|
|
|
{{ getStatusText(scope.row.status) }} |
|
|
|
@ -329,132 +329,263 @@ |
|
|
|
<!-- </template>--> |
|
|
|
<!-- </el-table-column>--> |
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="300"> |
|
|
|
<!-- <template slot-scope="scope">--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-edit"--> |
|
|
|
<!-- @click="handleUpdate(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:edit']"--> |
|
|
|
<!-- >修改</el-button>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-delete"--> |
|
|
|
<!-- @click="handleDelete(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:remove']"--> |
|
|
|
<!-- >删除</el-button>--> |
|
|
|
<!-- </template>--> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-view" |
|
|
|
@click="handleDetail(scope.row)" |
|
|
|
class="info-btn view-btn" |
|
|
|
> |
|
|
|
详情 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-edit" |
|
|
|
style="color: #42B983" |
|
|
|
@click="handleUpdate(scope.row)" |
|
|
|
class="info-btn alter-btn" |
|
|
|
v-hasPermi="['vet:product:edit']" |
|
|
|
>修改</el-button> |
|
|
|
v-if="scope.row.status === '0' && (scope.row.auditStatus === '0' || scope.row.auditStatus === '3')" |
|
|
|
> |
|
|
|
编辑 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-delete" |
|
|
|
style="color: #f56c6c" |
|
|
|
@click="handleDelete(scope.row)" |
|
|
|
class="info-btn delete-btn" |
|
|
|
v-hasPermi="['vet:product:remove']" |
|
|
|
>删除</el-button> |
|
|
|
> |
|
|
|
删除 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-s-promotion" |
|
|
|
style="color: #dab708" |
|
|
|
@click="handleSubmitAudit(scope.row)" |
|
|
|
class="info-btn submit-btn" |
|
|
|
v-hasPermi="['vet:product:submit']" |
|
|
|
v-if="scope.row.status === '0' && scope.row.auditStatus === '0'" |
|
|
|
> |
|
|
|
提交审核 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-top" |
|
|
|
style="color: #f46a0c" |
|
|
|
@click="handlePublish(scope.row)" |
|
|
|
class="info-btn publish-btn" |
|
|
|
v-hasPermi="['vet:product:publish']" |
|
|
|
v-if="scope.row.auditStatus === '2' && scope.row.status === '0'" |
|
|
|
> |
|
|
|
上架 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-bottom" |
|
|
|
style="color: #636361" |
|
|
|
@click="handleOffline(scope.row)" |
|
|
|
class="info-btn offline-btn" |
|
|
|
v-hasPermi="['vet:product:offline']" |
|
|
|
v-if="scope.row.status === '1'" |
|
|
|
> |
|
|
|
下架 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-close" |
|
|
|
style="color: #5607b3" |
|
|
|
@click="handleCancelAudit(scope.row)" |
|
|
|
class="info-btn cancel-btn" |
|
|
|
v-hasPermi="['vet:product:edit']" |
|
|
|
v-if="scope.row.status === '0' && scope.row.auditStatus === '1'" |
|
|
|
> |
|
|
|
取消审核 |
|
|
|
</el-button> |
|
|
|
<el-button |
|
|
|
size="mini" |
|
|
|
type="text" |
|
|
|
icon="el-icon-s-promotion" |
|
|
|
style="color: #c108af" |
|
|
|
@click="handleResubmitAudit(scope.row)" |
|
|
|
class="info-btn resubmit-btn" |
|
|
|
v-hasPermi="['vet:product:submit']" |
|
|
|
v-if="scope.row.status === '0' && scope.row.auditStatus === '3'" |
|
|
|
> |
|
|
|
重新提交 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
<!-- <template slot-scope="scope">--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-view"--> |
|
|
|
<!-- @click="handleDetail(scope.row)"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 详情--> |
|
|
|
<!-- </el-button>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-edit"--> |
|
|
|
<!-- style="color: #42B983"--> |
|
|
|
<!-- @click="handleUpdate(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:edit']"--> |
|
|
|
<!-- v-if="scope.row.status === '0' && (scope.row.auditStatus === '0' || scope.row.auditStatus === '3')"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 编辑--> |
|
|
|
<!-- </el-button>--> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
|
|
|
|
<!-- <!– 删除按钮 –>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-delete"--> |
|
|
|
<!-- style="color: #f56c6c"--> |
|
|
|
<!-- @click="handleDelete(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:remove']"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 删除--> |
|
|
|
<!-- </el-button>--> |
|
|
|
<!-- 分页 --> |
|
|
|
<div class="pagestyle"> |
|
|
|
<pagination |
|
|
|
v-show="total>0" |
|
|
|
:total="total" |
|
|
|
:page.sync="queryParams.pageNum" |
|
|
|
:limit.sync="queryParams.pageSize" |
|
|
|
@pagination="getList" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- <!– 提交审核按钮(草稿状态显示) –>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-s-promotion"--> |
|
|
|
<!-- style="color: #dab708"--> |
|
|
|
<!-- @click="handleSubmitAudit(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:submit']"--> |
|
|
|
<!-- v-if="scope.row.status === '0' && scope.row.auditStatus === '0'"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 提交审核--> |
|
|
|
<!-- </el-button>--> |
|
|
|
|
|
|
|
<!-- <!– 上架按钮(审核通过且未上架状态显示) –>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-top"--> |
|
|
|
<!-- style="color: #f46a0c"--> |
|
|
|
<!-- @click="handlePublish(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:publish']"--> |
|
|
|
<!-- v-if="scope.row.auditStatus === '2' && scope.row.status === '0'"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 上架--> |
|
|
|
<!-- </el-button>--> |
|
|
|
|
|
|
|
<!-- <!– 下架按钮(已上架状态显示) –>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-bottom"--> |
|
|
|
<!-- style="color: #636361"--> |
|
|
|
<!-- @click="handleOffline(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:offline']"--> |
|
|
|
<!-- v-if="scope.row.status === '1'"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 下架--> |
|
|
|
<!-- </el-button>--> |
|
|
|
|
|
|
|
<!-- <!– 取消审核按钮(待审核状态且编辑权限显示) –>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-close"--> |
|
|
|
<!-- style="color: #5607b3"--> |
|
|
|
<!-- @click="handleCancelAudit(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:edit']"--> |
|
|
|
<!-- v-if="scope.row.status === '0' && scope.row.auditStatus === '1'"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 取消审核--> |
|
|
|
<!-- </el-button>--> |
|
|
|
<!-- 新增产品弹窗 --> |
|
|
|
<!-- <el-dialog title="新增产品" :visible.sync="open" width="80%" append-to-body>--> |
|
|
|
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">--> |
|
|
|
<!-- <!– 步骤条 –>--> |
|
|
|
<!-- <el-steps :active="activeStep" finish-status="success" style="margin-bottom:20px;">--> |
|
|
|
<!-- <el-step title="基础信息" icon="el-icon-edit"></el-step>--> |
|
|
|
<!-- <el-step title="价格库存" icon="el-icon-upload"></el-step>--> |
|
|
|
<!-- <el-step title="详细说明" icon="el-icon-s-promotion"></el-step>--> |
|
|
|
<!-- </el-steps>--> |
|
|
|
|
|
|
|
<!-- <el-button--> |
|
|
|
<!-- size="mini"--> |
|
|
|
<!-- type="text"--> |
|
|
|
<!-- icon="el-icon-s-promotion"--> |
|
|
|
<!-- style="color: #ae059e"--> |
|
|
|
<!-- @click="handleResubmitAudit(scope.row)"--> |
|
|
|
<!-- v-hasPermi="['vet:product:submit']"--> |
|
|
|
<!-- v-if="scope.row.status === '0' && scope.row.auditStatus === '3'"--> |
|
|
|
<!-- >--> |
|
|
|
<!-- 重新提交--> |
|
|
|
<!-- </el-button>--> |
|
|
|
<!-- </template>--> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
<!-- <!– 步骤1:基础信息 –>--> |
|
|
|
<!-- <div v-if="activeStep === 0">--> |
|
|
|
<!-- <el-form-item label="产品名称" prop="name">--> |
|
|
|
<!-- <el-input v-model="form.name" placeholder="请输入产品名称"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="产品类型" prop="type">--> |
|
|
|
<!-- <el-select v-model="form.type" placeholder="请选择产品类型" clearable>--> |
|
|
|
<!-- <el-option--> |
|
|
|
<!-- v-for="dict in dict.type.medicine_type"--> |
|
|
|
<!-- :key="dict.value"--> |
|
|
|
<!-- :label="dict.label"--> |
|
|
|
<!-- :value="dict.value"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- </el-select>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="产品分类" prop="category">--> |
|
|
|
<!-- <el-select v-model="form.category" placeholder="请选择产品分类" clearable>--> |
|
|
|
<!-- <el-option--> |
|
|
|
<!-- v-for="dict in dict.type.vet_product_category"--> |
|
|
|
<!-- :key="dict.value"--> |
|
|
|
<!-- :label="dict.label"--> |
|
|
|
<!-- :value="dict.value"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- </el-select>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="生产厂家" prop="manufacturer">--> |
|
|
|
<!-- <el-input v-model="form.manufacturer" placeholder="请输入生产厂家"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="批准文号" prop="approvalNumber">--> |
|
|
|
<!-- <el-input v-model="form.approvalNumber" placeholder="请输入批准文号"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="适用动物:如犬、猫、猪等" prop="treatAnimals">--> |
|
|
|
<!-- <el-input v-model="form.treatAnimals" type="textarea" placeholder="请输入内容"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="治疗疾病" prop="treatDiseases">--> |
|
|
|
<!-- <el-input v-model="form.treatDiseases" type="textarea" placeholder="请输入内容"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="相关图片" prop="mainImage">--> |
|
|
|
<!-- <image-upload v-model="form.mainImage"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- </div>--> |
|
|
|
|
|
|
|
<pagination |
|
|
|
v-show="total>0" |
|
|
|
:total="total" |
|
|
|
:page.sync="queryParams.pageNum" |
|
|
|
:limit.sync="queryParams.pageSize" |
|
|
|
@pagination="getList" |
|
|
|
/> |
|
|
|
<!-- <!– 步骤2:价格库存 –>--> |
|
|
|
<!-- <div v-if="activeStep === 1">--> |
|
|
|
<!-- <el-form-item label="规格" prop="specification">--> |
|
|
|
<!-- <el-input v-model="form.specification" placeholder="请输入规格" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="单位" prop="unit">--> |
|
|
|
<!-- <el-input v-model="form.unit" placeholder="请输入单位" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="销售价格" prop="price">--> |
|
|
|
<!-- <el-input-number--> |
|
|
|
<!-- v-model="form.price"--> |
|
|
|
<!-- :precision="2"--> |
|
|
|
<!-- :step="0.1"--> |
|
|
|
<!-- :min="0"--> |
|
|
|
<!-- placeholder="请输入销售价格"--> |
|
|
|
<!-- ></el-input-number>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="成本价" prop="costPrice">--> |
|
|
|
<!-- <el-input-number--> |
|
|
|
<!-- v-model="form.costPrice"--> |
|
|
|
<!-- :precision="2"--> |
|
|
|
<!-- :step="0.1"--> |
|
|
|
<!-- :min="0"--> |
|
|
|
<!-- placeholder="请输入成本价"--> |
|
|
|
<!-- ></el-input-number>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="库存数量" prop="stock">--> |
|
|
|
<!-- <el-input-number--> |
|
|
|
<!-- v-model="form.stock"--> |
|
|
|
<!-- :min="1"--> |
|
|
|
<!-- :step="1"--> |
|
|
|
<!-- label="库存数量"--> |
|
|
|
<!-- ></el-input-number>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="最低库存预警" prop="minStock">--> |
|
|
|
<!-- <el-input-number--> |
|
|
|
<!-- v-model="form.minStock"--> |
|
|
|
<!-- :min="0"--> |
|
|
|
<!-- :step="1"--> |
|
|
|
<!-- label="最低库存预警"--> |
|
|
|
<!-- ></el-input-number>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- </div>--> |
|
|
|
|
|
|
|
<!-- 添加或修改兽医产品信息对话框 --> |
|
|
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
|
|
|
<!-- <!– 步骤3:详细说明 –>--> |
|
|
|
<!-- <div v-if="activeStep === 2">--> |
|
|
|
<!-- <el-form-item label="主要成分" prop="ingredients">--> |
|
|
|
<!-- <el-input v-model="form.ingredients" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="适应症" prop="indications">--> |
|
|
|
<!-- <el-input v-model="form.indications" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="治疗方案/内容">--> |
|
|
|
<!-- <editor v-model="form.treatmentContent" :min-height="192"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="治疗周期" prop="treatmentDuration">--> |
|
|
|
<!-- <el-input v-model="form.treatmentDuration" placeholder="请输入治疗周期" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="注意事项" prop="precautions">--> |
|
|
|
<!-- <el-input v-model="form.precautions" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- </div>--> |
|
|
|
|
|
|
|
<!-- <!– 步骤操作按钮 –>--> |
|
|
|
<!-- <div style="text-align: center; margin-top: 30px;">--> |
|
|
|
<!-- <el-button @click="prevStep" v-if="activeStep > 0">上一步</el-button>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- type="primary"--> |
|
|
|
<!-- @click="nextStep"--> |
|
|
|
<!-- v-if="activeStep < 2"--> |
|
|
|
<!-- >下一步</el-button>--> |
|
|
|
<!-- <el-button--> |
|
|
|
<!-- type="primary"--> |
|
|
|
<!-- @click="submitForm"--> |
|
|
|
<!-- v-if="activeStep === 2"--> |
|
|
|
<!-- >提交</el-button>--> |
|
|
|
<!-- <el-button @click=cancel>取消</el-button>--> |
|
|
|
<!-- </div>--> |
|
|
|
<!-- </el-form>--> |
|
|
|
<!-- </el-dialog>--> |
|
|
|
<el-dialog :title="title" :visible.sync="open" width="80%" append-to-body> |
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
|
|
|
<el-form-item label="产品名称" prop="name"> |
|
|
|
<el-input v-model="form.name" placeholder="请输入产品名称" /> |
|
|
|
@ -554,19 +685,200 @@ |
|
|
|
<el-button @click="cancel">取 消</el-button> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<!-- 修改弹窗--> |
|
|
|
<!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>--> |
|
|
|
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="80px">--> |
|
|
|
<!-- <el-form-item label="产品名称" prop="name">--> |
|
|
|
<!-- <el-input v-model="form.name" placeholder="请输入产品名称" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="产品类型" prop="type">--> |
|
|
|
<!-- <el-select v-model="form.type" placeholder="请选择产品类型" clearable>--> |
|
|
|
<!-- <el-option v-for="dict in dict.type.medicine_type" :key="dict.value" :label="dict.label" :value="dict.value" />--> |
|
|
|
<!-- </el-select>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="产品分类" prop="category">--> |
|
|
|
<!-- <el-select v-model="form.category" placeholder="请选择产品分类" clearable>--> |
|
|
|
<!-- <el-option v-for="dict in dict.type.vet_product_category" :key="dict.value" :label="dict.label" :value="dict.value" />--> |
|
|
|
<!-- </el-select>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="规格" prop="specification">--> |
|
|
|
<!-- <el-input v-model="form.specification" placeholder="请输入规格" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="单位" prop="unit">--> |
|
|
|
<!-- <el-input v-model="form.unit" placeholder="请输入单位" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="生产厂家" prop="manufacturer">--> |
|
|
|
<!-- <el-input v-model="form.manufacturer" placeholder="请输入生产厂家" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="批准文号" prop="approvalNumber">--> |
|
|
|
<!-- <el-input v-model="form.approvalNumber" placeholder="请输入批准文号" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="主要成分" prop="ingredients">--> |
|
|
|
<!-- <el-input v-model="form.ingredients" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="适应症" prop="indications">--> |
|
|
|
<!-- <el-input v-model="form.indications" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="用法用量" prop="usageDosage">--> |
|
|
|
<!-- <el-input v-model="form.usageDosage" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="销售价格" prop="price">--> |
|
|
|
<!-- <el-input v-model="form.price" placeholder="请输入销售价格" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="成本价" prop="costPrice">--> |
|
|
|
<!-- <el-input v-model="form.costPrice" placeholder="请输入成本价" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="库存数量" prop="stock">--> |
|
|
|
<!-- <el-input v-model="form.stock" placeholder="请输入库存数量" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="最低库存预警" prop="minStock">--> |
|
|
|
<!-- <el-input v-model="form.minStock" placeholder="请输入最低库存预警" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="相关图片" prop="mainImage">--> |
|
|
|
<!-- <image-upload v-model="form.mainImage"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <!– <el-form-item label="多张图片URL,JSON格式" prop="images">–>--> |
|
|
|
<!-- <!– <el-input v-model="form.images" type="textarea" placeholder="请输入内容" />–>--> |
|
|
|
<!-- <!– </el-form-item>–>--> |
|
|
|
<!-- <el-form-item label="适用动物:如犬、猫、猪等" prop="treatAnimals">--> |
|
|
|
<!-- <el-input v-model="form.treatAnimals" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="治疗疾病" prop="treatDiseases">--> |
|
|
|
<!-- <el-input v-model="form.treatDiseases" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="治疗方案/内容">--> |
|
|
|
<!-- <editor v-model="form.treatmentContent" :min-height="192"/>--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="治疗周期" prop="treatmentDuration">--> |
|
|
|
<!-- <el-input v-model="form.treatmentDuration" placeholder="请输入治疗周期" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <el-form-item label="注意事项" prop="precautions">--> |
|
|
|
<!-- <el-input v-model="form.precautions" type="textarea" placeholder="请输入内容" />--> |
|
|
|
<!-- </el-form-item>--> |
|
|
|
<!-- <!– <el-form-item label="删除标识:0-正常/1-删除" prop="isDeleted">–>--> |
|
|
|
<!-- <!– <el-input v-model="form.isDeleted" placeholder="请输入删除标识:0-正常/1-删除" />–>--> |
|
|
|
<!-- <!– </el-form-item>–>--> |
|
|
|
<!-- <!– <el-form-item label="诊所ID" prop="clinicId">–>--> |
|
|
|
<!-- <!– <el-input v-model="form.clinicId" placeholder="请输入诊所ID" />–>--> |
|
|
|
<!-- <!– </el-form-item>–>--> |
|
|
|
<!-- <!– <el-form-item label="兽医ID" prop="vetId">–>--> |
|
|
|
<!-- <!– <el-input v-model="form.vetId" placeholder="请输入兽医ID" />–>--> |
|
|
|
<!-- <!– </el-form-item>–>--> |
|
|
|
<!-- <!– <el-form-item label="创建时间" prop="createdAt">–>--> |
|
|
|
<!-- <!– <el-date-picker clearable–>--> |
|
|
|
<!-- <!– v-model="form.createdAt"–>--> |
|
|
|
<!-- <!– type="date"–>--> |
|
|
|
<!-- <!– value-format="yyyy-MM-dd"–>--> |
|
|
|
<!-- <!– placeholder="请选择创建时间">–>--> |
|
|
|
<!-- <!– </el-date-picker>–>--> |
|
|
|
<!-- <!– </el-form-item>–>--> |
|
|
|
<!-- <!– <el-form-item label="更新时间" prop="updatedAt">–>--> |
|
|
|
<!-- <!– <el-date-picker clearable–>--> |
|
|
|
<!-- <!– v-model="form.updatedAt"–>--> |
|
|
|
<!-- <!– type="date"–>--> |
|
|
|
<!-- <!– value-format="yyyy-MM-dd"–>--> |
|
|
|
<!-- <!– placeholder="请选择更新时间">–>--> |
|
|
|
<!-- <!– </el-date-picker>–>--> |
|
|
|
<!-- <!– </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>--> |
|
|
|
<!-- </div>--> |
|
|
|
<!-- </el-dialog>--> |
|
|
|
|
|
|
|
<!-- 详情弹窗 --> |
|
|
|
<el-dialog title="产品详情" :visible.sync="detailViews" width="80%" append-to-body> |
|
|
|
<el-descriptions :column="4" border v-loading="detailLoading" > |
|
|
|
<el-descriptions-item label="产品名称" :span="4"> |
|
|
|
{{ currentDetail.name || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="产品类型"> |
|
|
|
{{ currentDetail.type || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="产品分类"> |
|
|
|
{{ currentDetail.category || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="规格"> |
|
|
|
{{ currentDetail.specification || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="单位"> |
|
|
|
{{ currentDetail.unit || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="生产厂家" :span="2"> |
|
|
|
{{ currentDetail.manufacturer || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="批准文号" :span="2"> |
|
|
|
{{ currentDetail.approvalNumber || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="销售价格"> |
|
|
|
{{ currentDetail.price || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="成本价"> |
|
|
|
{{ currentDetail.costPrice || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="库存数量"> |
|
|
|
{{ currentDetail.stock || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="最低库存预警"> |
|
|
|
{{ currentDetail.minStock || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="适用动物" :span="2"> |
|
|
|
{{ currentDetail.treatAnimals || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="治疗疾病" :span="2"> |
|
|
|
{{ currentDetail.treatDiseases || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="主要成分" :span="4"> |
|
|
|
{{ currentDetail.ingredients || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="适应症" :span="4"> |
|
|
|
{{ currentDetail.indications || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="用法用量" :span="4"> |
|
|
|
{{ currentDetail.usageDosage || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="治疗方案/内容" :span="4"> |
|
|
|
<div v-html="currentDetail.treatmentContent || '--'"></div> |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="治疗周期" :span="4" > |
|
|
|
{{ currentDetail.treatmentDuration || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="注意事项" :span="4"> |
|
|
|
{{ currentDetail.precautions || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="创建时间" :span="2"> |
|
|
|
{{ currentDetail.createdAt || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item label="更新时间" :span="2"> |
|
|
|
{{ currentDetail.updatedAt || '--' }} |
|
|
|
</el-descriptions-item> |
|
|
|
</el-descriptions> |
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button @click="detailViews = false">关 闭</el-button> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { listProduct, getProduct, delProduct, addProduct, updateProduct } from "@/api/vet/product" |
|
|
|
import { listProduct, getProduct, delProduct, addProduct, updateProduct, offlineProduct, publishProduct, submitAuditProduct, cancelAuditProduct, resubmitAuditProduct } from "@/api/vet/product" |
|
|
|
|
|
|
|
export default { |
|
|
|
name: "Product", |
|
|
|
props: { |
|
|
|
shopId: { |
|
|
|
type: [Number, String], |
|
|
|
required: true |
|
|
|
} |
|
|
|
}, |
|
|
|
dicts: ['medicine_type', 'vet_product_category', 'sys_publish_status', 'audit_status'], |
|
|
|
data() { |
|
|
|
return { |
|
|
|
// 遮罩层 |
|
|
|
loading: true, |
|
|
|
detailLoading: false, |
|
|
|
// 选中数组 |
|
|
|
ids: [], |
|
|
|
// 非单个禁用 |
|
|
|
@ -577,12 +889,17 @@ export default { |
|
|
|
showSearch: true, |
|
|
|
// 总条数 |
|
|
|
total: 0, |
|
|
|
// 步骤 |
|
|
|
activeStep: 0, |
|
|
|
// 兽医产品信息表格数据 |
|
|
|
productList: [], |
|
|
|
// 弹出层标题 |
|
|
|
title: "", |
|
|
|
// 是否显示弹出层 |
|
|
|
open: false, |
|
|
|
detailViews: false, |
|
|
|
// 当前查看的详情 |
|
|
|
currentDetail: {}, |
|
|
|
// 查询参数 |
|
|
|
queryParams: { |
|
|
|
pageNum: 1, |
|
|
|
@ -613,7 +930,8 @@ export default { |
|
|
|
clinicId: null, |
|
|
|
vetId: null, |
|
|
|
createdAt: null, |
|
|
|
updatedAt: null |
|
|
|
updatedAt: null, |
|
|
|
shopId: null |
|
|
|
}, |
|
|
|
// 表单参数 |
|
|
|
form: {}, |
|
|
|
@ -667,6 +985,7 @@ export default { |
|
|
|
}, |
|
|
|
// 表单重置 |
|
|
|
reset() { |
|
|
|
this.activeStep = 0; |
|
|
|
this.form = { |
|
|
|
id: null, |
|
|
|
name: null, |
|
|
|
@ -715,6 +1034,22 @@ export default { |
|
|
|
this.single = selection.length!==1 |
|
|
|
this.multiple = !selection.length |
|
|
|
}, |
|
|
|
/** 详情按钮操作 */ |
|
|
|
handleDetail(row) { |
|
|
|
this.detailViews = true; |
|
|
|
this.detailLoading = true; |
|
|
|
this.currentDetail = {}; |
|
|
|
|
|
|
|
const id = row.id; |
|
|
|
getProduct(id).then(response => { |
|
|
|
if (response.code === 200) { |
|
|
|
this.currentDetail = response.data; |
|
|
|
} else { |
|
|
|
this.$modal.msgError("获取详情失败"); |
|
|
|
} |
|
|
|
this.detailLoading = false; |
|
|
|
}); |
|
|
|
}, |
|
|
|
/** 新增按钮操作 */ |
|
|
|
handleAdd() { |
|
|
|
this.reset() |
|
|
|
@ -731,6 +1066,35 @@ export default { |
|
|
|
this.title = "修改兽医产品信息" |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// // 上一步 |
|
|
|
// prevStep() { |
|
|
|
// this.activeStep--; |
|
|
|
// }, |
|
|
|
// // 下一步 |
|
|
|
// nextStep() { |
|
|
|
// if (this.activeStep === 0) { |
|
|
|
// this.$refs.form.validate(valid => { |
|
|
|
// if (valid) this.activeStep++; |
|
|
|
// }); |
|
|
|
// return; |
|
|
|
// } |
|
|
|
// }, |
|
|
|
// 提交表单 |
|
|
|
// submitForm() { |
|
|
|
// this.$refs.productForm.validate((valid) => { |
|
|
|
// if (valid) { |
|
|
|
// // 表单验证通过,提交数据 |
|
|
|
// this.$message.success("提交成功"); |
|
|
|
// // 这里写接口提交逻辑 |
|
|
|
// // this.$api.product.add(this.form).then(res => { ... }) |
|
|
|
// this.dialogVisible = false; |
|
|
|
// } else { |
|
|
|
// this.$message.error("请完善必填信息"); |
|
|
|
// return false; |
|
|
|
// } |
|
|
|
// }); |
|
|
|
// }, |
|
|
|
/** 提交按钮 */ |
|
|
|
submitForm() { |
|
|
|
this.$refs["form"].validate(valid => { |
|
|
|
@ -833,10 +1197,80 @@ export default { |
|
|
|
} |
|
|
|
return map[auditStatus] || '' |
|
|
|
}, |
|
|
|
|
|
|
|
// 上架 |
|
|
|
handlePublish(row) { |
|
|
|
publishProduct(row.id).then(response => { |
|
|
|
this.$modal.msgSuccess("上架成功") |
|
|
|
this.getList() |
|
|
|
}).catch(() => { |
|
|
|
this.$modal.msgError("上架失败") |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 下架 |
|
|
|
handleOffline(row) { |
|
|
|
offlineProduct(row.id).then(response => { |
|
|
|
this.$modal.msgSuccess("下架成功") |
|
|
|
this.getList() |
|
|
|
}).catch(() => { |
|
|
|
this.$modal.msgError("下架失败") |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 提交审核 |
|
|
|
handleSubmitAudit(row) { |
|
|
|
submitAuditProduct(row.id).then(response => { |
|
|
|
this.$modal.msgSuccess("提交审核成功") |
|
|
|
this.getList() |
|
|
|
}).catch(() => { |
|
|
|
this.$modal.msgError("提交审核失败") |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 取消审核 |
|
|
|
handleCancelAudit(row){ |
|
|
|
cancelAuditProduct(row.id).then(response => { |
|
|
|
this.$modal.msgSuccess("取消审核成功") |
|
|
|
this.getList() |
|
|
|
}).catch(() => { |
|
|
|
this.$modal.msgError("取消审核失败") |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 重新提交审核 |
|
|
|
handleResubmitAudit(row){ |
|
|
|
resubmitAuditProduct(row.id).then(response => { |
|
|
|
this.$modal.msgSuccess("重新提交审核成功") |
|
|
|
this.getList() |
|
|
|
}).catch(() => { |
|
|
|
this.$modal.msgError("重新提交审核失败") |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style scoped> |
|
|
|
::v-deep .el-descriptions-item__cell{ |
|
|
|
width: 90px; |
|
|
|
|
|
|
|
} |
|
|
|
::v-deep .el-descriptions-row th{ |
|
|
|
text-align: center !important; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .pagestyle .el-input{ |
|
|
|
width: auto !important; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .pagestyle .pagination-container{ |
|
|
|
background-color: #f8fafc; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
//表格价格、库存样式 |
|
|
|
.price-cell { |
|
|
|
@ -863,4 +1297,136 @@ export default { |
|
|
|
margin-top: 2px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 操作按钮样式 |
|
|
|
.info-btn { |
|
|
|
padding: 6px 10px; |
|
|
|
border-radius: 4px; |
|
|
|
margin: 0 10px; |
|
|
|
transition: all 0.3s ease; |
|
|
|
} |
|
|
|
|
|
|
|
.view-btn:hover { |
|
|
|
background-color: rgb(216, 238, 248); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.chat-btn:hover { |
|
|
|
background-color: rgb(225, 233, 246); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.alter-btn:hover{ |
|
|
|
background-color: rgb(230, 255, 238); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.delete-btn:hover { |
|
|
|
background-color: rgba(245, 108, 108, 0.1); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.submit-btn:hover { |
|
|
|
background-color: rgb(253, 250, 232); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.publish-btn:hover { |
|
|
|
background-color: rgb(253, 238, 228); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.offline-btn:hover { |
|
|
|
background-color: rgb(237, 237, 235); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.cancel-btn:hover { |
|
|
|
background-color: rgb(244, 237, 251); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
.resubmit-btn:hover { |
|
|
|
background-color: rgb(248, 232, 250); |
|
|
|
transform: translateY(-1px); |
|
|
|
} |
|
|
|
|
|
|
|
// 新增/修改的弹窗 |
|
|
|
::v-deep .el-dialog { |
|
|
|
border-radius: 12px; |
|
|
|
overflow: hidden; |
|
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.12); |
|
|
|
animation: dialogFadeIn 0.3s ease; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-dialog__header { |
|
|
|
background: linear-gradient(135deg, #42b983 0%, #83df92 100%); |
|
|
|
padding: 18px 24px; |
|
|
|
border-bottom: none; |
|
|
|
position: relative; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-dialog__title { |
|
|
|
font-size: 17px; |
|
|
|
font-weight: 600; |
|
|
|
color: white; |
|
|
|
letter-spacing: 0.5px; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-dialog__headerbtn:hover .el-dialog__close { |
|
|
|
color: #ffd04b; |
|
|
|
transform: rotate(90deg); |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-dialog__body { |
|
|
|
padding: 28px 24px 20px; |
|
|
|
background-color: #f8fafc; |
|
|
|
max-height: 70vh; |
|
|
|
overflow-y: auto; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-form-item { |
|
|
|
margin-bottom: 20px; |
|
|
|
transition: all 0.3s; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-form-item__label { |
|
|
|
font-weight: 500; |
|
|
|
color: #2d3748; |
|
|
|
font-size: 14px; |
|
|
|
transition: color 0.3s; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-input, |
|
|
|
::v-deep .el-textarea, |
|
|
|
::v-deep .el-select { |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-input__inner, |
|
|
|
::v-deep .el-textarea__inner { |
|
|
|
border-radius: 8px; |
|
|
|
border: 1px solid #dcdfe6; |
|
|
|
font-size: 14px; |
|
|
|
transition: all 0.3s; |
|
|
|
background-color: #fcfdfe; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-input__inner:focus, |
|
|
|
::v-deep .el-textarea__inner:focus { |
|
|
|
border-color: #42B983; |
|
|
|
box-shadow: 0 0 0 3px rgb(230, 255, 238); |
|
|
|
background-color: white; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-select .el-input__inner { |
|
|
|
padding-right: 35px; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-dialog__footer { |
|
|
|
padding: 20px 24px; |
|
|
|
background-color: #f8fafc; |
|
|
|
border-top: 1px solid #eef2f7; |
|
|
|
border-radius: 0 0 12px 12px; |
|
|
|
} |
|
|
|
</style> |