From fcbb4059f11d1e2b320d581bf6f960d9965142c6 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期二, 08 七月 2025 08:58:18 +0800
Subject: [PATCH] Merge branch 'ycds-wms-dev' of http://47.97.1.152:5880/r/zy-asrs-master into ycds-wms-dev
---
zy-asrs-admin/src/components/orderDetl/edit.vue | 644 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 356 insertions(+), 288 deletions(-)
diff --git a/zy-asrs-admin/src/components/orderDetl/edit.vue b/zy-asrs-admin/src/components/orderDetl/edit.vue
index 8f55e6e..2b23c19 100644
--- a/zy-asrs-admin/src/components/orderDetl/edit.vue
+++ b/zy-asrs-admin/src/components/orderDetl/edit.vue
@@ -1,288 +1,356 @@
-<script setup>
-import { getCurrentInstance, ref, watch, reactive } from 'vue';
-import { useRouter } from "vue-router";
-import { get, post, postForm } from '@/utils/request.js'
-import { message, Modal } from 'ant-design-vue';
-import { logout } from '@/config.js';
-import { formatMessage } from '@/utils/localeUtils.js';
-import useTableSearch from '@/utils/tableUtils.jsx';
-const context = getCurrentInstance()?.appContext.config.globalProperties;
-
-const router = useRouter();
-
-const TABLE_KEY = 'table-locDetl';
-
-let tableData = ref([]);
-let editTableData = ref([]);
-let deleteDetlId = ref([]);
-getColumns();
-
-const {
- getColumnSearchProps,
-} = useTableSearch();
-
-const state = reactive({
- selectedRowKeys: [],
- loading: false,
- columns: [],
-});
-
-state.columns = [
- {
- title: '#',
- dataIndex: '_id',
- width: 60,
- ellipsis: true,
- },
- {
- title: formatMessage('db.man_loc_detl.matnr', '鐗╂枡鍙�'),
- dataIndex: 'matnr',
- width: 140,
- ellipsis: true,
- },
- {
- title: formatMessage('db.man_loc_detl.maktx', '鐗╂枡鍚�'),
- dataIndex: 'maktx',
- width: 140,
- ellipsis: true,
- },
- {
- title: formatMessage('db.man_loc_detl.batch', '鎵瑰彿'),
- dataIndex: 'batch',
- width: 140,
- ellipsis: true,
- editable: true,
- },
- {
- title: formatMessage('db.man_loc_detl.anfme', '鏁伴噺'),
- dataIndex: 'anfme',
- width: 140,
- ellipsis: true,
- editable: true,
- },
- {
- title: formatMessage('db.man_loc_detl.memo', '澶囨敞'),
- dataIndex: 'memo',
- width: 140,
- ellipsis: true,
- editable: true,
- },
-];
-
-const fieldList = [];
-//鍔犺浇鎵╁睍瀛楁
-async function getColumns() {
- let fieldResp = await post('/api/matField/list', {
- fieldType: 1
- })
- let fieldResult = fieldResp.data;
- let tmp = state.columns;
- if (fieldResult.code == 200) {
- let data = fieldResult.data;
-
- data.forEach((item) => {
- tmp.push({
- title: formatMessage(item.language, item.describe),
- name: item.name,
- dataIndex: item.name,
- key: item.name,
- width: 140,
- editable: true,
- })
-
- fieldList.push(item.name);
- })
-
- tmp.push({
- title: formatMessage('common.operation', '鎿嶄綔'),
- name: 'oper',
- dataIndex: 'oper',
- key: 'oper',
- width: 140,
- })
-
- state.columns = tmp;
- } else if (result.code === 401) {
- message.error(result.msg);
- logout()
- } else {
- message.error(result.msg);
- }
-}
-
-const openAddDetl = ref(false);
-const matChecked = ref([]);
-const matQueryList = ref(null);
-const matSelectList = ref([]);
-const addDetl = () => {
- openAddDetl.value = true;
-}
-
-const handleAddDetlOk = () => {
- let origin = tableData.value;
- let index = origin.length + 1;
- matSelectList.value.forEach((item) => {
- let data = {
- _id: index++,
- matnr: item.data.matnr,
- maktx: item.data.maktx,
- batch: '',
- anfme: 0,
- memo: ''
- };
- fieldList.forEach((field) => {
- data[field] = '';
- })
- origin.push(data)
- })
- tableData.value = origin;
-
- openAddDetl.value = false;
- matSelectList.value = [];
- matChecked.value = [];
-}
-
-const handleAddDetlCancel = () => {
- matSelectList.value = [];
- matChecked.value = [];
-}
-
-const handleSearch = val => {
- matQuery(val);
-}
-
-const handleSelect = (value, option) => {
- let flag = true;
- matSelectList.value.forEach((item) => {
- if (item.value == value) {
- flag = false;
- }
- })
-
- if (flag) {
- matSelectList.value.push(option)
- }
-}
-
-const handleDeselect = (value, option) => {
- let tmp = [];
- matSelectList.value.forEach((item) => {
- if (item.value != value) {
- tmp.push(item);
- }
- })
-
- matSelectList.value = tmp;
-}
-
-matQuery(null);
-function matQuery(condition) {
- post('/api/mat/page', {
- current: 1,
- pageSize: 100,
- condition: condition
- }).then((resp) => {
- let result = resp.data;
- let tmp = []
- result.data.records.forEach((item) => {
- tmp.push({
- value: item.matnr,
- label: item.matnr,
- data: item
- })
- })
- matQueryList.value = tmp;
- })
-}
-
-const handleDel = (record) => {
- let tmp = [];
- tableData.value.forEach((item) => {
- if (item._id != record._id) {
- tmp.push(item);
- }
- })
-
- //閲嶅缓绱㈠紩
- let index = 1;
- tmp.forEach((item) => {
- item._id = index++;
- })
-
- if (record.detlId != undefined) {
- deleteDetlId.value.push(record.detlId);
- }
-
- tableData.value = tmp;
-}
-
-watch(editTableData, (newVal, oldVal) => {
- let index = 1;
- let tmp = [];
- if (newVal.length > 0) {
- newVal.forEach((item) => {
- let data = {
- _id: index++,
- detlId: item.id,
- matnr: item.mat$.matnr,
- maktx: item.mat$.maktx,
- batch: item.batch,
- anfme: item.anfme,
- memo: item.memo
- };
- fieldList.forEach((field) => {
- data[field] = item[field];
- })
- tmp.push(data)
- })
- }
- tableData.value = tmp;
-})
-
-defineExpose({
- tableData,
- editTableData,
- deleteDetlId,
-})
-
-</script>
-
-<script>
-export default {
- name: 'orderDetlComponent'
-}
-</script>
-
-<template>
- <div>
- <div class="table-header">
- <a-button @click="addDetl()" type="primary">{{ formatMessage('page.add', '娣诲姞鏄庣粏') }}</a-button>
- </div>
- <a-table :data-source="tableData" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
- :scroll="{ y: 768 }" :columns="state.columns">
- <template #bodyCell="{ column, record, index }">
- <template v-if="column.dataIndex === 'oper'">
- <div style="display: flex;justify-content: space-evenly;">
- <a-button type="link" danger @click="handleDel(record)">{{ formatMessage('page.delete', '鍒犻櫎')
- }}</a-button>
- </div>
- </template>
-
- <template v-if="column.editable">
- <div>
- <a-input v-model:value="record[column.dataIndex]" />
- </div>
- </template>
- </template>
- </a-table>
-
- <a-modal v-model:open="openAddDetl" :title="formatMessage('component.orderDetl.edit.addDetl', '娣诲姞鏄庣粏')"
- @ok="handleAddDetlOk" @cancel="handleAddDetlCancel">
- <a-select v-model:value="matChecked" :options="matQueryList" mode="multiple"
- :placeholder="formatMessage('component.orderDetl.edit.selectMat', '璇烽�夋嫨鐗╂枡')" @search="handleSearch"
- @select="handleSelect" @deselect="handleDeselect"></a-select>
- </a-modal>
- </div>
-</template>
-
-<style></style>
+<script setup>
+import { getCurrentInstance, ref, watch, reactive } from 'vue';
+import { useRouter } from "vue-router";
+import { get, post, postForm } from '@/utils/request.js'
+import { message, Modal } from 'ant-design-vue';
+import { logout } from '@/config.js';
+import { formatMessage } from '@/utils/localeUtils.js';
+import useTableSearch from '@/utils/tableUtils.jsx';
+import { debounce } from 'lodash-es';
+const context = getCurrentInstance()?.appContext.config.globalProperties;
+
+const router = useRouter();
+
+const TABLE_KEY = 'table-locDetl';
+
+const props = defineProps({
+ ioModel: null
+})
+
+let tableData = ref([]);
+let deleteDetlId = ref([]);
+let orderId = ref(null);
+let isAdd = ref(false);
+getColumns();
+
+const {
+ getColumnSearchProps,
+} = useTableSearch();
+
+const state = reactive({
+ selectedRowKeys: [],
+ loading: false,
+ columns: [],
+});
+
+let defaultColumns = [
+ {
+ title: '#',
+ dataIndex: '_id',
+ width: 60,
+ ellipsis: true,
+ },
+ {
+ title: formatMessage('db.man_loc_detl.matnr', '鍟嗗搧缂栧彿'),
+ dataIndex: 'matnr',
+ width: 200,
+ ellipsis: true,
+ },
+ {
+ title: formatMessage('db.man_loc_detl.maktx', '鍟嗗搧鍚嶇О'),
+ dataIndex: 'maktx',
+ width: 140,
+ ellipsis: true,
+ },
+ {
+ title: formatMessage('db.man_loc_detl.batch', '鎵瑰彿'),
+ dataIndex: 'batch',
+ width: 140,
+ ellipsis: true,
+ editable: true,
+ },
+ {
+ title: formatMessage('db.man_loc_detl.anfme', '鏁伴噺'),
+ dataIndex: 'anfme',
+ width: 140,
+ ellipsis: true,
+ editable: true,
+ },
+ // {
+ // title: formatMessage('db.man_loc_detl.qty', '宸插畬鎴愭暟閲�'),
+ // dataIndex: 'qty',
+ // width: 140,
+ // ellipsis: true,
+ // editable: true,
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.workQty', '浣滀笟涓暟閲�'),
+ // dataIndex: 'workQty',
+ // width: 140,
+ // ellipsis: true,
+ // editable: true,
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.memo', '澶囨敞'),
+ // dataIndex: 'memo',
+ // width: 140,
+ // ellipsis: true,
+ // editable: true,
+ // },
+];
+
+const fieldList = [];
+//鍔犺浇鎵╁睍瀛楁
+async function getColumns() {
+ let fieldResp = await post('/api/matField/list', {
+ fieldType: 1
+ })
+ let fieldResult = fieldResp.data;
+ let tmp = defaultColumns;
+ if (fieldResult.code == 200) {
+ let data = fieldResult.data;
+
+ if (!isAdd.value) {
+ tmp.push({
+ title: formatMessage('db.man_loc_detl.qty', '宸插畬鎴愭暟閲�'),
+ dataIndex: 'qty',
+ width: 140,
+ ellipsis: true,
+ editable: true,
+ })
+
+ tmp.push({
+ title: formatMessage('db.man_loc_detl.workQty', '浣滀笟涓暟閲�'),
+ dataIndex: 'workQty',
+ width: 140,
+ ellipsis: true,
+ editable: true,
+ })
+ }
+
+ data.forEach((item) => {
+ tmp.push({
+ title: formatMessage(item.language, item.describe),
+ name: item.name,
+ dataIndex: item.name,
+ key: item.name,
+ width: 140,
+ editable: true,
+ })
+
+ fieldList.push(item.name);
+ })
+
+ tmp.push({
+ title: formatMessage('db.man_loc_detl.memo', '澶囨敞'),
+ dataIndex: 'memo',
+ width: 140,
+ ellipsis: true,
+ editable: true,
+ })
+
+ tmp.push({
+ title: formatMessage('common.operation', '鎿嶄綔'),
+ name: 'oper',
+ dataIndex: 'oper',
+ key: 'oper',
+ width: 140,
+ })
+
+ state.columns = tmp;
+ } else if (result.code === 401) {
+ message.error(result.msg);
+ logout()
+ } else {
+ message.error(result.msg);
+ }
+}
+
+const openAddDetl = ref(false);
+const matChecked = ref([]);
+const matQueryList = ref(null);
+const matFetching = ref(false);
+const searchText = ref('')
+const matSelectList = ref([]);
+const addDetl = () => {
+ openAddDetl.value = true;
+}
+
+const handleAddDetlOk = () => {
+ let origin = tableData.value;
+ let index = origin.length + 1;
+ matSelectList.value.forEach((item) => {
+ let data = {
+ _id: index++,
+ matnr: item.data.matnr,
+ maktx: item.data.maktx,
+ batch: '',
+ anfme: 0,
+ qty: 0,
+ workQty: 0,
+ memo: ''
+ };
+ fieldList.forEach((field) => {
+ data[field] = '';
+ })
+ origin.push(data)
+ })
+ tableData.value = origin;
+
+ openAddDetl.value = false;
+ matSelectList.value = [];
+ matChecked.value = [];
+}
+
+const handleAddDetlCancel = () => {
+ matSelectList.value = [];
+ matChecked.value = [];
+}
+
+const handleSearch = debounce(val => {
+ searchText.value = val
+ matQuery(val);
+}, 600)
+
+const handleSelect = (value, option) => {
+ let flag = true;
+ matSelectList.value.forEach((item) => {
+ if (item.value == value) {
+ flag = false;
+ }
+ })
+
+ if (flag) {
+ matSelectList.value.push(option)
+ }
+}
+
+const handleDeselect = (value, option) => {
+ let tmp = [];
+ matSelectList.value.forEach((item) => {
+ if (item.value != value) {
+ tmp.push(item);
+ }
+ })
+
+ matSelectList.value = tmp;
+}
+
+matQuery(null);
+
+function matQuery(condition) {
+ matFetching.value = true;
+ let url = '/api/mat/page'
+ if (props.ioModel == 2) {
+ url = '/api/locs/mats/page'
+ }
+ post(url, {
+ current: 1,
+ pageSize: 10,
+ condition: condition
+ }).then((resp) => {
+ let result = resp.data;
+ let tmp = []
+ result.data.records.forEach((item) => {
+ tmp.push({
+ value: item.matnr,
+ label: item.matnr + '_' + item.maktx,
+ data: item
+ })
+ })
+ matQueryList.value = tmp;
+ matFetching.value = false;
+ })
+}
+
+const handleDel = (record) => {
+ let tmp = [];
+ tableData.value.forEach((item) => {
+ if (item._id != record._id) {
+ tmp.push(item);
+ }
+ })
+
+ //閲嶅缓绱㈠紩
+ let index = 1;
+ tmp.forEach((item) => {
+ item._id = index++;
+ })
+
+ if (record.detlId != undefined) {
+ deleteDetlId.value.push(record.detlId);
+ }
+
+ tableData.value = tmp;
+}
+
+watch(orderId, (newVal, oldVal) => {
+ if (newVal == undefined || newVal == null) {
+ tableData.value = [];
+ getColumns()
+ return;
+ }
+
+ get("/api/orderDetl/orderId/" + newVal, {}).then((resp) => {
+ let result = resp.data;
+ let index = 1;
+ let tmp = [];
+ result.data.forEach((item) => {
+ let data = {
+ _id: index++,
+ detlId: item.id,
+ matnr: item.mat$.matnr,
+ maktx: item.mat$.maktx,
+ batch: item.batch,
+ anfme: item.anfme,
+ qty: item.qty,
+ workQty: item.workQty,
+ memo: item.memo
+ };
+ fieldList.forEach((field) => {
+ data[field] = item[field];
+ })
+ tmp.push(data)
+ })
+ tableData.value = tmp;
+ })
+
+})
+
+defineExpose({
+ tableData,
+ orderId,
+ deleteDetlId,
+ isAdd,
+})
+
+</script>
+
+<script>
+export default {
+ name: 'orderDetlComponent'
+}
+</script>
+
+<template>
+ <div>
+ <div class="table-header">
+ <a-button @click="addDetl()" type="primary">{{ formatMessage('page.add', '娣诲姞鏄庣粏') }}</a-button>
+ </div>
+ <a-table :data-source="tableData" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
+ :scroll="{ y: 768 }" :columns="state.columns">
+ <template #bodyCell="{ column, record, index }">
+ <template v-if="column.dataIndex === 'oper'">
+ <div style="display: flex;justify-content: space-evenly;">
+ <a-button type="link" danger @click="handleDel(record)">{{ formatMessage('page.delete', '鍒犻櫎')
+ }}</a-button>
+ </div>
+ </template>
+
+ <template v-if="column.editable">
+ <a-input v-model:value="record[column.dataIndex]" />
+ </template>
+ </template>
+ </a-table>
+
+ <a-modal v-model:open="openAddDetl" :title="formatMessage('component.orderDetl.edit.addDetl', '娣诲姞鏄庣粏')"
+ @ok="handleAddDetlOk" @cancel="handleAddDetlCancel">
+ <a-select v-model:value="matChecked" :options="matQueryList" mode="multiple" :searchValue="searchText"
+ :placeholder="formatMessage('component.orderDetl.edit.selectMat', '璇烽�夋嫨鐗╂枡')" @search="handleSearch"
+ :filter-option="false" :not-found-content="matFetching ? undefined : null" @select="handleSelect" allowClear
+ @deselect="handleDeselect" ></a-select>
+ </a-modal>
+ </div>
+</template>
+
+<style></style>
--
Gitblit v1.9.1