创建公司非必选

This commit is contained in:
zmj 2023-12-23 11:51:25 +08:00
parent 8b75c65885
commit d3d0f5d7fd
10 changed files with 346 additions and 90 deletions

View File

@ -1,7 +1,7 @@
NODE_ENV = 'development' NODE_ENV = 'development'
# VITE_APP_BASE_URL = 'http://192.168.1.16:8000' # VITE_APP_BASE_URL = 'http://192.168.1.11:8000'
#
VITE_APP_BASE_URL = 'https://ceshi-worker-task.lihaink.cn' VITE_APP_BASE_URL = 'https://ceshi-worker-task.lihaink.cn'
# VITE_APP_BASE_URL = 'https://preview-worker-task.lihaink.cn' # VITE_APP_BASE_URL = 'https://preview-worker-task.lihaink.cn'

View File

@ -25,3 +25,9 @@ export function apiTaskList(params: any) {
export function apiTaskDetails(params: any) { export function apiTaskDetails(params: any) {
return request.get({ url: '/task_scheduling_plan.task_scheduling_plan/detail', params }) return request.get({ url: '/task_scheduling_plan.task_scheduling_plan/detail', params })
} }
// renwu
//任务日程-详情
export function getDayTaskList(params: any) {
return request.get({ url: '/task_scheduling_plan.task_scheduling_plan/getDayTaskList', params })
}

View File

@ -8,5 +8,4 @@ const config = {
urlPrefix: "adminapi", //请求默认前缀 urlPrefix: "adminapi", //请求默认前缀
timeout: 20 * 1000, //请求超时时长 timeout: 20 * 1000, //请求超时时长
}; };
console.log( import.meta.env,99999)
export default config; export default config;

View File

@ -71,7 +71,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="13"> <el-col :span="13">
<el-form-item label="性别" prop="sex"> <el-form-item label="性别" >
<el-select <el-select
v-model="formData.sex" v-model="formData.sex"
placeholder="请选择性别" placeholder="请选择性别"
@ -86,7 +86,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="11"> <el-col :span="11">
<el-form-item label="身份证号" prop="id_card"> <el-form-item label="身份证号" >
<el-input <el-input
v-model="formData.id_card" v-model="formData.id_card"
placeholder="请输入身份证号" placeholder="请输入身份证号"
@ -212,7 +212,7 @@
<div style="font-size: 1.2rem; margin: 10px 0">资质信息</div> <div style="font-size: 1.2rem; margin: 10px 0">资质信息</div>
<div style="display: flex; justify-content: space-between"> <div style="display: flex; justify-content: space-between">
<div> <div>
<el-form-item label="身份证" prop="qualification.id_card"> <el-form-item label="身份证" >
<el-upload <el-upload
v-model="formData.qualification.id_card" v-model="formData.qualification.id_card"
class="avatar-uploader pl-3" class="avatar-uploader pl-3"
@ -252,7 +252,7 @@
</el-form-item> </el-form-item>
</div> </div>
<div> <div>
<el-form-item label="银行卡" prop="qualification.bank_account"> <el-form-item label="银行卡" >
<el-upload <el-upload
v-model="formData.qualification.bank_account" v-model="formData.qualification.bank_account"
class="avatar-uploader pl-3" class="avatar-uploader pl-3"
@ -419,15 +419,15 @@ const rules = ref({
company_name: [{ required: true, message: "请选择公司", trigger: "blur" }], company_name: [{ required: true, message: "请选择公司", trigger: "blur" }],
group_id: [{ required: true, message: "请选择角色", trigger: "blur" }], group_id: [{ required: true, message: "请选择角色", trigger: "blur" }],
nickname: [{ required: true, message: "请输入姓名", trigger: "blur" }], nickname: [{ required: true, message: "请输入姓名", trigger: "blur" }],
sex: [{ required: true, message: "请选择性别", trigger: "blur" }], // sex: [{ required: true, message: "", trigger: "blur" }],
id_card: [{ required: true, message: "请输入身份证号", trigger: "blur" }], // id_card: [{ required: true, message: "", trigger: "blur" }],
account: [{ required: true, message: "请输入联系电话", trigger: "blur" }], account: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
"qualification.bank_account": [ // "qualification.bank_account": [
{ required: true, message: "请上传银行卡", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
], // ],
"qualification.id_card": [ // "qualification.id_card": [
{ required: true, message: "请上传身份证", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
], // ],
}); });
// //
@ -598,16 +598,16 @@ getProvinceList();
// //
const submit = () => { const submit = () => {
if (!formData.avatar) return ElMessage.error("请上传头像"); // if (!formData.avatar) return ElMessage.error("");
formRef.value?.validate((e) => { formRef.value?.validate((e) => {
if (e) { if (e) {
if (!formData.qualification.id_card || !formData.qualification.id_card_b) // if (!formData.qualification.id_card || !formData.qualification.id_card_b)
return ElMessage.error("请上传身份证信息"); // return ElMessage.error("");
if ( // if (
!formData.qualification.bank_account || // !formData.qualification.bank_account ||
!formData.qualification.bank_account_b // !formData.qualification.bank_account_b
) // )
return ElMessage.error("请上传银行卡信息"); // return ElMessage.error("");
userAdd(formData).then(() => { userAdd(formData).then(() => {
ElMessage.success("添加成功"); ElMessage.success("添加成功");
router.back(); router.back();

View File

@ -120,7 +120,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="来源单号" prop="source_sn" min-width="100" /> <el-table-column label="来源" prop="remark" min-width="100" />
<el-table-column label="记录时间" prop="create_time" min-width="140" /> <el-table-column label="记录时间" prop="create_time" min-width="140" />
</el-table> </el-table>
<div class="flex justify-end mt-4"> <div class="flex justify-end mt-4">

View File

@ -14,9 +14,9 @@
> >
</el-col> </el-col>
<el-col :span="12" <el-col :span="12"
>收益: >余额:
<span style="color: #67c23a; font-weight: bold">{{ <span style="color: #67c23a; font-weight: bold">{{
datas.income datas.user_money
}}</span }}</span
> >
</el-col> </el-col>

View File

@ -0,0 +1,93 @@
<template>
<el-dialog v-model="dialogVisible" title="任务详情" width="30%">
<!-- <span>This is a message</span> -->
<el-card class="box-card">
<template #header>
<div class="card-header">
<span class="tit">任务名称</span>
<span>干到公司倒闭</span>
</div>
</template>
<div> <span class="tit">判定条件</span> 飞过的痕迹的咖啡馆很快就会大幅回升的科技孵化的身份可视对讲回复低功耗的付款就更好的付款计划大幅回升的开发</div>
<div style="margin-top: 1vh;" class="tit">任务进度
<el-progress :text-inside="true" color="#67C23A" :stroke-width="20" :percentage="70" />
</div>
<!-- <div v-for="o in 4" :key="o" class="text item">{{ 'List item ' + o }}</div>
<template #footer>Footer content</template> -->
</el-card>
<div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="dialogVisible = false">
结算
</el-button>
<!-- <el-button type="primary" @click="dialogVisible = false">
确定
</el-button> -->
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const dialogVisible = ref(false)
const openDeatl = (row) => {
console.log(row)
dialogVisible.value = true
}
defineExpose({
openDeatl,
});
</script>
<style scoped>
.dialog-footer button:first-child {
margin-right: 10px;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.text {
font-size: 14px;
}
.item {
margin-bottom: 18px;
}
.box-card {
width: 100%;
}
.tit{
font-weight: bold;
}
</style>

View File

@ -0,0 +1,113 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="title" :async="true" width="800px" @close="handleClose"
:clickModalClose="mode == 'show'" :button="false">
<el-table :data="pager.lists">
<el-table-column label="ID" prop="task.id" show-overflow-tooltip width="80" />
<el-table-column label="名称" prop="task.title" width="300" show-overflow-tooltip />
<el-table-column label="金额" prop="task.money" show-overflow-tooltip />
<el-table-column label="状态" prop="templateInfo.status" show-overflow-tooltip>
<template #default="{ row }">
<span
:style="{ color: row.task.status == 2 ? '#F5D984' : row.task.status == 3 ? '#37BE5F' : '#EBEBEB' }">
{{
statusFn(row.task.status) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" prop="street" show-overflow-tooltip align="center">
<template #default="{ row }">
<span style="cursor: pointer;color: #4A5DFF;" @click="openTask(row)">详情</span>
</template>
</el-table-column>
</el-table>
</popup>
</div>
</template>
<script lang="ts" setup name="taskEidt">
import Popup from "@/components/popup/index.vue";
import { usePaging } from "@/hooks/usePaging";
import { getDayTaskList } from "@/api/task";
import { timeFormat } from "@/utils/util";
const route = useRoute();
const emit = defineEmits(["success", "close",'openDeatl']);
const popupRef = shallowRef<InstanceType<typeof Popup>>();
const isShow = ref(false);
const title = ref("任务列表");
const mode = ref('')
const queryParams = {
company_id: '',
date: ''
}
const dayTaskList = ref("")
//
const open = async (date, id) => {
queryParams.company_id = id
queryParams.date = timeFormat(date)
await getLists();
// console.log(pager.lists)
// getDayTaskList( {
// company_id:id,
// date:timeFormat(date)
// }).then(res=>{
// dayTaskList.value=res
// })
popupRef.value?.open();
};
//
const openTask=(row)=>{
emit("openDeatl",row);
}
const statusFn = (status) => {
if (status == 2) return "进行中"
if (status == 3) return "已完成"
if (status == 5) return "已关闭"
}
const tagClick = (item) => {
emit("open", item);
}
//
const handleClose = () => {
emit("close");
};
defineExpose({
open,
});
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: getDayTaskList,
params: queryParams,
});
</script>
<style lang="scss" scoped>
.formdata {
.el-form-item {
.el-date-picker {
width: 100%;
}
}
}
.tag-li {
margin: 5px;
}
</style>

View File

@ -13,11 +13,11 @@
新增 新增
</el-button> </el-button>
</div> --> </div> -->
<calendar <!-- <calendar
:list="taskList" :list="taskList"
@clickItem="clickTask" @clickItem="clickTask"
@initShowDate="initShowDate" @initShowDate="initShowDate"
></calendar> ></calendar> -->
<!-- <div class="mt-4"> <!-- <div class="mt-4">
<el-calendar v-model="dateValue"> <el-calendar v-model="dateValue">
<template #dateCell="{ data }"> <template #dateCell="{ data }">
@ -40,31 +40,58 @@
</template> </template>
</el-calendar> </el-calendar>
</div>--> </div>-->
<el-calendar v-model="value" @click="dateClick">
<template slot="dateCell" slot-scope="{ date, data }">
查看任务
</template>
</el-calendar>
</el-card> </el-card>
<EditTowPopup <!-- <EditTowPopup ref="editTowRef" :task="task" :type="popupType" :company_id="company_id" @success="loadTask"
ref="editTowRef" @close="showEditTow = false" /> -->
:task="task"
:type="popupType" <popTaskList ref="popTaskTable" @openDeatl="openTask"
:company_id="company_id" @close="showEditTow = false" />
@success="loadTask"
@close="showEditTow = false" <popTaskDetail ref="popDeatil" />
/>
</div> </div>
</template> </template>
<script lang="ts" setup name="task"> <script lang="ts" setup name="task">
import { timeFormat } from "@/utils/util"; import { timeFormat } from "@/utils/util";
import feedback from "@/utils/feedback"; import popTaskList from "./popTaskList.vue";
// import { getRoutePath } from "router"; import popTaskDetail from "./popTaskDetail.vue";
import EditTowPopup from "./editTow.vue";
import { reactive, watch } from "vue"; import { reactive, watch } from "vue";
import { apiTaskList, apiTaskDetails } from "@/api/task"; // import { apiTaskList, apiTaskDetails } from "@/api/task";
import calendar from "./calendar.vue"; // import calendar from "./calendar.vue";
const value = ref(new Date())
const route = useRoute(); const route = useRoute();
const dateValue = ref(new Date());
//
const dateClick = () => {
popTaskTable.value?.open(value.value, route.query.company_id);
}
//
const popDeatil=ref('')
const openTask=(row)=>{
popDeatil.value.openDeatl(row)
}
// return
// //
const task = ref({ const task = ref({
@ -82,17 +109,20 @@ const clickTask = (e: any) => {
popupType.value = "show"; popupType.value = "show";
// task.value = e; // task.value = e;
task.value = taskList.value.find((item: any) => item.id == e) || null; task.value = taskList.value.find((item: any) => item.id == e) || null;
handleSelect(); // handleSelect();
}; };
// //
const loading = ref(true); const loading = ref(false);
const editRef = shallowRef<InstanceType<typeof EditPopup>>(); const editRef = shallowRef<InstanceType<typeof EditPopup>>();
const editTowRef = shallowRef<InstanceType<typeof EditPopup>>(); const editTowRef = shallowRef<InstanceType<typeof EditPopup>>();
const popTaskTable = shallowRef<InstanceType<typeof EditPopup>>();
// //
const showEdit = ref(false); const showEdit = ref(false);
const showEditTow = ref(false); const showEditTow = ref(false);
const showEditDeatil = ref(false);
// //
const queryParams = reactive({ const queryParams = reactive({
@ -109,13 +139,12 @@ const company_id = ref("");
if (route.query.company_id) company_id.value = route.query.company_id; if (route.query.company_id) company_id.value = route.query.company_id;
const taskList = ref<any>([]); const taskList = ref<any>([]);
// // const loadTask = async () => {
const loadTask = async () => { // apiTaskList(queryParams).then((res) => {
apiTaskList(queryParams).then((res) => { // taskList.value = res.lists;
taskList.value = res.lists; // loading.value = false;
loading.value = false; // });
}); // };
};
const start_date = ref(""); const start_date = ref("");
const end_date = ref(""); const end_date = ref("");
@ -137,79 +166,89 @@ const initShowDate = (dateStr = "") => {
if (queryParams.start_time != start_date.value) { if (queryParams.start_time != start_date.value) {
queryParams.start_time = start_date.value; queryParams.start_time = start_date.value;
queryParams.end_time = end_date.value; queryParams.end_time = end_date.value;
loading.value = true; // loading.value = true;
loadTask(); // loadTask();
} }
}; };
initShowDate(); // initShowDate();
// // //
const taskListFilter = (e: any) => { // const taskListFilter = (e: any) => {
return taskList.value // return taskList.value
.filter((item: any) => { // .filter((item: any) => {
const now = new Date(e).getTime() / 1000; // const now = new Date(e).getTime() / 1000;
const start = new Date(item.start_time).getTime() / 1000; // const start = new Date(item.start_time).getTime() / 1000;
const end = new Date(item.end_time).getTime() / 1000; // const end = new Date(item.end_time).getTime() / 1000;
return now - start >= 0 && now - end <= 0; // return now - start >= 0 && now - end <= 0;
}) // })
.slice(0, 5); // .slice(0, 5);
}; // };
// // //
const handleAdd = async () => { // const handleAdd = async () => {
popupType.value = "add"; // popupType.value = "add";
showEditTow.value = true; // showEditTow.value = true;
await nextTick(); // await nextTick();
editTowRef.value?.open("add"); // editTowRef.value?.open("add");
editTowRef.value?.updatedForm(); // editTowRef.value?.updatedForm();
}; // };
// // //
const handleSelect = async () => { // const handleSelect = async () => {
popupType.value = "show"; // popupType.value = "show";
showEditTow.value = true; // showEditTow.value = true;
await nextTick(); // await nextTick();
editTowRef.value?.open("show"); // editTowRef.value?.open("show");
editTowRef.value?.updatedForm(task.value); // editTowRef.value?.updatedForm(task.value);
}; // };
// // //
const nowType = ref(0); // const nowType = ref(0);
const handleTypeClick = (e) => { // const handleTypeClick = (e) => {
console.log(e); // console.log(e);
}; // };
</script> </script>
<style lang="scss"> <style lang="scss">
.is-selected { .is-selected {
color: #1989fa; color: #1989fa;
} }
.el-calendar-table .el-calendar-day { .el-calendar-table .el-calendar-day {
min-height: 8.2rem; min-height: 8.2rem;
padding: 0; padding: 0;
} }
.task { .task {
font-size: 0.8rem; font-size: 0.8rem;
/* color: #f7ba2a; */ /* color: #f7ba2a; */
color: #1989fa; color: #1989fa;
padding: 0 8px; padding: 0 8px;
white-space: nowrap; /* 设置文本不换行 */ white-space: nowrap;
overflow: hidden; /* 隐藏溢出的部分 */ /* 设置文本不换行 */
text-overflow: ellipsis; /* 在溢出的部分显示省略号 */ overflow: hidden;
/* 隐藏溢出的部分 */
text-overflow: ellipsis;
/* 在溢出的部分显示省略号 */
&:hover { &:hover {
background-color: rgba($color: #f38200, $alpha: 0.7); background-color: rgba($color: #f38200, $alpha: 0.7);
border-radius: 4px; border-radius: 4px;
color: #fff; color: #fff;
} }
} }
.the { .the {
color: #ff5100; color: #ff5100;
} }
.tow { .tow {
color: #f38200; color: #f38200;
} }
.fou { .fou {
color: red; color: red;
} }
.btn { .btn {
height: 30px; height: 30px;
width: 150px; width: 150px;
@ -218,14 +257,20 @@ const handleTypeClick = (e) => {
overflow: hidden; overflow: hidden;
display: flex; display: flex;
cursor: pointer; cursor: pointer;
div { div {
flex: 1; flex: 1;
text-align: center; text-align: center;
line-height: 30px; line-height: 30px;
} }
.active { .active {
background-color: #4a5dff; background-color: #4a5dff;
color: #fff; color: #fff;
} }
} }
.is-selected {
color: #1989fa;
}
</style> </style>