lipenghui 5 сар өмнө
parent
commit
04e8e80012

+ 3 - 0
src/utils/dict.ts

@@ -107,12 +107,15 @@ export const getDictLabel = (dictType: string, value: any): string => {
 }
 
 export enum DICT_TYPE {
+  PMS_DEVICE_STATUS = 'pms_device_status',
+  PMS_ASSET_PROPERTY = 'pms_asset_property',
   USER_TYPE = 'user_type',
   COMMON_STATUS = 'common_status',
   TERMINAL = 'terminal', // 终端
   DATE_INTERVAL = 'date_interval', // 数据间隔
 // ========== supplier 模块 ==========
   SUPPLIER_TYPE = "supplier_classification",
+  PMS_SUPPLIER_NATURE = "pms_supplier_nature",
   SUPPLIER_COMPANY_TYPE = "supplier_type",
   SUPPLIER_NATURE = "supplier_nature",
   SUPPLIER_STATUS = "supplier_status",

+ 1 - 1
src/views/pms/device/BrandList.vue

@@ -97,7 +97,7 @@
     pageSize: 10,
     label: '',
     status: undefined,
-    dictType: 'iot_device_brand'
+    dictType: 'pms_device_brand'
   })
   const open = async (type: string, id?: number) => {
     dialogVisible.value = true

+ 45 - 15
src/views/pms/device/IotDeviceForm.vue

@@ -38,6 +38,7 @@
           <el-col :span="8">
             <el-form-item label="品牌" prop="brand">
               <el-input v-model="formData.brand" placeholder="请输入品牌" @click="openForm"/>
+
             </el-form-item>
           </el-col>
         </el-row>
@@ -49,26 +50,45 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="所在部门" prop="orgId">
-              <el-input v-model="formData.orgId" placeholder="请输入所在部门" />
+              <el-tree-select
+                v-model="formData.orgId"
+                :data="deptList"
+                :props="defaultProps"
+                check-strictly
+                node-key="id"
+                placeholder="请选择所在部门"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-          <el-form-item label="设备状态" prop="deviceStatus">
-            <el-radio-group v-model="formData.deviceStatus">
-              <el-radio value="1">请选择字典生成</el-radio>
-            </el-radio-group>
-          </el-form-item>
+            <el-form-item label="设备状态">
+              <el-select v-model="formData.deviceStatus" placeholder="请选择">
+                <el-option
+                  v-for="dict in getIntDictOptions(DICT_TYPE.PMS_DEVICE_STATUS)"
+                  :key="dict.id"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
             </el-col>
         </el-row>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="资产性质" prop="assetProperty">
-              <el-input v-model="formData.assetProperty" placeholder="请输入资产性质" />
+            <el-form-item label="资产性质">
+              <el-select v-model="formData.assetProperty" placeholder="请选择">
+                <el-option
+                  v-for="dict in getIntDictOptions(DICT_TYPE.PMS_ASSET_PROPERTY)"
+                  :key="dict.id"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="图片" prop="picUrl">
-              <el-input v-model="formData.picUrl" placeholder="请输入图片" />
+              <UploadImg v-model="formData.picUrl" :disabled="isDetail" height="50px" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -93,13 +113,13 @@
       <div class="zz-expandable-content" :class="{ 'is-expanded': zzIsExpanded }">
         <el-row>
           <el-col :span="8">
-            <el-form-item label="制造商id" prop="manufacturerId">
-              <el-input v-model="formData.manufacturerId" placeholder="请输入制造商id" />
+            <el-form-item label="制造商" prop="manufacturerId">
+              <el-input v-model="formData.manufacturerId" placeholder="请输入制造商" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="供应商id" prop="supplierId">
-              <el-input v-model="formData.supplierId" placeholder="请输入供应商id" />
+            <el-form-item label="供应商" prop="supplierId">
+              <el-input v-model="formData.supplierId" placeholder="请输入供应商" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -276,6 +296,10 @@
 <script setup lang="ts">
 import { IotDeviceApi, IotDeviceVO } from '@/api/pms/device'
 import BrandList from "@/views/pms/device/BrandList.vue";
+import {defaultProps, handleTree} from "@/utils/tree";
+import * as DeptApi from "@/api/system/dept";
+import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
+import { useTagsViewStore } from '@/store/modules/tagsView'
 
 /** 设备台账 表单 */
 defineOptions({ name: 'IotDeviceForm' })
@@ -284,7 +308,10 @@ const zzIsExpanded = ref(false); // 控制表单是否展开的变量
 const cwIsExpanded = ref(false); // 控制表单是否展开的变量
 const qtIsExpanded = ref(false); // 控制表单是否展开的变量
 
-const { params, name } = useRoute() // 查询参数
+const deptList = ref<Tree[]>([]) // 树形结构
+const { delView } = useTagsViewStore() // 视图操作
+const { params, name} = useRoute() // 查询参数
+const {currentRoute, push} = useRouter()
 const id = params.id;
 const isDetail = params.isDetail;
 const { t } = useI18n() // 国际化
@@ -377,7 +404,7 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
 const close = () => {
   delView(unref(currentRoute))
-  push({ name: 'Suppliers',query: {
+  push({ name: 'IotDevicePms',query: {
       date: new Date().getTime(),
     } })
 }
@@ -417,6 +444,9 @@ const submitForm = async () => {
   }
 }
 
+onMounted(async ()=>{
+  deptList.value = handleTree(await DeptApi.getSimpleDeptList())
+})
 /** 重置表单 */
 const resetForm = () => {
   formData.value = {

+ 36 - 16
src/views/supplier/base/form/SupplierInfoForm.vue

@@ -9,6 +9,18 @@
       label-width="120px"
     >
       <el-row>
+        <el-col :span="8">
+          <el-form-item label="客商性质" prop="customerNature">
+            <el-select v-model="formData.customerNature" placeholder="请选择客商性质" class="w-80!">
+              <el-option
+                v-for="dict in getStrDictOptions(DICT_TYPE.PMS_SUPPLIER_NATURE)"
+                :key="dict.id"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
         <el-col :span="8">
           <el-form-item label="供应商名称" prop="name">
             <el-input v-model="formData.name" placeholder="请输入供应商名称" class="w-80!" />
@@ -26,6 +38,8 @@
             </el-select>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8">
           <el-form-item label="公司类型" prop="type">
             <el-select v-model="formData.type" placeholder="请选择公司类型" class="w-80!">
@@ -38,8 +52,6 @@
             </el-select>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
         <el-col :span="8">
           <el-form-item label="供应商性质" prop="nature">
             <el-select v-model="formData.nature" placeholder="请选择供应商性质" class="w-80!">
@@ -73,6 +85,8 @@
             />
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8">
           <el-form-item label="公司规模" prop="size">
             <el-select v-model="formData.size" placeholder="请选择公司规模" class="w-80!">
@@ -85,8 +99,6 @@
             </el-select>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
         <el-col :span="8">
           <el-form-item label="纳税人识别号" prop="tin">
             <el-input v-model="formData.tin" class="w-80!" placeholder="请输入纳税人识别号" />
@@ -97,6 +109,8 @@
             <el-input v-model="formData.corporation" class="w-80!" placeholder="请输入法人" />
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="8">
           <el-form-item label="成立日期" prop="incorporationDate">
             <el-date-picker
@@ -108,8 +122,6 @@
             />
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
         <el-col :span="8">
           <el-form-item label="公司地址" prop="address">
             <el-input v-model="formData.address" class="w-80!" placeholder="请输入公司地址" />
@@ -125,23 +137,29 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="8">
-          <el-form-item label="年营业额(万元)" prop="annualTurnove">
-            <el-input
-              v-model="formData.annualTurnove"
-              type="number"
-              class="w-80!"
-              placeholder="请输入年营业额"
-            />
-          </el-form-item>
-        </el-col>
       </el-row>
+      <el-row>
+      <el-col :span="8">
+        <el-form-item label="年营业额(万元)" prop="annualTurnove">
+          <el-input
+            v-model="formData.annualTurnove"
+            type="number"
+            class="w-80!"
+            placeholder="请输入年营业额"
+          />
+        </el-form-item>
+      </el-col>
+        <el-col :span="8">
       <el-form-item label="经营范围" prop="bizScope">
         <el-input type="textarea" v-model="formData.bizScope" placeholder="请输入经营范围" />
       </el-form-item>
+          </el-col>
+        <el-col :span="8">
       <el-form-item label="备注" prop="remark">
         <el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
       </el-form-item>
+          </el-col>
+      </el-row>
       <!--    <el-form-item label="商品简介" prop="introduction">-->
       <!--      <el-input-->
       <!--        v-model="formData.introduction"-->
@@ -197,6 +215,7 @@ const message = useMessage() // 消息弹窗
 const formRef = ref() // 表单 Ref
 const formData = reactive<Supplier>({
   id: '',
+  customerNature: undefined,
   code: undefined,
   name: undefined,
   classification: undefined,
@@ -239,6 +258,7 @@ watch(
 )
 
 const rules = reactive({
+  customerNature: [{ required: true, message: '客商性质不能为空', trigger: 'blur' }],
   name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
   classification: [{ required: true, message: '供应商分类不能为空', trigger: 'blur' }],
   type: [{ required: true, message: '公司类型不能为空', trigger: 'blur' }],

+ 21 - 9
src/views/supplier/base/index.vue

@@ -8,15 +8,21 @@
       :inline="true"
       label-width="68px"
     >
-<!--      <el-form-item label="供应商编号" label-width="85px" prop="code">-->
-<!--        <el-input-->
-<!--          v-model="queryParams.code"-->
-<!--          placeholder="请输入供应商编号"-->
-<!--          clearable-->
-<!--          @keyup.enter="handleQuery"-->
-<!--          class="!w-240px"-->
-<!--        />-->
-<!--      </el-form-item>-->
+      <el-form-item label="客商性质" label-width="85px"  prop="name">
+        <el-select
+          v-model="queryParams.customerNature"
+          placeholder="客商性质"
+          clearable
+          class="!w-240px"
+        >
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.PMS_SUPPLIER_NATURE)"
+            :key="dict.id"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="供应商名称" label-width="85px"  prop="name">
         <el-input
           v-model="queryParams.name"
@@ -120,6 +126,11 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+      <el-table-column label="客商性质" align="center" prop="customerNature" >
+        <template #default="scope">
+          <dict-tag :type="DICT_TYPE.PMS_SUPPLIER_NATURE" :value="scope.row.customerNature" />
+        </template>
+      </el-table-column>
       <el-table-column label="供应商编号" align="center" prop="code" />
       <el-table-column label="供应商名称" align="center" prop="name" />
       <el-table-column label="供应商分类" align="center" prop="classification" >
@@ -281,6 +292,7 @@ const total = ref(0) // 列表的总页数
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
+  customerNature: undefined,
   code: undefined,
   name: undefined,
   classification: undefined,