修复错误

This commit is contained in:
shengchanzhe 2023-07-23 18:02:22 +08:00
parent 81f4f3ad88
commit 8d98349f96
6 changed files with 1834 additions and 1896 deletions

View File

@ -1,39 +1,42 @@
import request from "@/utils/request"; import request from '@/utils/request'
// 公司列表 // 公司列表
export function apiCompanyLists(params: any) { export function apiCompanyLists(params: any) {
return request.get({ url: "/company/lists", params }); return request.get({ url: '/company/lists', params })
} }
// 添加公司 // 添加公司
export function apiCompanyAdd(params: any) { export function apiCompanyAdd(params: any) {
return request.post({ url: "/company/add", params }); return request.post({ url: '/company/add', params })
} }
// 编辑公司 // 编辑公司
export function apiCompanyEdit(params: any) { export function apiCompanyEdit(params: any) {
return request.post({ url: "/company/edit", params }); return request.post({ url: '/company/edit', params })
} }
// 删除公司 // 删除公司
export function apiCompanyDelete(params: any) { export function apiCompanyDelete(params: any) {
return request.post({ url: "/company/delete", params }); return request.post({ url: '/company/delete', params })
} }
// 公司详情 // 公司详情
export function apiCompanyDetail(params: any) { export function apiCompanyDetail(params: any) {
return request.get({ url: "/company/detail", params }); return request.get({ url: '/company/detail', params })
} }
// 下属公司详情 // 下属公司详情
export function apiSubordinateList(params: any) { export function apiSubordinateList(params: any) {
return request.get({ url: "/company/subordinate", params }); return request.get({ url: '/company/subordinate', params })
}
export function sendMsgApi(params: any) {
return request.get({ url: '/company/postsms', params })
} }
// 生成合同 // 生成合同
export function generateGontract(params: any) { export function generateGontract(params: any) {
return request.get({ url: "/company/Draftingcontracts", params }); return request.get({ url: '/company/Draftingcontracts', params })
} }
// 发送短信 // 发送短信
export function sendMsgApi(params: any) { export function authentication(params: any) {
return request.get({ url: "/company/postsms", params }); return request.get({ url: '/company/authentication', params })
} }

File diff suppressed because it is too large Load Diff

View File

@ -83,15 +83,19 @@
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column label="id" prop="id" show-overflow-tooltip width="60" /> <el-table-column label="id" prop="id" show-overflow-tooltip width="60" />
<el-table-column label="签约公司" prop="company_name" show-overflow-tooltip /> <el-table-column label="公司名称" prop="company_name" show-overflow-tooltip />
<el-table-column label="公司类型" prop="company_type" show-overflow-tooltip /> <el-table-column label="公司类型" prop="company_type" show-overflow-tooltip />
<el-table-column label="区县" prop="area" show-overflow-tooltip /> <el-table-column label="区县" prop="area" show-overflow-tooltip />
<el-table-column label="乡镇" prop="street" show-overflow-tooltip /> <el-table-column label="乡镇" prop="street" show-overflow-tooltip />
<el-table-column label="主联系人" prop="master_name" show-overflow-tooltip /> <el-table-column label="主联系人" prop="master_name" show-overflow-tooltip />
<el-table-column label="联系方式" prop="master_phone" show-overflow-tooltip /> <el-table-column label="联系方式" prop="master_phone" show-overflow-tooltip />
<el-table-column label="片区经理" prop="area_manager" show-overflow-tooltip /> <el-table-column label="片区经理" prop="area_manager" show-overflow-tooltip />
<el-table-column label="是否签约" prop="is_contract" show-overflow-tooltip /> <el-table-column label="是否签约" prop="is_contract" show-overflow-tooltip>
<el-table-column label="操作" align="center" width="450" fixed="right"> <template #default="{ row }">
{{ row.is_contract == 1 ? '已签约' : '未签约' }}
</template></el-table-column
>
<el-table-column label="操作" align="center" width="500" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<div style="display: flex"> <div style="display: flex">
<el-button type="primary" link> <el-button type="primary" link>
@ -150,19 +154,29 @@
>删除</el-button >删除</el-button
> >
<el-button <el-button
v-perms="['company/Draftingcontracts']" v-if="row.is_authentication == 0"
v-perms="['company/authentication']"
type="primary" type="primary"
link link
@click="showCreateConctPop(row)" @click="handleAuthentication(row.id)"
>生成合同</el-button >企业认证</el-button
>
<el-button
v-perms="['company/postsms']"
type="primary"
link
@click=";(showPop = true), (contractId = row.id)"
>发送短信</el-button
> >
<template v-if="row.is_contract == 0">
<el-button
v-perms="['company/Draftingcontracts']"
type="primary"
link
@click="showCreateConctPop(row)"
>生成合同</el-button
>
<el-button
v-perms="['company/postsms']"
type="primary"
link
@click=";(showPop = true), (contractId = row.id)"
>发送短信</el-button
>
</template>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -194,13 +208,20 @@
<script lang="ts" setup name="companyLists"> <script lang="ts" setup name="companyLists">
import { usePaging } from '@/hooks/usePaging' import { usePaging } from '@/hooks/usePaging'
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from '@/hooks/useDictOptions'
import { apiCompanyLists, apiCompanyDelete } from '@/api/company' import useUserStore from '@/stores/modules/user'
import { generateGontract, sendMsgApi } from '@/api/perms/admin' import {
apiCompanyLists,
apiCompanyDelete,
generateGontract,
sendMsgApi,
authentication
} from '@/api/company'
import { timeFormat } from '@/utils/util' import { timeFormat } from '@/utils/util'
import feedback from '@/utils/feedback' import feedback from '@/utils/feedback'
import { dictDataLists } from '@/api/setting/dict' import { dictDataLists } from '@/api/setting/dict'
import { getRoutePath } from '@/router' import { getRoutePath } from '@/router'
const userStore = useUserStore()
const route = useRoute() const route = useRoute()
const company_type_show = ref(true) const company_type_show = ref(true)
// //
@ -272,6 +293,11 @@ const handleDelete = async (id: number | any[]) => {
await apiCompanyDelete({ id }) await apiCompanyDelete({ id })
getLists() getLists()
} }
const handleAuthentication = async (id: number | any[]) => {
await feedback.confirm('确定要认证?')
await authentication({ id })
getLists()
}
getLists() getLists()
</script> </script>

View File

@ -4,14 +4,22 @@
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange"> <el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column label="id" prop="id" show-overflow-tooltip width="60" /> <el-table-column label="id" prop="id" show-overflow-tooltip width="60" />
<el-table-column label="签约公司" prop="company_name" show-overflow-tooltip /> <el-table-column label="公司名称" prop="company_name" show-overflow-tooltip />
<el-table-column label="公司类型" prop="company_type" show-overflow-tooltip /> <el-table-column label="公司类型" prop="company_type" show-overflow-tooltip />
<el-table-column label="区县" prop="area" show-overflow-tooltip /> <el-table-column label="区县" prop="area_name" show-overflow-tooltip />
<el-table-column label="乡镇" prop="street" show-overflow-tooltip /> <el-table-column label="乡镇" prop="street_name" show-overflow-tooltip />
<el-table-column label="主联系人" prop="master_name" show-overflow-tooltip /> <el-table-column label="主联系人" prop="master_name" show-overflow-tooltip />
<el-table-column label="联系方式" prop="master_phone" show-overflow-tooltip /> <el-table-column label="联系方式" prop="master_phone" show-overflow-tooltip />
<el-table-column label="片区经理" prop="area_manager" show-overflow-tooltip /> <el-table-column
<el-table-column label="是否签约" prop="is_contract" show-overflow-tooltip /> label="片区经理"
prop="area_manager_name"
show-overflow-tooltip
/>
<el-table-column label="是否签约" prop="is_contract" show-overflow-tooltip>
<template #default="{ row }">
{{ row.is_contract == 1 ? '已签约' : '未签约' }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="450" fixed="right"> <el-table-column label="操作" align="center" width="450" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
<div style="display: flex"> <div style="display: flex">

File diff suppressed because it is too large Load Diff

View File

@ -1,323 +1,300 @@
<template> <template>
<div class="admin"> <div class="admin">
<el-card class="!border-none" shadow="never"> <el-card class="!border-none" shadow="never">
<el-form class="mb-[-16px]" :model="formData" inline> <el-form class="mb-[-16px]" :model="formData" inline>
<el-form-item label="管理员名称"> <el-form-item label="管理员名称">
<el-input <el-input
v-model="formData.name" v-model="formData.name"
class="w-[280px]" class="w-[280px]"
clearable clearable
@keyup.enter="resetPage" @keyup.enter="resetPage"
/> />
</el-form-item> </el-form-item>
<el-form-item label="管理员角色"> <el-form-item label="管理员角色">
<el-select class="w-[280px]" v-model="formData.role_id"> <el-select class="w-[280px]" v-model="formData.role_id">
<el-option label="全部" value /> <el-option label="全部" value />
<el-option <el-option
v-for="(item, index) in optionsData.role" v-for="(item, index) in optionsData.role"
:key="index" :key="index"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button> <el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button> <el-button @click="resetParams">重置</el-button>
<export-data <export-data
class="ml-2.5" class="ml-2.5"
:fetch-fun="adminLists" :fetch-fun="adminLists"
:params="formData" :params="formData"
:page-size="pager.size" :page-size="pager.size"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<el-card v-loading="pager.loading" class="mt-4 !border-none" shadow="never"> <el-card v-loading="pager.loading" class="mt-4 !border-none" shadow="never">
<el-button v-perms="['auth.admin/add']" type="primary" @click="handleAdd"> <el-button v-perms="['auth.admin/add']" type="primary" @click="handleAdd">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
新增 新增
</el-button> </el-button>
<div class="mt-4"> <div class="mt-4">
<el-table :data="pager.lists" size="large"> <el-table :data="pager.lists" size="large">
<el-table-column label="ID" prop="id" min-width="60" />> <el-table-column label="ID" prop="id" min-width="60" />>
<el-table-column label="头像" min-width="100"> <el-table-column label="头像" min-width="100">
<template #default="{ row }"> <template #default="{ row }">
<el-avatar :size="50" :src="row.avatar"></el-avatar> <el-avatar :size="50" :src="row.avatar"></el-avatar>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="姓名" prop="name" min-width="100" /> <el-table-column label="姓名" prop="name" min-width="100" />
<el-table-column label="联系方式" prop="account" min-width="130" /> <el-table-column label="联系方式" prop="account" min-width="130" />
<el-table-column <el-table-column
label="隶属公司" label="隶属公司"
prop="company.company_name" prop="company.company_name"
min-width="120" min-width="120"
align="center" align="center"
> >
<template #default="{ row }"> <template #default="{ row }">
{{ row.company.company_name || "/" }} {{ row.company.company_name || '/' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="所在乡镇" prop="street_name" min-width="120" />
label="所在乡镇" <el-table-column label="授权身份" prop="role_name" min-width="120" />
prop="street_name" <el-table-column
min-width="120" label="是否签约"
/> prop="is_contract"
<el-table-column label="授权身份" prop="role_name" min-width="120" /> align="center"
<el-table-column min-width="120"
label="是否签约" >
prop="contract_id" <template #default="{ row }">
align="center" {{ row.is_contract == 1 ? '已签约' : '未签约' }}
min-width="120" </template>
> </el-table-column>
<template #default="{ row }"> <el-table-column label="最近登录时间" prop="login_time" min-width="180" />
{{ row.contract_id == 0 ? "未签约" : "已签约" }} <el-table-column
</template> label="创建时间"
</el-table-column> prop="create_time"
<el-table-column min-width="180"
label="最近登录时间" align="center"
prop="login_time" />
min-width="180" <el-table-column label="最近登录IP" prop="login_ip" min-width="120" />
/> <el-table-column label="账号状态" min-width="100" v-perms="['auth.admin/edit']">
<el-table-column <template #default="{ row }">
label="创建时间" <el-switch
prop="create_time" v-if="row.root != 1"
min-width="180" v-model="row.disable"
align="center" :active-value="0"
/> :inactive-value="1"
<el-table-column label="最近登录IP" prop="login_ip" min-width="120" /> @change="changeStatus(row)"
<el-table-column />
label="账号状态" </template>
min-width="100" </el-table-column>
v-perms="['auth.admin/edit']"
>
<template #default="{ row }">
<el-switch
v-if="row.root != 1"
v-model="row.disable"
:active-value="0"
:inactive-value="1"
@change="changeStatus(row)"
/>
</template>
</el-table-column>
<el-table-column <el-table-column label="操作" width="330" align="center" fixed="right">
label="操作" <template #default="{ row }">
width="330" <div style="display: flex">
align="center" <el-button
fixed="right" v-perms="['auth.admin/edit']"
> type="primary"
<template #default="{ row }"> link
<div style="display: flex"> @click="handleCheck(row)"
<el-button >查看</el-button
v-perms="['auth.admin/edit']" >
type="primary" <el-button
link v-perms="['auth.admin/edit']"
@click="handleCheck(row)" type="primary"
>查看</el-button link
@click="handleEdit(row)"
>编辑</el-button
>
<el-button
v-if="row.root != 1"
v-perms="['auth.admin/delete']"
type="danger"
link
@click="handleDelete(row.id)"
>删除</el-button
>
<template v-if="row.company_id != 0 && row.is_contract == 0">
<el-button
v-perms="['company/edit', 'company/add']"
type="primary"
link
@click="
;(showPop = true),
(showConctactPop = true),
(contractId = row.id)
"
>生成个人合同</el-button
>
<el-button
v-perms="['company/edit', 'company/add']"
type="primary"
link
@click=";(showPop = true), (contractId = row.id)"
>发送短信</el-button
>
</template>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup
v-if="showEdit"
ref="editRef"
:isCheck="isCheck"
@success="getLists"
@close="showEdit = false"
/>
<el-dialog v-model="showPop" @close="offPop">
<h1>重要提醒</h1>
<div class="content" v-if="showConctactPop">
请确认信息是否有误,发送合同,请确认信息是否有误,发送电子合同后短时间内将不可再次发送.
</div>
<div class="content" v-else>
确认签约短信将在60秒后发送,请注意查收,并点击短信链接进行线上合同签约
</div>
<p class="btn_menu">
<el-button type="primary" size="large" v-if="showConctactPop" @click="creContct"
>确认创建</el-button
> >
<el-button <el-button type="primary" size="large" v-else @click="sendMsg">确认</el-button>
v-perms="['auth.admin/edit']" <el-button type="info" size="large" @click="offPop">返回</el-button>
type="primary" </p>
link </el-dialog>
@click="handleEdit(row)" </div>
>编辑</el-button
>
<el-button
v-if="row.root != 1"
v-perms="['auth.admin/delete']"
type="danger"
link
@click="handleDelete(row.id)"
>删除</el-button
>
<el-button
v-perms="['company/edit', 'company/add']"
type="primary"
link
@click="
(showPop = true),
(showConctactPop = true),
(contractId = row.id)
"
>生成个人合同</el-button
>
<el-button
v-perms="['company/edit', 'company/add']"
type="primary"
link
@click="(showPop = true), (contractId = row.id)"
>发送短信</el-button
>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup
v-if="showEdit"
ref="editRef"
:isCheck="isCheck"
@success="getLists"
@close="showEdit = false"
/>
<el-dialog v-model="showPop" @close="offPop">
<h1>重要提醒</h1>
<div class="content" v-if="showConctactPop">
请确认信息是否有误,发送合同,请确认信息是否有误,发送电子合同后短时间内将不可再次发送.
</div>
<div class="content" v-else>
确认签约短信将在60秒后发送,请注意查收,并点击短信链接进行线上合同签约
</div>
<p class="btn_menu">
<el-button
type="primary"
size="large"
v-if="showConctactPop"
@click="creContct"
>确认创建</el-button
>
<el-button type="primary" size="large" v-else @click="sendMsg"
>确认</el-button
>
<el-button type="info" size="large" @click="offPop">返回</el-button>
</p>
</el-dialog>
</div>
</template> </template>
<script lang="ts" setup name="admin"> <script lang="ts" setup name="admin">
import { import { adminEdit, adminLists, adminDelete, generateGontract, sendMsgApi } from '@/api/perms/admin'
adminEdit, import { roleAll } from '@/api/perms/role'
adminLists, import { useDictOptions } from '@/hooks/useDictOptions'
adminDelete, import { usePaging } from '@/hooks/usePaging'
generateGontract, import feedback from '@/utils/feedback'
sendMsgApi, import EditPopup from './edit.vue'
} from "@/api/perms/admin"; const route = useRoute()
import { roleAll } from "@/api/perms/role"; const editRef = shallowRef<InstanceType<typeof EditPopup>>()
import { useDictOptions } from "@/hooks/useDictOptions";
import { usePaging } from "@/hooks/usePaging";
import feedback from "@/utils/feedback";
import EditPopup from "./edit.vue";
const editRef = shallowRef<InstanceType<typeof EditPopup>>();
// //
const formData = reactive({ const formData = reactive({
name: "", name: '',
role_id: "", role_id: '',
}); company_id: ''
const contractId = ref(""); })
const contractId = ref('')
// //
const showPop = ref(false); const showPop = ref(false)
const showConctactPop = ref(false); const showConctactPop = ref(false)
const offPop = () => { const offPop = () => {
showPop.value = false; showPop.value = false
showConctactPop.value = false; showConctactPop.value = false
}; }
const creContct = () => { const creContct = () => {
// feedback.msgSuccess(""); // feedback.msgSuccess("");
generateGontract({ id: contractId.value }).then(() => { generateGontract({ id: contractId.value }).then(() => {
feedback.msgSuccess("发送成功"); feedback.msgSuccess('发送成功')
}); })
offPop(); offPop()
}; }
const sendMsg = () => { const sendMsg = () => {
sendMsgApi({ id: contractId.value }).then((res) => { sendMsgApi({ id: contractId.value }).then((res) => {
feedback.msgSuccess("发送成功"); feedback.msgSuccess('发送成功')
}); })
offPop(); offPop()
}; }
// //
const showEdit = ref(false); const showEdit = ref(false)
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: adminLists, fetchFun: adminLists,
params: formData, params: formData
}); })
const changeStatus = (data: any) => { const changeStatus = (data: any) => {
adminEdit({ adminEdit({
id: data.id, id: data.id,
account: data.account, account: data.account,
name: data.name, name: data.name,
role_id: data.role_id, role_id: data.role_id,
disable: data.disable, disable: data.disable,
multipoint_login: data.multipoint_login, multipoint_login: data.multipoint_login
}).finally(() => { }).finally(() => {
getLists(); getLists()
}); })
}; }
// //
const isCheck = ref(false); const isCheck = ref(false)
const handleCheck = async (data: any) => { const handleCheck = async (data: any) => {
isCheck.value = true; isCheck.value = true
showEdit.value = true; showEdit.value = true
await nextTick(); await nextTick()
editRef.value?.open("edit"); editRef.value?.open('edit')
editRef.value?.setFormData(data); editRef.value?.setFormData(data)
}; }
const handleAdd = async () => { const handleAdd = async () => {
isCheck.value = false; isCheck.value = false
showEdit.value = true; showEdit.value = true
await nextTick(); await nextTick()
editRef.value?.open("add"); editRef.value?.open('add')
}; }
const handleEdit = async (data: any) => { const handleEdit = async (data: any) => {
isCheck.value = false; isCheck.value = false
showEdit.value = true; showEdit.value = true
await nextTick(); await nextTick()
editRef.value?.open("edit"); editRef.value?.open('edit')
editRef.value?.setFormData(data); editRef.value?.setFormData(data)
}; }
const handleDelete = async (id: number) => { const handleDelete = async (id: number) => {
await feedback.confirm("确定要删除?"); await feedback.confirm('确定要删除?')
await adminDelete({ id }); await adminDelete({ id })
getLists(); getLists()
}; }
const { optionsData } = useDictOptions<{ const { optionsData } = useDictOptions<{
role: any[]; role: any[]
}>({ }>({
role: { role: {
api: roleAll, api: roleAll
}, }
}); })
if (route.query.company_id) {
formData.company_id = route.query.company_id?.toString()
}
onMounted(() => { onMounted(() => {
getLists(); getLists()
}); })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
h1 { h1 {
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 30px; font-size: 30px;
color: red; color: red;
margin-bottom: 10px; margin-bottom: 10px;
} }
.content { .content {
font-size: 20px; font-size: 20px;
} }
.info { .info {
color: red; color: red;
font-weight: bold; font-weight: bold;
font-size: 18px; font-size: 18px;
display: inline-block; display: inline-block;
margin: 0 5px; margin: 0 5px;
} }
.btn_menu { .btn_menu {
margin-top: 10vh; margin-top: 10vh;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
} }
</style> </style>