feat:应急仓库

This commit is contained in:
lijianzhong 2024-01-30 10:57:03 +08:00
parent 8207d882af
commit 0e2bff8038
17 changed files with 576 additions and 880 deletions

View File

@ -11,10 +11,10 @@ VITE_OPEN_PROXY = false
VITE_PROXY_API = /dev-api VITE_PROXY_API = /dev-api
# VITE_PROXY = [ ["/dev-api", "http://192.168.110.186:8040" ],["/dev-img-api", "http://file.sczysoft.com" ]]
# http://42.193.40.239:8017/doc.html//线上 http://192.168.110.186:8017/doc.html//本地 # http://42.193.40.239:8017/doc.html//线上 http://192.168.110.186:8017/doc.html//本地
VITE_PROXY = [ ["/dev-api", "http://192.168.110.186:8017" ],["/dev-img-api", "http://file.sczysoft.com" ]]
VITE_PROXY = [ ["/dev-api", "http://42.193.40.239:8017" ],["/dev-img-api", "http://file.sczysoft.com" ]]
# VITE_PROXY = [ ["/dev-api", "http://192.168.110.186:8017" ],["/dev-img-api", "http://file.sczysoft.com" ]]
# #
VITE_GLOB_UPLOAD_URL=/dev-api VITE_GLOB_UPLOAD_URL=/dev-api
VITE_UPLOAD_IMG_URL=/dev-img-api VITE_UPLOAD_IMG_URL=/dev-img-api

View File

@ -157,6 +157,16 @@ export function getOtheWareHousePage(data) {
params: data params: data
}); });
} }
/**
*
*/
export function getHouseDetail(houseId) {
return request({
url: `admin/OtheWareHouse/getOtheWareHouse`,
method: "GET",
params: { houseId }
});
}
/** /**
* *
@ -165,15 +175,15 @@ export function getHouseSysUser(userId) {
return request({ return request({
url: `admin/OtheWareHouse/getHouseSysUser`, url: `admin/OtheWareHouse/getHouseSysUser`,
method: "GET", method: "GET",
params: {userId} params: { userId }
}); });
} }
/** /**
*- *-
*/ */
export function delOthpersonHouse(data) { export function saveOtheWareHouse(data) {
return request({ return request({
url: `admin/OtheWareHouse/delOthperson`, url: `admin/OtheWareHouse/saveOtheWareHouse`,
method: "POST", method: "POST",
data: data data: data
}); });

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16.017" viewBox="0 0 16 16.017"><defs><style>.a{fill:#b5c4e1;}.b{fill:#fff;opacity:0;}.c{clip-path:url(#a);}</style><clipPath id="a"><rect class="a" width="16" height="16.017"/></clipPath></defs><g transform="translate(-8913 -343.983)"><rect class="b" width="16" height="16" transform="translate(8913 344)"/><g transform="translate(8363 212.983)"><g transform="translate(550 131)"><g class="c"><path class="a" d="M963.789,137.567v-5.619a1.143,1.143,0,0,1,1.332-1.126,8,8,0,0,1,6.557,6.557,1.143,1.143,0,0,1-1.126,1.332h-5.619a1.143,1.143,0,0,1-1.143-1.143Zm0,0" transform="translate(-955.704 -130.81)"/><path class="a" d="M557.7,231.124h5.319a1.143,1.143,0,0,1,1.143,1.338,7.146,7.146,0,1,1-8.372-8.358,1.143,1.143,0,0,1,1.338,1.143v5.3a.572.572,0,0,0,.572.572Zm0,0" transform="translate(-549.999 -222.268)"/></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 933 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><defs><style>.a{fill:#fff;opacity:0;}.b{fill:#b5c4e1;}</style></defs><g transform="translate(-865 -102)"><rect class="a" width="16" height="16" transform="translate(865 102)"/><g transform="translate(258 -145.367)"><path class="b" d="M618.152,253.66a.644.644,0,1,1,.589-.589.644.644,0,0,1-.589.589ZM623,248.715v9.871a.714.714,0,0,1-.714.715h-6.7v2.289h3.4a.584.584,0,0,1,.586.582.572.572,0,0,1-.572.561h-7.99a.584.584,0,0,1-.586-.58v-.006a.572.572,0,0,1,.572-.56h3.448V259.3H607.8l4.326-4.326,2.025,2.034a.572.572,0,0,0,.808,0l2.393-2.393a1.784,1.784,0,1,0-.81-.81l-1.985,1.986-1.986-1.983a.571.571,0,0,0-.8-.085.49.49,0,0,0-.045.041L607,258.49v-9.662a.828.828,0,0,1,.828-.828h14.455a.714.714,0,0,1,.715.714Zm0,0" transform="translate(0 0)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 839 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"><defs><style>.a{fill:#b5c4e1;}.b{fill:#fff;opacity:0;}.c{clip-path:url(#a);}</style><clipPath id="a"><rect class="a" width="16" height="16"/></clipPath></defs><g transform="translate(-8914 -324)"><rect class="b" width="16" height="16" transform="translate(8914 324)"/><g transform="translate(8286 115)"><g transform="translate(628 209)"><g class="c" transform="translate(0 0)"><path class="a" d="M628.481,367.9h1.771a.6.6,0,0,0,.6-.572.58.58,0,0,0-.6-.572h-1.771a.6.6,0,0,0-.6.572.582.582,0,0,0,.6.572Zm2.342,6.683a.58.58,0,0,0-.6-.572h-1.742a.6.6,0,0,0-.6.572.58.58,0,0,0,.6.572h1.771a.573.573,0,0,0,.572-.572Zm0,0" transform="translate(-627.883 -362.953)"/></g></g><path class="a" d="M695.564,221.031l-.257-.172a.592.592,0,0,1-.114-.828l1.456-1.8-.458-.371-1.485,1.8a.588.588,0,0,1-.828.085l-.228-.172,6.683-8.054a2.234,2.234,0,0,0-2.342-2.2H687.709a1.629,1.629,0,0,0-1.829,1.514v1.143h.886a1.568,1.568,0,0,1,1.543,1.514A1.441,1.441,0,0,1,686.853,215h-.971v4.2h.886a1.568,1.568,0,0,1,1.543,1.514,1.441,1.441,0,0,1-1.456,1.514h-.971V223.6a1.759,1.759,0,0,0,1.829,1.686h10.854a1.838,1.838,0,0,0,1.914-1.686v-8.485Zm-2.17,1.114c-.2.085-.714-.085-.685-.315l.6-1.8,1.829,1.456Zm0,0" transform="translate(-56.483 -0.312)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -36,15 +36,29 @@ export default {
] ]
}, },
{ {
path: 'resourse', path: 'house',
name: 'resourse', name: 'house',
component: () => import('@/views/emergency/matter/index.vue'), component: () => import('@/views/emergency/house/index.vue'),
meta: { meta: {
icon: 'point', icon: 'point',
auth: "emer.resourse", auth: "emer.house",
title: '物资管理', title: '物资管理',
breadcrumb: true, //是否显示面包屑 breadcrumb: true, //是否显示面包屑
} },
children: [
{
path: 'house-detail',
name: 'house-detail',
component: () => import('@/views/emergency/house/details.vue'),
meta: {
auth: "emer.house.detail",
title: '仓库详情',
sidebar: false, //是否在菜单栏显示
breadcrumb: true, //是否显示面包屑
activeMenu: '/emergency/house'
}
}
]
}, },
{ {
path: 'shelter', path: 'shelter',

View File

@ -8,7 +8,7 @@ export default {
meta: { meta: {
auth: "statistic", auth: "statistic",
title: '统计分析', title: '统计分析',
icon: 'point', icon: 'icon-statistic',
}, },
children: [ children: [
{ {

View File

@ -8,7 +8,7 @@ export default {
meta: { meta: {
auth: "daily", auth: "daily",
title: '工作管理', title: '工作管理',
icon: 'point', icon: 'icon-work',
}, },
children: [ children: [
{ {

View File

@ -8,7 +8,7 @@ export default {
meta: { meta: {
auth: "trends", auth: "trends",
title: '工作动态', title: '工作动态',
icon: 'point', icon: 'icon-trends',
}, },
children: [ children: [
{ {

View File

@ -1,219 +0,0 @@
<template>
<div class="percentage-content">
<div class="content">
<div style="margin-bottom: 16px" class="h-layout space-between h-center">
<div>
<div class="h-layout">
<div class="tool-item" @click="(dialogVisible = true), (form = {}),(readonly=false)">
<svg-icon name="add" class="icon" />
<span >新增</span>
</div>
<div class="tool-item" @click="getCompanyList">
<svg-icon name="refurbish" class="icon" />
<span>刷新</span>
</div>
<div class="tool-item" @click="getCompanyList">
<svg-icon name="export" class="icon" />
<span>导出</span>
</div>
<div v-if="tableCheckBoxs.length > 0" class="tool-item" @click="deletelist">
<svg-icon name="delete" class="icon" />
<span>删除</span>
</div>
</div>
</div>
<div style="width: 30%">
<div>
<el-input
v-model="search"
@keydown.enter.native="getCompanyList"
placeholder="输入仓库名称"
class="search-input"
>
<template #append>
<span @click="getCompanyList" class="search-bottom">
<svg-icon name="search" class="icon_class" />
<span>搜索</span>
</span>
</template>
</el-input>
</div>
</div>
</div>
<el-table
ref="loading"
v-loading="tableDataloading"
:data="tableData"
header-row-class-name="el-one-header"
@selection-change="handleSelectionChange"
border
>
<el-table-column type="selection" align="center" width="55"></el-table-column>
<el-table-column type="index" align="center" label="序列" width="60"></el-table-column>
<el-table-column
prop="houseName"
:resizable="true"
align="center"
label="仓库名称"
></el-table-column>
<el-table-column
prop="nameText"
:resizable="true"
align="center"
label="管理员"
>
<template #default="scope">
{{ scope.row.nameText }}{{ scope.row.possession }}
</template>
</el-table-column>
<el-table-column
prop="telephone"
:resizable="true"
align="center"
label="联系方式"
></el-table-column>
<el-table-column
prop="possession"
:resizable="true"
align="center"
label="所属单位"
></el-table-column>
<el-table-column
prop="address"
:resizable="true"
align="center"
label="地址"
></el-table-column>
<el-table-column :resizable="true" align="center" width="180" label="操作">
<template #default="scope">
<span class="operate" @click="
(dialogVisible = true), (form = scope.row),(readonly=false)"
>
<svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span>
</span>
<span class="operate" @click="
(dialogVisible = true), (form = scope.row),(readonly=true)"
>
<svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span>
</span>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
class="pagination"
@size-change="getCompanyList"
@current-change="getCompanyList"
v-model:current-page.sync="currentPage"
:page-sizes="[10, 15, 20, 30]"
v-model:page-size.sync="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
background
>
</el-pagination>
<!-- 新增 -->
<Adddetails :visible="dialogVisible" :form="form" :readonly="readonly" @close="onclone" />
</div>
</div>
</template>
<script lang='ts' setup>
import { onMounted, reactive, ref } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { getOtheWareHousePage,delOtheWareHouse } from "@/api/Othteam";
import Adddetails from "./details.vue";
import useUserStore from "@/store/modules/user";
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId)
const search = ref([]);
const tableData = ref([]);
const currentPage = ref(1);
const pageSize = ref(10);
const total = ref(0);
const dialogVisible = ref(false);
const form = ref({});
const readonly = ref(false);
//
const tableCheckBoxs = ref([]);
const handleSelectionChange = (val:any) => {
tableCheckBoxs.value = [];
for (let index = 0; index < val.length; index++) {
const element = val[index];
tableCheckBoxs.value.push(element.houseId);
}
};
//
const tableDataloading = ref(false);
const getCompanyList = () => {
tableDataloading.value = true;
let params = {
houseName: search.value,
limit: pageSize.value,
page: currentPage.value,
};
getOtheWareHousePage(params).then((res:any) => {
tableData.value = res.data.list;
total.value = res.data.total;
tableDataloading.value = false;
})
};
//
const deletelist = () => {
ElMessageBox.confirm("是否确认删除?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
let params = {
houseId:tableCheckBoxs.value.join(", "),
userId:userId.value
}
delOtheWareHouse(params).then((res: any) => {
if (res.code == 1) {
ElMessage.success({
message: "删除成功",
type: "success",
});
} else {
ElMessage.error({
message: res.message,
type: "error",
});
}
getCompanyList();
});
});
};
//
const onclone = () => {
dialogVisible.value = false;
form.value = {};
getCompanyList();
};
onMounted(() => {
getCompanyList();
})
</script>
<style lang="scss" scoped>
.content {
width: 100%;
// flex: auto;
background: #fff;
border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgba(8, 33, 85, 0.1);
height: 100%;
padding: 0.83333vw;
overflow-y: auto;
overflow-x: hidden !important;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
</style>

View File

@ -1,322 +0,0 @@
<template>
<BaseDialog
:dialogVisible="props.visible"
@close="onclone"
:titleName="props.form.opInstructionId ? '编辑应急物资' : '新增应急物资'"
width="50%"
@onSubmit="handleSubmit"
:footerclosed="true"
:diafooter="true"
:footerkeepnaem="props.readonly ? false : true"
>
<div class="detailForm-content">
<el-form
ref="formRef"
label-position="right"
label-width="150px"
:rules="ruleForm"
:model="addPostFactorForm"
>
<el-form-item label="仓库名称:" prop="houseId">
<el-input
:readonly="props.readonly"
placeholder="请输入仓库名称"
v-model="addPostFactorForm.houseId"
>
</el-input>
</el-form-item>
<el-form-item label="装备名称:" prop="equname">
<el-input
:readonly="props.readonly"
placeholder="请输入装备名称"
v-model="addPostFactorForm.equname"
>
</el-input>
</el-form-item>
<el-form-item label="装备数量:" prop="equnum">
<el-input-number
:readonly="props.readonly"
:min="0"
:step="1"
step-strictly
v-model="addPostFactorForm.equnum"
></el-input-number>
</el-form-item>
<el-form-item label="存放场所:" prop="storageplace">
<el-input
:readonly="props.readonly"
placeholder="请输入存放场所"
v-model="addPostFactorForm.storageplace"
>
</el-input>
</el-form-item>
<el-form-item label="联系方式:" prop="equphone">
<el-input
:readonly="props.readonly"
placeholder="请输入联系电话"
v-model="addPostFactorForm.equphone"
>
</el-input>
</el-form-item>
<el-form-item label="所属单位:" prop="possession">
<el-input
:readonly="props.readonly"
placeholder="请输入所属单位"
v-model="addPostFactorForm.possession"
>
</el-input>
</el-form-item>
<el-form-item label="行业领域:" prop="industry">
<el-input
:readonly="props.readonly"
placeholder="请输入行业领域"
v-model="addPostFactorForm.industry"
>
</el-input>
</el-form-item>
<el-form-item label="类型:" prop="equtype">
<el-select
:disabled="props.readonly"
placeholder="请选择类型"
v-model="addPostFactorForm.equtype"
>
<el-option
v-for="(item, index) in equtypes"
:value="item.value"
:label="item.label"
:key="index"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="主要功能:" prop="equfunction" style="width: 100%">
<el-input
:readonly="props.readonly"
placeholder="请输入主要功能"
v-model="addPostFactorForm.equfunction"
>
</el-input>
</el-form-item>
<el-form-item label="装备照片:">
<el-upload
class="avatar-uploader"
ref="upload"
action="#"
accept="image/jpeg"
list-type="picture-card"
:show-file-list="false"
:on-change="beforeAvatarUpload"
:auto-upload="false"
:http-request="handleUpload"
:disabled="props.readonly"
>
<img
v-if="addPostFactorForm.equipPhoto"
:src="addPostFactorForm.equipPhoto"
style="width: 100%; height: 100%"
/>
<el-icon v-else class="avatar-uploader-icon">
<Plus />
</el-icon>
</el-upload>
</el-form-item>
</el-form>
</div>
</BaseDialog>
</template>
<script setup lang="ts" >
import { reactive, ref, onMounted, watch } from "vue";
import useUserStore from "@/store/modules/user";
import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getYears, getUUID, FileType } from "@/utils/common";
import { saveOthequipment, getOtheWareHouseList } from "@/api/Othteam";
import { uploadFile, getFile, delFile } from "@/api/file";
const formRef = ref<FormInstance>();
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const uuid = ref("");
const equtypes = ref([
{
value: "个人防护装备",
label: "个人防护装备",
},
{
value: "消防装备",
label: "消防装备",
},
{
value: "通信装备",
label: "通信装备",
},
{
value: "报警装备",
label: "报警装备",
},
{
value: "特殊专业性应急装备",
label: "特殊专业性应急装备",
},
{
value: "医疗救护装备",
label: "医疗救护装备",
},
]);
const ruleForm = reactive<FormRules>({
houseId: [
{
required: true,
message: "请选择仓库名称",
trigger: "blur",
},
],
equname: [
{
required: true,
message: "请输入装备名称",
trigger: "blur",
},
],
equnum: [
{
required: true,
message: "请装备数量",
trigger: "change",
},
],
storageplace: [
{
required: true,
message: "请输入存放场所",
trigger: "blur",
},
],
equphone: [
{
required: true,
message: "请输入联系电话",
trigger: "blur",
},
],
equtype: [
{
required: true,
message: "请选择类型",
trigger: "blur",
},
],
});
const props = defineProps({
visible: {
type: Boolean,
default: false,
},
form: Object,
readonly: {
type: Boolean,
default: false,
},
id: String,
});
const listperformid = ref(props.id);
const addPostFactorForm = ref(<any>{});
const emits = defineEmits(["close", "onSubmit"]);
//退
const handleSubmit = () => {
formRef.value?.validate((valid) => {
if (valid) {
addPostFactorForm.value.othequipmentid =
addPostFactorForm.value.othequipmentid || uuid.value;
addPostFactorForm.value.userId = userId.value;
saveOthequipment(addPostFactorForm.value).then((res: any) => {
if (res.code == 1) {
ElMessage.success({
message: "保存成功",
type: "success",
});
onclone();
}
});
}
return false;
});
};
//
const upload = ref();
const beforeAvatarUpload = () => {
upload.value.submit();
return true;
};
//
const handleUpload = (res) => {
let file = res.file;
const formData = new FormData();
formData.append("file", file);
let uuids = addPostFactorForm.value.othequipmentid || uuid.value;
uploadFile(userId.value, uuids, FileType.equipment, formData).then(
(res: any) => {
if (res) {
ElMessage.success({
message: "上传成功!",
type: "success",
});
getFiles();
}
}
);
};
//
const getFiles = () => {
getFile(
addPostFactorForm.value.othequipmentid || uuid.value,
FileType.equipment
).then((res: any) => {
if (res.data.length > 0) {
const path = res.data[res.data.length - 1];
addPostFactorForm.value.equipPhoto =
import.meta.env.VITE_UPLOAD_IMG_URL + path.filepath;
}
});
};
//
const onclone = () => {
emits("close");
};
//
const houseNameList = ref([]);
const OtheWareHouseList = () => {
getOtheWareHouseList({}).then((res: any) => {
houseNameList.value = res.data;
});
};
onMounted(() => {
OtheWareHouseList();
});
watch(
() => props.form,
(val) => {
uuid.value = getUUID();
if (val) {
if (!props.visible) return;
addPostFactorForm.value = val;
getFiles();
}
}
);
</script>
<style lang="scss" scoped>
.detailForm-content {
margin-right: 30px;
}
:deep(.el-form) {
display: flex;
flex-wrap: wrap;
// justify-content: space-around;
justify-content: space-between;
}
:deep(.el-form-item) {
width: 47%;
}
</style>

View File

@ -1,184 +0,0 @@
<template>
<div>
<!-- 表格1 -->
<el-row>
<el-col :span="24">
<el-table
ref="loading"
:data="tableData"
header-row-class-name="el-one-header"
@selection-change="handleSelectionChange"
border
>
<el-table-column
type="selection"
align="center"
width="55"
></el-table-column>
<el-table-column
prop="houseName"
:resizable="true"
align="center"
label="仓库名称"
></el-table-column>
<el-table-column
prop="equname"
:resizable="true"
align="center"
label="装备名称"
></el-table-column>
<el-table-column
prop="equnum"
:resizable="true"
align="center"
label="数量"
width="70"
></el-table-column>
<el-table-column
prop="equtype"
:resizable="true"
align="center"
label="装备类型"
></el-table-column>
<el-table-column
prop="storageplace"
:resizable="true"
align="center"
label="存放场所"
></el-table-column>
<el-table-column
prop="industry"
:resizable="true"
align="center"
label="行业领域"
></el-table-column>
<el-table-column
:resizable="true"
width="255"
align="center"
label="操作"
>
<template slot-scope="scope">
<span
class="operate"
@click="(row = scope.row), (addDialogVisible = true),(readonly=true)"
>
<svg-icon icon-class="detail"></svg-icon>
<span class="detail">详情</span>
</span>
<span class="operate" @click="del(scope.row)">
<svg-icon class-name="icon-style" icon-class="delete" />
<span class="detail">删除</span>
</span>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<!-- 分页 -->
<el-row>
<el-col :span="24">
<el-pagination
class="pagination"
@size-change="refresh"
@current-change="refresh"
:current-page.sync="currentPage"
:page-sizes="[10, 15, 20, 30]"
:page-size.sync="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
background
>
</el-pagination>
</el-col>
</el-row>
<!-- 装备弹窗 -->
<add-warehouse
:form="row"
:isMaterial="false"
:readonly="readonly"
:visible="addDialogVisible"
@close="(addDialogVisible = false), (read = false)"
/>
</div>
</template>
<script>
import { getEquipmentById, deleteEquip } from "@/api/emergency";
import AddWarehouse from "./AddWarehouse.vue";
export default {
components: {
AddWarehouse,
},
data() {
return {
addDialogVisible: false,
row: {},
readonly:false,
//
currentPage: 1,
pageSize: 10,
tableData: [],
total: 0,
selected: "",
activeName: "first",
command: "",
};
},
methods: {
//
getInventory(condition) {
getEquipmentById(
(this.houseId = this.$route.params.id),
this.currentPage,
this.pageSize,
condition
).then((res) => {
this.tableData = res.data.rows;
this.total = res.data.total;
this.$loadingT(null, this.instance, "instance");
});
},
//
handleSelectionChange(val) {
this.tableCheckBoxs = [];
for (let index = 0; index < val.length; index++) {
const element = val[index];
this.tableCheckBoxs.push(element.listdetailid);
}
},
//
refresh() {
const loading = this.$refs["loading"];
if (!this.instance) this.instance = this.$loadingT(loading);
else return;
this.getInventory();
},
//
del(row) {
this.$confirm(`确定删除吗?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
deleteEquip(row.othequipmentid).then((res) => {
if (res.code == 1) {
this.$message({
message: "删除成功",
type: "success",
});
this.getInventory();
} else {
this.$message.error(res.message);
}
});
});
},
},
created() {
this.getInventory();
},
};
</script>

View File

@ -0,0 +1,422 @@
<template>
<div class="percentage-content">
<div class="content">
<div>
<TitleC titleName="仓库信息">
<template v-slot:option>
<div class="h-layout option">
<div class="h-layout h-titlec" @click="getDetail">
<svg-icon name="refurbish" class="icon" />
<span class="span">刷新</span>
</div>
<div
class="h-layout h-titlec"
@click="resetPwd"
v-if="formEnable"
>
<svg-icon name="save-yellow" class="icon" />
<span class="span">编辑</span>
</div>
<div v-else class="h-layout h-titlec" @click="handleSumit(1)">
<svg-icon name="save-yellow" class="icon" />
<span class="span">保存</span>
</div>
<div class="h-layout h-titlec" @click="clone">
<svg-icon name="close" class="icon" />
<span class="span">关闭</span>
</div>
</div>
</template>
</TitleC>
<div class="detailForm-content">
<el-form
ref="formRef"
label-position="right"
label-width="150px"
:rules="ruleForm"
:model="detailForm"
>
<el-form-item label="仓库名称:" prop="houseName">
<el-input
:readonly="formEnable"
placeholder="请输入仓库名称"
v-model="detailForm.houseName"
></el-input>
</el-form-item>
<el-form-item label="管理员:" prop="name">
<el-input
:readonly="formEnable"
placeholder="请输入管理员"
v-model="detailForm.name"
></el-input>
</el-form-item>
<el-form-item label="联系方式:" prop="telephone">
<el-input
:readonly="formEnable"
placeholder="请输入联系电话"
v-model="detailForm.telephone"
></el-input>
</el-form-item>
<el-form-item label="所属地区:" prop="orgCode">
<el-cascader
v-model="detailForm.orgCode"
placeholder="请选择所属地区"
@change="handleAreaChange"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="经度:" prop="lon">
<el-input
:readonly="formEnable"
placeholder="请输入经度"
v-model="detailForm.lon"
></el-input>
</el-form-item>
<el-form-item label="纬度:" prop="lat">
<el-input
:readonly="formEnable"
placeholder="请输入维度"
v-model="detailForm.lat"
></el-input>
</el-form-item>
<el-form-item
label="所属单位:"
prop="possession"
style="width: 100%"
>
<el-input
:readonly="formEnable"
placeholder="请输入所属单位"
v-model="detailForm.possession"
></el-input>
</el-form-item>
<el-form-item label="地址:" prop="address" style="width: 100%">
<el-input
:readonly="formEnable"
placeholder="请输入详细地址"
v-model="detailForm.address"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div>
<TitleC titleName="仓库物资">
<template v-slot:option>
<div class="h-layout option">
<div class="h-layout h-titlec" @click="getList">
<svg-icon name="refurbish" class="icon" />
<span class="span">刷新</span>
</div>
<div
class="h-layout h-titlec"
@click="(dialogVisible = true), (form = {}), (readonly = false)"
>
<svg-icon name="add" class="icon" />
<span class="span">新建</span>
</div>
</div>
</template>
</TitleC>
<el-table
ref="loading"
v-loading="tableDataloading"
:data="tableData"
header-row-class-name="el-one-header"
border
>
<el-table-column
type="index"
align="center"
label="序列"
width="60"
></el-table-column>
<el-table-column
prop="equname"
:resizable="true"
align="center"
label="装备名称"
></el-table-column>
<el-table-column
prop="equnum"
:resizable="true"
align="center"
label="数量"
></el-table-column>
<el-table-column
prop="equtype"
:resizable="true"
align="center"
label="装备类型"
></el-table-column>
<el-table-column
prop="storageplace"
:resizable="true"
align="center"
label="存放场所"
></el-table-column>
<el-table-column
:resizable="true"
align="center"
width="260"
label="操作"
>
<template #default="scope">
<span
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = false)
"
>
<svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span>
</span>
<span
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = true)
"
>
<svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span>
</span>
<span class="operate" @click="delEquip(scope.row.othequipmentid)">
<svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span>
</span>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
class="pagination"
@size-change="getList"
@current-change="getList"
v-model:current-page.sync="currentPage"
:page-sizes="[10, 15, 20, 30]"
v-model:page-size.sync="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
background
>
</el-pagination>
</div>
</div>
<!-- 物资弹窗 -->
<AddEquDialog
:visible="dialogVisible"
:form="form"
:readonly="readonly"
:id="houseId"
@close="onclone"
/>
</div>
</template>
<script lang='ts' setup>
import { onMounted, reactive, ref } from "vue";
import { ElMessage, FormInstance, FormRules, ElMessageBox } from "element-plus";
import AddEquDialog from "./dialog/add-equip-dialog.vue";
import { areaTree } from "@/api/account";
import {
getHouseDetail,
getOthequipmentPage,
saveOtheWareHouse,
delOthequipment,
} from "@/api/Othteam";
import { useRoute } from "vue-router";
import { useRouter } from "vue-router";
import useUserStore from "@/store/modules/user";
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const router = useRouter();
const route = useRoute();
const detailForm = ref<any>({});
const formRef = ref<FormInstance>();
const ruleForm = reactive<FormRules>({
houseName: [{ required: true, message: "请输入仓库名称", trigger: "blur" }],
telephone: [
{
required: true,
message: "请输入仓库管理员联系方式",
trigger: "blur",
},
],
orgCode: [
{ required: true, message: "请选择仓库所属地区", trigger: "change" },
],
possession: [
{ required: true, message: "请输入仓库所属单位", trigger: "blur" },
],
address: [{ required: true, message: "请输入仓库", trigger: "blur" }],
name: [
{
required: true,
message: "请输入仓库管理员",
trigger: "change",
},
],
});
const formEnable = ref(true);
const readonly = ref(false);
const tableDataloading = ref(false);
const tableData = ref([]);
const houseId = ref();
const form = ref({});
const currentPage = ref(1);
const pageSize = ref(10);
const total = ref(0);
const dialogVisible = ref(false);
//
const resetPwd = () => {
formEnable.value = false;
};
//
const handleSumit = () => {
formRef.value?.validate((valid) => {
if (valid) {
detailForm.value.userId = userId.value;
saveOtheWareHouse(detailForm.value).then((res: any) => {
if (res.code == 1) {
ElMessage.success({
message: "保存成功",
});
formEnable.value = false;
} else
ElMessage.error({
message: res.message,
});
});
}
return false;
});
};
//
const clone = () => {
router.go(-1);
};
//
const getDetail = () => {
getHouseDetail(route.query.id).then((res: any) => {
detailForm.value = res.data;
});
};
//
const orgList = ref([]);
const getAreaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
const handleAreaChange = (val) => {
detailForm.value.orgCode =
detailForm.value.orgCode[detailForm.value.orgCode.length - 1];
};
//
const getList = () => {
tableDataloading.value = true;
let params = {
limit: pageSize.value,
page: currentPage.value,
houseId: houseId.value,
};
getOthequipmentPage(params).then((res: any) => {
tableData.value = res.data.list;
total.value = res.data.total;
tableDataloading.value = false;
});
};
/**
*删除
*/
const delEquip = (id) => {
ElMessageBox.confirm("是否确认删除?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
delOthequipment(id, userId.value).then((res: any) => {
if (res.code == 1) {
ElMessage.success({
message: "删除成功",
});
} else {
ElMessage.error({
message: res.message,
});
}
getList();
});
});
};
//
const refurbish = () => {
getDetail();
};
//
const onclone = () => {
dialogVisible.value = false;
form.value = {};
getList();
};
//
const editMember = (val) => {
dialogVisible.value = true;
form.value = val;
};
onMounted(() => {
houseId.value = route.query.id || "";
refurbish();
getAreaTree();
getList();
});
</script>
<style lang="scss" scoped>
.content {
width: 100%;
background: #fff;
border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgba(8, 33, 85, 0.1);
height: 100%;
padding: 0.83333vw;
overflow-y: scroll;
overflow-x: hidden !important;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
.detailForm-content {
margin-right: 30px;
}
:deep(.el-form) {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
:deep(.el-form-item) {
width: 45%;
}
</style>

View File

@ -22,13 +22,13 @@
label-position="right" label-position="right"
label-width="150px" label-width="150px"
:rules="ruleForm" :rules="ruleForm"
:model="addPostFactorForm" :model="addForm"
> >
<el-form-item label="仓库名称:" prop="houseName"> <el-form-item label="仓库名称:" prop="houseName">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入仓库名称" placeholder="请输入仓库名称"
v-model="addPostFactorForm.houseName" v-model="addForm.houseName"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -36,7 +36,7 @@
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入装备名称" placeholder="请输入装备名称"
v-model="addPostFactorForm.equname" v-model="addForm.equname"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -46,14 +46,14 @@
:min="0" :min="0"
:step="1" :step="1"
step-strictly step-strictly
v-model="addPostFactorForm.equnum" v-model="addForm.equnum"
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="存放场所:" prop="storageplace"> <el-form-item label="存放场所:" prop="storageplace">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入存放场所" placeholder="请输入存放场所"
v-model="addPostFactorForm.storageplace" v-model="addForm.storageplace"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -61,7 +61,7 @@
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入联系电话" placeholder="请输入联系电话"
v-model="addPostFactorForm.equphone" v-model="addForm.equphone"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -69,7 +69,7 @@
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入所属单位" placeholder="请输入所属单位"
v-model="addPostFactorForm.possession" v-model="addForm.possession"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -77,7 +77,7 @@
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入行业领域" placeholder="请输入行业领域"
v-model="addPostFactorForm.industry" v-model="addForm.industry"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -85,7 +85,7 @@
<el-select <el-select
:disabled="props.readonly" :disabled="props.readonly"
placeholder="请选择类型" placeholder="请选择类型"
v-model="addPostFactorForm.equtype" v-model="addForm.equtype"
> >
<el-option <el-option
v-for="(item, index) in equtypes" v-for="(item, index) in equtypes"
@ -99,7 +99,7 @@
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入主要功能" placeholder="请输入主要功能"
v-model="addPostFactorForm.equfunction" v-model="addForm.equfunction"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -117,8 +117,8 @@
:disabled="props.readonly" :disabled="props.readonly"
> >
<img <img
v-if="addPostFactorForm.equipPhoto" v-if="addForm.equipPhoto"
:src="baseImgUrl + addPostFactorForm.equipPhoto" :src="baseImgUrl + addForm.equipPhoto"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
/> />
<el-icon v-else class="avatar-uploader-icon"> <el-icon v-else class="avatar-uploader-icon">
@ -228,16 +228,17 @@ const props = defineProps({
id: String, id: String,
}); });
const listperformid = ref(props.id); const listperformid = ref(props.id);
const addPostFactorForm = ref(<any>{}); const addForm = ref(<any>{});
const emits = defineEmits(["close", "onSubmit"]); const emits = defineEmits(["close", "onSubmit"]);
//退 //退
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
addPostFactorForm.value.othequipmentid = addForm.value.othequipmentid = addForm.value.othequipmentid || uuid.value;
addPostFactorForm.value.othequipmentid || uuid.value; addForm.value.userId = userId.value;
addPostFactorForm.value.userId = userId.value; addForm.value.houseId = props.id;
saveOthequipment(addPostFactorForm.value).then((res: any) => {
saveOthequipment(addForm.value).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "保存成功", message: "保存成功",
@ -266,7 +267,7 @@ const handleUpload = (res) => {
let file = res.file; let file = res.file;
const formData = new FormData(); const formData = new FormData();
formData.append("file", file); formData.append("file", file);
let uuids = addPostFactorForm.value.othequipmentid || uuid.value; let uuids = addForm.value.othequipmentid || uuid.value;
uploadFile(userId.value, uuids, FileType.equipment, formData).then( uploadFile(userId.value, uuids, FileType.equipment, formData).then(
(res: any) => { (res: any) => {
if (res) { if (res) {
@ -281,16 +282,15 @@ const handleUpload = (res) => {
}; };
// //
const getFiles = () => { const getFiles = () => {
getFile( getFile(addForm.value.othequipmentid || uuid.value, FileType.equipment).then(
addPostFactorForm.value.othequipmentid || uuid.value, (res: any) => {
FileType.equipment if (res.data.length > 0) {
).then((res: any) => { const path = res.data[res.data.length - 1];
if (res.data.length > 0) { addForm.value.equipPhoto =
const path = res.data[res.data.length - 1]; import.meta.env.VITE_UPLOAD_URL + path.filepath;
addPostFactorForm.value.equipPhoto = }
import.meta.env.VITE_UPLOAD_URL + path.filepath;
} }
}); );
}; };
// //
const onclone = () => { const onclone = () => {
@ -305,7 +305,7 @@ watch(
uuid.value = getUUID(); uuid.value = getUUID();
if (val) { if (val) {
if (!props.visible) return; if (!props.visible) return;
addPostFactorForm.value = val; addForm.value = val;
getFiles(); getFiles();
} }
} }

View File

@ -3,12 +3,12 @@
<BaseDialog <BaseDialog
:dialogVisible="props.visible" :dialogVisible="props.visible"
@close="onclone" @close="onclone"
:titleName="props.form.opInstructionId ? '编辑应急仓库' : '新增应急仓库'" :titleName="props.form.houseId ? '编辑应急仓库' : '新增应急仓库'"
width="50%" width="50%"
@onSubmit="handleSubmit" @onSubmit="handleSubmit"
:footerclosed="true" :footerclosed="true"
:diafooter="true" :diafooter="true"
:footerkeepnaem='props.readonly?false:true' :footerkeepnaem="props.readonly ? false : true"
> >
<div class="detailForm-content"> <div class="detailForm-content">
<el-form <el-form
@ -25,23 +25,12 @@
v-model="addPostFactorForm.houseName" v-model="addPostFactorForm.houseName"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="管理员:" prop="nameId"> <el-form-item label="管理员:" prop="name">
<el-select <el-input
v-model="addPostFactorForm.nameId" :readonly="props.readonly"
placeholder="请选择管理员" placeholder="请输入管理员"
filterable v-model="addPostFactorForm.name"
remote ></el-input>
:remote-method="remoteMethod"
@change="adminOption"
>
<el-option
v-for="item in adminOptions"
:key="item.userId"
:value="item.userId"
:label="item.chinaname + '' + item.performclassname + ''"
>
</el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="联系方式:" prop="telephone"> <el-form-item label="联系方式:" prop="telephone">
<el-input <el-input
@ -71,30 +60,20 @@
v-model="addPostFactorForm.lon" v-model="addPostFactorForm.lon"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="度:" prop="lat"> <el-form-item label="度:" prop="lat">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入维度" placeholder="请输入维度"
v-model="addPostFactorForm.lat" v-model="addPostFactorForm.lat"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属单位:" prop="possession"> <el-form-item label="所属单位:" prop="possession" style="width: 100%">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入所属单位" placeholder="请输入所属单位"
v-model="addPostFactorForm.possession" v-model="addPostFactorForm.possession"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item
label="装备总数:"
v-if="props.form && Object.keys(props.form).length > 0"
>
<el-input
disabled
:readonly="props.readonly"
v-model="addPostFactorForm.houseTotal"
></el-input>
</el-form-item> -->
<el-form-item label="地址:" prop="address" style="width: 100%"> <el-form-item label="地址:" prop="address" style="width: 100%">
<el-input <el-input
@ -103,17 +82,6 @@
v-model="addPostFactorForm.address" v-model="addPostFactorForm.address"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item
label="二维码:"
v-if="props.form && Object.keys(props.form).length > 0"
>
<img
width="200px"
height="200px"
:src="addPostFactorForm.qrCode"
alt=""
/>
</el-form-item> -->
</el-form> </el-form>
</div> </div>
</BaseDialog> </BaseDialog>
@ -123,7 +91,11 @@ import { reactive, ref, onMounted, watch } from "vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getYears, getUUID, FileType } from "@/utils/common"; import { getYears, getUUID, FileType } from "@/utils/common";
import { delOthpersonHouse, getOtheWareHouseList,getHouseSysUser } from "@/api/Othteam"; import {
saveOtheWareHouse,
getOtheWareHouseList,
getHouseSysUser,
} from "@/api/Othteam";
import { areaTree } from "@/api/account"; import { areaTree } from "@/api/account";
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const userStore = useUserStore(); const userStore = useUserStore();
@ -149,12 +121,12 @@ const ruleForm = reactive<FormRules>({
name: [ name: [
{ {
required: true, required: true,
message: "请选择仓库管理员", message: "请输入仓库管理员",
trigger: "change", trigger: "change",
}, },
], ],
}); });
const adminOptions = ref([]) const adminOptions = ref([]);
const props = defineProps({ const props = defineProps({
visible: { visible: {
type: Boolean, type: Boolean,
@ -174,29 +146,32 @@ const emits = defineEmits(["close", "onSubmit"]);
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
// addPostFactorForm.value.chinaname = adminId.value;
addPostFactorForm.value.houseId = addPostFactorForm.value.houseId =
addPostFactorForm.value.houseId || uuid.value; addPostFactorForm.value.houseId || uuid.value;
addPostFactorForm.value.userId = userId.value; addPostFactorForm.value.userId = userId.value;
delOthpersonHouse(addPostFactorForm.value).then((res: any) => { saveOtheWareHouse(addPostFactorForm.value).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "保存成功", message: "保存成功",
type: "success", type: "success",
}); });
onclone(); onclone();
} } else
ElMessage.error({
message: res.message,
type: "success",
});
}); });
} }
return false; return false;
}); });
}; };
// //
const getGovUserList = () => { const getGovUserList = () => {
getHouseSysUser(userId.value).then((res:any) => { getHouseSysUser(userId.value).then((res: any) => {
adminOptions.value = res.data; adminOptions.value = res.data;
}) });
} };
// //
const orgList = ref([]); const orgList = ref([]);
const getareaTree = () => { const getareaTree = () => {
@ -205,22 +180,23 @@ const getareaTree = () => {
}); });
}; };
const handleAreaChange = (val) => { const handleAreaChange = (val) => {
addPostFactorForm.value.orgCode = addPostFactorForm.value.orgCode[addPostFactorForm.value.orgCode.length - 1]; addPostFactorForm.value.orgCode =
addPostFactorForm.value.orgCode[addPostFactorForm.value.orgCode.length - 1];
addPostFactorForm.value.streetCode = val[1] || ""; addPostFactorForm.value.streetCode = val[1] || "";
addPostFactorForm.value.communityCode = val[2] || ""; addPostFactorForm.value.communityCode = val[2] || "";
} };
// //
const condition =ref('') const condition = ref("");
const remoteMethod = (val) => { const remoteMethod = (val) => {
condition.value = val; condition.value = val;
getGovUserList(); getGovUserList();
} };
// //
const adminId =ref('') const adminId = ref("");
const adminOption = (val) => { const adminOption = (val) => {
adminId.value = val; adminId.value = val;
} };
// //
const onclone = () => { const onclone = () => {
emits("close"); emits("close");

View File

@ -22,7 +22,7 @@
<el-input <el-input
v-model="search" v-model="search"
@keydown.enter.native="getList" @keydown.enter.native="getList"
placeholder="请输入关键字" placeholder="输入仓库名称"
class="search-input" class="search-input"
> >
<template #append> <template #append>
@ -40,9 +40,13 @@
v-loading="tableDataloading" v-loading="tableDataloading"
:data="tableData" :data="tableData"
header-row-class-name="el-one-header" header-row-class-name="el-one-header"
@selection-change="handleSelectionChange"
border border
> >
<el-table-column
type="selection"
align="center"
width="55"
></el-table-column>
<el-table-column <el-table-column
type="index" type="index"
align="center" align="center"
@ -56,42 +60,28 @@
label="仓库名称" label="仓库名称"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="equname" prop="nameText"
:resizable="true" :resizable="true"
align="center" align="center"
label="装备名称" label="管理员"
></el-table-column>
<el-table-column
prop="equnum"
:resizable="true"
align="center"
label="数量"
></el-table-column>
<el-table-column
prop="equtype"
:resizable="true"
align="center"
label="装备类型"
></el-table-column>
<el-table-column
prop="storageplace"
:resizable="true"
align="center"
label="存放场所"
></el-table-column>
<el-table-column
prop="industry"
:resizable="true"
align="center"
label="行业领域"
></el-table-column>
<el-table-column
:resizable="true"
align="center"
width="260"
label="操作"
> >
<template #default="scope">
{{ scope.row.nameText || "-" }}
</template>
</el-table-column>
<el-table-column
prop="telephone"
:resizable="true"
align="center"
label="联系方式"
></el-table-column>
<el-table-column
prop="address"
:resizable="true"
align="center"
label="地址"
></el-table-column>
<el-table-column align="center" label="操作">
<template #default="scope"> <template #default="scope">
<span <span
class="operate" class="operate"
@ -102,16 +92,11 @@
<svg-icon name="edit" class="icon"></svg-icon> <svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span> <span class="edit">编辑</span>
</span> </span>
<span <span class="operate" @click="toDetail(scope.row.houseId)">
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = true)
"
>
<svg-icon name="detail" class="icon"></svg-icon> <svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span> <span class="detail">详情</span>
</span> </span>
<span class="operate" @click="deletelist(scope.row.othequipmentid)"> <span class="operate" @click="del(scope.row.houseId)">
<svg-icon name="delete" class="icon"></svg-icon> <svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span> <span class="func">删除</span>
</span> </span>
@ -132,7 +117,7 @@
> >
</el-pagination> </el-pagination>
<!-- 新增 --> <!-- 新增 -->
<AddWarehouse <AddDetails
:visible="dialogVisible" :visible="dialogVisible"
:form="form" :form="form"
:readonly="readonly" :readonly="readonly"
@ -144,13 +129,16 @@
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { getOthequipmentPage, delOthequipment } from "@/api/Othteam"; import { getOtheWareHousePage, delOtheWareHouse } from "@/api/Othteam";
import AddWarehouse from "./add-edit-dialog.vue"; import AddDetails from "./dialog/add-house-dialog.vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import { useRouter } from "vue-router";
const router = useRouter();
const userStore = useUserStore(); const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId); const userId = ref(user.value.userId);
const search = ref([]); const search = ref([]);
const tableData = ref([]); const tableData = ref([]);
const currentPage = ref(1); const currentPage = ref(1);
@ -161,32 +149,33 @@ const dialogVisible = ref(false);
const form = ref({}); const form = ref({});
const readonly = ref(false); const readonly = ref(false);
const handleSelectionChange = () => {};
// //
const tableDataloading = ref(false); const tableDataloading = ref(false);
const getList = () => { const getList = () => {
tableDataloading.value = true; tableDataloading.value = true;
let params = { let params = {
equname: search.value, houseName: search.value,
equtype: null,
houseId: null,
limit: pageSize.value, limit: pageSize.value,
page: currentPage.value, page: currentPage.value,
}; };
getOthequipmentPage(params).then((res: any) => { getOtheWareHousePage(params).then((res: any) => {
tableData.value = res.data.list; tableData.value = res.data.list;
total.value = res.data.total; total.value = res.data.total;
tableDataloading.value = false; tableDataloading.value = false;
}); });
}; };
// //
const deletelist = (id) => { const del = (id) => {
ElMessageBox.confirm("是否确认删除?", "提示", { ElMessageBox.confirm("是否确认删除?", "提示", {
confirmButtonText: "是", confirmButtonText: "是",
cancelButtonText: "否", cancelButtonText: "否",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
delOthequipment(id, userId.value).then((res: any) => { let params = {
houseId: id,
userId: userId.value,
};
delOtheWareHouse(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "删除成功", message: "删除成功",
@ -206,12 +195,19 @@ const deletelist = (id) => {
const onclone = () => { const onclone = () => {
dialogVisible.value = false; dialogVisible.value = false;
form.value = {}; form.value = {};
getList();
};
//
const toDetail = (id) => {
router.push({
name: "house-detail",
query: { id: id },
});
}; };
onMounted(() => { onMounted(() => {
getList(); getList();
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {
width: 100%; width: 100%;

View File

@ -179,7 +179,7 @@ const todetail = (id) => {
}); });
}; };
// //
const onclone = () => { const onclone = () => {
dialogVisible.value = false; dialogVisible.value = false;
form.value = {}; form.value = {};