新增技能类型等
parent
8dce49766f
commit
02504166a3
|
@ -1,25 +1,47 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form>
|
<el-form>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button
|
<el-button @click="addProduct()" type="primary">新增</el-button>
|
||||||
@click="
|
|
||||||
dialogTableVisible = true;
|
|
||||||
createFrom.resetFields();
|
|
||||||
"
|
|
||||||
type="primary"
|
|
||||||
>新增</el-button
|
|
||||||
>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table :data="tableData" border style="width: 100%">
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
<el-table-column prop="name" label="名称" width="180" />
|
<el-table-column prop="name" label="名称" width="180" />
|
||||||
|
<el-table-column prop="name" label="技能类型" width="180">
|
||||||
|
<template #default="scope">
|
||||||
|
<div>
|
||||||
|
{{ skillType(scope.row.skill_type) }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="price" label="价格" width="180">
|
<el-table-column prop="price" label="价格" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>{{ scope.row.price/100 }}元</div>
|
<div>{{ scope.row.price / 100 }}元</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="api_usage_limit" label="次数" />
|
<el-table-column prop="api_usage_limit" label="次数" />
|
||||||
<el-table-column prop="created_at" label="开通时间" />
|
<el-table-column prop="created_at" label="开通时间">
|
||||||
|
<template #default="scope">
|
||||||
|
<div>
|
||||||
|
{{ changTime(scope.row.created_at) }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="cost_fee" label="成本">
|
||||||
|
<template #default="scope">
|
||||||
|
<div v-if="scope.row.cost_fee || scope.row.cost_fee === 0">
|
||||||
|
{{ scope.row.cost_fee }}元
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="deduction_count_per_success_call"
|
||||||
|
label="调用扣费次数"
|
||||||
|
/>
|
||||||
|
<el-table-column prop="service_life_day" label="有效期">
|
||||||
|
<template #default="scope">
|
||||||
|
<div>{{ scope.row.service_life_day }}天</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="description" label="备注" />
|
<el-table-column prop="description" label="备注" />
|
||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
@ -36,7 +58,7 @@
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="dialogTableVisible"
|
v-model="dialogTableVisible"
|
||||||
:title="id ? '修改产品' : '新增产品'"
|
:title="id ? '修改产品' : '新增产品'"
|
||||||
width="800"
|
width="600"
|
||||||
>
|
>
|
||||||
<el-form ref="createFrom" :model="createFormData" :rules="createFromRules">
|
<el-form ref="createFrom" :model="createFormData" :rules="createFromRules">
|
||||||
<el-form-item label="名称" prop="name">
|
<el-form-item label="名称" prop="name">
|
||||||
|
@ -45,7 +67,7 @@
|
||||||
<el-form-item label="价格" prop="price">
|
<el-form-item label="价格" prop="price">
|
||||||
<el-input v-model="createFormData.price" placeholder="请输入价格" />
|
<el-input v-model="createFormData.price" placeholder="请输入价格" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="图片"> </el-form-item>
|
<!-- <el-form-item label="图片"> </el-form-item> -->
|
||||||
<el-form-item label="次数" prop="api_usage_limit">
|
<el-form-item label="次数" prop="api_usage_limit">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
|
@ -53,6 +75,48 @@
|
||||||
placeholder="请输入可使用次数"
|
placeholder="请输入可使用次数"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="调用成功扣除次数"
|
||||||
|
prop="deduction_count_per_success_call"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
type="number"
|
||||||
|
v-model="createFormData.deduction_count_per_success_call"
|
||||||
|
placeholder="请输入调用成功后扣除的次数"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="成本费用" prop="cost_fee">
|
||||||
|
<el-input
|
||||||
|
type="number"
|
||||||
|
v-model="createFormData.cost_fee"
|
||||||
|
placeholder="请输入成本费用"
|
||||||
|
>
|
||||||
|
<template #append>¥</template>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="产品使用期限" prop="service_life_day">
|
||||||
|
<el-input
|
||||||
|
type="number"
|
||||||
|
v-model="createFormData.service_life_day"
|
||||||
|
placeholder="产品使用期限,为空为永久"
|
||||||
|
>
|
||||||
|
<template #append>
|
||||||
|
<div>天</div>
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="技能类型" prop="skill_type">
|
||||||
|
<el-select
|
||||||
|
:disabled="createFormData.id!=''"
|
||||||
|
v-model="createFormData.skill_type"
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-option label="所有" value="all" />
|
||||||
|
<el-option label="身份证识别" value="IdCardOcr" />
|
||||||
|
<el-option label="手写识别" value="HandwritingOcr" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="description">
|
<el-form-item label="备注" prop="description">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="createFormData.description"
|
v-model="createFormData.description"
|
||||||
|
@ -74,7 +138,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, reactive, onMounted } from "vue";
|
import { ref, reactive, onMounted, computed } from "vue";
|
||||||
import type { ComponentSize, FormInstance, FormRules } from "element-plus";
|
import type { ComponentSize, FormInstance, FormRules } from "element-plus";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { getProduct, createProduct, updateProduct } from "@/utils/api.ts";
|
import { getProduct, createProduct, updateProduct } from "@/utils/api.ts";
|
||||||
|
@ -83,6 +147,40 @@ onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const changTime = computed(() => {
|
||||||
|
return (val) => {
|
||||||
|
if (val) {
|
||||||
|
let date = new Date(val);
|
||||||
|
let year = date.getFullYear();
|
||||||
|
let month = date.getMonth() + 1;
|
||||||
|
month = month < 10 ? "0" + month : month;
|
||||||
|
let day = date.getDate();
|
||||||
|
day = day < 10 ? "0" + day : day;
|
||||||
|
return `${year}-${month}-${day}`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
// 技能类型
|
||||||
|
const skillType = computed(() => {
|
||||||
|
let text = "";
|
||||||
|
return (val) => {
|
||||||
|
switch (val) {
|
||||||
|
case "all":
|
||||||
|
text = "所有";
|
||||||
|
break;
|
||||||
|
case "IdCardOcr":
|
||||||
|
text = "身份证识别";
|
||||||
|
break;
|
||||||
|
case "HandwritingOcr":
|
||||||
|
text = "手写识别";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
interface RuleForm {
|
interface RuleForm {
|
||||||
id?: String;
|
id?: String;
|
||||||
name: String; //产品名
|
name: String; //产品名
|
||||||
|
@ -94,7 +192,7 @@ interface RuleForm {
|
||||||
|
|
||||||
const id = ref("");
|
const id = ref("");
|
||||||
|
|
||||||
const createFrom = ref(); //新增或修改产品时的DOM
|
let createFrom = ref(); //新增或修改产品时的DOM
|
||||||
|
|
||||||
const dialogTableVisible = ref(false); //是否显示新增&修改弹框
|
const dialogTableVisible = ref(false); //是否显示新增&修改弹框
|
||||||
|
|
||||||
|
@ -105,11 +203,22 @@ const createFormData = reactive({
|
||||||
description: "", //描述
|
description: "", //描述
|
||||||
image_url: "", //图片链接
|
image_url: "", //图片链接
|
||||||
api_usage_limit: "", //用户购买该产品后可以获得的API使用次数限制。
|
api_usage_limit: "", //用户购买该产品后可以获得的API使用次数限制。
|
||||||
|
deduction_count_per_success_call: "", //调用成功一次,扣除的次数
|
||||||
|
cost_fee: "", //成本费用
|
||||||
|
skill_type: "", //技能类型
|
||||||
});
|
});
|
||||||
|
|
||||||
const createFromRules = reactive<FormRules<RuleForm>>({
|
const createFromRules = reactive<FormRules<RuleForm>>({
|
||||||
name: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
|
name: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
|
||||||
price: [{ required: true, message: "请输入产品价格", trigger: "blur" }],
|
price: [{ required: true, message: "请输入产品价格", trigger: "blur" }],
|
||||||
|
deduction_count_per_success_call: [
|
||||||
|
{ required: true, message: "请输入调用扣费次数", trigger: "blur" },
|
||||||
|
],
|
||||||
|
cost_fee: [{ required: true, message: "请输入成本费用", trigger: "blur" }],
|
||||||
|
service_life_day: [
|
||||||
|
{ required: true, message: "请输入产品使用期限", trigger: "blur" },
|
||||||
|
],
|
||||||
|
skill_type: [{ required: true, message: "请选择技能类型", trigger: "blur" }],
|
||||||
api_usage_limit: [
|
api_usage_limit: [
|
||||||
{ required: true, message: "请输入可使用次数", trigger: "blur" },
|
{ required: true, message: "请输入可使用次数", trigger: "blur" },
|
||||||
],
|
],
|
||||||
|
@ -117,6 +226,20 @@ const createFromRules = reactive<FormRules<RuleForm>>({
|
||||||
//列表数据
|
//列表数据
|
||||||
const tableData = ref([]);
|
const tableData = ref([]);
|
||||||
|
|
||||||
|
const addProduct = () => {
|
||||||
|
createFormData.id = "";
|
||||||
|
createFormData.name = ""; //产品名
|
||||||
|
createFormData.price = ""; //价格
|
||||||
|
createFormData.description = ""; //描述
|
||||||
|
createFormData.image_url = ""; //图片链接
|
||||||
|
createFormData.api_usage_limit = ""; //用户购买该产品后可以获得的API使用次数限制。
|
||||||
|
createFormData.deduction_count_per_success_call = ""; //调用成功一次,扣除的次数
|
||||||
|
createFormData.cost_fee = ""; //成本费用
|
||||||
|
createFormData.skill_type = ""; //技能类型
|
||||||
|
createFormData.service_life_day = ""; //产品使用期限
|
||||||
|
dialogTableVisible.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @titel 获取产品列表
|
* @titel 获取产品列表
|
||||||
*/
|
*/
|
||||||
|
@ -136,6 +259,11 @@ const editProduct = (row) => {
|
||||||
createFormData.name = row.name;
|
createFormData.name = row.name;
|
||||||
createFormData.price = row.price;
|
createFormData.price = row.price;
|
||||||
createFormData.image_url = row.image_url;
|
createFormData.image_url = row.image_url;
|
||||||
|
createFormData.cost_fee = row.cost_fee;
|
||||||
|
createFormData.deduction_count_per_success_call =
|
||||||
|
row.deduction_count_per_success_call;
|
||||||
|
createFormData.service_life_day = row.service_life_day;
|
||||||
|
createFormData.skill_type = row.skill_type;
|
||||||
dialogTableVisible.value = true;
|
dialogTableVisible.value = true;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
|
@ -146,6 +274,12 @@ const submitForm = async (formEl: FormInstance | undefined) => {
|
||||||
await formEl.validate(async (valid, fields) => {
|
await formEl.validate(async (valid, fields) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
createFormData.price = Number(createFormData.price);
|
createFormData.price = Number(createFormData.price);
|
||||||
|
createFormData.cost_fee = Number(createFormData.cost_fee);
|
||||||
|
createFormData.deduction_count_per_success_call = Number(
|
||||||
|
createFormData.deduction_count_per_success_call
|
||||||
|
);
|
||||||
|
createFormData.service_life_day = Number(createFormData.service_life_day);
|
||||||
|
createFormData.skill_type = createFormData.skill_type;
|
||||||
createFormData.api_usage_limit = Number(createFormData.api_usage_limit);
|
createFormData.api_usage_limit = Number(createFormData.api_usage_limit);
|
||||||
// 修改
|
// 修改
|
||||||
if (createFormData.id) {
|
if (createFormData.id) {
|
||||||
|
|
Loading…
Reference in New Issue