Browse Source

兽医PC端产品信息修改

master
王妍洁 1 week ago
parent
commit
0c25c46646
  1. 179
      chenhai-ui/src/views/syd.vue
  2. 5
      chenhai-ui/src/views/system/recommendation/index.vue
  3. 410
      chenhai-ui/src/views/vet/product/index.vue

179
chenhai-ui/src/views/syd.vue

@ -11,10 +11,10 @@
查看全部
</el-button>
</div>
<div class="notification-grid">
<!-- 通知卡片 - 动态变色 -->
<div class="notification-card-main"
<div class="notification-card-main"
@click="$router.push('/vet-info/VetNotification')"
:class="{
'has-unread': tjzs.unreadCount > 0,
@ -266,10 +266,10 @@
<div v-if="activeStep === 0">
<el-form ref="qualificationForm" :model="qualificationForm" :rules="rules" label-width="100px">
<el-form-item label="真实姓名" prop="realName">
<el-input v-model="qualificationForm.realName" placeholder="请输入您的真实姓名" />
<el-input v-model="qualificationForm.realName" placeholder="请输入您的真实姓名" maxlength="10" minlength="2"/>
</el-form-item>
<el-form-item label="身份证号" prop="idCard">
<el-input v-model="qualificationForm.idCard" placeholder="请输入身份证号" />
<el-input v-model="qualificationForm.idCard" placeholder="请输入身份证号" maxlength="18"/>
</el-form-item>
<el-form-item label="资质类型" prop="qualificationType">
<el-select
@ -573,10 +573,13 @@ export default {
qualificationTypeOptions: [],
rules: {
realName: [
{required: true, message: "请输入真实姓名", trigger: "blur"}
{required: true, message: "请输入真实姓名", trigger: "blur"},
{ min: 2, max: 10, message: "长度在2到10个字符", trigger: "blur" },
],
idCard: [
{required: true, message: "请输入身份证号", trigger: "blur"}
{required: true, message: "请输入身份证号", trigger: "blur"},
{ pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/, message: "身份证号码不合法", trigger: "blur" },
{ min: 1, max: 18, message: "长度在18个字符", trigger: "blur" },
],
qualificationType: [
{required: true, message: "请选择资质类型", trigger: "change"}
@ -591,13 +594,13 @@ export default {
notificationChart: null,
trendChart: null,
qualificationChart: null,
//
platformUserValue: 12589.68,
herdsmanCount: "456/2",
vetCount: 89.50,
shopCount: 521,
//
qualificationTypeData: [
{ name: '执业兽医', value: 120 },
@ -775,18 +778,18 @@ export default {
initCharts() {
//
this.notificationChart = echarts.init(document.getElementById('notificationChart'));
//
this.trendChart = echarts.init(document.getElementById('trendChart'));
//
this.qualificationChart = echarts.init(document.getElementById('qualificationChart'));
//
this.updateNotificationChart();
this.updateTrendChart();
this.updateQualificationChart();
//
window.addEventListener('resize', this.handleResize);
},
@ -796,15 +799,15 @@ export default {
if (this.trendChart) this.trendChart.resize();
if (this.qualificationChart) this.qualificationChart.resize();
},
/** 更新通知状态环形图 */
updateNotificationChart() {
if (!this.notificationChart) return;
const unreadCount = this.tjzs.unreadCount || 0;
const readCount = this.tjzs.readCount || 0;
const totalCount = this.tjzs.totalCount || (unreadCount + readCount);
const option = {
tooltip: {
trigger: 'item',
@ -839,34 +842,34 @@ export default {
}
},
data: [
{
value: unreadCount,
name: '未读通知',
itemStyle: { color: '#ff6b6b' }
{
value: unreadCount,
name: '未读通知',
itemStyle: { color: '#ff6b6b' }
},
{
value: readCount,
name: '已读通知',
itemStyle: { color: '#51cf66' }
{
value: readCount,
name: '已读通知',
itemStyle: { color: '#51cf66' }
}
]
}
]
};
this.notificationChart.setOption(option);
},
/** 更新趋势图 */
updateTrendChart() {
if (!this.trendChart) return;
//
const days = parseInt(this.trendTimeRange);
const dates = [];
const applicationData = [];
const approvalData = [];
for (let i = days - 1; i >= 0; i--) {
const date = new Date();
date.setDate(date.getDate() - i);
@ -874,7 +877,7 @@ export default {
applicationData.push(Math.floor(Math.random() * 20) + 10);
approvalData.push(Math.floor(Math.random() * 15) + 5);
}
const option = {
tooltip: {
trigger: 'axis',
@ -953,14 +956,14 @@ export default {
}
]
};
this.trendChart.setOption(option);
},
/** 更新资质类型分布图 */
updateQualificationChart() {
if (!this.qualificationChart) return;
const option = {
tooltip: {
trigger: 'axis',
@ -1023,10 +1026,10 @@ export default {
}
]
};
this.qualificationChart.setOption(option);
},
/** 刷新图表数据 */
refreshCharts() {
this.$message({
@ -1034,19 +1037,19 @@ export default {
type: 'info',
duration: 1000
});
//
this.getcountSummary();
//
this.updateTrendChart();
//
setTimeout(() => {
this.platformUserValue += Math.floor(Math.random() * 100);
this.vetCount += Math.floor(Math.random() * 10);
this.shopCount += Math.floor(Math.random() * 5);
this.$message({
message: '数据刷新完成',
type: 'success',
@ -1134,26 +1137,26 @@ export default {
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);
&.has-unread {
background: linear-gradient(145deg, #fff2f0, #ffe7e7);
border-left: 6px solid #ff6b6b;
animation: softPulse 2s infinite;
.notification-title {
color: #c92a2a;
}
}
&.no-unread {
background: linear-gradient(145deg, #f0f9ff, #e6f4ff);
border-left: 6px solid #339af0;
.notification-title {
color: #1971c2;
}
}
&:hover {
transform: translateY(-4px);
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.12);
@ -1174,14 +1177,14 @@ export default {
justify-content: center;
background: rgba(255, 255, 255, 0.8);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
i {
font-size: 28px;
.has-unread & {
color: #ff6b6b;
}
.no-unread & {
color: #339af0;
}
@ -1225,11 +1228,11 @@ export default {
padding: 2px 8px;
border-radius: 20px;
background: rgba(0, 0, 0, 0.04);
.has-unread & {
background: rgba(255, 107, 107, 0.1);
}
.no-unread & {
background: rgba(51, 154, 240, 0.1);
}
@ -1240,24 +1243,24 @@ export default {
align-items: center;
font-size: 14px;
color: #5a6a7e;
.stat-dot {
width: 8px;
height: 8px;
border-radius: 50%;
margin-right: 8px;
&.unread {
background: #ff6b6b;
box-shadow: 0 0 0 2px rgba(255, 107, 107, 0.2);
}
&.read {
background: #51cf66;
box-shadow: 0 0 0 2px rgba(81, 207, 102, 0.2);
}
}
.stat-divider {
margin: 0 10px;
color: #d0d7dd;
@ -1270,20 +1273,20 @@ export default {
border-radius: 16px;
transition: all 0.3s ease;
border: 1px solid #f0f0f0;
&:hover {
transform: translateY(-4px);
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08);
}
&-total {
background: linear-gradient(145deg, #fff7e6, #fff2db);
}
&-read {
background: linear-gradient(145deg, #e8f5e9, #dff0df);
}
&-unread {
background: linear-gradient(145deg, #ffebee, #ffe4e4);
}
@ -1306,22 +1309,22 @@ export default {
display: flex;
align-items: center;
justify-content: center;
i {
font-size: 26px;
color: white;
}
&.icon-total {
background: linear-gradient(145deg, #ff9a44, #ff6b08);
box-shadow: 0 6px 12px rgba(255, 107, 8, 0.2);
}
&.icon-read {
background: linear-gradient(145deg, #51cf66, #37b24d);
box-shadow: 0 6px 12px rgba(81, 207, 102, 0.2);
}
&.icon-unread {
background: linear-gradient(145deg, #ff6b6b, #fa5252);
box-shadow: 0 6px 12px rgba(255, 107, 107, 0.2);
@ -1351,15 +1354,15 @@ export default {
color: #7c8b9c;
display: flex;
align-items: center;
i {
margin-right: 4px;
}
&.positive {
color: #51cf66;
}
&.warning {
color: #ff922b;
}
@ -1396,7 +1399,7 @@ export default {
.refresh-btn {
background: #f0f2f5;
border: none;
&:hover {
background: #e4e7ed;
transform: rotate(180deg);
@ -1409,11 +1412,11 @@ export default {
display: grid;
gap: 24px;
margin-bottom: 24px;
&.two-cols {
grid-template-columns: 1fr 1fr;
}
&:last-child {
margin-bottom: 0;
}
@ -1427,21 +1430,21 @@ export default {
transition: all 0.3s ease;
border: 1px solid #f0f4f8;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
&:hover {
transform: translateY(-4px);
box-shadow: 0 16px 32px rgba(0, 0, 0, 0.08);
border-color: transparent;
}
&.gradient-blue {
background: linear-gradient(145deg, #fff, #f9fcff);
}
&.gradient-purple {
background: linear-gradient(145deg, #fff, #faf9ff);
}
&.gradient-green {
background: linear-gradient(145deg, #fff, #f9fffb);
}
@ -1462,7 +1465,7 @@ export default {
font-weight: 600;
font-size: 16px;
color: #2c3e50;
i {
margin-right: 10px;
color: #409EFF;
@ -1474,7 +1477,7 @@ export default {
color: #a0b3c2;
font-size: 16px;
cursor: pointer;
&:hover {
color: #409EFF;
}
@ -1501,13 +1504,13 @@ export default {
align-items: center;
gap: 8px;
font-size: 14px;
.dot {
width: 10px;
height: 10px;
border-radius: 50%;
}
strong {
font-size: 16px;
color: #1e293b;
@ -1534,7 +1537,7 @@ export default {
border-radius: 16px;
transition: all 0.2s ease;
border: 1px solid #f0f4f8;
&:hover {
background: #f9fcff;
border-color: #409EFF;
@ -1550,7 +1553,7 @@ export default {
align-items: center;
justify-content: center;
margin-right: 14px;
i {
font-size: 22px;
color: white;
@ -1578,15 +1581,15 @@ export default {
font-size: 11px;
display: flex;
align-items: center;
&.positive {
color: #51cf66;
}
&.negative {
color: #ff6b6b;
}
i {
margin-right: 2px;
}
@ -1735,11 +1738,11 @@ export default {
.notification-grid {
grid-template-columns: repeat(2, 1fr);
}
.chart-grid.two-cols {
grid-template-columns: 1fr;
}
.kpi-grid {
grid-template-columns: repeat(2, 1fr);
}
@ -1749,35 +1752,35 @@ export default {
.box {
padding: 12px;
}
.notification-section,
.dashboard-section {
padding: 18px;
}
.notification-grid {
grid-template-columns: 1fr;
}
.notification-card-main {
grid-column: span 1;
}
.dashboard-header {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.header-right {
width: 100%;
justify-content: space-between;
}
.kpi-grid {
grid-template-columns: 1fr;
}
.chart-card-footer {
flex-wrap: wrap;
gap: 12px;
@ -1802,4 +1805,4 @@ export default {
.certificate-upload-container::-webkit-scrollbar-thumb:hover {
background: #a8a8a8;
}
</style>
</style>

5
chenhai-ui/src/views/system/recommendation/index.vue

@ -524,10 +524,10 @@
<el-form-item label="备注" prop="storeRemark">
<el-input v-model="form.storeRemark" type="textarea" placeholder="请输入店铺备注信息" rows="3" />
</el-form-item>
<div style="font-size: 12px; color: #999; margin-top: 10px;">
<i class="el-icon-info"></i> 提示经纬度用于地图定位如不清楚可留空
</div>
</el-tab-pane>
</el-tabs>
</el-form>
@ -658,6 +658,9 @@ export default {
],
specification: [
{ required: true, message: "规格不能为空", trigger: "blur" }
],
expertId:[
{ required: true, message: "推荐专家不能为空", trigger: "blur" }
]
}
};

410
chenhai-ui/src/views/vet/product/index.vue

@ -453,241 +453,115 @@
/>
</div>
<!-- 新增产品弹窗 -->
<!-- <el-dialog title="新增产品" :visible.sync="open" width="80%" append-to-body>-->
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">-->
<!-- &lt;!&ndash; 步骤条 &ndash;&gt;-->
<!-- <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>-->
<!-- &lt;!&ndash; 步骤1基础信息 &ndash;&gt;-->
<!-- <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>-->
<!-- &lt;!&ndash; 步骤2价格库存 &ndash;&gt;-->
<!-- <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>-->
<!-- &lt;!&ndash; 步骤3详细说明 &ndash;&gt;-->
<!-- <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>-->
<!-- &lt;!&ndash; 步骤操作按钮 &ndash;&gt;-->
<!-- <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="请输入产品名称" />
</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="title" :visible.sync="open" width="500px" append-to-body>-->
<el-tabs v-model="activeName" type="card">
<el-tab-pane label="基本信息" name="first">
<el-row>
<el-col :span="24">
<el-form-item label="产品名称" prop="name">
<el-input v-model="form.name" placeholder="请输入产品名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<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-col>
<el-col :span="12">
<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-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="approvalNumber">
<el-input v-model="form.approvalNumber" placeholder="请输入批准文号" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="相关图片" prop="mainImage">
<image-upload v-model="form.mainImage"/>
</el-form-item>
</el-tab-pane>
<el-tab-pane label="价格库存" name="second">
<el-row>
<el-col :span="12">
<el-form-item label="销售价格" prop="price">
<el-input v-model="form.price" placeholder="请输入销售价格" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="成本价" prop="costPrice">
<el-input v-model="form.costPrice" placeholder="请输入成本价" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="库存数量" prop="stock">
<el-input v-model="form.stock" placeholder="请输入库存数量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="库存预警" prop="minStock">
<el-input v-model="form.minStock" placeholder="请输入最低库存预警" />
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="产品详情" name="third">
<el-row>
<el-col :span="24">
<el-form-item label="适用动物(如犬、猫)" prop="treatAnimals">
<el-input v-model="form.treatAnimals" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="治疗疾病" prop="treatDiseases">
<el-input v-model="form.treatDiseases" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="治疗方案/内容">
<editor v-model="form.treatmentContent" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="治疗周期" prop="treatmentDuration">
<el-input v-model="form.treatmentDuration" placeholder="请输入治疗周期" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="注意事项" prop="precautions">
<el-input v-model="form.precautions" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
<!-- <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="请输入产品名称" />-->
@ -738,9 +612,9 @@
<!-- <el-form-item label="相关图片" prop="mainImage">-->
<!-- <image-upload v-model="form.mainImage"/>-->
<!-- </el-form-item>-->
<!-- &lt;!&ndash; <el-form-item label="多张图片URL,JSON格式" prop="images">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input v-model="form.images" type="textarea" placeholder="请输入内容" />&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!--&lt;!&ndash; <el-form-item label="多张图片URL,JSON格式" prop="images">&ndash;&gt;-->
<!--&lt;!&ndash; <el-input v-model="form.images" type="textarea" placeholder="请输入内容" />&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- <el-form-item label="适用动物:如犬、猫、猪等" prop="treatAnimals">-->
<!-- <el-input v-model="form.treatAnimals" type="textarea" placeholder="请输入内容" />-->
<!-- </el-form-item>-->
@ -756,37 +630,37 @@
<!-- <el-form-item label="注意事项" prop="precautions">-->
<!-- <el-input v-model="form.precautions" type="textarea" placeholder="请输入内容" />-->
<!-- </el-form-item>-->
<!-- &lt;!&ndash; <el-form-item label="删除标识:0-正常/1-删除" prop="isDeleted">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input v-model="form.isDeleted" placeholder="请输入删除标识:0-正常/1-删除" />&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- &lt;!&ndash; <el-form-item label="诊所ID" prop="clinicId">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input v-model="form.clinicId" placeholder="请输入诊所ID" />&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- &lt;!&ndash; <el-form-item label="兽医ID" prop="vetId">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input v-model="form.vetId" placeholder="请输入兽医ID" />&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- &lt;!&ndash; <el-form-item label="创建时间" prop="createdAt">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-date-picker clearable&ndash;&gt;-->
<!-- &lt;!&ndash; v-model="form.createdAt"&ndash;&gt;-->
<!-- &lt;!&ndash; type="date"&ndash;&gt;-->
<!-- &lt;!&ndash; value-format="yyyy-MM-dd"&ndash;&gt;-->
<!-- &lt;!&ndash; placeholder="请选择创建时间">&ndash;&gt;-->
<!-- &lt;!&ndash; </el-date-picker>&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- &lt;!&ndash; <el-form-item label="更新时间" prop="updatedAt">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-date-picker clearable&ndash;&gt;-->
<!-- &lt;!&ndash; v-model="form.updatedAt"&ndash;&gt;-->
<!-- &lt;!&ndash; type="date"&ndash;&gt;-->
<!-- &lt;!&ndash; value-format="yyyy-MM-dd"&ndash;&gt;-->
<!-- &lt;!&ndash; placeholder="请选择更新时间">&ndash;&gt;-->
<!-- &lt;!&ndash; </el-date-picker>&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- </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>-->
<!--&lt;!&ndash; <el-form-item label="删除标识:0-正常/1-删除" prop="isDeleted">&ndash;&gt;-->
<!--&lt;!&ndash; <el-input v-model="form.isDeleted" placeholder="请输入删除标识:0-正常/1-删除" />&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!--&lt;!&ndash; <el-form-item label="诊所ID" prop="clinicId">&ndash;&gt;-->
<!--&lt;!&ndash; <el-input v-model="form.clinicId" placeholder="请输入诊所ID" />&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!--&lt;!&ndash; <el-form-item label="兽医ID" prop="vetId">&ndash;&gt;-->
<!--&lt;!&ndash; <el-input v-model="form.vetId" placeholder="请输入兽医ID" />&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!--&lt;!&ndash; <el-form-item label="创建时间" prop="createdAt">&ndash;&gt;-->
<!--&lt;!&ndash; <el-date-picker clearable&ndash;&gt;-->
<!--&lt;!&ndash; v-model="form.createdAt"&ndash;&gt;-->
<!--&lt;!&ndash; type="date"&ndash;&gt;-->
<!--&lt;!&ndash; value-format="yyyy-MM-dd"&ndash;&gt;-->
<!--&lt;!&ndash; placeholder="请选择创建时间">&ndash;&gt;-->
<!--&lt;!&ndash; </el-date-picker>&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!--&lt;!&ndash; <el-form-item label="更新时间" prop="updatedAt">&ndash;&gt;-->
<!--&lt;!&ndash; <el-date-picker clearable&ndash;&gt;-->
<!--&lt;!&ndash; v-model="form.updatedAt"&ndash;&gt;-->
<!--&lt;!&ndash; type="date"&ndash;&gt;-->
<!--&lt;!&ndash; value-format="yyyy-MM-dd"&ndash;&gt;-->
<!--&lt;!&ndash; placeholder="请选择更新时间">&ndash;&gt;-->
<!--&lt;!&ndash; </el-date-picker>&ndash;&gt;-->
<!--&lt;!&ndash; </el-form-item>&ndash;&gt;-->
</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>
@ -889,6 +763,8 @@ export default {
showSearch: true,
//
total: 0,
//
activeName: 'first',
//
activeStep: 0,
//

Loading…
Cancel
Save