|
@@ -6,14 +6,19 @@
|
|
|
<div>新增出库单</div>
|
|
|
</div>
|
|
|
<div class="common-dialog-box">
|
|
|
- <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="120px">
|
|
|
+ <el-form ref="formRef" :model="form" :rules="rules" label-width="160px">
|
|
|
<el-form-item label="仓库名称:" prop="warehouse_name">
|
|
|
<el-input v-model="form.warehouse_name" placeholder="请输入仓库名称" style="width: 468px !important" />
|
|
|
</el-form-item>
|
|
|
-
|
|
|
+ <el-form-item label="所属区县:" prop="area_name">
|
|
|
+ <el-select v-model="form.area_name">
|
|
|
+ <el-option v-for="(item, index) in district_type" :key="index" :label="item.label" :value="item.label" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="状态:" prop="status">
|
|
|
- <el-input v-model="form.status" placeholder="请输入状态" style="width: 468px !important" />
|
|
|
- <!-- 注意:如果状态是固定选项(如启用/禁用),则可以使用el-select -->
|
|
|
+ <el-select v-model="form.status">
|
|
|
+ <el-option v-for="(item, index) in enable_status" :key="index" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="联系人:" prop="contact_person">
|
|
@@ -24,138 +29,155 @@
|
|
|
<el-input v-model="form.contact_phone" placeholder="请输入联系电话" style="width: 468px !important" />
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="联系地址:" prop="contact_address">
|
|
|
- <el-input v-model="form.contact_address" placeholder="请输入联系地址" style="width: 468px !important" />
|
|
|
+ <el-form-item label="联系地址:" prop="address">
|
|
|
+ <el-input v-model="form.address" placeholder="请输入联系地址" style="width: 468px !important">
|
|
|
+ <template #append>
|
|
|
+ <el-button type="primary" @click="openMapDialog">地图定位</el-button>
|
|
|
+ </template>
|
|
|
+ </el-input>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="备注:" prop="remarks">
|
|
|
- <el-input v-model="form.remarks" placeholder="请输入备注" style="width: 468px !important" />
|
|
|
+ <el-form-item label="经度:" prop="longitude">
|
|
|
+ <el-input v-model="form.longitude" placeholder="请输入经度" disabled style="width: 468px !important" />
|
|
|
</el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="创建时间:" prop="creation_time">
|
|
|
- <el-date-picker
|
|
|
- v-model="form.creation_time"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择创建时间"
|
|
|
- style="width: 468px !important"
|
|
|
- />
|
|
|
- <!-- 注意:这里使用了el-date-picker来处理日期时间,如果需要其他格式请调整type属性 -->
|
|
|
+ <el-form-item label="纬度:" prop="latitude">
|
|
|
+ <el-input v-model="form.latitude" placeholder="请输入纬度" disabled style="width: 468px !important" />
|
|
|
</el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="更新时间:" prop="update_time">
|
|
|
- <el-date-picker
|
|
|
- v-model="form.update_time"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择更新时间"
|
|
|
+ <el-form-item label="类型:" prop="type">
|
|
|
+ <el-select v-model="form.type">
|
|
|
+ <el-option v-for="(item, index) in warehouse_type" :key="index" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="等级:" prop="level">
|
|
|
+ <el-select v-model="form.level">
|
|
|
+ <el-option v-for="(item, index) in warehouse_level" :key="index" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="物资保管部门名称:" prop="storage_dept_id">
|
|
|
+ <el-tree-select
|
|
|
+ v-model="form.storage_dept_id"
|
|
|
+ :data="deptTreeData"
|
|
|
+ :props="{ label: 'label', value: 'id', children: 'children' }"
|
|
|
+ :render-after-expand="false"
|
|
|
style="width: 468px !important"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="创建人:" prop="creator">
|
|
|
- <el-input v-model="form.creator" placeholder="请输入创建人" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="创建人账号:" prop="creator_account">
|
|
|
- <el-input v-model="form.creator_account" placeholder="请输入创建人账号" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="更新人:" prop="updater">
|
|
|
- <el-input v-model="form.updater" placeholder="请输入更新人" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="类型:" prop="type">
|
|
|
- <el-input v-model="form.type" placeholder="请输入类型" style="width: 468px !important" />
|
|
|
- <!-- 注意:如果类型是固定选项,则可以使用el-select -->
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="等级:" prop="grade">
|
|
|
- <el-input v-model="form.grade" placeholder="请输入等级" style="width: 468px !important" />
|
|
|
- <!-- 注意:如果等级是固定选项(如A/B/C),则可以使用el-select -->
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="物资保管部门编号:" prop="material_department_id">
|
|
|
- <el-input v-model="form.material_department_id" placeholder="请输入物资保管部门编号" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="物资保管部门名称:" prop="material_department_name">
|
|
|
- <el-input v-model="form.material_department_name" placeholder="请输入物资保管部门名称" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="地区:" prop="region">
|
|
|
- <el-input v-model="form.region" placeholder="请输入地区" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="经度:" prop="longitude">
|
|
|
- <el-input v-model="form.longitude" placeholder="请输入经度" style="width: 468px !important" />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="纬度:" prop="latitude">
|
|
|
- <el-input v-model="form.latitude" placeholder="请输入纬度" style="width: 468px !important" />
|
|
|
+ <el-form-item label="占地面积(平方米):" prop="area">
|
|
|
+ <el-input v-model="form.area" placeholder="请输入占地面积(平方米)" style="width: 468px !important" />
|
|
|
</el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="占地面积(平方米):" prop="area_square_meters">
|
|
|
- <el-input v-model="form.area_square_meters" placeholder="请输入占地面积(平方米)" style="width: 468px !important" />
|
|
|
+ <el-form-item label="备注:" prop="remark">
|
|
|
+ <el-input v-model="form.remark" :autosize="{ minRows: 3, maxRows: 5 }" type="textarea" style="width: 468px" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div class="common-dialog-footer">
|
|
|
<el-button @click="closeDialog">取消</el-button>
|
|
|
- <el-button :loading="buttonLoading" type="primary" @click="submitForm">确定</el-button>
|
|
|
+ <el-button :loading="buttonLoading" type="primary" @click="submitForm(formRef)">确定</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <!-- 地图弹窗 -->
|
|
|
+ <company-map v-model:visible="mapDialogVisible" :address="form.address" @confirm="handleMapChange" />
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
import { ref, reactive, toRefs } from 'vue';
|
|
|
+import {
|
|
|
+ createMaterialWarehouse,
|
|
|
+ getMaterialWarehouseInfo,
|
|
|
+ updateMaterialWarehouse
|
|
|
+} from '@/api/comprehensiveGuarantee/materialReserveManagement/godownManagement';
|
|
|
+import { validatePhone } from '@/utils/validate';
|
|
|
+import { deptList } from '@/api/inspectionWork/inspector';
|
|
|
const emits = defineEmits(['close']);
|
|
|
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
+const { enable_status, warehouse_level, warehouse_type, district_type } = toRefs<any>(proxy?.useDict('enable_status', 'warehouse_level', 'warehouse_type', 'district_type'));
|
|
|
+const props = defineProps({
|
|
|
+ id: String
|
|
|
+});
|
|
|
+const formRef = ref();
|
|
|
const buttonLoading = ref(false);
|
|
|
-// 表单初始数据
|
|
|
-const initFormData = {
|
|
|
- warehouse_name: '',
|
|
|
- status: '',
|
|
|
- contact_person: '',
|
|
|
- contact_phone: '',
|
|
|
- contact_address: '',
|
|
|
- remarks: '',
|
|
|
- creation_time: '',
|
|
|
- update_time: '',
|
|
|
- creator: '',
|
|
|
- creator_account: '',
|
|
|
- updater: '',
|
|
|
- type: '',
|
|
|
- grade: '',
|
|
|
- material_department_id: '',
|
|
|
- material_department_name: '',
|
|
|
- region: '',
|
|
|
- longitude: '',
|
|
|
- latitude: '',
|
|
|
- area_square_meters: ''
|
|
|
-};
|
|
|
|
|
|
// 表单数据
|
|
|
const data = reactive({
|
|
|
- form: { ...initFormData },
|
|
|
+ form: {
|
|
|
+ warehouse_name: '',
|
|
|
+ status: '',
|
|
|
+ contact_person: '',
|
|
|
+ contact_phone: '',
|
|
|
+ area_name: '',
|
|
|
+ address: '',
|
|
|
+ longitude: '',
|
|
|
+ latitude: '',
|
|
|
+ type: '',
|
|
|
+ level: '',
|
|
|
+ storage_dept_id: '',
|
|
|
+ area: '',
|
|
|
+ remark: ''
|
|
|
+ },
|
|
|
rules: {
|
|
|
- event_title: [{ required: true, message: '事件标题不能为空', trigger: 'blur' }],
|
|
|
- event_type: [{ required: true, message: '事件类型不能为空', trigger: 'blur' }],
|
|
|
- event_level: [{ required: true, message: '事件等级不能为空', trigger: 'blur' }],
|
|
|
- event_status: [{ required: true, message: '事件状态不能为空', trigger: 'blur' }],
|
|
|
- address: [{ required: true, message: '事件地点不能为空', trigger: 'blur' }],
|
|
|
- event_time: [{ required: true, message: '事发时间不能为空', trigger: 'blur' }],
|
|
|
- report_time: [{ required: true, message: '上报时间不能为空', trigger: 'blur' }],
|
|
|
- event_source: [{ required: true, message: '事件来源不能为空', trigger: 'blur' }],
|
|
|
- event_description: [{ required: true, message: '事件描述不能为空', trigger: 'blur' }],
|
|
|
- contact: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }]
|
|
|
+ warehouse_name: [{ required: true, message: '请输入仓库名称', trigger: 'blur' }],
|
|
|
+ area_name: [{ required: true, message: '请选择所属区县', trigger: 'change' }],
|
|
|
+ status: [{ required: true, message: '请选择状态', trigger: 'change' }],
|
|
|
+ contact_person: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
|
|
|
+ contact_phone: [
|
|
|
+ { required: true, message: '请输入联系电话', trigger: 'blur' },
|
|
|
+ { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ address: [{ required: true, message: '请输入联系地址', trigger: 'blur' }],
|
|
|
+ longitude: [{ required: true, message: '请输入经度', trigger: 'blur' }],
|
|
|
+ latitude: [{ required: true, message: '请输入纬度', trigger: 'blur' }],
|
|
|
+ type: [{ required: true, message: '请选择类型', trigger: 'change' }],
|
|
|
+ level: [{ required: true, message: '请选择等级', trigger: 'change' }],
|
|
|
+ storage_dept_id: [{ required: true, message: '请选择物资保管部门名称', trigger: 'change' }],
|
|
|
+ area: [{ required: true, message: '请输入占地面积', trigger: 'blur' }]
|
|
|
}
|
|
|
});
|
|
|
|
|
|
const { form, rules } = toRefs(data);
|
|
|
+let deptTreeData = ref([]);
|
|
|
|
|
|
const closeDialog = () => {
|
|
|
emits('close');
|
|
|
};
|
|
|
-const submitForm = () => {
|
|
|
-}
|
|
|
+// 地图定位
|
|
|
+const mapDialogVisible = ref(false);
|
|
|
+const openMapDialog = () => {
|
|
|
+ mapDialogVisible.value = true;
|
|
|
+};
|
|
|
+const handleMapChange = (data) => {
|
|
|
+ form.value.address = data.address;
|
|
|
+ form.value.longitude = data.lnglat[0];
|
|
|
+ form.value.latitude = data.lnglat[1];
|
|
|
+ mapDialogVisible.value = false;
|
|
|
+};
|
|
|
+const submitForm = async (formEl) => {
|
|
|
+ if (!formEl) return;
|
|
|
+ await formEl.validate((valid, fields) => {
|
|
|
+ if (valid) {
|
|
|
+ if (props.id) {
|
|
|
+ updateMaterialWarehouse(form.value, props.id).then(() => {
|
|
|
+ proxy.$modal.msgSuccess('修改成功');
|
|
|
+ emits('close');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ createMaterialWarehouse(form.value).then(() => {
|
|
|
+ proxy.$modal.msgSuccess('新增成功');
|
|
|
+ emits('close');
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ deptList().then((res) => {
|
|
|
+ deptTreeData.value = res.data;
|
|
|
+ });
|
|
|
+ if (!props.id) return;
|
|
|
+ getMaterialWarehouseInfo(props.id).then((res) => {
|
|
|
+ form.value = res.data;
|
|
|
+ });
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|