Forráskód Böngészése

发布职位类型设置

Xiao_123 7 hónapja
szülő
commit
986f99a8a8

+ 6 - 1
src/api/menduner/system/enterprise/message/index.ts

@@ -60,7 +60,7 @@ export const EnterpriseApi = {
 
   // 获得企业工商信息
   getEnterpriseBusinessInfo: async (id: string) => {
-    return await request.get({ url: `/menduner/system/enterprise-business/get?id=${id}` })
+    return await request.get({ url: `/menduner/system/enterprise-business/get/by?enterpriseId=${id}` })
   },
 
   // 获得下级企业分页
@@ -76,5 +76,10 @@ export const EnterpriseApi = {
   // 获得企业登录用户分页
   getEnterpriseUserPage: async (params) => {
     return await request.get({ url: `/menduner/system/enterprise-user-bind/page`, params })
+  },
+
+  // 更新企业发布职位类型权限
+  updateEnterpriseJobType: async (data) => {
+    return await request.put({ url: `/menduner/system/enterprise/update/pub-job-type-perm`, data })
   }
 }

+ 4 - 1
src/views/menduner/reward/integral/save.vue

@@ -24,6 +24,9 @@
                 :props="{ label: 'operation', value: 'url' }"
               />
             </el-form-item>
+            <el-form-item label="事件地址" prop="url">
+              <el-input v-model="formData.url" clearable placeholder="请输入规则名称" style="width: 300px;"/>
+            </el-form-item>
             <el-form-item label="触发类型" prop="triggerType">
               <el-radio-group v-model="formData.triggerType">
                 <el-radio v-for="dict in getIntDictOptions(DICT_TYPE.MENDUNER_POINT_RULE_CONFIG_TRIGGER_TYPE)" :key="dict.value" :value="dict.value">
@@ -108,7 +111,7 @@ const formData = ref({
 
 const formRules = reactive({
   title: [{ required: true, message: '规则名称不能为空', trigger: 'blur' }],
-  url: [{ required: true, message: '事件地址不能为空', trigger: 'blur' }],
+  // url: [{ required: true, message: '事件地址不能为空', trigger: 'blur' }],
   status: [{ required: true, message: '事件状态不能为空', trigger: 'blur' }],
   type: [{ required: true, message: '规则类型不能为空', trigger: 'blur' }],
   triggerType: [{ required: true, message: '触发类型不能为空', trigger: 'blur' }],

+ 1 - 7
src/views/menduner/system/enterprise/message/details/components/businessInfo.vue

@@ -1,17 +1,12 @@
 <template>
   <div>
     <el-descriptions class="margin-top" :column="2" border>
-      <!-- <template #extra>
-        <el-button type="primary">Operation</el-button>
-      </template> -->
     <el-descriptions-item label="企业名称">{{ info.name }}</el-descriptions-item>
     <el-descriptions-item label="统一社会信用代码">{{ info.code }}</el-descriptions-item>
     <el-descriptions-item label="法定代表人">{{ info.representative }}</el-descriptions-item>
     <el-descriptions-item label="成立时间">{{ formatDate(info.establishmentTime, 'YYYY-MM-DD') }}</el-descriptions-item>
     <el-descriptions-item label="注册资金">{{ info.registeredCapital }}</el-descriptions-item>
-    <el-descriptions-item label="企业类型">
-      <dict-tag :type="DICT_TYPE.MENDUNER_ENTERPRISE_TYPE" :value="info.type" />
-    </el-descriptions-item>
+    <el-descriptions-item label="企业类型">{{ info.type }}</el-descriptions-item>
     <el-descriptions-item label="所属地区">{{ info.area }}</el-descriptions-item>
     <el-descriptions-item label="核准日期">{{ info.approvalTime }}</el-descriptions-item>
     <el-descriptions-item label="曾用名">{{ info.formerName }}</el-descriptions-item>
@@ -19,7 +14,6 @@
     <el-descriptions-item label="注册地址">{{ info.address }}</el-descriptions-item>
     <el-descriptions-item label="经营状态">{{ info.businessStatus }}</el-descriptions-item>
     <el-descriptions-item label="营业期限">{{ info.businessTerm }}</el-descriptions-item>
-    <!-- <el-descriptions-item label="经营范围">{{ info.businessScope }}</el-descriptions-item> -->
   </el-descriptions>
   </div>
 </template>

+ 3 - 3
src/views/menduner/system/enterprise/message/details/index.vue

@@ -26,9 +26,9 @@
             <el-tab-pane label="下级企业">
               <SubordinateEnterprises :id="id" />
             </el-tab-pane>
-            <el-tab-pane v-hasPermi="['menduner:system:enterprise-post:query']" label="岗位管理">
+            <!-- <el-tab-pane v-hasPermi="['menduner:system:enterprise-post:query']" label="岗位管理">
               <EnterprisePost :id="id" />
-            </el-tab-pane>
+            </el-tab-pane> -->
             <el-tab-pane label="企业用户">
               <EnterpriseUser :id="id" />
             </el-tab-pane>
@@ -46,7 +46,7 @@ import { ElMessage } from 'element-plus'
 import Info from './components/info.vue'
 import Business from './components/businessInfo.vue'
 import SubordinateEnterprises from './components/subordinateEnterprises.vue'
-import EnterprisePost from './components/post.vue'
+// import EnterprisePost from './components/post.vue'
 import EnterpriseUser from './components/user.vue'
 
 /** 初始化 */

+ 18 - 31
src/views/menduner/system/enterprise/message/index.vue

@@ -87,14 +87,6 @@
       <el-form-item>
         <el-button v-hasPermi="['menduner:system:enterprise:query']" @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
         <el-button v-hasPermi="['menduner:system:enterprise:query']" @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
-        <el-button
-          type="primary"
-          plain
-          @click="openForm('create')"
-          v-hasPermi="['menduner:system:enterprise:create']"
-        >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
-        </el-button>
         <el-button
           type="success"
           plain
@@ -128,6 +120,13 @@
           <dict-tag :type="DICT_TYPE.MENDUNER_SCALE" :value="scope.row.scale" />
         </template>
       </el-table-column>
+      <el-table-column label="职位发布类型" align="center" prop="pubJobTypePerm">
+        <template #default="scope">
+          <span v-for="k in scope.row.pubJobTypePerm" :key="k">
+            <dict-tag :type="DICT_TYPE.MENDUNER_JOB_TYPE" :value="Number(k)"  style="margin: 0 5px 5px 0"/>
+          </span>
+        </template>
+      </el-table-column>
       <el-table-column
         label="创建时间"
         align="center"
@@ -144,22 +143,14 @@
           >
             详情
           </el-button>
-          <!-- <el-button
+          <el-button
             link
             type="primary"
-            @click="openForm('update', scope.row.id)"
+            @click="openPositionForm(scope.row.id)"
             v-hasPermi="['menduner:system:enterprise:update']"
           >
-            编辑
+            更新职位发布类型
           </el-button>
-          <el-button
-            link
-            type="danger"
-            @click="handleDelete(scope.row.id)"
-            v-hasPermi="['menduner:system:enterprise:delete']"
-          >
-            删除
-          </el-button> -->
         </template>
       </el-table-column>
     </el-table>
@@ -174,6 +165,9 @@
 
   <!-- 表单弹窗:添加/修改 -->
   <EnterpriseForm ref="formRef" @success="getList" />
+
+  <!-- 职位发布类型权限更新 -->
+  <PositionTypeForm ref="positionRef" @success="getList"/>
 </template>
 
 <script setup lang="ts">
@@ -182,12 +176,12 @@ import { dateFormatter } from '@/utils/formatTime'
 import download from '@/utils/download'
 import { EnterpriseApi, EnterpriseVO } from '@/api/menduner/system/enterprise/message'
 import EnterpriseForm from './EnterpriseForm.vue'
+import PositionTypeFrom from './PositionTypeForm.vue'
 
 /** 门墩儿-企业信息 列表 */
 defineOptions({ name: 'Enterprise' })
 
 const message = useMessage() // 消息弹窗
-const { t } = useI18n() // 国际化
 
 const loading = ref(true) // 列表的加载中
 const list = ref<EnterpriseVO[]>([]) // 列表的数据
@@ -203,6 +197,7 @@ const queryParams = reactive({
   financingStatus: undefined,
   scale: undefined
 })
+const positionRef = ref()
 const queryFormRef = ref() // 搜索的表单
 const exportLoading = ref(false) // 导出的加载中
 
@@ -242,17 +237,9 @@ const openForm = (type: string, id?: number) => {
   formRef.value.open(type, id)
 }
 
-/** 删除按钮操作 */
-const handleDelete = async (id: number) => {
-  try {
-    // 删除的二次确认
-    await message.delConfirm()
-    // 发起删除
-    await EnterpriseApi.deleteEnterprise(id)
-    message.success(t('common.delSuccess'))
-    // 刷新列表
-    await getList()
-  } catch {}
+// 更新职位类型
+const openPositionForm = (id:number) => {
+  positionRef.value.open(id)
 }
 
 /** 导出按钮操作 */

+ 80 - 0
src/views/menduner/system/enterprise/message/positionTypeForm.vue

@@ -0,0 +1,80 @@
+<template>
+  <Dialog title="企业职位发布类型权限更新" v-model="dialogVisible">
+    <el-form
+      ref="formRef"
+      :model="formData"
+      label-width="120px"
+      v-loading="formLoading"
+    >
+      <el-form-item label="职位发布类型" prop="pubJobTypePerm">
+        <el-checkbox-group v-model="formData.pubJobTypePerm">
+          <el-checkbox v-for="k in getIntDictOptions(DICT_TYPE.MENDUNER_JOB_TYPE)" :key="k.value" :label="k.label" :value="k.value" />
+        </el-checkbox-group>
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+
+<script setup lang="ts">
+defineOptions({ name: 'EnterpriseForm' })
+import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
+import { EnterpriseApi } from '@/api/menduner/system/enterprise/message'
+
+const message = useMessage() // 消息弹窗
+const dialogVisible = ref(false) // 弹窗的是否展示
+const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formData = ref({
+  id: '',
+  pubJobTypePerm: []
+})
+const formRef = ref()
+
+/** 打开弹窗 */
+const open = async (id: number) => {
+  dialogVisible.value = true
+  resetForm()
+  // 修改时,设置数据
+  if (id) {
+    formLoading.value = true
+    try {
+      const data = await EnterpriseApi.getEnterprise(id)
+      formData.value.id = data.id
+      formData.value.pubJobTypePerm = data.pubJobTypePerm ? data.pubJobTypePerm.map(e => Number(e)) : []
+    } finally {
+      formLoading.value = false
+    }
+  }
+}
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+/** 提交表单 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const submitForm = async () => {
+  // 校验表单
+  await formRef.value.validate()
+  // 提交请求
+  formLoading.value = true
+  try {
+    await EnterpriseApi.updateEnterpriseJobType(formData.value)
+    dialogVisible.value = false
+    message.success('操作成功')
+    // 发送操作成功的事件
+    emit('success')
+    resetForm()
+  } finally {
+    formLoading.value = false
+  }
+}
+
+/** 重置表单 */
+const resetForm = () => {
+  formData.value = {
+    id: '',
+    pubJobTypePerm: []
+  }
+}
+</script>

+ 48 - 11
src/views/menduner/system/enterprise/register/details.vue

@@ -1,40 +1,64 @@
 <template>
-  <Dialog title="企业注册详情" v-model="dialogVisible">
-    <el-descriptions title="" border :column="1">
-      <el-descriptions-item label="id">{{ info?.id || '-' }}</el-descriptions-item>
-      <el-descriptions-item label="用户id">{{ info?.userId || '-' }}</el-descriptions-item>
+  <Dialog title="企业注册详情" v-model="dialogVisible" width="70%">
+    <el-descriptions title="" border :column="2">
       <el-descriptions-item label="企业名称">{{ info?.name || '-' }}</el-descriptions-item>
-      <el-descriptions-item label="联系人姓名">{{ info?.contactName || '-' }}</el-descriptions-item>
-      <el-descriptions-item label="联系电话">{{ info?.phone || '-' }}</el-descriptions-item>
-      <el-descriptions-item label="联系邮箱">{{ info?.email || '-' }}</el-descriptions-item>
       <el-descriptions-item label="营业执照图片">
         <el-image style="width: 80px; height: 80px" :src="info?.businessLicenseUrl || ''" hide-on-click-modal :preview-src-list="[info?.businessLicenseUrl]"/>
       </el-descriptions-item>
+      <el-descriptions-item label="管理员姓名">{{ info?.contactName || '-' }}</el-descriptions-item>
+      <el-descriptions-item label="管理员电话">{{ info?.phone || '-' }}</el-descriptions-item>
+      <el-descriptions-item label="管理员邮箱">{{ info?.email || '-' }}</el-descriptions-item>
       <el-descriptions-item label="申请备注/说明">{{ info?.description || '-' }}</el-descriptions-item>
       <el-descriptions-item label="审批状态">
         <dict-tag :type="DICT_TYPE.MENDUNER_ENTERPRISE_REGISTER_AUDIT_STATUS" :value="info?.status" />
       </el-descriptions-item>
       <el-descriptions-item label="审核原因">{{ info?.reason || '-' }}</el-descriptions-item>
-      <el-descriptions-item label="审核备注">{{ info?.remark || '-' }}</el-descriptions-item>
       <el-descriptions-item label="创建时间">{{ info?.createTime ? formatDate(info?.createTime) : '-' }}</el-descriptions-item>
+      <el-descriptions-item label="审核备注">{{ info?.remark || '-' }}</el-descriptions-item>
+    </el-descriptions>
+
+    <!-- 多联系人 -->
+    <div v-if="info?.contacts && info?.contacts?.length">
+      <el-descriptions v-for="(item, index) in info?.contacts" :key="index" :title="'联系人' + (index+1)" border :column="3" style="margin-top: 10px;">
+        <el-descriptions-item label="姓名">{{ item.contactName || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="电话">{{ item.phone || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="邮箱">{{ item.email || '-' }}</el-descriptions-item>
+      </el-descriptions>
+    </div>
+
+    <!-- 企业发布职位类型权限设置 -->
+    <el-descriptions v-if="dialogType ==='pass'" title="企业职位发布类型权限设置" border :column="1" style="margin-top: 30px;">
+      <el-descriptions-item label="企业职位发布权限 *">
+        <el-checkbox-group v-model="checkList">
+          <el-checkbox v-for="k in getIntDictOptions(DICT_TYPE.MENDUNER_JOB_TYPE)" :key="k.value" :label="k.label" :value="k.value" />
+        </el-checkbox-group>
+      </el-descriptions-item>
     </el-descriptions>
+
     <template #footer>
       <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button v-if="dialogType ==='pass'" type="primary" @click="handleSubmit">提 交</el-button>
     </template>
   </Dialog>
 </template>
 
 <script setup lang="ts">
-import { DICT_TYPE } from '@/utils/dict'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { EnterpriseRegisterApi } from '@/api/menduner/system/enterprise/register'
 import { formatDate } from '@/utils/formatTime'
 
 defineOptions({ name: 'EnterpriseRegisterDetails' })
-const dialogVisible = ref(false) // 弹窗的是否展示
 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const message = useMessage() // 消息弹窗
+const dialogVisible = ref(false) // 弹窗的是否展示
+const dialogType = ref('') // 弹窗的类型
+
+// 职位发布权限
+const checkList = ref([])
 
 /** 打开弹窗 */
-const open = async (id: Number) => {
+const open = async (id: Number, type: string) => {
+  dialogType.value = type
   dialogVisible.value = true
   getData(id)
 }
@@ -46,6 +70,19 @@ const getData = async (id) => {
   info.value = data
 }
 
+const handleSubmit = async () => {
+  try {
+    await EnterpriseRegisterApi.passEnterpriseRegister({ id: info.value?.id, reason: '', pubJobTypePerm: checkList.value })
+    message.success('操作成功')
+    emit('success')
+  } finally {
+    dialogVisible.value = false
+    dialogType.value = ''
+    info.value = {}
+    checkList.value = []
+  }
+}
+
 
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 </script>

+ 13 - 76
src/views/menduner/system/enterprise/register/index.vue

@@ -87,13 +87,13 @@
 
   <!-- 列表 -->
   <ContentWrap>
-    <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+    <el-table v-loading="loading" :data="list" :stripe="true">
       <el-table-column label="id" align="center" prop="id" />
       <el-table-column label="用户id" align="center" prop="userId" />
       <el-table-column label="企业名称" align="center" prop="name" />
-      <el-table-column label="联系人姓名" align="center" prop="contactName" />
-      <el-table-column label="联系电话" align="center" prop="phone" />
-      <el-table-column label="联系邮箱" align="center" prop="email" />
+      <el-table-column label="管理员姓名" align="center" prop="contactName" />
+      <el-table-column label="管理员电话" align="center" prop="phone" />
+      <el-table-column label="管理员邮箱" align="center" prop="email" />
       <el-table-column label="营业执照图片" align="center" prop="businessLicenseUrl">
         <template #default="scope">
           <div style="width: 80px; height: 70px">
@@ -119,47 +119,11 @@
       />
       <el-table-column label="操作" fixed="right" width="180px">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            @click="handleDetails(scope.row.id)"
-          >
-            详情
-          </el-button>
+          <el-button link type="primary" @click="handleDetails(scope.row.id, 'detail')">详情</el-button>
           <template v-if="scope.row.status === '0'">
-            <el-button
-              link
-              type="primary"
-              @click="handleReject(scope.row.id)"
-              v-hasPermi="['menduner:system:enterprise-register:reject']"
-            >
-              拒绝
-            </el-button>
-            <el-button
-              link
-              type="primary"
-              @click="handlePass(scope.row.id)"
-              v-hasPermi="['menduner:system:enterprise-register:pass']"
-            >
-              通过
-            </el-button>
+            <el-button link type="danger" @click="handleReject(scope.row.id)" v-hasPermi="['menduner:system:enterprise-register:reject']">拒绝</el-button>
+            <el-button link type="success" @click="handleDetails(scope.row.id, 'pass')" v-hasPermi="['menduner:system:enterprise-register:pass']">通过</el-button>
           </template>
-          <!-- <el-button
-            link
-            type="primary"
-            @click="openForm('update', scope.row.id)"
-            v-hasPermi="['menduner:system:enterprise-register:update']"
-          >
-            编辑
-          </el-button> -->
-          <!-- <el-button
-            link
-            type="danger"
-            @click="handleDelete(scope.row.id)"
-            v-hasPermi="['menduner:system:enterprise-register:delete']"
-          >
-            删除
-          </el-button> -->
         </template>
       </el-table-column>
     </el-table>
@@ -177,7 +141,7 @@
   <EnterpriseRegisterReject ref="registerRef" @success="getList" />
 
   <!-- 详情 -->
-  <DetailsPage ref="detailsRef" />
+  <DetailsPage ref="detailsRef" @success="handleRefresh" />
 </template>
 
 <script setup lang="ts">
@@ -195,8 +159,6 @@ import DetailsPage from './details.vue'
 defineOptions({ name: 'EnterpriseRegister' })
 
 const message = useMessage() // 消息弹窗
-const { t } = useI18n() // 国际化
-
 const loading = ref(true) // 列表的加载中
 const list = ref<EnterpriseRegisterVO[]>([]) // 列表的数据
 const total = ref(0) // 列表的总页数
@@ -237,29 +199,15 @@ const resetQuery = () => {
   handleQuery()
 }
 
-/** 添加/修改操作 */
-const formRef = ref()
-const openForm = (type: string, id?: number) => {
-  formRef.value.open(type, id)
-}
-
 /* 详情 */
 const detailsRef = ref()
-const handleDetails = (id: number) => {
-  detailsRef.value.open(id)
+const handleDetails = (id: number, type: string) => {
+  detailsRef.value.open(id, type)
 }
 
-/** 删除按钮操作 */
-const handleDelete = async (id: number) => {
-  try {
-    // 删除的二次确认
-    await message.delConfirm()
-    // 发起删除
-    await EnterpriseRegisterApi.deleteEnterpriseRegister(id)
-    message.success(t('common.delSuccess'))
-    // 刷新列表
-    await getList()
-  } catch {}
+const handleRefresh = () =>{
+  queryParams.pageNo = 1
+  getList()
 }
 
 /** 导出按钮操作 */
@@ -280,17 +228,6 @@ const handleExport = async () => {
 const handleReject = (id: number) => {
   registerRef.value.open(id)
 }
-const handlePass = async (id: number) => {
-  try {
-    await EnterpriseRegisterApi.passEnterpriseRegister({ id, reason: '' })
-    message.success(t('sys.api.operationSuccess'))
-    // 刷新列表
-    await getList()
-  } finally {
-
-  }
-}
-
 /** 初始化 **/
 onMounted(() => {
   getList()