123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035 |
- <template>
- <div class="mainContentBox">
- <avue-crud
- ref="crudRef"
- v-model="form"
- v-model:page="page"
- v-model:search="search"
- :data="pageData"
- :option="option"
- :permission="permission"
- :table-loading="loading"
- :row-style="tableRowClassName"
- @search-change="handleQuery"
- @search-reset="resetChange"
- @size-change="handleQuery"
- @current-change="handleQuery"
- @row-save="rowSave"
- @row-update="rowUpdate"
- @row-del="rowDel"
- >
- <template #menu-left="{ size }">
- <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
- <!-- <el-button type="primary" @click="scan">扫码导入</el-button>
- <el-button type="primary" @click="test">测试数据</el-button>-->
- </template>
- <template #menu-right="{}">
- <el-dropdown v-hasPerm="['plan:order:import']" split-button
- >导入
- <template #dropdown>
- <el-dropdown-menu>
- <el-dropdown-item @click="downloadTemplateExcel">
- <i-ep-download />
- 下载模板
- </el-dropdown-item>
- <el-dropdown-item @click="openDialog('obj-import')">
- <i-ep-top />
- 导入数据
- </el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- <el-button
- v-hasPerm="['plan:order:export']"
- class="ml-3"
- @click="handleExport"
- >
- <template #icon>
- <i-ep-download />
- </template>
- 导出
- </el-button>
- </template>
- <template #menu="{ size, row, index }">
- <el-button
- v-if="
- row.orderState === '0' ||
- row.orderState === '1' ||
- row.orderState === '2' ||
- row.orderState === '3'
- "
- v-hasPerm="[buttonPermission.PLAN.BTNS.order_edit]"
- link
- size="small"
- type="primary"
- @click="handleEdit(row, 0)">
- <i-ep-edit />
- 编辑
- </el-button>
- <el-button
- v-if="
- row.orderState === '0' ||
- row.orderState === '1' ||
- row.orderState === '2'
- "
- v-hasPerm="[buttonPermission.PLAN.BTNS.order_del]"
- link
- size="small"
- type="danger"
- @click="rowDel(row, 0)"
- >
- <i-ep-delete />
- 删除
- </el-button>
- <!-- <el-button
- v-if="row.orderState == '5'"
- size="small"
- type="primary"
- @click="handleScanCode(row.id)"
- >二维码生成
- </el-button>-->
- <el-button
- icon="el-icon-notebook"
- text
- v-if="row.orderState === '5' && row.packageUrl === '0'"
- @click="zipData(row.orderCode)"
- type="primary"
- v-hasPerm="[buttonPermission.PLAN.BTNS.order_data]"
- :size="size"
- >生成数据包</el-button
- >
- <el-button
- icon="el-icon-download"
- text
- v-if="row.orderState === '5' && row.packageUrl !== '0'"
- @click="downloadTemplate('/api/v1/plan/order/zip/' + row.id)"
- type="primary"
- v-hasPerm="[buttonPermission.PLAN.BTNS.order_downLoad]"
- :size="size"
- >下载数据包</el-button
- >
- </template>
- </avue-crud>
- <el-dialog
- v-model="dialog1.visible"
- :title="dialog1.title"
- width="950px"
- @close="dialog1.visible = false"
- >
- <choice-item-page @material-info="materialInfo" />
- </el-dialog>
- <el-dialog
- v-model="dialog.visible"
- :title="dialog.title"
- width="500px"
- @close="closeDialog"
- >
- <el-form
- v-if="dialog.type === 'obj-import'"
- :model="importData"
- label-width="100px"
- >
- <el-form-item label="Excel文件">
- <el-upload
- ref="uploadRef"
- :auto-upload="false"
- :file-list="importData.fileList"
- :limit="1"
- :on-change="handleFileChange"
- :on-exceed="handleFileExceed"
- accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
- action=""
- drag
- >
- <el-icon class="el-icon--upload">
- <i-ep-upload-filled />
- </el-icon>
- <div class="el-upload__text">
- 将文件拖到此处,或
- <em>点击上传</em>
- </div>
- <template #tip>
- <div style="color: red">文件类型: xls/xlsx</div>
- </template>
- </el-upload>
- </el-form-item>
- </el-form>
- <!-- 弹窗底部操作按钮 -->
- <template #footer>
- <div class="dialog-footer">
- <el-button type="primary" @click="handleSubmit">确 定</el-button>
- <el-button @click="closeDialog">取 消</el-button>
- </div>
- </template>
- </el-dialog>
- <el-dialog
- v-model="dialog2.visible"
- :title="dialog2.title"
- width="950px"
- @close="
- dialog2.visible = false;
- scanArray = [];
- scanCpArray = [];
- "
- >
- <el-input
- v-model="scanCode"
- placeholder="请扫码"
- style="padding: 20px"
- @keyup.enter="scanFnc"
- />
- <div class="scanInfo">
- <el-scrollbar class="scrollbar">
- <div v-for="(item, index) in scanArray" :key="index" class="item">
- <div class="text">扫码Cp: {{ item.cp }}</div>
- <div class="text" @click="deleteItem(index)">
- <el-icon>
- <Delete />
- </el-icon>
- </div>
- </div>
- <div v-if="scanArray.length < 1">暂无数据</div>
- </el-scrollbar>
- <div class="bottombtn">
- <el-button
- :disabled="scanArray.length < 1"
- type="primary"
- @click="scanSubmit"
- >生 成
- </el-button>
- </div>
- <!-- <vue-qrcode value="1241421gaga" size="45" error-level="H" /> -->
- </div>
- </el-dialog>
- <el-dialog
- v-model="dialog3.visible"
- :title="dialog3.title"
- width="950px"
- @close="
- dialog3.visible = false;
- scanCodeArray = [];
- "
- >
- <div class="scanInfo">
- <div style="padding: 0 20px; text-align: center">
- 二维码数量:{{ scanCodeArray.length }}
- </div>
- <el-scrollbar class="scrollbarA">
- <div
- :style="
- scanCodeArray.length == 1 ? ' justify-content: center;' : ''
- "
- class="box"
- >
- <div
- v-for="(item, index) in scanCodeArray"
- :key="index"
- class="scancodeitem"
- >
- <div class="qrcodeItem">
- <vue-qrcode :value="item" error-level="low" size="70" />
- </div>
- </div>
- </div>
- <div v-if="scanCodeArray.length < 1">暂无数据</div>
- </el-scrollbar>
- </div>
- </el-dialog>
- <CommonTable
- ref="ctableRef"
- tableTitle="报故单"
- tableType="FAULT"
- @selected-sure="onSelectedFinish"
- />
- </div>
- </template>
- <script lang="ts" setup>
- import { checkPerm } from "@/directive/permission";
- import type { UploadInstance } from "element-plus";
- import { genFileId } from "element-plus";
- import dictDataUtil from "@/common/configs/dictDataUtil";
- import buttonPermission from "@/common/configs/buttonPermission";
- import {
- addOrder,
- deleteOrders,
- downloadTemplateApi,
- exportOrder,
- getOrderPage,
- importOrder,
- updateOrder,
- getExpandAlias,
- scanImport,
- getScanCode,
- getTestCode,
- } from "@/api/order";
- import { ref } from "vue";
- import _ from "lodash-es";
- import ChoiceItemPage from "@/views/base/materials/components/choice-item-page.vue";
- import { zipOrder } from "../../../api/order";
- import { useCrud } from "../../../hooks/userCrud";
- const { Utils } = useCrud({
- src: "/api/v1/plan/order",
- });
- const { downloadTemplate } = Utils; //按钮权限等工具
- // 弹窗对象
- const dialog = reactive({
- visible: false,
- type: "order-form",
- width: 800,
- title: "",
- });
- const ctableRef = ref(null);
- const search = ref({});
- const option = ref({});
- const pageData = ref([]);
- const loading = ref(false);
- const form = ref({});
- const page = ref({ total: 0, currentPage: 1, pageSize: 10 });
- const uploadRef = ref<UploadInstance>(); // 上传组件
- const resetChange = () => {
- handleQuery(null, null);
- };
- // 导入数据
- const importData = reactive({
- file: undefined,
- fileList: [],
- });
- const tableRowClassName = ({ row, rowIndex }) => {
- const currentDate = new Date(); // 获取当前日期
- const compareDate = new Date(row.deliverTime); // 设置要比较的日期
- if (currentDate > compareDate && row.orderState !== '5') {
- return { backgroundColor: '#F1BFBFFF'};
- }
- return '';
- };
- const materialInfo = (value) => {
- form.value.materialCode = value.materialCode;
- form.value.materialName = value.materialName;
- form.value.materialModel = value.spec;
- dialog1.visible = false;
- };
- const dialog1 = reactive({
- title: "物料选择",
- visible: false,
- });
- const dialog2 = reactive({
- title: "扫码导入",
- visible: false,
- });
- const dialog3 = reactive({
- title: "二维码详情",
- visible: false,
- });
- const permission = reactive({
- delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
- addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
- editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
- menu: true,
- });
- const zipOder = ref({});
- const zipData = (orderCode) => {
- loading.value = true;
- zipOder.value.orderCode = orderCode;
- zipOrder(zipOder.value).then((data) => {
- if (data.code === "200") {
- loading.value = false;
- ElMessage.success(data.msg);
- handleQuery(null, null);
- } else {
- loading.value = false;
- ElMessage.error(data.msg);
- }
- });
- };
- const crudRef = ref(null); //crudRef.value 获取avue-crud对象
- option.value = {
- border: true,
- searchIndex: 3,
- searchIcon: true,
- editBtn: false,
- addBtn: false,
- delBtn: false,
- searchMenuSpan: 8,
- labelWidth: 100,
- align: "center",
- menuAlign: "center",
- search: true,
- refreshBtn: false,
- from: {
- width: "300",
- },
- column: [
- {
- label: "订单编号",
- prop: "orderCode",
- search: true,
- width: 130,
- overHidden: true,
- display: false,
- },
- {
- label: "订单名称",
- prop: "orderName",
- search: true,
- width: 150,
- overHidden: true,
- rules: [
- {
- required: true,
- message: "订单名称不能为空",
- trigger: "trigger",
- },
- ],
- },
- {
- label: "ERP单号",
- prop: "erpCode",
- search: true,
- width: 130,
- overHidden: true,
- rules: [
- {
- required: true,
- message: "ERP单号不能为空",
- trigger: "trigger",
- },
- ],
- },
- {
- label: "订单类型",
- prop: "orderType",
- type: "select", //类型为下拉选择框
- width: 100,
- overHidden: true,
- editDisabled: true,
- dicUrl: dictDataUtil.request_url + dictDataUtil.TYPE_CODE.plan_order_type,
- props: {
- label: "dictLabel",
- value: "dictValue",
- },
- searchClearable: false, //可清空的输入框,默认为true
- filterable: true, //添加filterable属性即可启用搜索功能
- rules: [
- {
- required: true,
- message: "订单类型不能为空",
- trigger: "trigger",
- },
- ],
- change: ({ value, column ,row}) => {
- option.value.column.forEach((item) => {
- if(value === "2"){
- if (item.prop == "trackingNumber") {
- item.display = true;
- }
- if (item.prop == "materialCode" || item.prop == "orderNum") {
- item.disabled = true;
- }
- }else if(value === "1"){
- if (item.prop == "trackingNumber") {
- item.display = false;
- }
- if (item.prop == "materialCode" || item.prop == "orderNum") {
- item.disabled = false;
- }
- }
- if(item.tagStr === 1 && (item.prop == "materialCode" || item.prop == "orderNum")){
- delete item.disabled;
- delete item.disabled
- }
- });
- },
- },
- {
- label: "报故单",
- prop: "trackingNumber",
- width: 100,
- display: false,
- click: ({ value, column }) => {
- if (ctableRef.value) {
- ctableRef.value.startSelect();
- }
- },
- rules: [
- {
- required: true,
- message: "报故单不能为空",
- trigger: "change",
- },
- ],
- },
- {
- label: "报故单id",
- prop: "faultId",
- width: 100,
- display: false,
- hide: true,
- },
- {
- label: "物料编码",
- prop: "materialCode",
- search: true,
- width: 130,
- overHidden: true,
- rules: [
- {
- required: true,
- message: "订单编号不能为空",
- trigger: "trigger",
- },
- ],
- click: ({ value, column }) => {
- if (column.boxType) {
- dialog1.visible = true;
- }
- },
- },
- {
- label: "产品名称",
- prop: "materialName",
- search: true,
- width: 130,
- overHidden: true,
- rules: [
- {
- required: true,
- message: "产品名称不能为空",
- trigger: "trigger",
- },
- ],
- disabled: true,
- },
- {
- label: "产品规格",
- width: 130,
- overHidden: true,
- disabled: true,
- prop: "materialModel",
- },
- {
- label: "订单状态",
- prop: "orderState",
- display: false,
- width: 100,
- overHidden: true,
- search: true,
- type: "select", //类型为下拉选择框
- dicUrl: dictDataUtil.request_url + dictDataUtil.TYPE_CODE.plan_order_state,
- props: {
- label: "dictLabel",
- value: "dictValue",
- },
- searchClearable: false, //可清空的输入框,默认为true
- filterable: true, //添加filterable属性即可启用搜索功能
- },
- {
- label: "产品型号",
- width: 130,
- overHidden: true,
- prop: "assemblyName",
- },
- {
- label: "部件号",
- width: 130,
- overHidden: true,
- prop: "assemblyCode",
- },
- {
- label: "生产数量",
- prop: "orderNum",
- type: "number",
- width: 100,
- overHidden: true,
- min: 1,
- max: 99999,
- rules: [
- {
- required: true,
- message: "生产数量不能为空",
- trigger: "trigger",
- },
- ],
- },
- {
- label: "排产数量",
- prop: "scheduledNum",
- width: 100,
- overHidden: true,
- display: false,
- },
- {
- label: "优先级",
- prop: "priority",
- width: 100,
- overHidden: true,
- type: "select", //类型为下拉选择框
- dicUrl:
- dictDataUtil.request_url + dictDataUtil.TYPE_CODE.plan_order_priority,
- props: {
- label: "dictLabel",
- value: "dictValue",
- },
- searchClearable: false, //可清空的输入框,默认为true
- filterable: true, //添加filterable属性即可启用搜索功能
- rules: [
- {
- required: true,
- message: "订单类型不能为空",
- trigger: "trigger",
- },
- ],
- },
- {
- label: "交付日期",
- prop: "deliverTime",
- type: "date",
- width: 100,
- overHidden: true,
- format: "YYYY-MM-DD", //前端展示格式
- valueFormat: "YYYY-MM-DD", //设置后端接收的日期格式
- rules: [
- {
- required: true,
- message: "请选择交付日期",
- trigger: "trigger",
- },
- ],
- disabledDate(time) {
- return time.getTime() < new Date().setDate(new Date().getDate() - 1);
- },
- },
- {
- label: "项目号",
- width: 100,
- overHidden: true,
- prop: "projectCode",
- },
- {
- label: "绑定铭牌",
- prop: "nameplated",
- width: "100",
- type: "radio", //类型为单选框
- dicData: [
- {
- label: "否",
- value: 0,
- },
- {
- label: "是",
- value: 1,
- },
- ],
- value: 0,
- },
- {
- label: "备注",
- prop: "remark",
- width: 100,
- overHidden: true,
- minRows: 2, //最小行/最小值
- type: "textarea", //类型为多行文本域框
- maxlength: 512, //最大输入长度
- },
- {
- label: "创建时间",
- prop: "created",
- width: "140",
- overHidden: true,
- display: false,
- type: "datetime",
- valueFormat: "yyyy-MM-dd HH:mm:ss",
- },
- {
- label: "创建人",
- prop: "creator",
- display: false,
- width: 80,
- overHidden: true,
- },
- ],
- };
- function useScanCode() {
- const scanCodeArray = ref([]);
- const test = async () => {
- const { data, code } = await getTestCode();
- let data1 = [];
- data1.push(JSON.stringify(data[0]));
- scanCodeArray.value = data1;
- dialog3.visible = true;
- };
- const handleScanCode = async (id: string) => {
- const { data, code } = await getScanCode(id);
- scanCodeArray.value = data;
- dialog3.visible = true;
- };
- return { scanCodeArray, handleScanCode, test };
- }
- const { scanCodeArray, handleScanCode, test } = useScanCode();
- //扫码板块
- function useScan() {
- const scanCode = ref("");
- const scanArray = ref([]);
- const scanCpArray = ref([]);
- const scanStatus = ref(false);
- const deleteItem = (index: any) => {
- scanArray.value.splice(index, 1);
- };
- const scan = () => {
- dialog2.visible = true;
- };
- const scanFnc = () => {
- if (scanCode.value) {
- let obj = {};
- obj = JSON.parse(scanCode.value);
- if (!_.includes(scanCpArray.value, obj.cp)) {
- scanArray.value.push(obj);
- scanCpArray.value.push(obj.cp);
- ElMessage.success("扫码成功");
- } else {
- ElMessage.error("请勿重复扫码");
- }
- //判定是否重复扫码
- } else {
- ElMessage.error("请正确扫码");
- }
- scanCode.value = "";
- };
- const scanSubmit = async () => {
- const { data, code } = await scanImport({
- planOrderImportList: scanArray.value,
- });
- if (code == "200") {
- ElMessage.success("导入成功!");
- dialog2.visible = false;
- scanArray.value = [];
- scanCpArray.value = [];
- handleQuery(null, null);
- }
- };
- return {
- scanCode,
- scanArray,
- scanCpArray,
- scanStatus,
- scan,
- scanFnc,
- deleteItem,
- scanSubmit,
- };
- }
- const {
- scanCode,
- scanArray,
- scanCpArray,
- scanStatus,
- scanSubmit,
- scan,
- scanFnc,
- deleteItem,
- } = useScan();
- const queryExpandAlias = () => {
- getExpandAlias(dictDataUtil.EXPAND_FIELD_TABLE.plan_order_info).then(
- (data: any) => {
- if (data.data) {
- data.data.forEach((item: any) => {
- option.value.column.push({
- label: item.label,
- prop: item.field,
- width: 100,
- overHidden: true,
- });
- });
- }
- }
- );
- };
- const handleQuery = (params, done) => {
- // console.log(JSON.stringify(option.value.column));
- loading.value = true;
- const querySearch = {
- pageSize: page.value.pageSize,
- pageNo: page.value.currentPage,
- ...params,
- };
- getOrderPage(querySearch)
- .then(({ data }) => {
- pageData.value = data.records;
- page.value.total = data.totalCount;
- page.value.currentPage = data.pageNo;
- page.value.pageSize = data.pageSize;
- })
- .finally(() => {
- loading.value = false;
- if (done) {
- done();
- }
- });
- };
- const resetQuery = () => {};
- const rowSave = (form, done, loading) => {
- loading();
- addOrder(form).then((data: any) => {
- ElMessage({
- message: data.msg,
- type: "success",
- });
- done();
- handleQuery(null, null);
- });
- };
- const rowUpdate = (form: any, index: any, done: any, loading: any) => {
- loading();
- updateOrder(form).then((data: any) => {
- ElMessage({
- message: data.msg,
- type: "success",
- });
- done();
- handleQuery(null, null);
- });
- };
- const rowDel = (form: any, index) => {
- ElMessageBox.confirm("当前操作会删除数据,你确认要继续吗?")
- .then(() => {
- deleteOrders([form.id])
- .then((data: any) => {
- ElMessage({
- message: data.msg,
- type: "success",
- });
- handleQuery(null, null);
- })
- .finally(() => {});
- })
- .catch(() => {
- // catch error
- });
- };
- const openDialog = (type: any) => {
- dialog.visible = true;
- dialog.type = type;
- if (dialog.type === "obj-import") {
- // 导入弹窗
- dialog.title = "数据导入";
- dialog.width = 600;
- }
- };
- const closeDialog = () => {
- dialog.visible = false;
- if (dialog.type === "obj-import") {
- importData.file = undefined;
- importData.fileList = [];
- }
- };
- const downloadTemplateExcel = () => {
- if (window.openHarmonyBridge) {
- //适配鸿蒙下载
- window.openHarmonyBridge.download(
- JSON.stringify({
- path: "/api/v1/plan/order/template",
- token: localStorage.getItem("token"),
- method: "get",
- data: { code: 1234, erp: "kkkk" },
- })
- );
- } else {
- downloadTemplateApi().then((response) => {
- downFile(response);
- });
- }
- };
- const handleAdd = () => {
- option.value.column.forEach((item)=>{
- item.tagStr = 0;
- })
- crudRef.value && crudRef.value.rowAdd();
- };
- const handleEdit = (row: any, index: any) => {
- option.value.column.forEach((item)=>{
- item.tagStr = 0;
- if(row.orderState === '3'){
- item.tagStr = 1;
- if(item.prop === 'deliverTime'){
- item.editDisabled = false
- }else{
- item.editDisabled = true
- }
- }else{
- item.editDisabled = false
- }
- })
- crudRef.value && crudRef.value.rowEdit(row, index);
- };
- /** 弹窗提交 */
- const handleSubmit = () => {
- importOrder(importData).then((data: any) => {
- ElMessage({
- message: data.msg,
- type: "success",
- });
- dialog.visible = false;
- handleQuery(null, null);
- });
- };
- /** Excel文件 Change */
- const handleFileChange = (file: any) => {
- importData.file = file.raw;
- };
- /** 文件下载 */
- const downFile = (response: any) => {
- const fileData = response.data;
- const fileName = decodeURI(
- response.headers["content-disposition"].split(";")[1].split("=")[1]
- );
- const fileType =
- "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
- const blob = new Blob([fileData], { type: fileType });
- const downloadUrl = window.URL.createObjectURL(blob);
- const downloadLink = document.createElement("a");
- downloadLink.href = downloadUrl;
- downloadLink.download = fileName;
- document.body.appendChild(downloadLink);
- downloadLink.click();
- document.body.removeChild(downloadLink);
- window.URL.revokeObjectURL(downloadUrl);
- };
- /** Excel文件 Exceed */
- const handleFileExceed = (files: any) => {
- uploadRef.value!.clearFiles();
- const file = files[0];
- file.uid = genFileId();
- uploadRef.value!.handleStart(file);
- importData.file = file;
- };
- /** 导出 */
- const handleExport = () => {
- exportOrder(search.value).then((response: any) => {
- downFile(response);
- });
- };
- onMounted?.(() => {
- queryExpandAlias();
- handleQuery(null, null);
- });
- /** 选择报故单 */
- const onSelectedFinish = (selectedValue) => {
- form.value.materialCode = selectedValue.materialCode;
- form.value.materialName = selectedValue.materialName;
- form.value.materialModel = selectedValue.spec;
- form.value.faultId = selectedValue.id;
- form.value.trackingNumber = selectedValue.trackingNumber;
- form.value.orderNum = selectedValue.unqualifiedNum;
- };
- </script>
- <style lang="scss" scoped>
- .warning-row{
- background-color: rgb(204, 136, 136) !important;
- }
- .scanInfo {
- width: 100%;
- .scrollbar {
- padding: 20px;
- height: 350px;
- .item {
- margin: 20px 0;
- width: 100%;
- background-color: #80808030;
- border-radius: 16px;
- height: 60px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 0 20px;
- .el-icon {
- width: 50px;
- height: 50px;
- color: red;
- cursor: pointer;
- }
- }
- .scancodeitem {
- width: 300px;
- height: 300px;
- margin: 0 20px;
- display: inline-block;
- border-radius: 16px;
- border: 1px solid black;
- padding-top: 10px;
- .qrcodeItem {
- display: flex;
- justify-content: center;
- align-items: center;
- }
- }
- }
- .bottombtn {
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .scrollbarA {
- padding: 20px;
- height: 350px;
- .box {
- display: flex;
- align-items: center;
- .item {
- margin: 20px 0;
- width: 100%;
- background-color: #80808030;
- border-radius: 16px;
- height: 60px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 0 20px;
- .el-icon {
- width: 50px;
- height: 50px;
- color: red;
- cursor: pointer;
- }
- }
- .scancodeitem {
- width: 300px;
- height: 300px;
- margin: 0 20px;
- display: inline-block;
- border-radius: 16px;
- border: 1px solid black;
- padding-top: 10px;
- .qrcodeItem {
- display: flex;
- justify-content: center;
- align-items: center;
- }
- }
- }
- }
- }
- </style>
|