🐛 修复常用货物组织筛选,并调整列表字段与常用地址行政区划禁用
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+143
-139
@@ -35,26 +35,7 @@ export const formatCargoValue = value => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const option = createCrudOption([
|
export const option = createCrudOption([
|
||||||
{
|
// ---------- 列表字段(顺序即表格展示顺序) ----------
|
||||||
label: '一级货物类型',
|
|
||||||
prop: 'firstCargoTypeName',
|
|
||||||
formslot: true,
|
|
||||||
order: 60,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 150,
|
|
||||||
editDisabled: true,
|
|
||||||
rules: [{ required: true, message: '请选择一级货物类型', trigger: 'change' }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '二级货物类型',
|
|
||||||
prop: 'secondCargoTypeName',
|
|
||||||
formslot: true,
|
|
||||||
order: 59,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 150,
|
|
||||||
editDisabled: true,
|
|
||||||
rules: [{ required: true, message: '请选择二级货物类型', trigger: 'change' }],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: '货物名称',
|
label: '货物名称',
|
||||||
prop: 'cargoName',
|
prop: 'cargoName',
|
||||||
@@ -79,12 +60,24 @@ export const option = createCrudOption([
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '一级货物类型编码',
|
label: '一级货物类型',
|
||||||
prop: 'firstCargoTypeCode',
|
prop: 'firstCargoTypeName',
|
||||||
hide: true,
|
formslot: true,
|
||||||
display: false,
|
order: 60,
|
||||||
addDisplay: false,
|
span: 12,
|
||||||
|
minWidth: 150,
|
||||||
editDisabled: true,
|
editDisabled: true,
|
||||||
|
rules: [{ required: true, message: '请选择一级货物类型', trigger: 'change' }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '二级货物类型',
|
||||||
|
prop: 'secondCargoTypeName',
|
||||||
|
formslot: true,
|
||||||
|
order: 59,
|
||||||
|
span: 12,
|
||||||
|
minWidth: 150,
|
||||||
|
editDisabled: true,
|
||||||
|
rules: [{ required: true, message: '请选择二级货物类型', trigger: 'change' }],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '二级货物类型编码',
|
label: '二级货物类型编码',
|
||||||
@@ -92,9 +85,132 @@ export const option = createCrudOption([
|
|||||||
display: false,
|
display: false,
|
||||||
addDisplay: false,
|
addDisplay: false,
|
||||||
editDisabled: true,
|
editDisabled: true,
|
||||||
minWidth: 180,
|
minWidth: 160,
|
||||||
},
|
},
|
||||||
// 搜索字段与表格、表单字段独立,避免筛选配置影响数据展示和编辑布局。
|
{
|
||||||
|
label: '包装',
|
||||||
|
prop: 'packageType',
|
||||||
|
type: 'select',
|
||||||
|
dicData: packageOptions,
|
||||||
|
order: 39,
|
||||||
|
span: 12,
|
||||||
|
minWidth: 100,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '品牌',
|
||||||
|
prop: 'brand',
|
||||||
|
search: false,
|
||||||
|
order: 40,
|
||||||
|
span: 12,
|
||||||
|
minWidth: 120,
|
||||||
|
placeholder: '请输入',
|
||||||
|
rules: textRule('品牌', 50),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '规格',
|
||||||
|
prop: 'specification',
|
||||||
|
order: 29,
|
||||||
|
span: 12,
|
||||||
|
minWidth: 120,
|
||||||
|
placeholder: '请输入',
|
||||||
|
rules: textRule('规格', 50),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '型号',
|
||||||
|
prop: 'model',
|
||||||
|
order: 19,
|
||||||
|
span: 12,
|
||||||
|
minWidth: 120,
|
||||||
|
placeholder: '请输入',
|
||||||
|
rules: textRule('型号', 50, true),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '单价',
|
||||||
|
prop: 'cargoValue',
|
||||||
|
formslot: true,
|
||||||
|
order: 30,
|
||||||
|
formatter: row => formatCargoValue(row.cargoValue),
|
||||||
|
minWidth: 120,
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
validator: (rule, value, callback) => {
|
||||||
|
if (value === undefined || value === null || value === '') {
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!/^\d+(\.\d{1,2})?$/.test(String(value))) {
|
||||||
|
callback(new Error('单价只能输入数字,最多保留2位小数'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback();
|
||||||
|
},
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '计价单位',
|
||||||
|
prop: 'priceUnit',
|
||||||
|
type: 'select',
|
||||||
|
dicData: [],
|
||||||
|
display: false,
|
||||||
|
minWidth: 120,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '尺寸',
|
||||||
|
prop: 'sizeText',
|
||||||
|
minWidth: 120,
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
rules: textRule('尺寸', 100),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '说明',
|
||||||
|
prop: 'descriptionOne',
|
||||||
|
order: 20,
|
||||||
|
span: 12,
|
||||||
|
minWidth: 160,
|
||||||
|
placeholder: '请输入',
|
||||||
|
rules: textRule('说明', 100),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '备注',
|
||||||
|
prop: 'remark',
|
||||||
|
type: 'textarea',
|
||||||
|
order: 10,
|
||||||
|
minRows: 2,
|
||||||
|
span: 24,
|
||||||
|
maxlength: 200,
|
||||||
|
showWordLimit: true,
|
||||||
|
placeholder: '请输入',
|
||||||
|
rules: textRule('备注', 200),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '组织',
|
||||||
|
prop: 'deptName',
|
||||||
|
minWidth: 150,
|
||||||
|
addDisplay: false,
|
||||||
|
editDisplay: false,
|
||||||
|
},
|
||||||
|
...auditColumns
|
||||||
|
.filter(column => ['updateTime', 'createTime'].includes(column.prop))
|
||||||
|
.sort(
|
||||||
|
(first, second) =>
|
||||||
|
['updateTime', 'createTime'].indexOf(first.prop) -
|
||||||
|
['updateTime', 'createTime'].indexOf(second.prop)
|
||||||
|
),
|
||||||
|
|
||||||
|
// ---------- 表单隐藏字段 ----------
|
||||||
|
{
|
||||||
|
label: '一级货物类型编码',
|
||||||
|
prop: 'firstCargoTypeCode',
|
||||||
|
hide: true,
|
||||||
|
display: false,
|
||||||
|
addDisplay: false,
|
||||||
|
editDisabled: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
// ---------- 搜索字段(与表格、表单独立) ----------
|
||||||
{
|
{
|
||||||
label: '货物名称',
|
label: '货物名称',
|
||||||
prop: 'searchCargoName',
|
prop: 'searchCargoName',
|
||||||
@@ -186,118 +302,6 @@ export const option = createCrudOption([
|
|||||||
editDisplay: false,
|
editDisplay: false,
|
||||||
viewDisplay: false,
|
viewDisplay: false,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: '包装',
|
|
||||||
prop: 'packageType',
|
|
||||||
type: 'select',
|
|
||||||
dicData: packageOptions,
|
|
||||||
order: 39,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 100,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '品牌',
|
|
||||||
prop: 'brand',
|
|
||||||
search: false,
|
|
||||||
order: 40,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 120,
|
|
||||||
placeholder: '请输入',
|
|
||||||
rules: textRule('品牌', 50),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '规格',
|
|
||||||
prop: 'specification',
|
|
||||||
order: 29,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 120,
|
|
||||||
placeholder: '请输入',
|
|
||||||
rules: textRule('规格', 50),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '货值',
|
|
||||||
prop: 'cargoValue',
|
|
||||||
formslot: true,
|
|
||||||
order: 30,
|
|
||||||
formatter: row => formatCargoValue(row.cargoValue),
|
|
||||||
minWidth: 120,
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
validator: (rule, value, callback) => {
|
|
||||||
if (value === undefined || value === null || value === '') {
|
|
||||||
callback();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!/^\d+(\.\d{1,2})?$/.test(String(value))) {
|
|
||||||
callback(new Error('货值只能输入数字,最多保留2位小数'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
callback();
|
|
||||||
},
|
|
||||||
trigger: 'blur',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '计价单位',
|
|
||||||
prop: 'priceUnit',
|
|
||||||
type: 'select',
|
|
||||||
dicData: [],
|
|
||||||
display: false,
|
|
||||||
minWidth: 120,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '型号',
|
|
||||||
prop: 'model',
|
|
||||||
order: 19,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 120,
|
|
||||||
placeholder: '请输入',
|
|
||||||
rules: textRule('型号', 50, true),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '尺寸',
|
|
||||||
prop: 'sizeText',
|
|
||||||
minWidth: 120,
|
|
||||||
addDisplay: false,
|
|
||||||
editDisplay: false,
|
|
||||||
rules: textRule('尺寸', 100),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '说明',
|
|
||||||
prop: 'descriptionOne',
|
|
||||||
order: 20,
|
|
||||||
span: 12,
|
|
||||||
minWidth: 160,
|
|
||||||
placeholder: '请输入',
|
|
||||||
rules: textRule('说明', 100),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '备注',
|
|
||||||
prop: 'remark',
|
|
||||||
type: 'textarea',
|
|
||||||
order: 10,
|
|
||||||
minRows: 2,
|
|
||||||
span: 24,
|
|
||||||
maxlength: 200,
|
|
||||||
showWordLimit: true,
|
|
||||||
placeholder: '请输入',
|
|
||||||
rules: textRule('备注', 200),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '组织',
|
|
||||||
prop: 'deptName',
|
|
||||||
minWidth: 150,
|
|
||||||
addDisplay: false,
|
|
||||||
editDisplay: false,
|
|
||||||
},
|
|
||||||
...auditColumns
|
|
||||||
.filter(column => ['updateTime', 'createTime'].includes(column.prop))
|
|
||||||
.sort(
|
|
||||||
(first, second) =>
|
|
||||||
['updateTime', 'createTime'].indexOf(first.prop) -
|
|
||||||
['updateTime', 'createTime'].indexOf(second.prop)
|
|
||||||
),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 搜索栏标签统一加宽,给较长的货物类型字段预留足够展示空间。
|
// 搜索栏标签统一加宽,给较长的货物类型字段预留足够展示空间。
|
||||||
|
|||||||
@@ -182,8 +182,8 @@
|
|||||||
<el-input
|
<el-input
|
||||||
v-model="form.regionName"
|
v-model="form.regionName"
|
||||||
readonly
|
readonly
|
||||||
|
disabled
|
||||||
placeholder="行政区划自动带出"
|
placeholder="行政区划自动带出"
|
||||||
:disabled="dialogReadonly"
|
|
||||||
/>
|
/>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="form.detailAddress"
|
v-model="form.detailAddress"
|
||||||
|
|||||||
@@ -260,6 +260,7 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
this.applyDefaultDeptSearch();
|
||||||
this.initDeptTree();
|
this.initDeptTree();
|
||||||
this.loadPriceUnitOptions();
|
this.loadPriceUnitOptions();
|
||||||
},
|
},
|
||||||
@@ -273,6 +274,21 @@ export default {
|
|||||||
if (Array.isArray(data)) return data;
|
if (Array.isArray(data)) return data;
|
||||||
return (data && data.records) || [];
|
return (data && data.records) || [];
|
||||||
},
|
},
|
||||||
|
defaultDeptId() {
|
||||||
|
return (this.userInfo && (this.userInfo.deptId || this.userInfo.dept_id)) || '';
|
||||||
|
},
|
||||||
|
applyDefaultDeptSearch() {
|
||||||
|
const deptId = this.defaultDeptId();
|
||||||
|
const deptColumn = this.findColumn(this.option.column, 'searchDeptId');
|
||||||
|
if (!deptId || !deptColumn) return;
|
||||||
|
deptColumn.searchValue = deptId;
|
||||||
|
this.query = { ...this.query, deptId };
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.crud?.searchForm) {
|
||||||
|
this.$refs.crud.searchForm.searchDeptId = deptId;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
initDeptTree() {
|
initDeptTree() {
|
||||||
getDeptTree(this.userInfo.tenantId).then(res => {
|
getDeptTree(this.userInfo.tenantId).then(res => {
|
||||||
this.deptOptions = this.flattenDept(res.data.data || []);
|
this.deptOptions = this.flattenDept(res.data.data || []);
|
||||||
@@ -485,7 +501,7 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (row.cargoValue && !/^\d+(\.\d{1,2})?$/.test(String(row.cargoValue))) {
|
if (row.cargoValue && !/^\d+(\.\d{1,2})?$/.test(String(row.cargoValue))) {
|
||||||
this.$message.warning('货值只能输入数字,最多保留2位小数');
|
this.$message.warning('单价只能输入数字,最多保留2位小数');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!row.model) {
|
if (!row.model) {
|
||||||
@@ -619,8 +635,9 @@ export default {
|
|||||||
},
|
},
|
||||||
searchReset() {
|
searchReset() {
|
||||||
this.query = {};
|
this.query = {};
|
||||||
|
this.applyDefaultDeptSearch();
|
||||||
this.page.currentPage = 1;
|
this.page.currentPage = 1;
|
||||||
this.onLoad(this.page);
|
this.onLoad(this.page, this.query);
|
||||||
},
|
},
|
||||||
searchChange(params, done) {
|
searchChange(params, done) {
|
||||||
this.query = params;
|
this.query = params;
|
||||||
@@ -649,7 +666,11 @@ export default {
|
|||||||
onLoad(page, params = {}) {
|
onLoad(page, params = {}) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
api
|
api
|
||||||
.getList(page.currentPage, page.pageSize, { ...params, ...this.query, allDept: 0 })
|
.getList(page.currentPage, page.pageSize, {
|
||||||
|
...params,
|
||||||
|
...this.query,
|
||||||
|
allDept: this.isAdmin ? 1 : 0,
|
||||||
|
})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const result = res.data.data;
|
const result = res.data.data;
|
||||||
this.page.total = result.total;
|
this.page.total = result.total;
|
||||||
@@ -663,7 +684,7 @@ export default {
|
|||||||
buildExportParams() {
|
buildExportParams() {
|
||||||
return {
|
return {
|
||||||
...this.query,
|
...this.query,
|
||||||
allDept: 0,
|
allDept: this.isAdmin ? 1 : 0,
|
||||||
ids: this.ids,
|
ids: this.ids,
|
||||||
[this.website.tokenHeader]: getToken(),
|
[this.website.tokenHeader]: getToken(),
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user