123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- <template>
- <div>
- <avue-crud
- ref="crudRef"
- v-model:search="search"
- v-model="form"
- :data="data"
- :option="option"
- v-model:page="page"
- @row-save="createRow"
- @row-update="updateRow"
- @row-del="deleteRow"
- @selection-change="selectionChange"
- @sortable-change="onSortChange"
- @search-change="searchChange"
- @search-reset="resetChange"
- @size-change="dataList"
- @current-change="dataList"
- >
- <!-- <template #filePath-form="scope">
- <single-upload v-model="form.filePath" />
- <FilesUpload v-model:src="form.filePath" v-model:src-list="form.filePath" />
- </template> -->
- <!-- <template #filePath="{ row }">
- <el-button link type="primary" @click.stop="imgUrlClick(row)">{{
- row.filePath
- }}</el-button>
- </template> -->
- </avue-crud>
- <CommonTable
- ref="commonTableRef"
- :tableTitle="tableTitle"
- :tableType="commonTableType"
- @selected-sure="onSelectedFinish"
- />
- <el-dialog v-model="dialogVisible">
- <img w-full :src="previewImgUrl" alt="Preview Image" />
- </el-dialog>
- </div>
- </template>
- <script setup>
- import { ref, getCurrentInstance } from "vue";
- import { useCrud } from "@/hooks/userCrud";
- import { getTableConfig } from "./configs";
- import {
- saveCompoents,
- getBomVersion,
- getRouteMaxVersion,
- } from "@/api/craft/process/index";
- import SingleUpload from "@/components/Upload/SingleUpload.vue";
- const props = defineProps({
- tableTitle: {
- default: "",
- type: String,
- },
- tableType: {
- default: "",
- type: String,
- },
- });
- const route = useRoute();
- const tableConfig = getTableConfig(route.params.id);
- // 传入一个url,后面不带/
- const { url, form, data, option, search, page, toDeleteIds, Methords, Utils } =
- useCrud({
- src: tableConfig[props.tableType].url,
- });
- const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
- Methords; //增删改查
- const { selectionChange, multipleUpdate } = Methords; //选中和批量删除事件
- const crudRef = ref(null); //crudRef.value 获取avue-crud对象
- const bomVersion = ref(null);
- const startCreat = () => {
- if (props.tableType === "wuliaocaiji") {
- if (data.value && data.value.length > 0) {
- bomVersion.value = data.value[0].recordVersion;
- }
- if (!route.query.prodtCode) {
- ElMessage.error("物料编号读取错误");
- return;
- }
- //根据物料编码和版本号获取对应的物料BOM
- let bomParam = {
- materialCode: route.query.prodtCode,
- };
- getBomVersion(bomParam).then((res) => {
- let resListMap = [];
- //说明时物料采集的添加框 进行物料采集的下拉框数据获取
- res?.data.forEach((versions) => {
- resListMap.push({
- label: versions.bomVersion,
- value: versions.bomVersion,
- });
- });
- //查询参数
- let configParam = {};
- configParam.materialCode = route.query.prodtCode;
- if (bomVersion.value) {
- configParam.bomVersion = bomVersion.value;
- }
- //根据物料编码和版本号获取对应的物料BOM
- commonTableType.value = "MARTERIAL_BOM";
- nextTick(() => {
- commonTableRef.value?.startSelect(configParam);
- commonTableRef.value?.refreshDictData(
- "bomVersion",
- resListMap,
- "value"
- );
- commonTableRef.value?.mergeOption({
- searchShow: bomVersion.value ? false : true,
- });
- });
- });
- } else if (props.tableType === "dianjian") {
- commonTableType.value = "OP_CHECK";
- nextTick(() => {
- commonTableRef.value?.startSelect();
- });
- } else if (props.tableType === "ESOP") {
- commonTableType.value = "ESOP";
- nextTick(() => {
- commonTableRef.value?.startSelect({
- materialCode: route.query.prodtCode,
- enable: 1,
- });
- });
- } else {
- crudRef.value && crudRef.value.rowAdd();
- }
- };
- const saveSortData = async () => {
- multipleUpdate();
- };
- defineExpose({ startCreat, saveSortData });
- const onSortChange = () => {
- data.value.forEach((item) => {
- console.log(item.id);
- });
- };
- // ============公共弹窗table选择相关,物料采集等使用===============
- const commonTableRef = ref({});
- const commonTableType = ref("MARTERIAL_BOM");
- const onSelectedFinish = (itemValue) => {
- crudRef.value && crudRef.value.rowAdd();
- if (props.tableType === "wuliaocaiji") {
- form.value.itemName = itemValue.bomMaterialName;
- form.value.itemCode = itemValue.bomMaterialCode;
- form.value.itemModel = itemValue.bomMaterialAttribute;
- form.value.recordVersion = itemValue.bomVersion;
- form.value.num = itemValue.bomMaterialNumber;
- form.value.traceType = "S";
- form.value.unit = itemValue.unit;
- } else if (props.tableType === "dianjian") {
- form.value.checkName = itemValue.checkName;
- form.value.checkCode = itemValue.checkCode;
- form.value.content = itemValue.content;
- form.value.standard = itemValue.standard;
- form.value.upper = itemValue.upper;
- form.value.lower = itemValue.lower;
- form.value.content = itemValue.content;
- } else if (props.tableType === "ESOP") {
- form.value.filePath = itemValue.drawingPath;
- form.value.drawingCode = itemValue.drawingCode;
- form.value.recordVersion = itemValue.drawingVersion;
- form.value.sortNum = itemValue.sort;
- form.value.title = itemValue.drawingTitle;
- }
- };
- const previewImgUrl = ref("");
- const dialogVisible = ref(false);
- const imgUrlClick = (itemValue) => {
- previewImgUrl.value = itemValue.imgUrl;
- dialogVisible.value = true;
- };
- onMounted(() => {
- search.value.operationId = route.params.id;
- url.value = tableConfig[props.tableType].url;
- option.value = Object.assign(option.value, {
- addBtn: false,
- searchShow: false,
- header: false,
- sortable: true,
- column: tableConfig[props.tableType].column,
- });
- dataList();
- getRouteMaxVersion(route.query.routeId).then(({ data }) => {
- if (data) {
- bomVersion.value = data;
- }
- });
- });
- watch(
- () => props.tableType,
- () => {
- console.log("faslegb");
- url.value = tableConfig[props.tableType].url;
- option.value = Object.assign(option.value, {
- addBtn: false,
- searchShow: false,
- header: false,
- sortable: true,
- column: tableConfig[props.tableType].column,
- });
- dataList();
- getRouteMaxVersion(route.query.routeId).then(({ data }) => {
- if (data) {
- bomVersion.value = data;
- }
- });
- }
- );
- </script>
|