wxw
2024-08-21 8520e36378e8e88cbbc45586bb31d1fec3be87ac
Web/src/views/wcs/wcsDevice/component/editDialog.vue
@@ -15,71 +15,85 @@
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="PlcId" prop="plcId">
                     <el-select clearable filterable v-model="ruleForm.plcId" placeholder="请选择PlcId">
                        <el-option v-for="(item,index) in wcsPlcPlcIdDropdownList" :key="index" :value="item.value" :label="item.label" />
                        <el-option v-for="(item, index) in wcsPlcPlcIdDropdownList" :key="index"
                           :value="item.value" :label="item.label" />
                     </el-select>
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="设备级别" prop="level">
                     <el-select clearable v-model="ruleForm.level" placeholder="请选择设备级别">
                        <el-option v-for="(item,index) in dl('DeviceLevelEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
                        <el-option v-for="(item, index) in dl('DeviceLevelEnum')" :key="index"
                           :value="Number(item.value)"
                           :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
                     </el-select>
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="DB区域" prop="dbNumber">
                     <el-input v-model="ruleForm.dbNumber" placeholder="请输入DB区域" maxlength="10" show-word-limit clearable />
                     <el-input v-model="ruleForm.dbNumber" placeholder="请输入DB区域" maxlength="10" show-word-limit
                        clearable />
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="工位号" prop="stationNum">
                     <el-input v-model="ruleForm.stationNum" placeholder="请输入工位号" maxlength="4" show-word-limit clearable />
                     <el-input v-model="ruleForm.stationNum" placeholder="请输入工位号" maxlength="4" show-word-limit
                        clearable />
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="PLC偏移量" prop="plcPos">
                     <el-input v-model="ruleForm.plcPos" placeholder="请输入PLC偏移量" maxlength="10" show-word-limit clearable />
                     <el-input v-model="ruleForm.plcPos" placeholder="请输入PLC偏移量" maxlength="10" show-word-limit
                        clearable />
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="WCS偏移量" prop="wcsPos">
                     <el-input v-model="ruleForm.wcsPos" placeholder="请输入WCS偏移量" maxlength="10" show-word-limit clearable />
                     <el-input v-model="ruleForm.wcsPos" placeholder="请输入WCS偏移量" maxlength="10" show-word-limit
                        clearable />
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="流程字类型" prop="posType">
                     <el-input v-model="ruleForm.posType" placeholder="请输入流程字类型" maxlength="10" show-word-limit clearable />
                     <el-select clearable v-model="ruleForm.posType" placeholder="请选择流程字类型">
                        <el-option v-for="(item, index) in dl('PLCDataTypeEnum')" :key="index"
                           :value="Number(item.value)"
                           :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
                     </el-select>
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="显示屏ip地址" prop="ledIP">
                     <el-input v-model="ruleForm.ledIP" placeholder="请输入显示屏ip地址" maxlength="50" show-word-limit clearable />
                     <el-input v-model="ruleForm.ledIP" placeholder="请输入显示屏ip地址" maxlength="50" show-word-limit
                        clearable />
                  </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                  <el-form-item label="描述" prop="text">
                     <el-input v-model="ruleForm.text" placeholder="请输入描述" maxlength="20" show-word-limit clearable />
                     <el-input v-model="ruleForm.text" placeholder="请输入描述" maxlength="20" show-word-limit
                        clearable />
                  </el-form-item>
               </el-col>
            </el-row>
         </el-form>
@@ -99,97 +113,93 @@
}
</style>
<script lang="ts" setup>
   import { ref,onMounted } from "vue";
   import { ElMessage } from "element-plus";
   import type { FormRules } from "element-plus";
   import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
   import { getDictLabelByVal as dv } from '/@/utils/dict-utils';
     import { formatDate } from '/@/utils/formatTime';
   import { addWcsDevice, updateWcsDevice, detailWcsDevice } from "/@/api/wcs/wcsDevice";
   import { getWcsPlcPlcIdDropdown } from '/@/api/wcs/wcsDevice';
   import { getAPI } from '/@/utils/axios-utils';
   import { SysEnumApi } from '/@/api-services/api';
import { ref, onMounted } from "vue";
import { ElMessage } from "element-plus";
import type { FormRules } from "element-plus";
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
import { getDictLabelByVal as dv } from '/@/utils/dict-utils';
import { formatDate } from '/@/utils/formatTime';
import { addWcsDevice, updateWcsDevice, detailWcsDevice } from "/@/api/wcs/wcsDevice";
import { getWcsPlcPlcIdDropdown } from '/@/api/wcs/wcsDevice';
import { getAPI } from '/@/utils/axios-utils';
import { SysEnumApi } from '/@/api-services/api';
   //父级传递来的参数
   var props = defineProps({
      title: {
//父级传递来的参数
var props = defineProps({
   title: {
      type: String,
      default: "",
   },
   });
   //父级传递来的函数,用于回调
   const emit = defineEmits(["reloadTable"]);
   const ruleFormRef = ref();
   const isShowDialog = ref(false);
   const ruleForm = ref<any>({});
   //自行添加其他规则
   const rules = ref<FormRules>({
   });
});
//父级传递来的函数,用于回调
const emit = defineEmits(["reloadTable"]);
const ruleFormRef = ref();
const isShowDialog = ref(false);
const ruleForm = ref<any>({});
//自行添加其他规则
const rules = ref<FormRules>({
});
   // 页面加载时
   onMounted(() => {
// 页面加载时
onMounted(() => {
   });
});
   // 打开弹窗
   const openDialog = async (row: any) => {
      // ruleForm.value = JSON.parse(JSON.stringify(row));
      // 改用detail获取最新数据来编辑
      let rowData = JSON.parse(JSON.stringify(row));
      if (rowData.id)
         ruleForm.value = (await detailWcsDevice(rowData.id)).data.result;
      else
         ruleForm.value = rowData;
      isShowDialog.value = true;
   };
// 打开弹窗
const openDialog = async (row: any) => {
   // ruleForm.value = JSON.parse(JSON.stringify(row));
   // 改用detail获取最新数据来编辑
   let rowData = JSON.parse(JSON.stringify(row));
   if (rowData.id)
      ruleForm.value = (await detailWcsDevice(rowData.id)).data.result;
   else
      ruleForm.value = rowData;
   isShowDialog.value = true;
};
   // 关闭弹窗
   const closeDialog = () => {
      emit("reloadTable");
      isShowDialog.value = false;
   };
// 关闭弹窗
const closeDialog = () => {
   emit("reloadTable");
   isShowDialog.value = false;
};
   // 取消
   const cancel = () => {
      isShowDialog.value = false;
   };
// 取消
const cancel = () => {
   isShowDialog.value = false;
};
   // 提交
   const submit = async () => {
      ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
         if (isValid) {
            let values = ruleForm.value;
            if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
               await addWcsDevice(values);
            } else {
               await updateWcsDevice(values);
            }
            closeDialog();
// 提交
const submit = async () => {
   ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
      if (isValid) {
         let values = ruleForm.value;
         if (ruleForm.value.id == undefined || ruleForm.value.id == null || ruleForm.value.id == "" || ruleForm.value.id == 0) {
            await addWcsDevice(values);
         } else {
            ElMessage({
               message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
               type: "error",
            });
            await updateWcsDevice(values);
         }
      });
   };
         closeDialog();
      } else {
         ElMessage({
            message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
            type: "error",
         });
      }
   });
};
   const wcsPlcPlcIdDropdownList = ref<any>([]);
   const getWcsPlcPlcIdDropdownList = async () => {
      let list = await getWcsPlcPlcIdDropdown();
      wcsPlcPlcIdDropdownList.value = list.data.result ?? [];
   };
   getWcsPlcPlcIdDropdownList();
const wcsPlcPlcIdDropdownList = ref<any>([]);
const getWcsPlcPlcIdDropdownList = async () => {
   let list = await getWcsPlcPlcIdDropdown();
   wcsPlcPlcIdDropdownList.value = list.data.result ?? [];
};
getWcsPlcPlcIdDropdownList();
   //将属性或者函数暴露给父组件
   defineExpose({ openDialog });
//将属性或者函数暴露给父组件
defineExpose({ openDialog });
</script>