|
@@ -3,15 +3,30 @@
|
|
|
<div class="desc-wrap-BasicTable">
|
|
|
<BasicTable @register="registerTable">
|
|
|
<template #toolbar>
|
|
|
- <a-button type="primary" @click="deviceLink"> 设备关联</a-button>
|
|
|
- <a-button type="primary" @click="back">返回</a-button>
|
|
|
+ <a-button type="primary" @click="put"> 入库</a-button>
|
|
|
+ <a-button type="primary" @click="batchPut"> 批量入库</a-button>
|
|
|
+ <a-button type="primary" @click="batchOutflow">批量出库</a-button>
|
|
|
</template>
|
|
|
<template #action="{ record }">
|
|
|
<TableAction
|
|
|
stopButtonPropagation
|
|
|
:actions="[
|
|
|
{
|
|
|
+ label: '删除',
|
|
|
+ color: 'error',
|
|
|
+ ifShow: !Boolean(record.outType),
|
|
|
+ onClick: handleDelete.bind(null, record),
|
|
|
+ },{
|
|
|
+ label: '出库',
|
|
|
+ ifShow: !Boolean(record.companyName),
|
|
|
+ onClick: handleCheckout.bind(null, record),
|
|
|
+ },{
|
|
|
+ label: '编辑',
|
|
|
+ ifShow: Boolean(record.companyName),
|
|
|
+ onClick: handleEdit.bind(null, record),
|
|
|
+ },{
|
|
|
label: '解绑',
|
|
|
+ ifShow: Boolean(record.userName),
|
|
|
color: 'error',
|
|
|
onClick: handleUnbind.bind(null, record),
|
|
|
},
|
|
@@ -20,11 +35,14 @@
|
|
|
</template>
|
|
|
</BasicTable>
|
|
|
</div>
|
|
|
- <DeviceLinkModal @register="registerLinkModal" />
|
|
|
+ <batchOutflowModal @register="registerLinkModal" @reload="reload" />
|
|
|
+ <detailModal @register="register" @reload="reload" />
|
|
|
+ <batchPutModal @register="registerPut" @reload="reload" />
|
|
|
+ <PutModal @register="registerEnter" @reload="reload" />
|
|
|
</PageWrapper>
|
|
|
</template>
|
|
|
<script lang="ts">
|
|
|
- import { defineComponent, h, reactive, toRefs, onMounted } from 'vue';
|
|
|
+ import { defineComponent, h, onMounted } from 'vue';
|
|
|
import {
|
|
|
BasicTable,
|
|
|
useTable,
|
|
@@ -34,22 +52,28 @@
|
|
|
FormProps,
|
|
|
} from '/@/components/Table';
|
|
|
import { PageWrapper } from '/@/components/Page';
|
|
|
- import { Time } from '/@/components/Time';
|
|
|
import { Descriptions } from 'ant-design-vue';
|
|
|
import { useI18n } from '/@/hooks/web/useI18n';
|
|
|
import { useMessage } from '/@/hooks/web/useMessage';
|
|
|
import { cameraList } from '/@/api/customer';
|
|
|
- import { message } from 'ant-design-vue';
|
|
|
- import DeviceLinkModal from './DeviceLinkModal.vue';
|
|
|
+ import { cameraDelete } from '/@/api/device'
|
|
|
+ import batchOutflowModal from './OutflowModal.vue';
|
|
|
+ import detailModal from './detailsMoadl.vue';
|
|
|
+ import batchPutModal from './batchPutModal.vue';
|
|
|
+ import PutModal from './putModal.vue';
|
|
|
import { useModal } from '/@/components/Modal';
|
|
|
import { useRouter } from 'vue-router';
|
|
|
+ import { UnbindCameraApi } from '/@/api/account';
|
|
|
export default defineComponent({
|
|
|
components: {
|
|
|
BasicTable,
|
|
|
TableAction,
|
|
|
PageWrapper,
|
|
|
TableImg,
|
|
|
- DeviceLinkModal,
|
|
|
+ batchOutflowModal,
|
|
|
+ detailModal,
|
|
|
+ batchPutModal,
|
|
|
+ PutModal,
|
|
|
[Descriptions.name]: Descriptions,
|
|
|
[Descriptions.Item.name]: Descriptions.Item,
|
|
|
},
|
|
@@ -57,6 +81,9 @@
|
|
|
const { t } = useI18n();
|
|
|
const { createMessage, createConfirm } = useMessage();
|
|
|
const [registerLinkModal, { openModal: openLinkModal }] = useModal();
|
|
|
+ const [register, { openModal }] = useModal();
|
|
|
+ const [registerPut, { openModal:openModalPut }] = useModal();
|
|
|
+ const [registerEnter, { openModal:openModalEnter }] = useModal();
|
|
|
const router = useRouter();
|
|
|
const companyId: Number = router.currentRoute.value.params.id - 0;
|
|
|
onMounted(() => {
|
|
@@ -99,6 +126,9 @@
|
|
|
title: '绑定账号',
|
|
|
dataIndex: 'userName',
|
|
|
width: 180,
|
|
|
+ customRender({ record }) {
|
|
|
+ return record.userName?record.userName:'未绑定'
|
|
|
+ },
|
|
|
},
|
|
|
|
|
|
{
|
|
@@ -108,80 +138,121 @@
|
|
|
ifShow: true,
|
|
|
fixed: 'right',
|
|
|
flag: 'ACTION',
|
|
|
- width: 60,
|
|
|
+ width: 120,
|
|
|
},
|
|
|
];
|
|
|
const searchForm: Partial<FormProps> = {
|
|
|
- labelWidth: 100,
|
|
|
+ labelWidth: 80,
|
|
|
+ // showAdvancedButton: true,
|
|
|
+ autoAdvancedLine:1,
|
|
|
+ actionColOptions: {
|
|
|
+ span: 24,
|
|
|
+ },
|
|
|
+ // compact: true,
|
|
|
schemas: [
|
|
|
{
|
|
|
field: 'snCode',
|
|
|
- label: 'SN码',
|
|
|
component: 'Input',
|
|
|
- componentProps: {
|
|
|
- maxLength: 100,
|
|
|
- },
|
|
|
+ label: 'SN码',
|
|
|
colProps: {
|
|
|
- xl: 4,
|
|
|
- xxl: 4,
|
|
|
+ xl: 6,
|
|
|
+ xxl: 6,
|
|
|
},
|
|
|
- },
|
|
|
- {
|
|
|
+ },{
|
|
|
field: 'type',
|
|
|
- label: '设备类型',
|
|
|
component: 'Select',
|
|
|
+ label: '设备类型',
|
|
|
+ colProps: {
|
|
|
+ xl: 6,
|
|
|
+ xxl: 6,
|
|
|
+ },
|
|
|
componentProps: {
|
|
|
- maxLength: 100,
|
|
|
options: [
|
|
|
{
|
|
|
- label: '旧双目相机',
|
|
|
- value: '0',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '四维看看',
|
|
|
- value: '1',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '四维看看lite',
|
|
|
- value: '2',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '四维看见',
|
|
|
- value: '9',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '四维深时',
|
|
|
- value: '10',
|
|
|
+ label: t('routes.product.type.0'),
|
|
|
+ value: 0,
|
|
|
+ key: '0',
|
|
|
+ },{
|
|
|
+ label: t('routes.product.type.1'),
|
|
|
+ value: 1,
|
|
|
+ key: '1',
|
|
|
+ },{
|
|
|
+ label: t('routes.product.type.2'),
|
|
|
+ value: 2,
|
|
|
+ key: '2',
|
|
|
+ },{
|
|
|
+ label: t('routes.product.type.3'),
|
|
|
+ value: 3,
|
|
|
+ key: '3',
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
- colProps: {
|
|
|
- xl: 4,
|
|
|
- xxl: 4,
|
|
|
- },
|
|
|
},
|
|
|
{
|
|
|
- field: 'activatedTime',
|
|
|
- label: '激活时间',
|
|
|
+ field: 'sceneName',
|
|
|
+ label: '下单时间',
|
|
|
component: 'RangePicker',
|
|
|
- componentProps: {
|
|
|
- maxLength: 100,
|
|
|
- },
|
|
|
colProps: {
|
|
|
xl: 7,
|
|
|
xxl: 7,
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
- field: 'userName',
|
|
|
- label: '绑定账号',
|
|
|
+ field: 'outType',
|
|
|
+ component: 'Select',
|
|
|
+ label: '出库类型',
|
|
|
+ colProps: {
|
|
|
+ xl: 6,
|
|
|
+ xxl: 6,
|
|
|
+ },
|
|
|
+ componentProps: {
|
|
|
+ options: [
|
|
|
+ {
|
|
|
+ label: t('routes.product.outType.0'),
|
|
|
+ value: 0,
|
|
|
+ key: '0',
|
|
|
+ },{
|
|
|
+ label: t('routes.product.outType.1'),
|
|
|
+ value: 1,
|
|
|
+ key: '1',
|
|
|
+ },{
|
|
|
+ label: t('routes.product.outType.2'),
|
|
|
+ value: 2,
|
|
|
+ key: '2',
|
|
|
+ },{
|
|
|
+ label: t('routes.product.outType.3'),
|
|
|
+ value: 3,
|
|
|
+ key: '3',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'companyName',
|
|
|
+ label: '客户名称',
|
|
|
component: 'Input',
|
|
|
+ colProps: {
|
|
|
+ xl: 6,
|
|
|
+ xxl: 6,
|
|
|
+ },
|
|
|
componentProps: {
|
|
|
- maxLength: 100,
|
|
|
+ // api: brandTypeListApi,
|
|
|
+ resultField: 'list',
|
|
|
+ labelField: 'name',
|
|
|
+ valueField: 'brandType',
|
|
|
+ params: {
|
|
|
+ page: 1,
|
|
|
+ limit: 1000,
|
|
|
+ },
|
|
|
},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'userName',
|
|
|
+ component: 'Input',
|
|
|
+ label: '绑定账号',
|
|
|
colProps: {
|
|
|
- xl: 4,
|
|
|
- xxl: 4,
|
|
|
+ xl: 6,
|
|
|
+ xxl: 6,
|
|
|
},
|
|
|
},
|
|
|
],
|
|
@@ -191,11 +262,12 @@
|
|
|
// title: '四维深时场景列表',
|
|
|
// titleHelpMessage: ['已启用expandRowByClick', '已启用stopButtonPropagation'],
|
|
|
columns: columns,
|
|
|
- rowSelection: { type: 'checkbox',onChange: onSelectChange },
|
|
|
+ // rowSelection: { type: 'checkbox',onChange: onSelectChange },
|
|
|
searchInfo: { companyId },
|
|
|
useSearchForm: true,
|
|
|
formConfig: searchForm,
|
|
|
showTableSetting: true,
|
|
|
+ showIndexColumn:false,
|
|
|
rowKey: 'id',
|
|
|
fetchSetting: {
|
|
|
pageField: 'pageNum',
|
|
@@ -205,32 +277,66 @@
|
|
|
},
|
|
|
canResize: false,
|
|
|
});
|
|
|
- function onSelectChange(val): void {
|
|
|
- console.log('onSelectChange',val)
|
|
|
- }
|
|
|
async function handleUnbind(record: Recordable) {
|
|
|
createConfirm({
|
|
|
iconType: 'warning',
|
|
|
title: () => h('span', '温馨提示'),
|
|
|
content: '解绑后用户将看不到该相机拍摄的场景。<br/>确定解绑吗?',
|
|
|
onOk: async () => {
|
|
|
- // await DownExport();
|
|
|
+ await await UnbindCameraApi({cameraId:record.id})
|
|
|
+ createMessage.success(t('common.optSuccess'));
|
|
|
+ reload()
|
|
|
},
|
|
|
});
|
|
|
}
|
|
|
+ async function handleDelete(record: Recordable){
|
|
|
+ const res = await cameraDelete({id:record.id})
|
|
|
+ createMessage.success(t('common.optSuccess'));
|
|
|
+ reload()
|
|
|
+ console.log('res',res)
|
|
|
+ }
|
|
|
|
|
|
function deviceLink() {
|
|
|
openLinkModal(true);
|
|
|
}
|
|
|
- function back() {
|
|
|
- router.push('/customer/index');
|
|
|
+ function handleCheckout(record: Recordable) {
|
|
|
+ openModal(true, {
|
|
|
+ ...record,
|
|
|
+ isUpdate: false,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function handleEdit(record: Recordable) {
|
|
|
+ openModal(true, {
|
|
|
+ ...record,
|
|
|
+ isUpdate: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function put() {
|
|
|
+ openModalEnter(true)
|
|
|
+ }
|
|
|
+ function batchPut() {
|
|
|
+ console.log('批量入库');
|
|
|
+ openModalPut(true, {})
|
|
|
+ }
|
|
|
+ function batchOutflow() {
|
|
|
+ console.log('批量出库');
|
|
|
+ openLinkModal(true, {})
|
|
|
}
|
|
|
return {
|
|
|
registerTable,
|
|
|
handleUnbind,
|
|
|
deviceLink,
|
|
|
registerLinkModal,
|
|
|
- back,
|
|
|
+ register,
|
|
|
+ registerEnter,
|
|
|
+ put,
|
|
|
+ batchPut,
|
|
|
+ batchOutflow,
|
|
|
+ handleEdit,
|
|
|
+ handleCheckout,
|
|
|
+ reload,
|
|
|
+ handleDelete,
|
|
|
+ registerPut,
|
|
|
};
|
|
|
},
|
|
|
});
|