parent
							
								
									74bcb3c194
								
							
						
					
					
						commit
						e100956037
					
				| 
						 | 
				
			
			@ -5,7 +5,7 @@ NODE_ENV = development
 | 
			
		|||
VITE_TITLE = Snowy
 | 
			
		||||
 | 
			
		||||
# 接口地址
 | 
			
		||||
VITE_API_BASEURL = http://localhost:82
 | 
			
		||||
VITE_API_BASEURL = http://49.234.181.176:27315/bsx
 | 
			
		||||
 | 
			
		||||
# 本地端口
 | 
			
		||||
VITE_PORT = 81
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<template>
 | 
			
		||||
	<div></div>
 | 
			
		||||
	<a-modal v-model:open="visible" title="物料选择" width="80%" @ok="handleOk" @cancel="handleClose">
 | 
			
		||||
	<a-modal v-model:open="visible" title="客户选择" width="80%" @ok="handleOk" @cancel="handleClose">
 | 
			
		||||
		<a-form ref="searchFormRef" name="advanced_search" :model="searchFormState" class="ant-advanced-search-form">
 | 
			
		||||
			<a-row :gutter="24">
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@
 | 
			
		|||
					treeTitle="物料分类"
 | 
			
		||||
					:tableRef="tableRef"
 | 
			
		||||
					:apiModel="{
 | 
			
		||||
						getTree: customerCategoryApi.customerCategoryTree,
 | 
			
		||||
						getTree: customerCategoryApi.customerCategoryTree
 | 
			
		||||
					}"
 | 
			
		||||
					@selectTree="selectTree"
 | 
			
		||||
					@treeRefresh="treeRefresh"
 | 
			
		||||
| 
						 | 
				
			
			@ -82,94 +82,94 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
import { useTableManagement } from '@/hook/useTableManagement'
 | 
			
		||||
import { message } from 'ant-design-vue'
 | 
			
		||||
import customerApi from "@/api/base/customer/customerApi";
 | 
			
		||||
import customerCategoryApi from "@/api/base/customer/customerCategoryApi";
 | 
			
		||||
import {clientColumn} from "@/views/productionBusiness/basicData/client/columns/clientColumn";
 | 
			
		||||
	import { useTableManagement } from '@/hook/useTableManagement'
 | 
			
		||||
	import { message } from 'ant-design-vue'
 | 
			
		||||
	import customerApi from '@/api/base/customer/customerApi'
 | 
			
		||||
	import customerCategoryApi from '@/api/base/customer/customerCategoryApi'
 | 
			
		||||
	import { clientColumn } from '@/views/productionBusiness/basicData/client/columns/clientColumn'
 | 
			
		||||
 | 
			
		||||
const emits = defineEmits(['ok'])
 | 
			
		||||
	const emits = defineEmits(['ok'])
 | 
			
		||||
 | 
			
		||||
// 弹窗是否打开
 | 
			
		||||
const visible = ref(false)
 | 
			
		||||
// 物料分类
 | 
			
		||||
const dynamicTreeRef = ref(null)
 | 
			
		||||
// 列表查询
 | 
			
		||||
const { searchFormState, tableRef, selectedRowKeys, columns, loadData, reset, options, searchFormRef } =
 | 
			
		||||
	useTableManagement(
 | 
			
		||||
		{
 | 
			
		||||
			page: customerApi.customerPage,
 | 
			
		||||
		},
 | 
			
		||||
		clientColumn,
 | 
			
		||||
		[],
 | 
			
		||||
		false
 | 
			
		||||
	)
 | 
			
		||||
	// 弹窗是否打开
 | 
			
		||||
	const visible = ref(false)
 | 
			
		||||
	// 物料分类
 | 
			
		||||
	const dynamicTreeRef = ref(null)
 | 
			
		||||
	// 列表查询
 | 
			
		||||
	const { searchFormState, tableRef, selectedRowKeys, columns, loadData, reset, options, searchFormRef } =
 | 
			
		||||
		useTableManagement(
 | 
			
		||||
			{
 | 
			
		||||
				page: customerApi.customerPage
 | 
			
		||||
			},
 | 
			
		||||
			clientColumn,
 | 
			
		||||
			[],
 | 
			
		||||
			false
 | 
			
		||||
		)
 | 
			
		||||
 | 
			
		||||
// 选择树
 | 
			
		||||
const selectTree = (value) => {
 | 
			
		||||
	searchFormState.value.categoryId = value.id
 | 
			
		||||
	tableRef.value.refresh()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 刷新树
 | 
			
		||||
const treeRefresh = () => {
 | 
			
		||||
	searchFormState.value.categoryId = null
 | 
			
		||||
	tableRef.value.refresh()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 物料单选
 | 
			
		||||
let clientSelectedRowKey = []
 | 
			
		||||
let clientSelectedRows = []
 | 
			
		||||
const tableRowSelection = {
 | 
			
		||||
	type: 'radio',
 | 
			
		||||
	onChange: (selectedRowKey, selectedRows) => {
 | 
			
		||||
		clientSelectedRowKey = selectedRowKey
 | 
			
		||||
		clientSelectedRows = selectedRows
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 确认
 | 
			
		||||
const handleOk = () => {
 | 
			
		||||
	if (clientSelectedRowKey.length === 0) return message.error('请选择物料')
 | 
			
		||||
 | 
			
		||||
	emits('ok', {
 | 
			
		||||
		clientSelectedRowKey,
 | 
			
		||||
		clientSelectedRows
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	closeModal()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 关闭弹窗
 | 
			
		||||
const handleClose = () => {
 | 
			
		||||
	closeModal()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 关闭方法
 | 
			
		||||
const closeModal = () => {
 | 
			
		||||
	// 关闭弹窗
 | 
			
		||||
	visible.value = false
 | 
			
		||||
	// 清空table 选项
 | 
			
		||||
	tableRef.value.clearSelected()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 打开方法
 | 
			
		||||
const showOpen = () => {
 | 
			
		||||
	visible.value = true
 | 
			
		||||
 | 
			
		||||
	nextTick(() => {
 | 
			
		||||
		// 加载物料分类
 | 
			
		||||
		dynamicTreeRef.value.loadTreeData()
 | 
			
		||||
 | 
			
		||||
		// 加载表格
 | 
			
		||||
	// 选择树
 | 
			
		||||
	const selectTree = (value) => {
 | 
			
		||||
		searchFormState.value.categoryId = value.id
 | 
			
		||||
		tableRef.value.refresh()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
// 导出方法
 | 
			
		||||
defineExpose({
 | 
			
		||||
	showOpen
 | 
			
		||||
})
 | 
			
		||||
	// 刷新树
 | 
			
		||||
	const treeRefresh = () => {
 | 
			
		||||
		searchFormState.value.categoryId = null
 | 
			
		||||
		tableRef.value.refresh()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 物料单选
 | 
			
		||||
	let clientSelectedRowKey = []
 | 
			
		||||
	let clientSelectedRows = []
 | 
			
		||||
	const tableRowSelection = {
 | 
			
		||||
		type: 'radio',
 | 
			
		||||
		onChange: (selectedRowKey, selectedRows) => {
 | 
			
		||||
			clientSelectedRowKey = selectedRowKey
 | 
			
		||||
			clientSelectedRows = selectedRows
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 确认
 | 
			
		||||
	const handleOk = () => {
 | 
			
		||||
		if (clientSelectedRowKey.length === 0) return message.error('请选择物料')
 | 
			
		||||
 | 
			
		||||
		emits('ok', {
 | 
			
		||||
			clientSelectedRowKey,
 | 
			
		||||
			clientSelectedRows
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		closeModal()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 关闭弹窗
 | 
			
		||||
	const handleClose = () => {
 | 
			
		||||
		closeModal()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 关闭方法
 | 
			
		||||
	const closeModal = () => {
 | 
			
		||||
		// 关闭弹窗
 | 
			
		||||
		visible.value = false
 | 
			
		||||
		// 清空table 选项
 | 
			
		||||
		tableRef.value.clearSelected()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 打开方法
 | 
			
		||||
	const showOpen = () => {
 | 
			
		||||
		visible.value = true
 | 
			
		||||
 | 
			
		||||
		nextTick(() => {
 | 
			
		||||
			// 加载物料分类
 | 
			
		||||
			dynamicTreeRef.value.loadTreeData()
 | 
			
		||||
 | 
			
		||||
			// 加载表格
 | 
			
		||||
			tableRef.value.refresh()
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 导出方法
 | 
			
		||||
	defineExpose({
 | 
			
		||||
		showOpen
 | 
			
		||||
	})
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped></style>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,173 @@
 | 
			
		|||
<template>
 | 
			
		||||
	<div></div>
 | 
			
		||||
	<a-modal v-model:open="visible" title="客户选择" width="80%" @ok="handleOk" @cancel="handleClose">
 | 
			
		||||
		<a-form ref="searchFormRef" name="advanced_search" :model="searchFormState" class="ant-advanced-search-form">
 | 
			
		||||
			<a-row :gutter="24">
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-form-item label="名称" name="name">
 | 
			
		||||
						<a-input v-model:value="searchFormState.name" placeholder="请输入名称" />
 | 
			
		||||
					</a-form-item>
 | 
			
		||||
				</a-col>
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-form-item label="编码" name="number">
 | 
			
		||||
						<a-input v-model:value="searchFormState.number" placeholder="请输入编码" />
 | 
			
		||||
					</a-form-item>
 | 
			
		||||
				</a-col>
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-form-item label="可用状态" name="enabledState">
 | 
			
		||||
						<a-select
 | 
			
		||||
							v-model:value="searchFormState.enabledState"
 | 
			
		||||
							placeholder="请选择可用状态"
 | 
			
		||||
							:options="$TOOL.dictList('COMMON_STATUS')"
 | 
			
		||||
						/>
 | 
			
		||||
					</a-form-item>
 | 
			
		||||
				</a-col>
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-button type="primary" @click="tableRef.refresh()">查询</a-button>
 | 
			
		||||
					<a-button style="margin: 0 8px" @click="reset">重置</a-button>
 | 
			
		||||
				</a-col>
 | 
			
		||||
			</a-row>
 | 
			
		||||
		</a-form>
 | 
			
		||||
 | 
			
		||||
		<a-row :gutter="24">
 | 
			
		||||
			<a-col :span="6">
 | 
			
		||||
				<dynamic-tree
 | 
			
		||||
					ref="dynamicTreeRef"
 | 
			
		||||
					treeTitle="仓库分类"
 | 
			
		||||
					:tableRef="tableRef"
 | 
			
		||||
					:apiModel="{
 | 
			
		||||
						getTree: sysStoreApi.sysStoreTree
 | 
			
		||||
					}"
 | 
			
		||||
					@selectTree="selectTree"
 | 
			
		||||
					@treeRefresh="treeRefresh"
 | 
			
		||||
					:toolConfig="{
 | 
			
		||||
						plus: false,
 | 
			
		||||
						edit: false,
 | 
			
		||||
						delete: false,
 | 
			
		||||
						refresh: true
 | 
			
		||||
					}"
 | 
			
		||||
				></dynamic-tree>
 | 
			
		||||
			</a-col>
 | 
			
		||||
			<a-col :span="18">
 | 
			
		||||
				<s-table
 | 
			
		||||
					ref="tableRef"
 | 
			
		||||
					:columns="columns"
 | 
			
		||||
					:data="loadData"
 | 
			
		||||
					:alert="options.alert.show"
 | 
			
		||||
					bordered
 | 
			
		||||
					:row-key="(record) => record.id"
 | 
			
		||||
					:tool-config="options.toolConfig"
 | 
			
		||||
					:row-selection="tableRowSelection"
 | 
			
		||||
					:scroll="{
 | 
			
		||||
						x: 100,
 | 
			
		||||
						y: 500
 | 
			
		||||
					}"
 | 
			
		||||
				>
 | 
			
		||||
					<template #bodyCell="{ column, record }">
 | 
			
		||||
						<template v-if="column.dataIndex === 'number'">
 | 
			
		||||
							<a href="#">{{ record.number }}</a>
 | 
			
		||||
						</template>
 | 
			
		||||
						<template v-if="column.dataIndex === 'enabledState'">
 | 
			
		||||
							<a-tag color="#87d068" v-if="record.enabledState === 'ENABLE'">启用</a-tag>
 | 
			
		||||
							<a-tag color="#f50" v-if="record.enabledState === 'DISABLED'">停用</a-tag>
 | 
			
		||||
						</template>
 | 
			
		||||
						<template v-if="column.dataIndex === 'type'">
 | 
			
		||||
							{{ $TOOL.dictTypeData('OFFICIAL_ACCOUNT_TYPE', record.type) }}
 | 
			
		||||
						</template>
 | 
			
		||||
					</template>
 | 
			
		||||
				</s-table>
 | 
			
		||||
			</a-col>
 | 
			
		||||
		</a-row>
 | 
			
		||||
	</a-modal>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup>
 | 
			
		||||
	import { useTableManagement } from '@/hook/useTableManagement'
 | 
			
		||||
	import { message } from 'ant-design-vue'
 | 
			
		||||
	import { clientColumn } from '@/views/productionBusiness/basicData/client/columns/clientColumn'
 | 
			
		||||
	import sysStoreApi from '@/api/base/store/sysStoreApi'
 | 
			
		||||
 | 
			
		||||
	const emits = defineEmits(['ok'])
 | 
			
		||||
 | 
			
		||||
	// 弹窗是否打开
 | 
			
		||||
	const visible = ref(false)
 | 
			
		||||
	// 仓库分类
 | 
			
		||||
	const dynamicTreeRef = ref(null)
 | 
			
		||||
	// 列表查询
 | 
			
		||||
	const { searchFormState, tableRef, columns, loadData, reset, options, searchFormRef } = useTableManagement(
 | 
			
		||||
		{
 | 
			
		||||
			page: sysStoreApi.page
 | 
			
		||||
		},
 | 
			
		||||
		clientColumn,
 | 
			
		||||
		[],
 | 
			
		||||
		false
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// 选择树
 | 
			
		||||
	const selectTree = (value) => {
 | 
			
		||||
		searchFormState.value.categoryId = value.id
 | 
			
		||||
		tableRef.value.refresh()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 刷新树
 | 
			
		||||
	const treeRefresh = () => {
 | 
			
		||||
		searchFormState.value.categoryId = null
 | 
			
		||||
		tableRef.value.refresh()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 仓库单选
 | 
			
		||||
	let clientSelectedRowKey = []
 | 
			
		||||
	let clientSelectedRows = []
 | 
			
		||||
	const tableRowSelection = {
 | 
			
		||||
		type: 'radio',
 | 
			
		||||
		onChange: (selectedRowKey, selectedRows) => {
 | 
			
		||||
			clientSelectedRowKey = selectedRowKey
 | 
			
		||||
			clientSelectedRows = selectedRows
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 确认
 | 
			
		||||
	const handleOk = () => {
 | 
			
		||||
		if (clientSelectedRowKey.length === 0) return message.error('请选择仓库')
 | 
			
		||||
 | 
			
		||||
		emits('ok', {
 | 
			
		||||
			clientSelectedRowKey,
 | 
			
		||||
			clientSelectedRows
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		closeModal()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 关闭弹窗
 | 
			
		||||
	const handleClose = () => {
 | 
			
		||||
		closeModal()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 关闭方法
 | 
			
		||||
	const closeModal = () => {
 | 
			
		||||
		// 关闭弹窗
 | 
			
		||||
		visible.value = false
 | 
			
		||||
		// 清空table 选项
 | 
			
		||||
		tableRef.value.clearSelected()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 打开方法
 | 
			
		||||
	const showOpen = () => {
 | 
			
		||||
		visible.value = true
 | 
			
		||||
 | 
			
		||||
		nextTick(() => {
 | 
			
		||||
			// 加载仓库分类
 | 
			
		||||
			dynamicTreeRef.value.loadTreeData()
 | 
			
		||||
 | 
			
		||||
			// 加载表格
 | 
			
		||||
			tableRef.value.refresh()
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 导出方法
 | 
			
		||||
	defineExpose({
 | 
			
		||||
		showOpen
 | 
			
		||||
	})
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped></style>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
export const apkColumns = [
 | 
			
		||||
	{
 | 
			
		||||
		title: '版本号',
 | 
			
		||||
		dataIndex: 'versionNumber'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		title: '版本更新介绍',
 | 
			
		||||
		dataIndex: 'versionIntroduction'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		title: 'apk链接',
 | 
			
		||||
		dataIndex: 'apkLink'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		title: '状态',
 | 
			
		||||
		dataIndex: 'state'
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -6,18 +6,25 @@
 | 
			
		|||
		:destroy-on-close="true"
 | 
			
		||||
		@close="onClose"
 | 
			
		||||
	>
 | 
			
		||||
		<a-alert message="注意:新增后默认为第一条是最新安装包!" type="warning" show-icon />
 | 
			
		||||
		<a-form ref="formRef" :model="formData" :rules="formRules" layout="vertical">
 | 
			
		||||
			<a-form-item label="版本号:" name="versionNumber">
 | 
			
		||||
				<a-input v-model:value="formData.versionNumber" placeholder="请输入版本号" allow-clear />
 | 
			
		||||
				<a-input :min="100" v-model:value="formData.versionNumber" placeholder="版本号范围 100 ~ 100000" allow-clear />
 | 
			
		||||
			</a-form-item>
 | 
			
		||||
			<a-form-item label="版本更新介绍:" name="versionIntroduction">
 | 
			
		||||
				<a-input v-model:value="formData.versionIntroduction" placeholder="请输入版本更新介绍" allow-clear />
 | 
			
		||||
				<XnEditor v-model:value="formData.versionIntroduction"></XnEditor>
 | 
			
		||||
			</a-form-item>
 | 
			
		||||
			<a-form-item label="apk链接:" name="apkLink">
 | 
			
		||||
				<a-input v-model:value="formData.apkLink" placeholder="请输入apk链接" allow-clear />
 | 
			
		||||
			</a-form-item>
 | 
			
		||||
			<a-form-item label="状态:" name="state">
 | 
			
		||||
				<a-input v-model:value="formData.state" placeholder="请输入状态" allow-clear />
 | 
			
		||||
				<a-upload
 | 
			
		||||
					@change="handleUploadChange"
 | 
			
		||||
					action="http://49.234.181.176:27315/bsx/dev/file/uploadLocalReturnUrl"
 | 
			
		||||
					:multiple="true"
 | 
			
		||||
				>
 | 
			
		||||
					<a-button>
 | 
			
		||||
						<upload-outlined></upload-outlined>
 | 
			
		||||
						上传APK包
 | 
			
		||||
					</a-button>
 | 
			
		||||
				</a-upload>
 | 
			
		||||
			</a-form-item>
 | 
			
		||||
		</a-form>
 | 
			
		||||
		<template #footer>
 | 
			
		||||
| 
						 | 
				
			
			@ -28,52 +35,57 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup name="pdaChangelogForm">
 | 
			
		||||
import { cloneDeep } from 'lodash-es'
 | 
			
		||||
import { required } from '@/utils/formRules'
 | 
			
		||||
import pdaChangelogApi from '@/api/biz/pdaChangelogApi'
 | 
			
		||||
// 抽屉状态
 | 
			
		||||
const visible = ref(false)
 | 
			
		||||
const emit = defineEmits({ successful: null })
 | 
			
		||||
const formRef = ref()
 | 
			
		||||
// 表单数据
 | 
			
		||||
const formData = ref({})
 | 
			
		||||
const submitLoading = ref(false)
 | 
			
		||||
	import { cloneDeep } from 'lodash-es'
 | 
			
		||||
	import { required } from '@/utils/formRules'
 | 
			
		||||
	import pdaChangelogApi from '@/api/biz/pdaChangelogApi'
 | 
			
		||||
	// 抽屉状态
 | 
			
		||||
	const visible = ref(false)
 | 
			
		||||
	const emit = defineEmits({ successful: null })
 | 
			
		||||
	const formRef = ref()
 | 
			
		||||
	// 表单数据
 | 
			
		||||
	const formData = ref({})
 | 
			
		||||
	const submitLoading = ref(false)
 | 
			
		||||
 | 
			
		||||
// 打开抽屉
 | 
			
		||||
const onOpen = (record) => {
 | 
			
		||||
	visible.value = true
 | 
			
		||||
	if (record) {
 | 
			
		||||
		let recordData = cloneDeep(record)
 | 
			
		||||
		formData.value = Object.assign({}, recordData)
 | 
			
		||||
	// 打开抽屉
 | 
			
		||||
	const onOpen = (record) => {
 | 
			
		||||
		visible.value = true
 | 
			
		||||
		if (record) {
 | 
			
		||||
			let recordData = cloneDeep(record)
 | 
			
		||||
			formData.value = Object.assign({}, recordData)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
// 关闭抽屉
 | 
			
		||||
const onClose = () => {
 | 
			
		||||
	formRef.value.resetFields()
 | 
			
		||||
	formData.value = {}
 | 
			
		||||
	visible.value = false
 | 
			
		||||
}
 | 
			
		||||
// 默认要校验的
 | 
			
		||||
const formRules = {
 | 
			
		||||
}
 | 
			
		||||
// 验证并提交数据
 | 
			
		||||
const onSubmit = () => {
 | 
			
		||||
	formRef.value.validate().then(() => {
 | 
			
		||||
		submitLoading.value = true
 | 
			
		||||
		const formDataParam = cloneDeep(formData.value)
 | 
			
		||||
		pdaChangelogApi
 | 
			
		||||
			.pdaChangelogSubmitForm(formDataParam, formDataParam.id)
 | 
			
		||||
			.then(() => {
 | 
			
		||||
				onClose()
 | 
			
		||||
				emit('successful')
 | 
			
		||||
			})
 | 
			
		||||
			.finally(() => {
 | 
			
		||||
				submitLoading.value = false
 | 
			
		||||
			})
 | 
			
		||||
	// 关闭抽屉
 | 
			
		||||
	const onClose = () => {
 | 
			
		||||
		formRef.value.resetFields()
 | 
			
		||||
		formData.value = {}
 | 
			
		||||
		visible.value = false
 | 
			
		||||
	}
 | 
			
		||||
	const handleUploadChange = (data) => {
 | 
			
		||||
		if (data.file.status === 'done') {
 | 
			
		||||
			console.log(data.file.response.data, 'data.file.response.data')
 | 
			
		||||
			formData.value.apkLink = data.file.response.data
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// 默认要校验的
 | 
			
		||||
	const formRules = {}
 | 
			
		||||
	// 验证并提交数据
 | 
			
		||||
	const onSubmit = () => {
 | 
			
		||||
		formRef.value.validate().then(() => {
 | 
			
		||||
			submitLoading.value = true
 | 
			
		||||
			const formDataParam = cloneDeep(formData.value)
 | 
			
		||||
			pdaChangelogApi
 | 
			
		||||
				.pdaChangelogSubmitForm(formDataParam, formDataParam.id)
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					onClose()
 | 
			
		||||
					emit('successful')
 | 
			
		||||
				})
 | 
			
		||||
				.finally(() => {
 | 
			
		||||
					submitLoading.value = false
 | 
			
		||||
				})
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	// 抛出函数
 | 
			
		||||
	defineExpose({
 | 
			
		||||
		onOpen
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
// 抛出函数
 | 
			
		||||
defineExpose({
 | 
			
		||||
	onOpen
 | 
			
		||||
})
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
import tool from '@/utils/tool'
 | 
			
		||||
 | 
			
		||||
export const searchFields = [
 | 
			
		||||
	{ name: 'name', label: '名称', component: 'a-input', props: { placeholder: '请输入名称' } },
 | 
			
		||||
	{
 | 
			
		||||
		name: 'enabledState',
 | 
			
		||||
		label: '可用状态',
 | 
			
		||||
		component: 'a-select',
 | 
			
		||||
		props: { placeholder: '请选择状态', options: tool.dictList('COMMON_STATUS') }
 | 
			
		||||
	},
 | 
			
		||||
	{ name: 'number', label: '编码', component: 'a-input', props: { placeholder: '请输入编码' } }
 | 
			
		||||
]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +1,12 @@
 | 
			
		|||
<template>
 | 
			
		||||
	<a-card :bordered="false">
 | 
			
		||||
		<a-form ref="searchFormRef" name="advanced_search" :model="searchFormState" class="ant-advanced-search-form">
 | 
			
		||||
			<a-row :gutter="24">
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-form-item label="版本号" name="versionNumber">
 | 
			
		||||
						<a-input v-model:value="searchFormState.versionNumber" placeholder="请输入版本号" />
 | 
			
		||||
					</a-form-item>
 | 
			
		||||
				</a-col>
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-form-item label="状态" name="state">
 | 
			
		||||
						<a-input v-model:value="searchFormState.state" placeholder="请输入状态" />
 | 
			
		||||
					</a-form-item>
 | 
			
		||||
				</a-col>
 | 
			
		||||
				<a-col :span="6">
 | 
			
		||||
					<a-button type="primary" @click="tableRef.refresh()">查询</a-button>
 | 
			
		||||
					<a-button style="margin: 0 8px" @click="reset">重置</a-button>
 | 
			
		||||
				</a-col>
 | 
			
		||||
			</a-row>
 | 
			
		||||
		</a-form>
 | 
			
		||||
	<AdvancedSearchForm
 | 
			
		||||
		:formState="searchFormState"
 | 
			
		||||
		:formFields="searchFields"
 | 
			
		||||
		@search="tableRef.refresh()"
 | 
			
		||||
		@reset="tableRef.refresh()"
 | 
			
		||||
	/>
 | 
			
		||||
 | 
			
		||||
	<a-card :bordered="false" class="mt-4">
 | 
			
		||||
		<s-table
 | 
			
		||||
			ref="tableRef"
 | 
			
		||||
			:columns="columns"
 | 
			
		||||
| 
						 | 
				
			
			@ -44,11 +33,43 @@
 | 
			
		|||
			<template #bodyCell="{ column, record }">
 | 
			
		||||
				<template v-if="column.dataIndex === 'action'">
 | 
			
		||||
					<a-space>
 | 
			
		||||
						<a @click="formRef.onOpen(record)" v-if="hasPerm('pdaChangelogEdit')">编辑</a>
 | 
			
		||||
						<a-divider type="vertical" v-if="hasPerm(['pdaChangelogEdit', 'pdaChangelogDelete'], 'and')" />
 | 
			
		||||
						<a-popconfirm title="确定要删除吗?" @confirm="deletePdaChangelog(record)">
 | 
			
		||||
							<a-button type="link" danger size="small" v-if="hasPerm('pdaChangelogDelete')">删除</a-button>
 | 
			
		||||
						</a-popconfirm>
 | 
			
		||||
						<a
 | 
			
		||||
							@click="
 | 
			
		||||
								navigateTo('/basicData/brand/detail', {
 | 
			
		||||
									type: 'SEARCH',
 | 
			
		||||
									id: record.id
 | 
			
		||||
								})
 | 
			
		||||
							"
 | 
			
		||||
							v-if="hasPerm('customerEdit')"
 | 
			
		||||
						>
 | 
			
		||||
							<EyeOutlined />
 | 
			
		||||
							查看
 | 
			
		||||
						</a>
 | 
			
		||||
 | 
			
		||||
						<a-divider type="vertical" v-if="hasPerm(['customerEdit', 'customerDelete'], 'and')" />
 | 
			
		||||
 | 
			
		||||
						<a-dropdown>
 | 
			
		||||
							<a class="ant-dropdown-link" @click.prevent>
 | 
			
		||||
								更多
 | 
			
		||||
								<DownOutlined />
 | 
			
		||||
							</a>
 | 
			
		||||
							<template #overlay>
 | 
			
		||||
								<a-menu>
 | 
			
		||||
									<a-menu-item>
 | 
			
		||||
										<a-button
 | 
			
		||||
											type="link"
 | 
			
		||||
											danger
 | 
			
		||||
											size="small"
 | 
			
		||||
											v-if="hasPerm('materialDelete')"
 | 
			
		||||
											@click="deleteRecord(record)"
 | 
			
		||||
										>
 | 
			
		||||
											<DeleteOutlined />
 | 
			
		||||
											删除
 | 
			
		||||
										</a-button>
 | 
			
		||||
									</a-menu-item>
 | 
			
		||||
								</a-menu>
 | 
			
		||||
							</template>
 | 
			
		||||
						</a-dropdown>
 | 
			
		||||
					</a-space>
 | 
			
		||||
				</template>
 | 
			
		||||
			</template>
 | 
			
		||||
| 
						 | 
				
			
			@ -58,83 +79,30 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup name="changelog">
 | 
			
		||||
	import { cloneDeep } from 'lodash-es'
 | 
			
		||||
	import Form from './detail/form.vue'
 | 
			
		||||
	import { searchFields } from '@/views/biz/app/apk/formFields/searchFields'
 | 
			
		||||
	import pdaChangelogApi from '@/api/biz/pdaChangelogApi'
 | 
			
		||||
	const searchFormState = ref({})
 | 
			
		||||
	const searchFormRef = ref()
 | 
			
		||||
	const tableRef = ref()
 | 
			
		||||
	const formRef = ref()
 | 
			
		||||
	const toolConfig = { refresh: true, height: true, columnSetting: true, striped: false }
 | 
			
		||||
	const columns = [
 | 
			
		||||
	import Form from './detail/form.vue'
 | 
			
		||||
	import { apkColumns } from '@/views/biz/app/apk/columns/apkColumns'
 | 
			
		||||
	import { useTableManagement } from '@/hook/useTableManagement'
 | 
			
		||||
 | 
			
		||||
	const formRef = ref(null)
 | 
			
		||||
	const {
 | 
			
		||||
		searchFormState,
 | 
			
		||||
		tableRef,
 | 
			
		||||
		selectedRowKeys,
 | 
			
		||||
		columns,
 | 
			
		||||
		loadData,
 | 
			
		||||
		deleteRecord,
 | 
			
		||||
		deleteBatchRecords,
 | 
			
		||||
		options,
 | 
			
		||||
		navigateTo,
 | 
			
		||||
		toolConfig
 | 
			
		||||
	} = useTableManagement(
 | 
			
		||||
		{
 | 
			
		||||
			title: '版本号',
 | 
			
		||||
			dataIndex: 'versionNumber'
 | 
			
		||||
			page: pdaChangelogApi.pdaChangelogPage,
 | 
			
		||||
			delete: pdaChangelogApi.pdaChangelogDelete
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			title: '版本更新介绍',
 | 
			
		||||
			dataIndex: 'versionIntroduction'
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			title: 'apk链接',
 | 
			
		||||
			dataIndex: 'apkLink'
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			title: '状态',
 | 
			
		||||
			dataIndex: 'state'
 | 
			
		||||
		}
 | 
			
		||||
	]
 | 
			
		||||
	// 操作栏通过权限判断是否显示
 | 
			
		||||
	if (hasPerm(['pdaChangelogEdit', 'pdaChangelogDelete'])) {
 | 
			
		||||
		columns.push({
 | 
			
		||||
			title: '操作',
 | 
			
		||||
			dataIndex: 'action',
 | 
			
		||||
			align: 'center',
 | 
			
		||||
			width: 150
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	const selectedRowKeys = ref([])
 | 
			
		||||
	// 列表选择配置
 | 
			
		||||
	const options = {
 | 
			
		||||
		// columns数字类型字段加入 needTotal: true 可以勾选自动算账
 | 
			
		||||
		alert: {
 | 
			
		||||
			show: true,
 | 
			
		||||
			clear: () => {
 | 
			
		||||
				selectedRowKeys.value = ref([])
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		rowSelection: {
 | 
			
		||||
			onChange: (selectedRowKey, selectedRows) => {
 | 
			
		||||
				selectedRowKeys.value = selectedRowKey
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	const loadData = (parameter) => {
 | 
			
		||||
		const searchFormParam = cloneDeep(searchFormState.value)
 | 
			
		||||
		return pdaChangelogApi.pdaChangelogPage(Object.assign(parameter, searchFormParam)).then((data) => {
 | 
			
		||||
			return data
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	// 重置
 | 
			
		||||
	const reset = () => {
 | 
			
		||||
		searchFormRef.value.resetFields()
 | 
			
		||||
		tableRef.value.refresh(true)
 | 
			
		||||
	}
 | 
			
		||||
	// 删除
 | 
			
		||||
	const deletePdaChangelog = (record) => {
 | 
			
		||||
		let params = [
 | 
			
		||||
			{
 | 
			
		||||
				id: record.id
 | 
			
		||||
			}
 | 
			
		||||
		]
 | 
			
		||||
		pdaChangelogApi.pdaChangelogDelete(params).then(() => {
 | 
			
		||||
			tableRef.value.refresh(true)
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	// 批量删除
 | 
			
		||||
	const deleteBatchPdaChangelog = (params) => {
 | 
			
		||||
		pdaChangelogApi.pdaChangelogDelete(params).then(() => {
 | 
			
		||||
			tableRef.value.clearRefreshSelected()
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
		apkColumns,
 | 
			
		||||
		['sysBrandEdit', 'sysBrandDelete']
 | 
			
		||||
	)
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +1,15 @@
 | 
			
		|||
<template>
 | 
			
		||||
	<a-page-header style="padding: 10px; font-size: 20px" @back="handleBack">
 | 
			
		||||
	<a-page-header style="padding: 10px; font-size: 20px">
 | 
			
		||||
		<template #extra>
 | 
			
		||||
			<a-button v-if="route.query.type !== 'SEARCH'" key="1" type="primary" @click="onSubmitForm">保存</a-button>
 | 
			
		||||
			<a-button v-if="route.query.type !== 'SEARCH'" type="primary" @click="onSubmitFormBack">保存后退出</a-button>
 | 
			
		||||
			<a-button v-if="route.query.type !== 'SEARCH'" type="primary" @click="onSubmitFormAdd">保存后新增</a-button>
 | 
			
		||||
			<a-button @click="handleBack('/inventory/invoice')">退出</a-button>
 | 
			
		||||
		</template>
 | 
			
		||||
	</a-page-header>
 | 
			
		||||
 | 
			
		||||
	<a-card :bordered="false" title="基本信息">
 | 
			
		||||
		<DynamicForm
 | 
			
		||||
			v-if="route.query.type !== 'SEARCH'"
 | 
			
		||||
			:allDisabled="route.query.type === 'SEARCH'"
 | 
			
		||||
			:formItems="basicInfoFormItemsRef"
 | 
			
		||||
			:rules="basicInfoFormRules"
 | 
			
		||||
| 
						 | 
				
			
			@ -22,10 +25,32 @@
 | 
			
		|||
					@click="openClient"
 | 
			
		||||
				></a-input>
 | 
			
		||||
			</template>
 | 
			
		||||
 | 
			
		||||
			<template #storeSlot="{ model, item }">
 | 
			
		||||
				<a-input
 | 
			
		||||
					:disabled="route.query.type === 'SEARCH'"
 | 
			
		||||
					readonly
 | 
			
		||||
					v-bind="{ ...item.attrs }"
 | 
			
		||||
					v-model:value="model[item.name]"
 | 
			
		||||
					@click="openStore"
 | 
			
		||||
				></a-input>
 | 
			
		||||
			</template>
 | 
			
		||||
		</DynamicForm>
 | 
			
		||||
 | 
			
		||||
		<a-descriptions bordered v-else>
 | 
			
		||||
			<a-descriptions-item
 | 
			
		||||
				:span="item.span"
 | 
			
		||||
				:label="item.label"
 | 
			
		||||
				v-for="(item, index) in basicInfoViewFormItems"
 | 
			
		||||
				:key="index"
 | 
			
		||||
			>
 | 
			
		||||
				<span v-if="!item.type">{{ detailData[item.name] }}</span>
 | 
			
		||||
				<span v-if="item.type === 'dict'">{{ tool.dictTypeData(item.attrs.options, detailData[item.name]) }}</span>
 | 
			
		||||
			</a-descriptions-item>
 | 
			
		||||
		</a-descriptions>
 | 
			
		||||
	</a-card>
 | 
			
		||||
 | 
			
		||||
	<a-card
 | 
			
		||||
	<!--	<a-card
 | 
			
		||||
		:bordered="false"
 | 
			
		||||
		class="mt-4"
 | 
			
		||||
		style="height: 100%"
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +63,7 @@
 | 
			
		|||
			:model="extendFormData"
 | 
			
		||||
			v-if="extendData.length > 0"
 | 
			
		||||
		/>
 | 
			
		||||
	</a-card>
 | 
			
		||||
	</a-card>-->
 | 
			
		||||
 | 
			
		||||
	<a-card :bordered="false" class="mt-4" style="height: 100%" title="商品明细信息">
 | 
			
		||||
		<a-space>
 | 
			
		||||
| 
						 | 
				
			
			@ -110,6 +135,8 @@
 | 
			
		|||
	<materiel-selector-plus ref="materielSelectorPlusRef" @ok="materielBackOk"></materiel-selector-plus>
 | 
			
		||||
 | 
			
		||||
	<client-selector-plus ref="clientSelectorPlusRef" @ok="clientBackOk"></client-selector-plus>
 | 
			
		||||
 | 
			
		||||
	<store-selector-plus ref="storeSelectorPlusRef" @ok="storeBackOk"></store-selector-plus>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup name="taskDetail">
 | 
			
		||||
| 
						 | 
				
			
			@ -125,11 +152,17 @@
 | 
			
		|||
	import { useRoute } from 'vue-router'
 | 
			
		||||
	import MaterielSelectorPlus from '@/components/Selector/materielSelectorPlus.vue'
 | 
			
		||||
	import ClientSelectorPlus from '@/components/Selector/clientSelectorPlus.vue'
 | 
			
		||||
	import StoreSelectorPlus from '@/components/Selector/storeSelectorPlus.vue'
 | 
			
		||||
	import router from '@/router'
 | 
			
		||||
	import tool from '@/utils/tool'
 | 
			
		||||
	import { basicInfoViewFormItems } from '@/views/productionBusiness/inventory/invoice/formFields/detailFields'
 | 
			
		||||
	import dayjs from "dayjs";
 | 
			
		||||
 | 
			
		||||
	const route = useRoute()
 | 
			
		||||
 | 
			
		||||
	const formRef1 = ref(null)
 | 
			
		||||
	let extendData = ref([])
 | 
			
		||||
	let detailData = ref({})
 | 
			
		||||
 | 
			
		||||
	const basicInfoFormItemsRef = ref(basicInfoFormItems)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -143,19 +176,21 @@
 | 
			
		|||
		formRefs.value = [formRef1.value]
 | 
			
		||||
		fetchData(route.query.type).then((res) => {
 | 
			
		||||
			if (res) {
 | 
			
		||||
				detailData.value = res
 | 
			
		||||
				formData.customerId = res.customerId // 客户id
 | 
			
		||||
				formData.customerName = res.customerName // 客户id
 | 
			
		||||
				formData.customerNumber = res.customerNumber // 客户编码
 | 
			
		||||
				formData.storeId = res.storeId // 仓库id
 | 
			
		||||
				formData.storeName = res.storeName // 仓库名称
 | 
			
		||||
				formData.storeNumber = res.storeNumber // 仓库编码
 | 
			
		||||
				formData.businessDate = dayjs(detailData.value.businessDate).format('YYYY-MM-DD HH:mm:ss')
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		if (route.query.type === 'EDIT') {
 | 
			
		||||
			// 获取明细列表
 | 
			
		||||
			productDetailData.value = await inventoryInvoiceApi.inventoryInvoiceDetailList({
 | 
			
		||||
				invoiceId: formRefs.value.id
 | 
			
		||||
				invoiceId: route.query.id
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -170,11 +205,32 @@
 | 
			
		|||
		extendData.value = await getExtendField('MATERIAL')
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	const onSubmitForm = () => {
 | 
			
		||||
		onSubmit({
 | 
			
		||||
			isDeep: true,
 | 
			
		||||
			...formData,
 | 
			
		||||
			detailList: productDetailData.value
 | 
			
		||||
	const onSubmitFormBack = () => {
 | 
			
		||||
		onSubmit(
 | 
			
		||||
			{
 | 
			
		||||
				isDeep: true,
 | 
			
		||||
				...formData,
 | 
			
		||||
				detailList: productDetailData.value,
 | 
			
		||||
				id: detailData.value?.id,
 | 
			
		||||
			},
 | 
			
		||||
			'/inventory/invoice'
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const onSubmitFormAdd = () => {
 | 
			
		||||
		onSubmit(
 | 
			
		||||
			{
 | 
			
		||||
				isDeep: true,
 | 
			
		||||
				...formData,
 | 
			
		||||
				detailList: productDetailData.value,
 | 
			
		||||
				id: detailData.value?.id,
 | 
			
		||||
			},
 | 
			
		||||
			'/inventory/invoice'
 | 
			
		||||
		).then(() => {
 | 
			
		||||
			// 新增清空所有的表单数据
 | 
			
		||||
			router.replace({ path: route.path, query: { type: route.type } }).then(() => {
 | 
			
		||||
				router.go(0) // 刷新页面
 | 
			
		||||
			})
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -184,7 +240,7 @@
 | 
			
		|||
		record.barcodeType = unitObj.type
 | 
			
		||||
		record.barcodeTypeNumber = unitObj.number
 | 
			
		||||
 | 
			
		||||
		if(record.planAmount) {
 | 
			
		||||
		if (record.planAmount) {
 | 
			
		||||
			record.basicPlanAmount = parseFloat(record.planAmount * parseFloat(unitObj.unitRate)).toFixed(2)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -223,9 +279,6 @@
 | 
			
		|||
		productDetailData.value[materielIndex].packageProportion = event.materielSelectedRows[0].packageProportion
 | 
			
		||||
		productDetailData.value[materielIndex].baseUnitName = event.materielSelectedRows[0].baseUnitName
 | 
			
		||||
		productDetailData.value[materielIndex].baseUnitId = event.materielSelectedRows[0].baseUnitId
 | 
			
		||||
		// productDetailData.value[materielIndex].basicPlanAmount = event.materielSelectedRows[0].basicPlanAmount // 批次号
 | 
			
		||||
 | 
			
		||||
		// productDetailData.value[materielIndex].planAmount = event.materielSelectedRows[0].planAmount
 | 
			
		||||
 | 
			
		||||
		// 获取单位列表
 | 
			
		||||
		productDetailData.value[materielIndex].unitArr = await handleMaterialPackageData(event.materielSelectedRows[0].id)
 | 
			
		||||
| 
						 | 
				
			
			@ -260,6 +313,20 @@
 | 
			
		|||
		formData.customerNumber = event.clientSelectedRows[0].number
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 仓库选择器
 | 
			
		||||
	 * */
 | 
			
		||||
	const storeSelectorPlusRef = ref(null)
 | 
			
		||||
	const openStore = () => {
 | 
			
		||||
		storeSelectorPlusRef.value.showOpen()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const storeBackOk = (event) => {
 | 
			
		||||
		formData.storeName = event.clientSelectedRows[0].name
 | 
			
		||||
		formData.storeId = event.clientSelectedRows[0].id
 | 
			
		||||
		formData.storeNumber = event.clientSelectedRows[0].number
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* =================================== 商品明细 ============================*/
 | 
			
		||||
	const productDetailData = ref([])
 | 
			
		||||
	let selectedListRowKeys = ref([])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ import { required } from '@/utils/formRules'
 | 
			
		|||
const basicInfoFormRules = {
 | 
			
		||||
	type: [required('请选择类型')],
 | 
			
		||||
	businessDate: [required('请选择业务日期')],
 | 
			
		||||
	storeId: [required('请选择仓库')],
 | 
			
		||||
	storeName: [required('请选择仓库')],
 | 
			
		||||
	customerName: [required('请选择客户')]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -50,17 +50,12 @@ const basicInfoFormItems = [
 | 
			
		|||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '仓库:',
 | 
			
		||||
		name: 'storeId',
 | 
			
		||||
		type: 'a-tree-select',
 | 
			
		||||
		name: 'storeName',
 | 
			
		||||
		span: 6,
 | 
			
		||||
		slotName: 'storeSlot',
 | 
			
		||||
		isUseSlot: true,
 | 
			
		||||
		attrs: {
 | 
			
		||||
			placeholder: '请选择仓库',
 | 
			
		||||
			treeData: [],
 | 
			
		||||
			fieldNames: {
 | 
			
		||||
				children: 'children',
 | 
			
		||||
				label: 'name',
 | 
			
		||||
				value: 'id'
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		defaultValue: ''
 | 
			
		||||
	},
 | 
			
		||||
| 
						 | 
				
			
			@ -114,6 +109,7 @@ const basicInfoFormItems = [
 | 
			
		|||
		label: '交货地址:',
 | 
			
		||||
		name: 'deliveryAddress',
 | 
			
		||||
		type: 'a-input',
 | 
			
		||||
		span: 12,
 | 
			
		||||
		attrs: {
 | 
			
		||||
			placeholder: '请输入交货地址',
 | 
			
		||||
			allowClear: true
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +127,74 @@ const basicInfoFormItems = [
 | 
			
		|||
	}
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
const basicInfoViewFormItems = [
 | 
			
		||||
	{
 | 
			
		||||
		label: '单据号:',
 | 
			
		||||
		name: 'billNumber',
 | 
			
		||||
		span: 1
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '业务日期:',
 | 
			
		||||
		name: 'businessDate',
 | 
			
		||||
		span: 1
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '类型:',
 | 
			
		||||
		name: 'type',
 | 
			
		||||
		type: 'dict',
 | 
			
		||||
		span: 1,
 | 
			
		||||
		attrs: {
 | 
			
		||||
			options: 'OUTBOUND_TYPE'
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '客户:',
 | 
			
		||||
		name: 'customerName',
 | 
			
		||||
		span: 1,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '仓库:',
 | 
			
		||||
		name: 'storeName',
 | 
			
		||||
		span: 1,
 | 
			
		||||
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '车牌号:',
 | 
			
		||||
		name: 'carNumber',
 | 
			
		||||
		span: 1,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '停车位:',
 | 
			
		||||
		name: 'parkingSpace',
 | 
			
		||||
		span: 1,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '业务员:',
 | 
			
		||||
		name: 'salesman',
 | 
			
		||||
		span: 1
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '收货方:',
 | 
			
		||||
		name: 'receiveParty',
 | 
			
		||||
		span: 1
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '交货日期:',
 | 
			
		||||
		name: 'deliveryDate',
 | 
			
		||||
		span: 1
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '交货地址:',
 | 
			
		||||
		name: 'deliveryAddress',
 | 
			
		||||
		span: 24
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		label: '备注:',
 | 
			
		||||
		name: 'remarks',
 | 
			
		||||
		span: 24
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
const productDetailFormItems = [
 | 
			
		||||
	{
 | 
			
		||||
		title: '序号',
 | 
			
		||||
| 
						 | 
				
			
			@ -184,4 +248,4 @@ const productDetailFormItems = [
 | 
			
		|||
	}
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
export { basicInfoFormRules, basicInfoFormItems, productDetailFormItems }
 | 
			
		||||
export { basicInfoFormRules, basicInfoFormItems, productDetailFormItems, basicInfoViewFormItems}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue