|
|
import { sendCmd, syncSendCmd } from 'apis/system' import { cloneDeep } from 'lodash' import { defineStore } from 'pinia' import { ref, watch } from 'vue'
import { FtMessage } from '@/libs/message'
// 常量定义
const LOG_ITEMS = Array.from({ length: 12 }, (_, i) => ({ value: i + 1, name: `${i + 1} Log`, }))
const PRESSURE_TYPES = [ { name: '常压', value: 'constantPressure' }, { name: '正压', value: 'positivePressure' }, { name: '负压', value: 'negativePressure' }, ]
// 默认配方函数
// const createDefaultFormulaInfo = (): Formula.FormulaItem => ({
// continued_gs: 200,
// continued_humi: 60,
// continued_satur: 60,
// injection_pump_speed: 10,
// loglevel: 6,
// max_humidity: 90,
// pre_heat_time_s: 120,
// proportional_valve_default_value: 10,
// stoped_gs: 300,
// stoped_humi: 85,
// stoped_satur: 85,
// dvalue_correct_coefficient: 0
// name: '默认配方',
// })
// 清空配方函数
// const createResetFormulaInfo = (): Formula.FormulaItem => ({
// continued_gs: '',
// continued_humi: '',
// continued_satur: '',
// injection_pump_speed: '',
// loglevel: '',
// max_humidity: '',
// pre_heat_time_s: '',
// proportional_valve_default_value: '',
// stoped_gs: '',
// stoped_humi: '',
// stoped_satur: '',
// name: '',
// })
export const useFormulaStore = defineStore('formula', () => { // 状态定义
const logEnums = LOG_ITEMS const pressurList = PRESSURE_TYPES const logLevelOptions = ref<System.Option[]>([]) const defaultFormulaInfo = ref<Formula.FormulaItem | null>(null) // const resetFormulaInfo = ref<Formula.FormulaItem>(createResetFormulaInfo())
const pressurOptionList = ref<string[]>(['10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%']) const currentSelectedFormulaInfo = ref<Formula.FormulaItem>(cloneDeep(defaultFormulaInfo.value)) // 当前列表选中的配方信息
const selectedFormulaInfo = ref<Formula.FormulaItem | null>(cloneDeep(defaultFormulaInfo.value)) // 选中执行的配方信息
const formulaConfigList = ref<Formula.FormulaConfig[]>([]) const formulaList = ref<Formula.FormulaItem[]>([]) const loglevel = ref<string>('1') const flip = ref(true) const currentSelectedIndex = ref<number | null>(null) // 左侧列表选中值 从0开始
// 标签单位映射表,用于显示各参数的单位
const labelUnitMap: Record<string, any> = { injection_pump_speed: 'g/min', continued_gs: 'ppm', stoped_gs: 'ppm', max_humidity: '%RH', pre_heat_time_s: '秒', continued_humi: '%RH', stoped_humi: '%RH', continued_satur: '%RS', stoped_satur: '%RS', loglevel: 'Log', dvalue_correct_coefficient: '', record_period_min: '秒', record_printer_period_min: '分钟', } watch( defaultFormulaInfo, (newVal) => { currentSelectedFormulaInfo.value = cloneDeep(newVal) }, { deep: true }, ) /** * @function mapConfigToFormula * @param {Formula.FormulaConfig[]} config - 配方配置列表 * @desc 将配方配置映射为配方项对象 */ const mapConfigToFormula = (config: Formula.FormulaConfig[]) => { const formulaMap: Record<string, any> = {} config.forEach((item) => { formulaMap[item.setting_id] = Number(item.val) if (item.val_type === 'enum' && item.setting_id === 'loglevel') { updateLogLevels(item) } }) formulaMap.name = '默认配置' return formulaMap as Formula.FormulaItem }
/** * @function updateFormulaConfigData * @param {Formula.FormulaConfig[]} data - 配方配置数据 * @desc 更新配方配置数据并生成默认配方 */ const updateFormulaConfigData = (data: Formula.FormulaConfig[]) => { // const visibleConfig = data.filter(item => item.is_visible_in_formula_page)
formulaConfigList.value = data defaultFormulaInfo.value = mapConfigToFormula(data) }
const getFormualDefaultData = async () => { const defaultParams = { className: 'SettingMgrService', fnName: 'getAllSetting', params: {}, } const res = await sendCmd(defaultParams) updateFormulaConfigData(res) }
/** * @function updateLogLevels * @param {Formula.FormulaConfig} logLevelItem - 日志级别配置项 * @desc 更新日志级别选项 */ const updateLogLevels = (logLevelItem: Formula.FormulaConfig) => { const list: System.Option[] = [] const { enum_display_names, enums } = logLevelItem loglevel.value = String(logLevelItem.default_val)
enums?.forEach((item: number, index: number) => { list.push({ label: enum_display_names?.[index] || '', value: item, }) }) logLevelOptions.value = list }
/** * @function updateLogLevel * @param {string} level - 日志级别值 * @desc 更新当前选中的日志级别 */ const updateLogLevel = (level: string) => { loglevel.value = level }
/** * @function updatePressurList * @param {string[]} pressurData - 压力选项数据 * @desc 更新压力选项列表 */ const updatePressurList = (pressurData: string[]) => { pressurOptionList.value = cloneDeep(pressurData) }
/** * @function updateSelectedFormulaData * @param {Formula.FormulaItem} formulaItem - 配方项 * @desc 更新当前选中的配方数据 */ const updateCurrentSelectedFormulaData = (formulaItem: Formula.FormulaItem) => { console.log('formulaItem--', formulaItem) currentSelectedFormulaInfo.value = cloneDeep(formulaItem) }
/** * @function updateSelectedFormula * @param {Formula.FormulaItem} formulaItem - 配方项 * @desc 通过配方列表更新选中的配方数据 */ const updateSelectedFormula = (formulaItem: Formula.FormulaItem) => { selectedFormulaInfo.value = cloneDeep(formulaItem) }
/** * @function initFormulaList * @desc 初始化配方列表,从服务器获取所有配方 */ const initFormulaList = async () => { try { const params = { className: 'SettingMgrService', fnName: 'getAllFormula', params: {}, } const res = await syncSendCmd(params) if (res.rely) { formulaList.value = res.rely if (res.rely.length > 0) { console.log('selectedIndex.value--', currentSelectedIndex.value) currentSelectedFormulaInfo.value = res.rely[res.rely.length - 1] currentSelectedIndex.value = res.rely.length - 1 } else { currentSelectedIndex.value = null } } else { formulaList.value = [] currentSelectedIndex.value = null } } catch (error) { console.error('获取配方列表失败', error) } } /** * 设置配方配置项值 * @param {string} settingName - 设置名称 * @param {string} settingVal - 设置值 * @returns {Promise<void>} */ const setSettingFormulaConfig = async (settingName: string, settingVal: string) => { await sendCmd({ className: 'SettingMgrService', fnName: 'setSettingVal', params: { settingName, settingVal: settingVal?.toString(), }, }) } /** * @function initFormulaData * @desc 初始化配方数据,重置为默认配方 */ const initFormulaData = () => { selectedFormulaInfo.value = cloneDeep(defaultFormulaInfo.value) resetToDefaultFormula() }
/** * @function resetToDefaultFormula * @desc 重置为默认配方 */ const resetToDefaultFormula = () => { currentSelectedFormulaInfo.value = cloneDeep(defaultFormulaInfo.value) }
/** * @function saveDisinfectFormula * @param {Formula.FormulaItem} formData - 配方数据 * @desc 保存消毒配方并启动消毒程序 */ const startDisinfectFormula = async (formData: Formula.FormulaItem) => { try { const params = { className: 'DisinfectionCtrlServiceExt', fnName: 'startWithFormula', params: { formulaid: formData.formula_id, }, } await sendCmd(params) FtMessage.success('已启动消毒程序') } catch (error) { console.error('保存消毒配方失败', error) FtMessage.error('启动消毒程序失败') } }
const updateFlip = (data: boolean) => { flip.value = data }
const updateCurrentSelectedIndex = (index: number | null) => { currentSelectedIndex.value = index } const onAddFormula = () => { const params = { className: 'SettingMgrService', fnName: 'addNewFormula', } return syncSendCmd(params) } /** * 编辑配方 * @param {string} formula_id - 配方ID * @param {Formula.FormulaItem} formulaForm - 配方表单数据 */ const editFormula = (formula_id: string, formulaForm: Formula.FormulaItem) => { const editParams = { className: 'SettingMgrService', fnName: 'updateFormula', params: { formula_id, formula: cloneDeep(formulaForm), }, } return syncSendCmd(editParams) } // 删除配方
const delFormula = (formulaId: string) => { const delParams = { className: 'SettingMgrService', fnName: 'delFormula', params: { formula_id: formulaId, }, } return syncSendCmd(delParams) } // 开始执行
const startFormula = (formulaId: string) => { const params = { className: 'DisinfectionCtrlServiceExt', fnName: 'startWithFormula', params: { formulaid: formulaId, }, } return syncSendCmd(params) } return { // 属性
logEnums, pressurList, pressurOptionList, currentSelectedFormulaInfo, formulaList, formulaConfigList, loglevel, logLevelOptions, selectedFormulaInfo, defaultFormulaInfo, flip, currentSelectedIndex, labelUnitMap, // 方法
updatePressurList, updateCurrentSelectedFormulaData, initFormulaData, initFormulaList, updateSelectedFormula, updateFormulaConfigData, startDisinfectFormula, updateLogLevel, resetToDefaultFormula, getFormualDefaultData, updateFlip, updateCurrentSelectedIndex, setSettingFormulaConfig, onAddFormula, editFormula, delFormula, startFormula, } })
|