|
@@ -7,17 +7,47 @@
|
|
|
bordered
|
|
|
class="mt-10px"
|
|
|
>
|
|
|
- <template #ccc="{ row }">
|
|
|
- {{ RUNNING_STATUS[row.ccc] }}
|
|
|
+ <template #deviceStatus="{ row }">
|
|
|
+ {{ RUNNING_STATUS[row.deviceStatus] }}
|
|
|
</template>
|
|
|
- <template #fff="{ row }">
|
|
|
- {{ DEVICE_USE_STATUS[row.fff] }}
|
|
|
+ <template #status="{ row }">
|
|
|
+ {{ DEVICE_SIGN_STATUS[row.status] }}
|
|
|
</template>
|
|
|
<template #operate="{ row }">
|
|
|
<div class="table-operations" @click.stop>
|
|
|
- <t-link theme="primary" hover="color" @click="enter(row)">入库</t-link>
|
|
|
- <t-link theme="primary" hover="color" @click="middle(row)">中转</t-link>
|
|
|
- <t-link theme="primary" hover="color" @click="edit(row)">编辑</t-link>
|
|
|
+ <t-link
|
|
|
+ :theme="
|
|
|
+ row.haveSign || ['TRANSFER', 'IN'].includes(row.status)
|
|
|
+ ? 'default'
|
|
|
+ : 'primary'
|
|
|
+ "
|
|
|
+ :disabled="row.haveSign || ['TRANSFER', 'IN'].includes(row.status)"
|
|
|
+ hover="color"
|
|
|
+ @click="enter(row)"
|
|
|
+ >入库</t-link
|
|
|
+ >
|
|
|
+ <t-link
|
|
|
+ :theme="
|
|
|
+ row.haveSign || ['TRANSFER', 'IN'].includes(row.status)
|
|
|
+ ? 'default'
|
|
|
+ : 'primary'
|
|
|
+ "
|
|
|
+ :disabled="row.haveSign || ['TRANSFER', 'IN'].includes(row.status)"
|
|
|
+ hover="color"
|
|
|
+ @click="middle(row)"
|
|
|
+ >中转</t-link
|
|
|
+ >
|
|
|
+ <t-link
|
|
|
+ :theme="
|
|
|
+ row.haveSign || ['USING'].includes(row.status)
|
|
|
+ ? 'default'
|
|
|
+ : 'primary'
|
|
|
+ "
|
|
|
+ :disabled="row.haveSign || ['USING'].includes(row.status)"
|
|
|
+ hover="color"
|
|
|
+ @click="edit(row)"
|
|
|
+ >编辑</t-link
|
|
|
+ >
|
|
|
</div>
|
|
|
</template>
|
|
|
</t-table>
|
|
@@ -76,46 +106,84 @@
|
|
|
</my-dialog>
|
|
|
</template>
|
|
|
<script name="DeviceManageNewTab2" setup>
|
|
|
-import { ref, computed } from 'vue';
|
|
|
-import { RUNNING_STATUS, DEVICE_USE_STATUS } from '@/config/constants';
|
|
|
+import { ref, computed, onMounted } from 'vue';
|
|
|
+import { RUNNING_STATUS, DEVICE_SIGN_STATUS } from '@/config/constants';
|
|
|
import { dictToOptionList } from '@/utils/tool';
|
|
|
-import { cloneDeep } from 'lodash-es';
|
|
|
+import { cloneDeep, omit } from 'lodash-es';
|
|
|
+import {
|
|
|
+ deviceGotoListApi,
|
|
|
+ deviceGotoInHandleApi,
|
|
|
+ deviceGotoMiddleHandleApi,
|
|
|
+ deviceGotoEditHandleApi,
|
|
|
+} from '@/api/sop';
|
|
|
+import { useRequest } from 'vue-request';
|
|
|
+import { MessagePlugin } from 'tdesign-vue-next';
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ sop: {
|
|
|
+ type: Object,
|
|
|
+ default() {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ },
|
|
|
+});
|
|
|
+const { data: tableData, run, loading } = useRequest(deviceGotoListApi);
|
|
|
+const fetchData = () => {
|
|
|
+ run({ crmNo: props.sop.crmNo });
|
|
|
+};
|
|
|
+onMounted(() => {
|
|
|
+ fetchData();
|
|
|
+});
|
|
|
|
|
|
const curRow = ref(null);
|
|
|
|
|
|
/**入库弹框 */
|
|
|
const enterForm = ref();
|
|
|
const showEnterDialog = ref(false);
|
|
|
-const initEnterParams = { aaa: '', bbb: '', ccc: '' };
|
|
|
+const initEnterParams = { inMode: 'MAIL', expressNo: '', remark: '' };
|
|
|
const enterParams = ref(cloneDeep(initEnterParams));
|
|
|
-const enterFields = ref([
|
|
|
- {
|
|
|
- prop: 'aaa',
|
|
|
- label: '入库方式',
|
|
|
- type: 'select',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- options: [
|
|
|
- { value: '邮寄', label: '邮寄' },
|
|
|
- { value: '其它', label: '其它' },
|
|
|
+const enterFields = computed(() => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ prop: 'inMode',
|
|
|
+ label: '入库方式:',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ options: [
|
|
|
+ { value: 'MAIL', label: '邮寄' },
|
|
|
+ { value: 'OTHER', label: '其它' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ enterParams.value.inMode === 'MAIL'
|
|
|
+ ? {
|
|
|
+ prop: 'expressNo',
|
|
|
+ label: '快递单号:',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ }
|
|
|
+ : null,
|
|
|
+ {
|
|
|
+ prop: 'remark',
|
|
|
+ label: '备注:',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+});
|
|
|
+const enterRules = computed(() => {
|
|
|
+ return {
|
|
|
+ inMode: [{ required: true, message: '请选择入库方式' }],
|
|
|
+ remark: [
|
|
|
+ { required: enterParams.value.inMode === 'OTHER', message: '请填写备注' },
|
|
|
],
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'bbb',
|
|
|
- label: '快递单号',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'ccc',
|
|
|
- label: '备注',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- },
|
|
|
-]);
|
|
|
-const enterRules = ref({
|
|
|
- aaa: [{ required: true, message: '请选择入库方式' }],
|
|
|
- bbb: [{ required: true, message: '请填写快递单号' }],
|
|
|
+ expressNo: [
|
|
|
+ {
|
|
|
+ required: enterParams.value.inMode === 'MAIL',
|
|
|
+ message: '请填写快递单号',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
});
|
|
|
const enter = (row) => {
|
|
|
curRow.value = row;
|
|
@@ -126,52 +194,80 @@ const enterConfirm = async () => {
|
|
|
const formRef = enterForm.value.formRef;
|
|
|
const valid = await formRef?.validate();
|
|
|
if (valid !== true) return;
|
|
|
- //todo
|
|
|
-
|
|
|
- showEnterDialog.value = false;
|
|
|
+ deviceGotoInHandleApi(
|
|
|
+ omit(
|
|
|
+ {
|
|
|
+ id: curRow.value.id,
|
|
|
+ inMode: enterParams.value.inMode,
|
|
|
+ expressNo: enterParams.value.expressNo,
|
|
|
+ remark: enterParams.value.remark,
|
|
|
+ },
|
|
|
+ enterParams.value.inMode === 'MAIL' ? '' : 'expressNo'
|
|
|
+ )
|
|
|
+ ).then(() => {
|
|
|
+ MessagePlugin.success('操作成功');
|
|
|
+ fetchData();
|
|
|
+ showEnterDialog.value = false;
|
|
|
+ });
|
|
|
};
|
|
|
/***********/
|
|
|
|
|
|
/**中转弹框 */
|
|
|
const middleForm = ref();
|
|
|
const showMiddleDialog = ref(false);
|
|
|
-const initMiddleParams = { aaa: '', bbb: '', ccc: '', ddd: '' };
|
|
|
+const initMiddleParams = {
|
|
|
+ transferMode: 'MAIL',
|
|
|
+ expressNo: '',
|
|
|
+ remark: '',
|
|
|
+ receiveCrmNo: '',
|
|
|
+};
|
|
|
const middleParams = ref(cloneDeep(initMiddleParams));
|
|
|
-const middleFields = ref([
|
|
|
- {
|
|
|
- prop: 'aaa',
|
|
|
- label: '中转方式',
|
|
|
- type: 'select',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- options: [
|
|
|
- { value: '邮寄', label: '邮寄' },
|
|
|
- { value: '其它', label: '其它' },
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'bbb',
|
|
|
- label: '快递单号',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'ccc',
|
|
|
- label: '备注',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- },
|
|
|
- {
|
|
|
- prop: 'ddd',
|
|
|
- label: '接收方单号',
|
|
|
- labelWidth: 80,
|
|
|
- colSpan: 24,
|
|
|
- },
|
|
|
-]);
|
|
|
-const middleRules = ref({
|
|
|
- aaa: [{ required: true, message: '请选择中转方式' }],
|
|
|
- bbb: [{ required: true, message: '请填写快递单号' }],
|
|
|
- ddd: [{ required: true, message: '请填写接收方单号' }],
|
|
|
+const middleFields = computed(() => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ prop: 'transferMode',
|
|
|
+ label: '中转方式:',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ options: [
|
|
|
+ { value: 'MAIL', label: '邮寄' },
|
|
|
+ { value: 'OTHER', label: '其它' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ middleParams.value.transferMode === 'MAIL'
|
|
|
+ ? {
|
|
|
+ prop: 'expressNo',
|
|
|
+ label: '快递单号:',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ }
|
|
|
+ : null,
|
|
|
+ {
|
|
|
+ prop: 'remark',
|
|
|
+ label: '备注:',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'receiveCrmNo',
|
|
|
+ label: '接收方单号:',
|
|
|
+ labelWidth: 110,
|
|
|
+ colSpan: 24,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+});
|
|
|
+const middleRules = computed(() => {
|
|
|
+ let obj = {
|
|
|
+ transferMode: [{ required: true, message: '请选择中转方式' }],
|
|
|
+ receiveCrmNo: [{ required: true, message: '请填写接收方单号' }],
|
|
|
+ };
|
|
|
+ if (middleParams.value.transferMode === 'MAIL') {
|
|
|
+ obj.expressNo = [{ required: true, message: '请填写快递单号' }];
|
|
|
+ } else {
|
|
|
+ obj.remark = [{ required: true, message: '请填写备注' }];
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
});
|
|
|
const middle = (row) => {
|
|
|
curRow.value = row;
|
|
@@ -182,9 +278,22 @@ const middleConfirm = async () => {
|
|
|
const formRef = middleForm.value.formRef;
|
|
|
const valid = await formRef?.validate();
|
|
|
if (valid !== true) return;
|
|
|
- //todo
|
|
|
-
|
|
|
- showMiddleDialog.value = false;
|
|
|
+ deviceGotoMiddleHandleApi(
|
|
|
+ omit(
|
|
|
+ {
|
|
|
+ id: curRow.value.id,
|
|
|
+ transferMode: middleParams.value.transferMode,
|
|
|
+ expressNo: middleParams.value.expressNo,
|
|
|
+ remark: middleParams.value.remark,
|
|
|
+ receiveCrmNo: middleParams.value.receiveCrmNo,
|
|
|
+ },
|
|
|
+ middleParams.value.transferMode === 'OTHER' ? 'expressNo' : ''
|
|
|
+ )
|
|
|
+ ).then(() => {
|
|
|
+ MessagePlugin.success('操作成功');
|
|
|
+ fetchData();
|
|
|
+ showMiddleDialog.value = false;
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
/***********/
|
|
@@ -192,76 +301,133 @@ const middleConfirm = async () => {
|
|
|
/**编辑弹框 */
|
|
|
const editForm = ref();
|
|
|
const showEditDialog = ref(false);
|
|
|
-const initEditParams = { aaa: '', bbb: '', ccc: '', ddd: '', eee: '' };
|
|
|
+const initEditParams = {
|
|
|
+ transferStatus: '',
|
|
|
+ transferMode: '',
|
|
|
+ expressNo: '',
|
|
|
+ receiveCrmNo: '',
|
|
|
+ remark: '',
|
|
|
+};
|
|
|
const editParams = ref(cloneDeep(initEditParams));
|
|
|
const editFields = computed(() => {
|
|
|
return [
|
|
|
{
|
|
|
- prop: 'aaa',
|
|
|
- label: '使用状态',
|
|
|
+ prop: 'transferStatus',
|
|
|
+ label: '使用状态:',
|
|
|
type: 'select',
|
|
|
- labelWidth: 90,
|
|
|
+ labelWidth: 110,
|
|
|
colSpan: 24,
|
|
|
options: [
|
|
|
- { value: '中转', label: '中转' },
|
|
|
- { value: '入库', label: '入库' },
|
|
|
+ { value: 'TRANSFER', label: '中转' },
|
|
|
+ { value: 'IN', label: '入库' },
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
- prop: 'bbb',
|
|
|
- label: '中转方式',
|
|
|
+ prop: 'transferMode',
|
|
|
+ label: '中转方式:',
|
|
|
type: 'select',
|
|
|
- labelWidth: 90,
|
|
|
+ labelWidth: 110,
|
|
|
colSpan: 24,
|
|
|
options: [
|
|
|
- { value: '邮寄', label: '邮寄' },
|
|
|
- { value: '其它', label: '其它' },
|
|
|
+ { value: 'MAIL', label: '邮寄' },
|
|
|
+ { value: 'OTHER', label: '其它' },
|
|
|
],
|
|
|
},
|
|
|
- editParams.value.bbb === '邮寄'
|
|
|
+ editParams.value.transferMode === 'MAIL'
|
|
|
? {
|
|
|
- prop: 'ccc',
|
|
|
- label: '快递单号',
|
|
|
- labelWidth: 90,
|
|
|
+ prop: 'expressNo',
|
|
|
+ label: '快递单号:',
|
|
|
+ labelWidth: 110,
|
|
|
colSpan: 24,
|
|
|
}
|
|
|
: null,
|
|
|
- editParams.value.aaa === '中转'
|
|
|
+ editParams.value.transferStatus === 'TRANSFER'
|
|
|
? {
|
|
|
- prop: 'ddd',
|
|
|
- label: '接收方单号',
|
|
|
- labelWidth: 90,
|
|
|
+ prop: 'receiveCrmNo',
|
|
|
+ label: '接收方单号:',
|
|
|
+ labelWidth: 110,
|
|
|
colSpan: 24,
|
|
|
}
|
|
|
: null,
|
|
|
- editParams.value.bbb === '其它'
|
|
|
+ editParams.value.transferStatus === 'TRANSFER' ||
|
|
|
+ editParams.value.transferMode === 'OTHER'
|
|
|
? {
|
|
|
- prop: 'eee',
|
|
|
- label: '备注',
|
|
|
- labelWidth: 90,
|
|
|
+ prop: 'remark',
|
|
|
+ label: '备注:',
|
|
|
+ labelWidth: 110,
|
|
|
colSpan: 24,
|
|
|
}
|
|
|
: null,
|
|
|
];
|
|
|
});
|
|
|
-const editRules = ref({
|
|
|
- aaa: [{ required: true, message: '请选择使用状态' }],
|
|
|
- bbb: [{ required: true, message: '请选择中转方式' }],
|
|
|
- ccc: [{ required: true, message: '请填写快递单号' }],
|
|
|
- ddd: [{ required: true, message: '请填写接收方单号' }],
|
|
|
+const editRules = computed(() => {
|
|
|
+ return {
|
|
|
+ transferStatus: [{ required: true, message: '请选择使用状态' }],
|
|
|
+ transferMode: [{ required: true, message: '请选择中转方式' }],
|
|
|
+ expressNo: [{ required: true, message: '请填写快递单号' }],
|
|
|
+ receiveCrmNo: [{ required: true, message: '请填写接收方单号' }],
|
|
|
+ remark: [
|
|
|
+ {
|
|
|
+ required: editParams.value.transferMode === 'OTHER',
|
|
|
+ message: '请填写备注',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
});
|
|
|
const edit = (row) => {
|
|
|
curRow.value = row;
|
|
|
- editParams.value = cloneDeep(initEditParams);
|
|
|
+ editParams.value = {
|
|
|
+ transferStatus: row.status,
|
|
|
+ transferMode: row.transferMode,
|
|
|
+ expressNo: row.expressNo,
|
|
|
+ receiveCrmNo: row.receiveCrmNo,
|
|
|
+ remark: row.remark,
|
|
|
+ };
|
|
|
showEditDialog.value = true;
|
|
|
};
|
|
|
const editConfirm = async () => {
|
|
|
const formRef = editForm.value.formRef;
|
|
|
const valid = await formRef?.validate();
|
|
|
if (valid !== true) return;
|
|
|
- //todo
|
|
|
-
|
|
|
- showEditDialog.value = false;
|
|
|
+ deviceGotoEditHandleApi(
|
|
|
+ editParams.value.transferStatus === 'TRANSFER' &&
|
|
|
+ editParams.value.transferMode === 'MAIL'
|
|
|
+ ? {
|
|
|
+ id: curRow.value.id,
|
|
|
+ transferStatus: editParams.value.transferStatus,
|
|
|
+ transferMode: editParams.value.transferMode,
|
|
|
+ expressNo: editParams.value.expressNo,
|
|
|
+ remark: editParams.value.remark,
|
|
|
+ receiveCrmNo: editParams.value.receiveCrmNo,
|
|
|
+ }
|
|
|
+ : editParams.value.transferStatus === 'TRANSFER' &&
|
|
|
+ editParams.value.transferMode === 'OTHER'
|
|
|
+ ? {
|
|
|
+ id: curRow.value.id,
|
|
|
+ transferStatus: editParams.value.transferStatus,
|
|
|
+ transferMode: editParams.value.transferMode,
|
|
|
+ remark: editParams.value.remark,
|
|
|
+ receiveCrmNo: editParams.value.receiveCrmNo,
|
|
|
+ }
|
|
|
+ : editParams.value.transferStatus === 'IN' &&
|
|
|
+ editParams.value.transferMode === 'MAIL'
|
|
|
+ ? {
|
|
|
+ id: curRow.value.id,
|
|
|
+ transferStatus: editParams.value.transferStatus,
|
|
|
+ transferMode: editParams.value.transferMode,
|
|
|
+ expressNo: editParams.value.expressNo,
|
|
|
+ }
|
|
|
+ : {
|
|
|
+ id: curRow.value.id,
|
|
|
+ transferStatus: editParams.value.transferStatus,
|
|
|
+ transferMode: editParams.value.transferMode,
|
|
|
+ remark: editParams.value.remark,
|
|
|
+ }
|
|
|
+ ).then(() => {
|
|
|
+ MessagePlugin.success('操作成功');
|
|
|
+ fetchData();
|
|
|
+ showEditDialog.value = false;
|
|
|
+ });
|
|
|
};
|
|
|
/***********/
|
|
|
|
|
@@ -271,13 +437,13 @@ const columns = [
|
|
|
title: '序号',
|
|
|
width: 48,
|
|
|
},
|
|
|
- { colKey: 'aaa', title: '设备序列号' },
|
|
|
- { colKey: 'bbb', title: '设备型号' },
|
|
|
- { colKey: 'ccc', title: '状态', cell: 'ccc' },
|
|
|
- { colKey: 'ddd', title: '设备归属' },
|
|
|
- { colKey: 'eee', title: '运输方式' },
|
|
|
- { colKey: 'fff', title: '使用状态', cell: 'fff' },
|
|
|
- { colKey: 'ggg', title: '接收方单号' },
|
|
|
+ { colKey: 'serialNo', title: '设备序列号' },
|
|
|
+ { colKey: 'model', title: '设备型号' },
|
|
|
+ { colKey: 'deviceStatus', title: '状态', cell: 'deviceStatus' },
|
|
|
+ { colKey: 'supplierName', title: '设备归属' },
|
|
|
+ { colKey: 'transportMode', title: '运输方式' },
|
|
|
+ { colKey: 'status', title: '使用状态', cell: 'fff' },
|
|
|
+ { colKey: 'receiveCrmNo', title: '接收方单号' },
|
|
|
{
|
|
|
title: '管理',
|
|
|
colKey: 'operate',
|
|
@@ -285,16 +451,5 @@ const columns = [
|
|
|
width: 180,
|
|
|
},
|
|
|
];
|
|
|
-const tableData = ref([
|
|
|
- {
|
|
|
- aaa: 'aaa',
|
|
|
- bbb: 'bbb',
|
|
|
- ccc: 'BREAK_DOWN',
|
|
|
- ddd: 'ddd',
|
|
|
- eee: 'eee',
|
|
|
- fff: '1',
|
|
|
- ggg: 'ggg',
|
|
|
- },
|
|
|
-]);
|
|
|
</script>
|
|
|
<style lang="less" scoped></style>
|