共享食谱编写

This commit is contained in:
wangyilin 2025-05-12 16:02:32 +08:00
parent 22d285d8ed
commit c71e6dead3
8 changed files with 1164 additions and 116 deletions

View File

@ -0,0 +1,344 @@
export interface HardwareData{
bodyImage?:string
bodyImageUrl? :string
checkDate?:string
checkDateStr?:string
checkResult? : string | number
checkResultStr?:string
checkStatus?: string | number
checkStatusStr?:string
checkUserId?:string
checkUserName?: string
createTime?:string
createTimeStr?:string
dataSource?:string
deptId?:string
deptIds?:string
deptName?:string
deviceId? :string
diseases?:string
handImage?:string
handImageUrl?:string
handbackImage?:string
handbackImageUrl?:string
headImage?:string
headImageUrl? :string
id?: string
ids?: string
isDefault?:boolean
moreIds ?: string
sex? : string
sexStr?:string
signatureImage?:string
statementVideo? : string
temperature?:string
updateTime? :string
userId?: string
userName?:string
userNameEncrypt?: string
checkInTime?:string
}
const datalistHardwareData:HardwareData[] = [
{
checkInTime:'2025-05-08 00:00:00',
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
checkResultStr:"合格",
checkStatus: 2,
checkStatusStr:"已完成",
checkUserId:"",
checkUserName: "",
createTime:"2025-05-08 09:05:56",
createTimeStr:"2025-05-08 09:05:56",
dataSource:"",
deptId:"1526803620325961729",
deptIds:"",
deptName:"南头央厨",
deviceId : "",
diseases:"无不适",
handImage:"/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
moreIds : "",
sex : "",
sexStr:"未知",
signatureImage: "",
statementVideo : "",
temperature:"36.64",
updateTime :"",
userId: "1727695532542918657",
userName:"**静",
userNameEncrypt: "**静"
},
{
checkInTime:'2025-05-08 00:00:00',
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
checkResultStr:"合格",
checkStatus: 2,
checkStatusStr:"已完成",
checkUserId:"",
checkUserName: "",
createTime:"2025-05-08 09:05:56",
createTimeStr:"2025-05-08 09:05:56",
dataSource:"",
deptId:"1526803620325961729",
deptIds:"",
deptName:"南头央厨",
deviceId : "",
diseases:"无不适",
handImage:"/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
moreIds : "",
sex : "",
sexStr:"未知",
signatureImage: "",
statementVideo : "",
temperature:"36.77",
updateTime :"",
userId: "1727695532542918657",
userName:"**静",
userNameEncrypt: "**静"
},
{
checkInTime:'2025-05-08 00:00:00',
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
checkResultStr:"合格",
checkStatus: 2,
checkStatusStr:"已完成",
checkUserId:"",
checkUserName: "",
createTime:"2025-05-08 09:05:56",
createTimeStr:"2025-05-08 09:05:56",
dataSource:"",
deptId:"1526803620325961729",
deptIds:"",
deptName:"南头央厨",
deviceId : "",
diseases:"无不适",
handImage:"/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
moreIds : "",
sex : "",
sexStr:"未知",
signatureImage: "",
statementVideo : "",
temperature:"36.12",
updateTime :"",
userId: "1727695532542918657",
userName:"**静",
userNameEncrypt: "**静"
},
{
checkInTime:'2025-05-08 00:00:00',
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
checkResultStr:"合格",
checkStatus: 2,
checkStatusStr:"已完成",
checkUserId:"",
checkUserName: "",
createTime:"2025-05-08 09:05:56",
createTimeStr:"2025-05-08 09:05:56",
dataSource:"",
deptId:"1526803620325961729",
deptIds:"",
deptName:"南头央厨",
deviceId : "",
diseases:"恶心",
handImage:"/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
moreIds : "",
sex : "",
sexStr:"未知",
signatureImage: "",
statementVideo : "",
temperature:"36.14",
updateTime :"",
userId: "1727695532542918657",
userName:"**静",
userNameEncrypt: "**静"
},
{
checkInTime:'2025-05-08 00:00:00',
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
checkResultStr:"合格",
checkStatus: 2,
checkStatusStr:"已完成",
checkUserId:"",
checkUserName: "",
createTime:"2025-05-08 09:05:56",
createTimeStr:"2025-05-08 09:05:56",
dataSource:"",
deptId:"1526803620325961729",
deptIds:"",
deptName:"南头央厨",
deviceId : "",
diseases:"湿疹",
handImage:"/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handImg.jpg",
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
moreIds : "",
sex : "",
sexStr:"未知",
signatureImage: "",
statementVideo : "",
temperature:"36.24",
updateTime :"",
userId: "1727695532542918657",
userName:"**静",
userNameEncrypt: "**静"
}
]
export interface ElectronicScale {
personInCharge?:string
nameOfIngredients?:string
quantityOfIngredients?:string
weight?:string | number
weighingTime?:string,
steadyState?:string,
outOfRange?:string,
unit?:string,
deviceModel?:string,
serialNumber?:string
}
const dataListElectronicScale:ElectronicScale[] = [
{
personInCharge:'管理员',
nameOfIngredients:'猪肉',
quantityOfIngredients:'',
weight:'200',
unit:'kg',
steadyState:'稳定',
outOfRange:'正常',
deviceModel:'ES-2000',
serialNumber:'SN123456789',
weighingTime:'2025-5-10 14:15:20'
},
{
personInCharge:'刘某',
nameOfIngredients:'牛肉',
quantityOfIngredients:'',
weight:'100',
unit:'kg',
steadyState:'稳定',
outOfRange:'正常',
deviceModel:'ES-2000',
serialNumber:'SN123456789',
weighingTime:'2025-5-10 14:15:20'
},
{
personInCharge:'张某',
nameOfIngredients:'鸡肉',
quantityOfIngredients:'20',
weight:'30',
unit:'kg',
steadyState:'不稳定',
outOfRange:'正常',
deviceModel:'ES-2000',
serialNumber:'SN123456789',
weighingTime:'2025-5-10 14:15:20'
},
{
personInCharge:'李某',
nameOfIngredients:'胡萝卜',
quantityOfIngredients:'',
weight:'50',
unit:'kg',
steadyState:'稳定',
outOfRange:'正常',
deviceModel:'ES-2000',
serialNumber:'SN123456789',
weighingTime:'2025-5-10 14:15:20'
}
]
export interface cameraDate{
id?:string,
cameraName?:string,
videoChannel?:string
states?:string,
cameraID?:string,
updatedBy?:string
founder?:string,
updateTime?:string,
images?:string
}
const dataListCameraDate:cameraDate[] = [
{
id:'1912428172322918402',
cameraName:'厨房',
videoChannel:'34020000001310000017',
states:'启用',
cameraID:'31011500991180143889',
updatedBy:'系统管理员',
founder:'系统管理员',
updateTime:'2025-4-4 14:12:21',
images:'https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg'
}
]
export default { datalistHardwareData,dataListElectronicScale,dataListCameraDate };

View File

@ -1,26 +1,53 @@
<!-- 硬件数据 -->
<!-- 工作台账 -->
<template>
<div>
<TablePro
ref="tableRef"
:request-api="reqApi"
:search-form-options="searchFormOptions"
:columns="columns"
:isPageTable="true"
:single-line="false"
>
<template #headerExtra>
<n-button
strong
secondary
type="primary"
>
添加
</n-button>
<!-- <n-button style="margin-left: 10px">清空</n-button>
<n-button style="margin-left: 10px">打印</n-button> -->
</template>
</TablePro>
<n-card style="margin-bottom: 16px">
<n-tabs type="line" animated>
<n-tab-pane name="oasis" tab="晨检仪">
<TablePro
ref="tableRef"
:request-api="reqApi"
:search-form-options="searchFormOptions"
:columns="columns"
:isPageTable="true"
:single-line="false"
>
<template #headerExtra>
<n-button style="margin-left: 10px">一键导出</n-button>
</template>
</TablePro>
</n-tab-pane>
<n-tab-pane name="the beatles" tab="电子秤">
<TablePro
ref="tableRef"
:request-api="reqApiElectronicScale"
:search-form-options="searchFormOptionsElectronicScale"
:columns="columnsElectronicScale"
:isPageTable="true"
:single-line="false"
>
<template #headerExtra>
<n-button style="margin-left: 10px">一键导出</n-button>
</template>
</TablePro>
</n-tab-pane>
<n-tab-pane name="jay chou" tab="摄像头">
<TablePro
ref="tableRef"
:request-api="reqApiCameraDate"
:search-form-options="searchFormOptionsCameraDate"
:columns="columnsCameraDate"
:isPageTable="true"
:single-line="false"
>
<template #headerExtra>
<n-button style="margin-left: 10px">一键导出</n-button>
</template>
</TablePro>
</n-tab-pane>
</n-tabs>
</n-card>
</div>
</template>
<script setup lang="tsx">
@ -30,10 +57,16 @@
FormPro,
type FormItemOptions,
type TableProInst,
Icon,
Icon
} from "@/components";
import { NPerformantEllipsis, NPopconfirm, NTag } from "naive-ui";
import { type FormInst, NPerformantEllipsis, NPopconfirm, NTag, useModal } from "naive-ui";
import { type HardwareData,type ElectronicScale } from "@/views/hardwareData/index.ts";
import hardwareData from "@/views/hardwareData/index.ts";
import { ref,reactive } from "vue";
const tableRef = useTemplateRef<TableProInst>("tableRef");
const modal = useModal();
const forms = ref<FormInst | null>(null);
const reqApi: TableType["requestApi"] = (params) => {
return new Promise((resolve) => {
resolve({
@ -42,110 +75,125 @@
current: "1",
// @ts-ignore
pages: "2",
records: [
{
sampleNumber: "LYG00008",
name: "肉沫水蒸蛋",
date: "2025-05-08",
type: "午餐",
remark: "午餐食品留样",
createTime: "2025-05-07",
updateTime: "2025-05-07 13:20:42",
},
{
sampleNumber: "LYG00008",
name: "蒜条炒肉丝",
date: "2025-05-08",
type: "午餐",
remark: "午餐食品留样",
createTime: "2025-05-07",
updateTime: "2025-05-07 13:20:42",
},
],
records: hardwareData.datalistHardwareData,
size: "10",
total: "12",
total: "12"
},
message: "操作成功!",
message: "操作成功!"
});
});
};
type TableType = TableProProps<any, any>;
const searchFormOptions = reactive<TableType["searchFormOptions"]>({
name: {
type: "input",
label: "商品名称",
time: {
type: "datePicker",
label: "时间",
},
userName:{
type:'input',
label: "员工姓名"
},
});
const columns = ref<TableType["columns"]>([
{
key: "sampleNumber",
title: "留样柜",
key:'userName',
title:'员工姓名'
},
{
key: "name",
title: "菜名",
width: 200,
render: ({ name }) => {
key:'temperature',
title:'体温'
},
{
key:'bodyImageUrl',
title:'衣着图片',
render: (value: any) => {
return (
<NPerformantEllipsis style={{ maxWidth: "200px" }}>
{name}
</NPerformantEllipsis>
<n-image
width="30"
src={value.bodyImageUrl}
/>
);
},
}
},
{
key: "date",
title: "日期",
},
{
key: "type",
title: "餐别",
render: ({ type }) => {
return <NTag type="success">{type}</NTag>;
},
},
{
key: "remark",
title: "描述",
width: 200,
render: ({ remark }) => {
key:'handImageUrl',
title:'手心图片',
render: (value: any) => {
return (
<NPerformantEllipsis style={{ maxWidth: "200px" }}>
{remark}
</NPerformantEllipsis>
<n-image
width="30"
src={value.handImageUrl}
/>
);
},
}
},
{
key: "createTime",
title: "创建时间",
key:'handbackImageUrl',
title:'手背图片',
render: (value: any) => {
return (
<n-image
width="30"
src={value.handbackImageUrl}
/>
);
}
},
{
key: "updateTime",
title: "更新时间",
key:'headImageUrl',
title:'头部图片',
render: (value: any) => {
return (
<n-image
width="30"
src={value.headImageUrl}
/>
);
}
},
{
key:'diseases',
title:'健康状态',
render: (value: any) => {
return (
<n-tag type="success">
{value.diseases}
</n-tag>
);
}
},
{
key:'checkResultStr',
title:'晨检结果',
render: (value: any) => {
return (
<n-tag type="success">
{value.checkResultStr}
</n-tag>
);
}
},
{
key:'checkInTime',
title: "打卡时间"
},
{
key: "createTimeStr",
title: "晨检时间"
},
{
key: "",
title: "操作",
width: 200,
render: (value) => {
render: (value:HardwareData) => {
return (
<div style={{ display: "flex" }}>
<n-button
strong
secondary
style={{ marginLeft: "10px" }}
type="warning"
onClick={() => {}}
>
修改
</n-button>
<n-button>查看</n-button>
<NPopconfirm
onPositiveClick={async () => {}}
onNegativeClick={() => {}}
onPositiveClick={async () => {
}}
onNegativeClick={() => {
}}
showIcon={false}
>
{{
@ -159,13 +207,327 @@
删除
</n-button>
),
default: () => "确认要除么?",
default: () => "确认要除么?"
}}
</NPopconfirm>
</div>
);
},
},
}
}
]);
const workAccountsValueList = {
bodyImage:"",
bodyImageUrl :"",
checkResultStr:"",
checkStatusStr:"",
createTime:"",
createTimeStr:"",
diseases:"",
handImageUrl:"",
handbackImageUrl:"",
headImageUrl :"",
isDefault:true,
sexStr:"",
temperature:"",
updateTime :"",
userName:"",
}
const userValue = ref<HardwareData>({
...workAccountsValueList
});
const resetModelValue = () => {
userValue.value = { ...workAccountsValueList };
title.value = '添加晨检记录'
};
const addUserOrUpdate = () => {
forms.value?.validate().then(() => {
// loading.value = true
});
};
const loading = ref<boolean>(false);
const modalRef = ref();
const title = ref("添加晨检记录");
// const addWorkAccounts = ()=>{
// modalRef.value = modal.create({
// title: title.value,
// preset: "card",
// style: {
// width: "700px"
// },
// content: () => (
// <div style="height:600px">
// <FormPro ref={forms} v-model:value={userValue.value}
// form-item-options={formOptionsUser} gridProps={{ cols: 2, xGap: 16, itemResponsive: true }}>
// </FormPro>
// <FormPro ref={forms} v-model:value={userValue.value}
// form-item-options={formOptions1User} gridProps={{ cols: 1, xGap: 8, itemResponsive: true }}>
// </FormPro>
// </div>
// ),
// footer: () => (
// <div
// style={{
// display: "flex",
// justifyContent: "flex-end"
// }}
// >
// <n-button
// loading={loading.value}
// style={{ marginRight: "10px" }}
// type="primary"
// onClick={() => {
// addUserOrUpdate();
// }}
// >
//
// </n-button>
// <n-button
// onClick={() => {
// modalRef.value.destroy();
// resetModelValue();
// }}
// >
//
// </n-button>
// </div>
// ),
// onAfterLeave: () => {
// resetModelValue();
// }
// });
// }
//
const reqApiElectronicScale: TableType["requestApi"] = (params) => {
return new Promise((resolve) => {
resolve({
code: 200,
data: {
current: "1",
// @ts-ignore
pages: "2",
records: hardwareData.dataListElectronicScale,
size: "10",
total: "12"
},
message: "操作成功!"
});
});
};
const searchFormOptionsElectronicScale = reactive<TableType["searchFormOptions"]>({
time: {
type: "datePicker",
label: "时间",
},
userName:{
type:'input',
label: "负责人"
},
});
const columnsElectronicScale = ref<TableType["columns"]>([
{
key:'personInCharge',
title:'负责人'
},
{
key:'deviceModel',
title:'设备型号'
},
{
key:'unit',
title:'单位'
},
{
key:'serialNumber',
title:'序列号'
},
{
key:'nameOfIngredients',
title:'食材名称'
},
{
key:'quantityOfIngredients',
title:'食材数量'
},
{
key:'weight',
title:'重量值'
},
{
key:'steadyState',
title:'重量是否稳定'
},
{
key:'outOfRange',
title:'是否超出量程范围'
},
{
key:'weighingTime',
title:'称重时间'
},
{
key:'',
title:'操作',
render:(value:ElectronicScale)=>{
return (
<div style={{ display: "flex" }}>
<n-button
strong
secondary
type="primary"
>
查看
</n-button>
<NPopconfirm
onPositiveClick={async () => {
}}
onNegativeClick={() => {
}}
showIcon={false}
>
{{
trigger: () => (
<n-button
strong
secondary
style={{ marginLeft: "10px" }}
type="error"
>
删除
</n-button>
),
default: () => "确认要除么?"
}}
</NPopconfirm>
</div>
)
}
}
])
const reqApiCameraDate: TableType["requestApi"] = (params) => {
return new Promise((resolve) => {
resolve({
code: 200,
data: {
current: "1",
// @ts-ignore
pages: "2",
records: hardwareData.dataListCameraDate,
size: "10",
total: "12"
},
message: "操作成功!"
});
});
};
const searchFormOptionsCameraDate = reactive<TableType["searchFormOptions"]>({
time: {
type: "datePicker",
label: "时间",
},
userName:{
type:'input',
label: "摄像头名称"
},
});
const columnsCameraDate = ref<TableType["columns"]>([
{
key:'id',
title:'ID'
},
{
key:'cameraName',
title:'摄像头名称'
},
{
key:'images',
title:'现场图片',
render: (value: any) => {
return (
<n-image
width="30"
src={value.images}
/>
);
}
},
{
key:'videoChannel',
title:'视频通道id'
},
{
key:'states',
title:'状态',
render: (value: any) => {
return (
<n-tag type="success">
{value.states}
</n-tag>
);
}
},
{
key:'cameraID',
title:'录像机ID'
},
{
key:'updatedBy',
title:'更新人'
},
{
key:'founder',
title:'创建人'
},
{
key:'updateTime',
title:'更新时间'
},
{
key:'',
title:'操作',
render:(value:ElectronicScale)=>{
return (
<div style={{ display: "flex" }}>
<n-button
strong
secondary
type="primary"
>
查看
</n-button>
<NPopconfirm
onPositiveClick={async () => {
}}
onNegativeClick={() => {
}}
showIcon={false}
>
{{
trigger: () => (
<n-button
strong
secondary
style={{ marginLeft: "10px" }}
type="error"
>
删除
</n-button>
),
default: () => "确认要除么?"
}}
</NPopconfirm>
</div>
)
}
}
])
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,145 @@
import { reactive } from "vue";
import {type FormItemOptions } from "@/components";
import {type HardwareData } from "./index.ts";
export const formOptionsUser = reactive<FormItemOptions<HardwareData>>({
userName:{
type: "select",
label: "员工",
required:true,
options:[
{
value:'张三',
label:'张三'
},
{
value:'李四',
label:'李四'
},
{
value:'王五',
label:'王五'
},
{
value:'赵六',
label:'赵六'
},
{
value:'刘七',
label:'刘七'
},
]
},
temperature:{
type:'input',
label:'体温',
required:true
},
bodyImageUrl:{
type: "custom",
label: "衣着图片",
required:true,
customRender: (val) => {
return (
<div>
<n-image
width="200"
height="150"
src={val.bodyImageUrl}
/>
</div>
);
}
},
handImageUrl:{
type: "custom",
label: "手心图片",
required:true,
customRender: (val) => {
return (
<div>
<n-image
width="200"
height="150"
src={val.handImageUrl}
/>
</div>
);
}
},
handbackImageUrl:{
type: "custom",
label: "手背图片",
required:true,
customRender: (val) => {
return (
<div>
<n-image
width="200"
height="150"
src={val.handbackImageUrl}
/>
</div>
);
}
},
headImageUrl:{
type: "custom",
label: "头部图片",
required:true,
customRender: (val) => {
return (
<div>
<n-image
width="200"
height="150"
src={val.headImageUrl}
/>
</div>
);
}
},
})
export const formOptions1User = reactive<FormItemOptions<HardwareData>>({
diseases:{
type:'checkboxGroup',
label:'健康状态',
options:[
{
value:'无不适',
label:'无不适'
},
{
value:'发热',
label:'发热'
},
{
value:'恶心',
label:'恶心'
},
{
value:'呕吐',
label:'呕吐'
},
{
value:'咳嗽',
label:'咳嗽'
},
{
value:'湿疹',
label:'湿疹'
},
{
value:'腹泻',
label:'腹泻'
},
{
value:'烫伤',
label:'烫伤'
},
]
}
})

View File

@ -0,0 +1,45 @@
export interface shareRecipesValue {
images?: string,
dishNames?: string,
classification?: string,
foundingUnits?: string,
collection?: string,
praise?: string
}
const shareRecipesValueList:shareRecipesValue[] = [
{
images:'https://file.wy2020.com/admin/weiyi/img/vip/nutri/dish/cbf28b18d47a4c378ad7c702dc9da6f8_1280w_956h.jpg',
dishNames:' 宫保鸡丁',
classification:'菜系',
foundingUnits:'某某学校单位A',
collection:'255',
praise:'1450'
},
{
images:'https://file.wy2020.com/admin/weiyi/img/vip/nutri/dish/cbf28b18d47a4c378ad7c702dc9da6f8_1280w_956h.jpg',
dishNames:'辣椒炒肉',
classification:'菜系',
foundingUnits:'某某学校单位B',
collection:'255',
praise:'1450'
},
{
images:'https://file.wy2020.com/admin/weiyi/img/vip/nutri/dish/cbf28b18d47a4c378ad7c702dc9da6f8_1280w_956h.jpg',
dishNames:' 番茄炖牛腩',
classification:'菜系',
foundingUnits:'某某学校单位C',
collection:'255',
praise:'1450'
},
{
images:'https://file.wy2020.com/admin/weiyi/img/vip/nutri/dish/cbf28b18d47a4c378ad7c702dc9da6f8_1280w_956h.jpg',
dishNames:' 番茄炒鸡蛋',
classification:'菜系',
foundingUnits:'某某学校单位D',
collection:'255',
praise:'1450'
}
]
export default shareRecipesValueList

View File

@ -1,9 +1,152 @@
<template>
<div>共享食谱</div>
<div class="shareRecipes">
<!--共享食谱-->
<TablePro ref="tableRef" :request-api="reqApi" :search-form-options="searchFormOptions" :columns="columns"
:single-line="false"
:isPageTable="true">
<template #headerExtra>
<!-- <n-button strong secondary type="primary" @click="addDepartmentStructure"> 添加库存</n-button>-->
<n-button strong secondary type="primary" >导出</n-button>
</template>
</TablePro>
</div>
</template>
<script setup lang="ts">
<script setup lang="tsx">
import { NButton } from "naive-ui";
import { TablePro,type TableProProps } from "@/components";
import { reactive, ref } from "vue";
import shareRecipesValueList, {type shareRecipesValue } from './index.ts'
type TableType = TableProProps<any, any>;
const reqApi: TableType["requestApi"] = (params) =>{
return new Promise((resolve)=>{
resolve({
code: 200,
data: {
current: "1",
// @ts-ignore
pages: "2",
records: shareRecipesValueList,
size: "10",
total: "12"
},
message: "操作成功!"
});
})
}
const searchFormOptions = reactive<TableType["searchFormOptions"]>({
classification: {
type: "select",
label: "分类",
options:[
{
value:'nutrition',
label:'营养特点'
},
{
value:'audience',
label:'人群适配'
},
{
value:'flavor',
label:'口味风格'
},
{
value:'菜系',
label:'菜系'
},
{
value:'烹饪方式',
label:'烹饪方式'
},
{
value:'场景/用途',
label:'场景/用途'
},
],
componentsProps:{
onChange: async (values:any)=>{
console.log(values);
},
}
},
mealsLabel:{
type:'select',
label:'标签',
options:[
{
value:'低脂',
label:'低脂'
},
{
value:'高蛋白',
label:'高蛋白'
},
{
value:'辣味',
label:'辣味'
},
{
value:'富含纤维',
label:'富含纤维'
}
]
},
foundingUnits:{
type:'input',
label:'创建单位'
}
})
const columns = ref<TableType["columns"]>([
{
key:'images',
title:'菜品图',
render: (value: any) => {
return (
<n-image
width="30"
src={value.images}
/>
);
}
},
{
key:'dishNames',
title:'菜名'
},
{
key:'classification',
title:'分类'
},
{
key:'foundingUnits',
title:'上传单位'
},
{
key:'collection',
title:'收藏数'
},
{
key:'praise',
title:'点赞数'
},
{
key:'',
title:'操作',
render:(value:shareRecipesValue)=>{
return (
<div>
<n-button
strong
secondary
style={{ marginLeft: "10px" }}
type="warning">查看详情</n-button>
</div>
)
}
}
])
</script>
<style scoped lang="scss">

View File

@ -55,7 +55,7 @@ const userInfo:userInterface[] = [
name:'刘德华',
sex:'man',
phoneNumber:'13575426241',
status:'enable',
status:'disable',
lastLoginTime:'2025-05-09 09:45:37'
},
{
@ -78,7 +78,7 @@ const userInfo:userInterface[] = [
name:'郭富城',
sex:'man',
phoneNumber:'13575426241',
status:'enable',
status:'disable',
lastLoginTime:'2025-05-09 09:45:37'
},
{
@ -94,7 +94,7 @@ const userInfo:userInterface[] = [
name:'他',
sex:'woman',
phoneNumber:'13575426241',
status:'enable',
status:'disable',
}
]

View File

@ -12,7 +12,7 @@
</div>
<div>
<div class="userItem">
<TablePro ref="tableRef" :request-api="reqApi" :search-form-options="searchFormOptions" :columns="columns" :isPageTable="true" :max-height="520">
<TablePro ref="tableRef" :request-api="reqApi" :search-form-options="searchFormOptions" :columns="columns" :single-line="false" :isPageTable="true" :max-height="520">
<template #headerExtra>
<n-button strong secondary type="primary" @click="addOrUpdateUser"> 添加用户 </n-button>
</template>
@ -362,7 +362,16 @@
</n-tag>
},
},
{
key: 'status',
title: '状态',
width: 150,
render: ({ status }) => {
return <n-tag type={status === 'enable'?'success':'error'}>
{status === 'enable'?'启用':'禁用'}
</n-tag>
},
},
{
key: '',
title: '操作',

View File

@ -41,7 +41,7 @@ export interface WorkAccountsValue{
const datalistWorkAccounts:WorkAccountsValue[] = [
{
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921695430362652674_bodyImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
@ -63,7 +63,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921698186670497794_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
@ -80,7 +80,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
},
{
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921695430362652674_bodyImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
@ -102,7 +102,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921698186670497794_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
@ -119,7 +119,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
},
{
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921695430362652674_bodyImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
@ -141,7 +141,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921698186670497794_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
@ -158,7 +158,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
},
{
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921695430362652674_bodyImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
@ -180,7 +180,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921698186670497794_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,
@ -197,7 +197,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
},
{
bodyImage:"/img/mqtts/morning/record/1920283993400512513_bodyImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
bodyImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921695430362652674_bodyImg.jpg",
checkDate:"2025-05-08 00:00:00",
checkDateStr:"2025-05-08",
checkResult : 0,
@ -219,7 +219,7 @@ const datalistWorkAccounts:WorkAccountsValue[] = [
handbackImage:"/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
handbackImageUrl:"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_handBackImg.jpg",
headImage:"/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1920283993400512513_headImg.jpg",
headImageUrl :"https://file.wy2020.com/admin/weiyi/img/mqtts/morning/record/1921698186670497794_headImg.jpg",
id: "1920283993400512513",
ids: "",
isDefault:true,