新增技能类型等

main
小霞 2025-02-16 21:32:42 +08:00
parent 8dce49766f
commit 02504166a3
1 changed files with 148 additions and 14 deletions

View File

@ -1,25 +1,47 @@
<template>
<el-form>
<el-form-item>
<el-button
@click="
dialogTableVisible = true;
createFrom.resetFields();
"
type="primary"
>新增</el-button
>
<el-button @click="addProduct()" type="primary">新增</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<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">
<template #default="scope">
<div>{{ scope.row.price/100 }}</div>
<div>{{ scope.row.price / 100 }}</div>
</template>
</el-table-column>
<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 label="操作">
<template #default="scope">
@ -36,7 +58,7 @@
<el-dialog
v-model="dialogTableVisible"
:title="id ? '修改产品' : '新增产品'"
width="800"
width="600"
>
<el-form ref="createFrom" :model="createFormData" :rules="createFromRules">
<el-form-item label="名称" prop="name">
@ -45,7 +67,7 @@
<el-form-item label="价格" prop="price">
<el-input v-model="createFormData.price" placeholder="请输入价格" />
</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-input
type="number"
@ -53,6 +75,48 @@
placeholder="请输入可使用次数"
/>
</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-input
v-model="createFormData.description"
@ -74,7 +138,7 @@
</template>
<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 { ElMessage } from "element-plus";
import { getProduct, createProduct, updateProduct } from "@/utils/api.ts";
@ -83,6 +147,40 @@ onMounted(() => {
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 {
id?: String;
name: String; //
@ -94,7 +192,7 @@ interface RuleForm {
const id = ref("");
const createFrom = ref(); //DOM
let createFrom = ref(); //DOM
const dialogTableVisible = ref(false); //&
@ -105,11 +203,22 @@ const createFormData = reactive({
description: "", //
image_url: "", //
api_usage_limit: "", //API使
deduction_count_per_success_call: "", //,
cost_fee: "", //
skill_type: "", //
});
const createFromRules = reactive<FormRules<RuleForm>>({
name: [{ 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: [
{ required: true, message: "请输入可使用次数", trigger: "blur" },
],
@ -117,6 +226,20 @@ const createFromRules = reactive<FormRules<RuleForm>>({
//
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 获取产品列表
*/
@ -136,6 +259,11 @@ const editProduct = (row) => {
createFormData.name = row.name;
createFormData.price = row.price;
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;
};
/**
@ -146,6 +274,12 @@ const submitForm = async (formEl: FormInstance | undefined) => {
await formEl.validate(async (valid, fields) => {
if (valid) {
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);
//
if (createFormData.id) {