diff --git a/packages/mobile/src/views/IceEvent/IceEventAdd.vue b/packages/mobile/src/views/IceEvent/IceEventAdd.vue
index 2af4eb5..30006e4 100644
--- a/packages/mobile/src/views/IceEvent/IceEventAdd.vue
+++ b/packages/mobile/src/views/IceEvent/IceEventAdd.vue
@@ -153,9 +153,10 @@
:key="material.rid"
v-model="material.usageAmount"
type="number"
+ @input="checkMaterialAmount(material, index)"
:label="material.wzmc"
center
- placeholder="请输入数量"
+ :placeholder="`余额: ${material.ye} `"
>
{{ material.dw }}
@@ -493,6 +494,7 @@ const addSelectedMaterials = () => {
wzmc: material.wzmc,
usageAmount: null,
dw: material.dw,
+ ye: material.ye,
});
}
});
@@ -500,6 +502,18 @@ const addSelectedMaterials = () => {
checked.value = [];
};
+// 检查余额
+const checkMaterialAmount = (material, index) => {
+ if (material.usageAmount > material.ye) {
+ showToast({
+ type: "fail",
+ message: "输入数量不能超过物资余额",
+ });
+ // 设置为最大值
+ form.yhzMaterialList[index].usageAmount = material.ye;
+ }
+};
+
// 查询物资列表
const getMaterialList = async (wzmc) => {
try {
diff --git a/packages/screen/src/component/MyDialog/index.vue b/packages/screen/src/component/MyDialog/index.vue
index 9deb614..37bcd0a 100644
--- a/packages/screen/src/component/MyDialog/index.vue
+++ b/packages/screen/src/component/MyDialog/index.vue
@@ -15,8 +15,8 @@
@@ -58,6 +58,14 @@ const props = defineProps({
type: Function,
default: () => {},
},
+ onConfirmName: {
+ type: String,
+ default: "确认",
+ },
+ onCancelName: {
+ type: String,
+ default: "取消",
+ }
});
const normalizedComponent = computed(() =>
diff --git a/packages/screen/src/component/MyDrawer/index.js b/packages/screen/src/component/MyDrawer/index.js
new file mode 100644
index 0000000..550d9b5
--- /dev/null
+++ b/packages/screen/src/component/MyDrawer/index.js
@@ -0,0 +1,3 @@
+import MyDrawer from './index.vue'
+
+export default MyDrawer
\ No newline at end of file
diff --git a/packages/screen/src/component/MyDrawer/index.vue b/packages/screen/src/component/MyDrawer/index.vue
new file mode 100644
index 0000000..ce36b36
--- /dev/null
+++ b/packages/screen/src/component/MyDrawer/index.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/screen/src/views/MaterialManagement/addDialog.vue b/packages/screen/src/views/MaterialManagement/addDialog.vue
index 8930a37..7699c79 100644
--- a/packages/screen/src/views/MaterialManagement/addDialog.vue
+++ b/packages/screen/src/views/MaterialManagement/addDialog.vue
@@ -6,49 +6,49 @@
label-width="150px"
style="max-height: 60vh; overflow-y: auto; padding-right: 50px"
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {{ yhzData.rawName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ yhzData.jd }}
+
+
+ {{ yhzData.wd }}
+
@@ -59,7 +59,7 @@ const formRef = ref(null);
defineExpose({ formRef });
const props = defineProps({
- detailData: {
+ yhzData: {
type: Object,
default: () => ({}),
},
diff --git a/packages/screen/src/views/MaterialManagement/detailDialog.vue b/packages/screen/src/views/MaterialManagement/detailDialog.vue
index f5575ad..b3b40db 100644
--- a/packages/screen/src/views/MaterialManagement/detailDialog.vue
+++ b/packages/screen/src/views/MaterialManagement/detailDialog.vue
@@ -1,52 +1,68 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {{
+ detailData.material?.wzmc
+ }}
+ {{
+ detailData.material?.ye + ' ' + detailData.material?.dw
+ }}
+ {{
+ detailData.material?.yhzMc
+ }}
+ {{
+ detailData.material?.remark
+ }}
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
+ {{
+ detailData.material?.qxmc
+ }}
+ {{
+ detailData.material?.jd
+ }}
+ {{
+ detailData.material?.wd
+ }}
+
+
+
+
+ {{
+ detailData.material?.fzr
+ }}
+ {{
+ detailData.material?.rkrName
+ }}
+ {{
+ detailData.material?.rkrq?.slice(0, 10)
+ }}
+
+
@@ -60,4 +76,9 @@ const props = defineProps({
\ No newline at end of file
diff --git a/packages/screen/src/views/MaterialManagement/index.js b/packages/screen/src/views/MaterialManagement/index.js
index e159898..a503ea4 100644
--- a/packages/screen/src/views/MaterialManagement/index.js
+++ b/packages/screen/src/views/MaterialManagement/index.js
@@ -16,6 +16,7 @@ const filterText = ref(''); // 树节点过滤条件
const tableData = ref([]);
const qxmc = ref(''); // 区县名称
const yhzid = ref(''); // 养护站id
+const yhzData = ref(); // 养护站信息
const filterData = reactive({
wzmc: '',
}); // 表格过滤条件
@@ -42,22 +43,53 @@ const model = reactive({
const dialogType = ref(''); // 弹窗类型
const dialogRef = ref(null); // 弹窗实例
+const drawerVisible = ref(false); // 抽屉显示状态
+const drawer = reactive({
+ title: '',
+ content: null,
+ props: {},
+ onCancel: null,
+ onConfirm: null,
+ direction: 'rtl',
+ size: '50%'
+}); // 抽屉内容
+const drawerType = ref(''); // 抽屉类型
+const drawerRef = ref(null); // 抽屉实例
+
+
+
const INIT_FORM = {
- rkrq: "",
- rkdw: "",
- sl: "",
- dw: "",
- cfdd: "",
- fzr: "",
- lxdh: "",
- ye: "",
- qxmc: "",
- wzmc: "",
- fzrid: "",
- yhzid: "",
+ material: {
+ rkrq: "",
+ rkdw: "",
+ sl: "",
+ dw: "",
+ cfdd: "",
+ fzr: "",
+ lxdh: "",
+ ye: "",
+ qxmc: "",
+ wzmc: "",
+ fzrid: "",
+ yhzid: "",
+ jd: "",
+ wd: "",
+ },
+ photos: [],
}; // 表单初始值
const form = reactive({ ...INIT_FORM }); // 表单
+// 重置表单方法
+const resetForm = () => {
+ // 深拷贝重置嵌套对象
+ form.material = { ...INIT_FORM.material };
+ form.photos = [...INIT_FORM.photos];
+
+ form.material.yhzid = yhzid.value;
+ form.material.jd = yhzData.value?.jd;
+ form.material.wd = yhzData.value?.wd;
+};
+
// 节点过滤函数
@@ -96,7 +128,10 @@ const getTreeData = async () => {
children: qx.yhzList.map(site => ({
id: site.id,
name: `${site.mc}(${site.wzsl})`,
- type: 'site'
+ type: 'site',
+ rawName: site.mc, // 原始名称
+ jd: site.jd,
+ wd: site.wd,
})),
rawName: qx.qxmc, // 原始名称
})
@@ -116,18 +151,21 @@ const handleNodeClick = (data, node) => {
if (data.type === 'area' && node.expanded === false) {
console.log('树节点关闭', node.expanded)
yhzid.value = ''; // 重置养护站id
+ yhzData.value = null; // 重置养护站信息
qxmc.value = ''; // 重置区县名称
return;
}
if (data.type === 'area') {
console.log('你点击的是区县', data.id)
yhzid.value = ''; // 重置养护站id
+ yhzData.value = null; // 重置养护站信息
qxmc.value = data.id; // 保存区县名称
}
if (data.type === 'site') {
console.log('你点击的是站点', data.name)
yhzid.value = data.id; // 保存养护站id
+ yhzData.value = data; // 保存养护站信息
qxmc.value = ''; // 重置区县名称
}
};
@@ -170,37 +208,25 @@ const columns = [
prop: 'ye',
label: '余量',
},
- {
- prop: 'rkdw',
- label: '入库单位',
- },
- {
- prop: 'rkrq',
- label: '入库日期',
- },
- {
- prop: 'sl',
- label: '数量',
- },
{
prop: 'dw',
label: '单位',
},
- {
- prop: 'cfdd',
- label: '存放地点',
- },
{
prop: 'fzr',
label: '负责人',
},
{
- prop: 'lxdh',
- label: '联系电话',
+ prop: 'rkrName',
+ label: '入库人',
},
{
- prop: 'qxmc',
- label: '所属区县',
+ prop: 'rkrq',
+ label: '入库日期',
+ },
+ {
+ prop: 'yhzMc',
+ label: '所属服务站',
},
{
label: "操作",
@@ -220,18 +246,18 @@ const columns = [
},
() => "详情"
),
- h(
- ElButton,
- {
- type: "primary",
- link: true,
- onClick: async () => {
- dialogType.value = 'edit'
- await getDetailData(row);
- },
- },
- () => "编辑"
- ),
+ // h(
+ // ElButton,
+ // {
+ // type: "primary",
+ // link: true,
+ // onClick: async () => {
+ // dialogType.value = 'edit'
+ // await getDetailData(row);
+ // },
+ // },
+ // () => "编辑"
+ // ),
h(
ElButton,
{
@@ -305,20 +331,20 @@ const getDetailData = async (row) => {
}
if (res.code === '00000') {
if (dialogType.value === 'detail') {
- model.title = `物资详情`;
- model.content = DetailDialog;
- model.props = {
- detailData: res.data.material,
+ drawer.title = `物资详情`;
+ drawer.content = DetailDialog;
+ drawer.props = {
+ detailData: res.data,
};
- model.onCancel = () => {
+ drawer.onCancel = () => {
dialogType.value = '';
- modelVisible.value = false;
+ drawerVisible.value = false;
};
- model.onConfirm = () => {
+ drawer.onConfirm = () => {
dialogType.value = '';
- modelVisible.value = false;
+ drawerVisible.value = false;
};
- modelVisible.value = true;
+ drawerVisible.value = true;
}
if (dialogType.value === 'edit') {
model.title = `编辑物资`;
@@ -352,9 +378,9 @@ const getDetailData = async (row) => {
const openAddModel = () => {
model.title = `新增物资`;
model.content = AddDialog;
- Object.assign(form, INIT_FORM);
+ resetForm(); // 重置表单
model.props = {
- detailData: {},
+ yhzData: yhzData.value,
form: form,
};
model.onCancel = () => {
@@ -382,6 +408,7 @@ const openAddModel = () => {
console.log('error', error)
}
};
+ model.width = '40%';
modelVisible.value = true;
}
@@ -441,7 +468,7 @@ export default () => {
await getTreeData();
await getyhzwzList();
const rowData = (decodeURIComponent(route.params?.data));
- if (rowData !== 'undefined' && rowData!== 'null' && rowData !== '' ) {
+ if (rowData !== 'undefined' && rowData !== 'null' && rowData !== '') {
const JSONData = JSON.parse(rowData);
filterText.value = JSONData.mc;
};
@@ -462,5 +489,9 @@ export default () => {
dialogRef,
model,
openAddModel,
+ drawerVisible,
+ drawer,
+ drawerRef,
+ yhzid,
}
}
\ No newline at end of file
diff --git a/packages/screen/src/views/MaterialManagement/index.vue b/packages/screen/src/views/MaterialManagement/index.vue
index 855ae16..15ae410 100644
--- a/packages/screen/src/views/MaterialManagement/index.vue
+++ b/packages/screen/src/views/MaterialManagement/index.vue
@@ -28,7 +28,7 @@
@@ -65,9 +76,10 @@
import scriptFn from "./index.js";
import DynamicTable from "../../component/DynamicTable";
import MyDialog from "../../component/MyDialog";
+import MyDrawer from "../../component/MyDrawer/index.js";
const script = scriptFn();
-const { treeRef, dialogRef } = script;
+const { treeRef, dialogRef, drawerRef } = script;