Browse Source

企业画像

yangyuxuan 7 months ago
parent
commit
ced317c391

+ 1 - 0
src/types/components.d.ts

@@ -42,6 +42,7 @@ declare module 'vue' {
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElInput: typeof import('element-plus/es')['ElInput']
+    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']

+ 12 - 12
src/views/comprehensiveGuarantee/MaterialReserveManagement/addOutbound.vue

@@ -7,11 +7,11 @@
       </div>
       <div class="common-dialog-box">
         <el-form ref="eventFormRef" :model="form" :rules="rules" label-width="200px">
-          <el-form-item label="出库单号:" prop="invoice_number">
+          <el-form-item label="出库单号:" prop="outbound_number">
             <el-input v-model="form.outbound_number" placeholder="请输入出库单号" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="库房名称:" prop="warehouse_number">
+          <el-form-item label="库房名称:" prop="warehouse_id">
             <el-tree-select
               v-model="form.warehouse_id"
               :data="warehouseName"
@@ -22,35 +22,35 @@
             />
           </el-form-item>
 
-          <el-form-item label="出库单商品总体积(cm³):" prop="commodity_volume">
+          <el-form-item label="出库单商品总体积(cm³):" prop="total_volume">
             <el-input v-model="form.total_volume" placeholder="请输入出库单商品总体积" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="出库单商品总重量(kg):" prop="commodity_weight">
+          <el-form-item label="出库单商品总重量(kg):" prop="total_weight">
             <el-input v-model="form.total_weight" placeholder="请输入出库单商品总重量" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="出库单发货总体积(cm³):" prop="shipped_volume">
+          <el-form-item label="出库单发货总体积(cm³):" prop="total_shipping_volume">
             <el-input v-model="form.total_shipping_volume" placeholder="请输入出库单发货总体积" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="出库单发货总重量(kg):" prop="shipped_weight">
+          <el-form-item label="出库单发货总重量(kg):" prop="total_shipping_weight">
             <el-input v-model="form.total_shipping_weight" placeholder="请输入出库单发货总重量" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="出库单商品总数量:" prop="commodity_number">
+          <el-form-item label="出库单商品总数量:" prop="total_quantity">
             <el-input v-model="form.total_quantity" placeholder="请输入出库单商品总数量" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="出库单发货时间:" prop="delivery_time">
-            <el-input v-model="form.shipping_time" placeholder="请输入出库单发货时间" style="width: 468px !important" />
+          <el-form-item label="出库单发货时间:" prop="shipping_time">
+            <el-date-picker v-model="form.shipping_time" type="datetime" placeholder="请输入出库单发货时间" value-format="YYYY-MM-DD" style="width: 468px"></el-date-picker>
           </el-form-item>
 
-          <el-form-item label="灾种名称:" prop="disaster_name">
+          <el-form-item label="灾种名称:" prop="disaster_type">
             <el-input v-model="form.disaster_type" placeholder="请输入灾种名称" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="调运机构名称:" prop="organization_name">
+          <el-form-item label="调运机构名称:" prop="dispatching_agency">
             <el-input v-model="form.dispatching_agency" placeholder="请输入调运机构名称" style="width: 468px !important" />
           </el-form-item>
 
@@ -58,7 +58,7 @@
             <el-input v-model="form.shipper_name" placeholder="请输入发货人姓名" style="width: 468px !important" />
           </el-form-item>
 
-          <el-form-item label="发货人手机:" prop="shipper_phone">
+          <el-form-item label="发货人手机:" prop="shipper_mobile">
             <el-input v-model="form.shipper_mobile" placeholder="请输入发货人手机" style="width: 468px !important" />
           </el-form-item>
 

+ 2 - 2
src/views/comprehensiveGuarantee/MaterialReserveManagement/outboundDetails.vue

@@ -5,9 +5,9 @@
         <h3 class="common-dialog-title">查看详情</h3>
       </div>
       <div class="common-dialog-box">
-        <el-form ref="formRef" :model="form" label-width="160px">
+        <el-form ref="formRef" :model="form" label-width="160px"  disabled class="custom-disabled" >
           <el-form-item label="仓库名称:" prop="warehouse_id">
-            <el-input v-model="form.warehouse_id" disabled class="custom-disabled" style="width: 468px" />
+            <el-input v-model="form.warehouse_id" style="width: 468px" />
           </el-form-item>
           <el-form-item label="出库单商品总体积(cm³):" prop="total_volume">
             <el-input v-model="form.total_volume" style="width: 468px" />

+ 25 - 13
src/views/riskPrevention/SafetyProductionManagement/BusinessPortraits.vue

@@ -6,7 +6,7 @@
         <transition name="fade">
           <div v-show="showSearch" class="mb-[10px]">
             <el-form ref="queryFormRef" :model="queryParams" :inline="true">
-              <el-form-item :span="5" label="辖区县:" prop="area_code" label-width="auto">
+              <el-form-item :span="5" label="辖区县" prop="area_code" label-width="auto">
                 <el-select v-model="queryParams.area_code" placeholder="全部" clearable>
                   <el-option v-for="item in county" :key="item.value" :label="item.label" :value="item.value"></el-option>
                 </el-select>
@@ -31,25 +31,25 @@
                 <el-button type="primary" icon="Plus" @click="handleAdd">新建</el-button>
               </el-col>
               <el-col :span="1.5">
-                <el-button type="danger" plain :disabled="multiple" icon="Delete" @click="handleDelete(selectedRow)"> 删除 </el-button>
+                <el-button type="danger" plain :disabled="selected === 0" icon="Delete" @click="handleDelete(selectedRow)"> 删除 </el-button>
               </el-col>
             </el-row>
           </div>
         </transition>
         <el-table ref="multipleTable" v-loading="loading" :data="tableData" border :max-height="maxHeight" style="width: 96%" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" fixed />
-          <el-table-column label="企业名称" align="center" prop="company_name" fixed show-overflow-tooltip/>
-          <el-table-column label="辖区省" align="center" prop="province" show-overflow-tooltip/>
-          <el-table-column label="辖区市" align="center" prop="city" show-overflow-tooltip/>
-          <el-table-column label="辖区县" align="center" prop="district" show-overflow-tooltip/>
-          <el-table-column label="企业地址" align="center" prop="company_address" show-overflow-tooltip/>
-          <el-table-column label="企业负责人" align="center" prop="responsible_person" show-overflow-tooltip/>
-          <el-table-column label="移动电话" align="center" prop="phone" show-overflow-tooltip/>
-          <el-table-column label="企业类型" align="center" prop="company_type" show-overflow-tooltip/>
-                    <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
+          <el-table-column label="企业名称" align="center" prop="company_name" fixed />
+          <el-table-column label="辖区省" align="center" prop="province" />
+          <el-table-column label="辖区市" align="center" prop="city" />
+          <el-table-column label="辖区县" align="center" prop="district" />
+          <el-table-column label="企业地址" align="center" prop="company_address" />
+          <el-table-column label="企业负责人" align="center" prop="responsible_person" />
+          <el-table-column label="移动电话" align="center" prop="phone" />
+          <el-table-column label="企业类型" align="center" prop="company_type" />
+          <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
             <template #default="scope">
               <el-button type="text" class="common-btn-text-primary" @click="handleedit(scope.row)">编辑</el-button>
-              <el-button type="text" class="common-btn-text-primary" @click="handleDelete(scope.row)">移除</el-button>
+              <el-button type="text" class="common-btn-text-danger" @click="handleDelete(scope.row)">移除</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -58,7 +58,7 @@
           v-model:page="queryParams.page"
           v-model:limit="queryParams.pageSize"
           :total="total"
-          @pagination="tableData"
+          @pagination="fetchWorkrData"
         />
       </div>
     </div>
@@ -84,6 +84,8 @@ const single = ref(true);
 const loading = ref(false);
 const maxHeight = ref(window.innerHeight * 0.8);
 const total = ref();
+const selectedRow = ref();
+const selected = ref(0);
 // 处理窗口大小变化
 const handleResize = () => {
   maxHeight.value = window.innerHeight * 0.8;
@@ -169,6 +171,15 @@ const fetchWorkrData = () => {
   loading.value = true;
   getCompanyList(queryParams.value)
     .then((res) => {
+      res.data.forEach(item => {
+        if (item.company_type === '1') {
+          item.company_type = "危化企业";
+        } else if (item.company_type === '2') {
+          item.company_type = "非煤矿山";
+        } else {
+          item.company_type = "工贸";
+        }
+      })
       tableData.value = res.data;
       total.value = res.total;
     })
@@ -180,6 +191,7 @@ const fetchWorkrData = () => {
 const handleSelectionChange = (selection) => {
   ids.value = selection.map((item) => item.id);
   selectedRow.value = selection.length === 1 ? selection[0] : null;
+  selected.value = selection.length;
   single.value = selection.length != 1;
   multiple.value = !selection.length;
 };

+ 37 - 31
src/views/riskPrevention/SafetyProductionManagement/BussinessAdd.vue

@@ -5,27 +5,27 @@
       <div class="common-dialog-content">
         <div class="common-dialog-title-box">
           <i class="common-dialog-title-icon" />
-          <el-form-item>
-            <div class="back-btn" @click="goBack">
-              <el-icon><Back /></el-icon>
-              返回上一级
-            </div>
-          </el-form-item>
           <div>新建企业</div>
         </div>
         <div class="common-dialog-box">
           <el-form ref="demoFormRef" :model="form" label-width="100px" :rules="rules">
             <el-form-item label="企业名称:" prop="company_name">
-              <el-input v-model="form.company_name" placeholder="请输入企业名称" />
-            </el-form-item>
-            <el-form-item label="辖区省:" prop="province">
-              <el-input v-model="form.province" placeholder="请输入辖区省" />
-            </el-form-item>
-            <el-form-item label="辖区市:" prop="city">
-              <el-input v-model="form.city" placeholder="请输入辖区市" />
+              <el-input v-model="form.company_name" placeholder="请输入企业名称" style="width: 468px" />
             </el-form-item>
+<!--            <el-form-item label="辖区省:" prop="province">-->
+<!--              <el-select v-model="form.province" placeholder="请选择辖区省">-->
+<!--                <el-option v-for="item in provinceList" :label="item.label" :value="item.value" />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="辖区市:" prop="city">-->
+<!--              <el-select v-model="form.city" placeholder="请选择辖区市">-->
+<!--                <el-option v-for="item in cityList" :label="item.label" :value="item.value" />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
             <el-form-item label="辖区县:" prop="district">
-              <el-input v-model="form.district" placeholder="请输入辖区县" />
+              <el-select v-model="form.district" placeholder="请选择辖区县">
+                <el-option v-for="item in district_type" :label="item.label" :value="item.value" />
+              </el-select>
             </el-form-item>
             <el-form-item label="企业地址:" prop="company_address">
               <el-input v-model="form.company_address" placeholder="请输入企业地址" />
@@ -37,7 +37,9 @@
               <el-input v-model="form.phone" placeholder="请输入移动电话" />
             </el-form-item>
             <el-form-item label="企业类型:" prop="company_type">
-              <el-input v-model="form.company_type" placeholder="请输入企业类型" />
+              <el-select v-model="form.company_type" placeholder="请选择企业类型">
+                <el-option v-for="item in enterprise_type" :label="item.label" :value="item.value" />
+              </el-select>
             </el-form-item>
           </el-form>
         </div>
@@ -50,24 +52,26 @@
   </div>
 </template>
 <script setup lang="ts">
-import { ref } from 'vue';
+import { ref, toRefs } from 'vue';
 import {addCompany, updateCompany} from "@/api/riskPrevention/BusinessPortraits";
+import { validatePhone } from '@/utils/validate';
 const demoFormRef = ref(null);
 const buttonLoading = ref(false);
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { enterprise_type, district_type } = toRefs<any>(proxy?.useDict('enterprise_type','district_type'));
 const emits = defineEmits(['close']);
 let form = ref({
-  company_name: '',
-  province: '',
-  province_code: '0',
-  city: '',
-  city_code: '1',
-  district: '',
+  company_name: '1',
+  province: '1',
+  province_code: '440000000000',
+  city: '1',
+  city_code: '440900000000',
+  district: '1',
   district_code: '2',
-  company_address: '',
-  responsible_person: '',
-  phone: '',
-  company_type: ''
+  company_address: '1',
+  responsible_person: '1',
+  phone: '13654789234',
+  company_type: '1'
 });
 
 // 表单验证规则
@@ -78,19 +82,20 @@ const rules = ref({
   district: [{ required: true, message: '请选择辖区县', trigger: 'change' }],
   company_address: [{ required: true, message: '请选择企业地址', trigger: 'change' }],
   responsible_person: [{ required: true, message: '请选择企业负责人', trigger: 'change' }],
-  phone: [{ required: true, message: '请选择手机号码', trigger: 'change' }],
+  phone: [
+    { required: true, message: '电话不能为空', trigger: 'blur' },
+    { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
+  ],
   company_type: [{ required: true, message: '请选择企业类型', trigger: 'change' }],
 });
 // 提交表单
 const submitForm = () => {
-
   demoFormRef.value?.validate(async (valid) => {
     if (valid) {
       try {
         buttonLoading.value = true;
-
-        form.value.task_number ? await updateCompany(form.value) : await addCompany(form.value);
-        proxy?.$modal.msgSuccess(form.value.task_number ? '修改成功' : '新增成功');
+        await addCompany(form.value);
+        proxy?.$modal.msgSuccess('新增成功');
         emits('refresh'); // 提交成功后通知父组件刷新
         emits('close'); // 关闭弹窗
       } finally {
@@ -118,4 +123,5 @@ const cancel = () => {
   resetForm();
   emits('close');
 };
+
 </script>

+ 33 - 11
src/views/riskPrevention/SafetyProductionManagement/BussinessEdit.vue

@@ -5,21 +5,27 @@
       <div class="common-dialog-content">
         <div class="common-dialog-title-box">
           <i class="common-dialog-title-icon" />
-          <div>新建</div>
+          <div>编辑</div>
         </div>
         <div class="common-dialog-box">
           <el-form ref="demoFormRef" :model="form" label-width="100px" :rules="rules">
             <el-form-item label="企业名称:" prop="company_name">
-              <el-input v-model="form.company_name" placeholder="请输入企业名称" />
-            </el-form-item>
-            <el-form-item label="辖区省:" prop="province">
-              <el-input v-model="form.province" placeholder="请输入辖区省" />
-            </el-form-item>
-            <el-form-item label="辖区市:" prop="city">
-              <el-input v-model="form.city" placeholder="请输入辖区市" />
+              <el-input v-model="form.company_name" placeholder="请输入企业名称" style="width: 468px" />
             </el-form-item>
+<!--            <el-form-item label="辖区省:" prop="province">-->
+<!--              <el-select v-model="form.province" placeholder="请选择辖区省">-->
+<!--                <el-option v-for="item in provinceList" :label="item.label" :value="item.value" />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="辖区市:" prop="city">-->
+<!--              <el-select v-model="form.city" placeholder="请选择辖区市">-->
+<!--                <el-option v-for="item in cityList" :label="item.label" :value="item.value" />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
             <el-form-item label="辖区县:" prop="district">
-              <el-input v-model="form.district" placeholder="请输入辖区县" />
+              <el-select v-model="form.district" placeholder="请选择辖区县">
+                <el-option v-for="item in district_type" :label="item.label" :value="item.value" />
+              </el-select>
             </el-form-item>
             <el-form-item label="企业地址:" prop="company_address">
               <el-input v-model="form.company_address" placeholder="请输入企业地址" />
@@ -31,7 +37,9 @@
               <el-input v-model="form.phone" placeholder="请输入移动电话" />
             </el-form-item>
             <el-form-item label="企业类型:" prop="company_type">
-              <el-input v-model="form.company_type" placeholder="请输入企业类型" />
+              <el-select v-model="form.company_type" placeholder="请选择企业类型">
+                <el-option v-for="item in enterprise_type" :label="item.label" :value="item.value" />
+              </el-select>
             </el-form-item>
           </el-form>
         </div>
@@ -45,12 +53,14 @@
 </template>
 <script setup lang="ts">
 import { workDetail, updatetask } from '@/api/inspectionWork/inspector';
-import { ref, watch } from 'vue';
+import { ref, toRefs, watch } from 'vue';
 import { ElMessage } from 'element-plus';
 import {CompanyDetail, updateCompany} from "@/api/riskPrevention/BusinessPortraits";
+import { validatePhone } from '@/utils/validate';
 const demoFormRef = ref(null);
 const buttonLoading = ref(false);
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { enterprise_type, district_type } = toRefs<any>(proxy?.useDict('enterprise_type','district_type'));
 const emit = defineEmits(['close']);
 const props = defineProps<{ eventId: string }>();
 let form = ref({
@@ -66,6 +76,7 @@ let form = ref({
   phone: '',
   company_type: ''
 });
+
 // 巡查业务选项
 const businessOptions = [
   { value: '0', label: '城市隐患巡查' },
@@ -84,6 +95,17 @@ const fetchDetail = async () => {
 
 const rules = ref({
   // id: [{ required: true, message: '主键不能为空', trigger: 'blur' }],
+  company_name: [{ required: true, message: '请选择企业名称', trigger: 'blur' }],
+  province: [{ required: true, message: '请选择辖区省', trigger: 'change' }],
+  city: [{ required: true, message: '请选择辖区市', trigger: 'change' }],
+  district: [{ required: true, message: '请选择辖区县', trigger: 'change' }],
+  company_address: [{ required: true, message: '请选择企业地址', trigger: 'change' }],
+  responsible_person: [{ required: true, message: '请选择企业负责人', trigger: 'change' }],
+  phone: [
+    { required: true, message: '电话不能为空', trigger: 'blur' },
+    { validator: validatePhone, message: '请输入正确格式的联系电话', trigger: 'blur' }
+  ],
+  company_type: [{ required: true, message: '请选择企业类型', trigger: 'change' }],
 });
 watch(
   () => props.eventId,