This commit is contained in:
jiangyouyi 2023-08-09 12:03:55 +08:00
parent 0432a7fbc6
commit b015243544
6 changed files with 243 additions and 182 deletions

View File

@ -19,3 +19,7 @@ export function apiTaskAdd(params: any) {
export function apiTaskList(params: any) { export function apiTaskList(params: any) {
return request.get({ url: "/task_scheduling_plan.task_scheduling_plan/lists", params }); return request.get({ url: "/task_scheduling_plan.task_scheduling_plan/lists", params });
} }
//任务日程-详情
export function apiTaskDetails(params: any) {
return request.get({ url: "/task_scheduling_plan.task_scheduling_plan/detail", params });
}

View File

@ -11,13 +11,20 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="合同类型" prop="contract_type"> <el-form-item label="合同类型" prop="contract_type">
<el-input <el-select
class="w-[280px]"
v-model="queryParams.contract_type" v-model="queryParams.contract_type"
clearable clearable
placeholder="请输入合同类型" placeholder="请输入合同类型"
>
<el-option
v-for="item in datalist"
:key="item.label"
:value="item.id"
:label="item.name"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="合同编号" prop="contract_no"> <el-form-item label="合同编号" prop="contract_no">
<el-input <el-input
class="w-[280px]" class="w-[280px]"
@ -27,12 +34,18 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-input <el-select
class="w-[280px]"
v-model="queryParams.status" v-model="queryParams.status"
clearable clearable
placeholder="请输入状态" placeholder="请选择状态"
>
<el-option
v-for="item in statusdata"
:key="item.label"
:value="item.id"
:label="item.name"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="片区经理" prop="area_manager"> <el-form-item label="片区经理" prop="area_manager">
@ -72,13 +85,25 @@
prop="contract_type_name" prop="contract_type_name"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip /> <el-table-column
<el-table-column label="甲方" prop="party_a_name" show-overflow-tooltip> label="合同编号"
prop="contract_no"
show-overflow-tooltip
/>
<el-table-column
label="甲方"
prop="party_a_name"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.party_a_info.company_name }}</span> <span>{{ scope.row.party_a_info.company_name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="乙方" prop="party_b_name" show-overflow-tooltip /> <el-table-column
label="乙方"
prop="party_b_name"
show-overflow-tooltip
/>
<el-table-column <el-table-column
label="片区经理" label="片区经理"
@ -88,19 +113,30 @@
<el-table-column label="类型" prop="type" show-overflow-tooltip> <el-table-column label="类型" prop="type" show-overflow-tooltip>
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.row.type == 1 ? '公司' : scope.row.type == 0 ? '' : '个人' scope.row.type == 1 ? "公司" : scope.row.type == 0 ? "" : "个人"
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="状态" prop="status_name" show-overflow-tooltip> <el-table-column
label="状态"
prop="status_name"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.status_name == '已签约'" style="color: #67c23a" <span
v-if="scope.row.status_name == '已签约'"
style="color: #67c23a"
>已签约</span >已签约</span
> >
<span v-else style="color: #fe0000">未签约</span> <span v-else style="color: #fe0000">未签约</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="180" fixed="right" align="center"> <el-table-column
label="操作"
width="180"
fixed="right"
align="center"
>
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" link> <el-button type="primary" link>
<router-link <router-link
@ -125,70 +161,81 @@
<script lang="ts" setup name="contractLists"> <script lang="ts" setup name="contractLists">
// import contractDetil from './contractDetil.vue' // import contractDetil from './contractDetil.vue'
import { usePaging } from '@/hooks/usePaging' import { usePaging } from "@/hooks/usePaging";
import { useDictData } from '@/hooks/useDictOptions' import { useDictData } from "@/hooks/useDictOptions";
import { apiContractLists, apiContractDelete, apiContractDetail } from '@/api/contract' import {
import { timeFormat } from '@/utils/util' apiContractLists,
import feedback from '@/utils/feedback' apiContractDelete,
const route = useRoute() apiContractDetail,
} from "@/api/contract";
const editRef = shallowRef<InstanceType<typeof EditPopup>>() import { timeFormat } from "@/utils/util";
import feedback from "@/utils/feedback";
import { dictDataLists } from "@/api/setting/dict";
const route = useRoute();
const editRef = shallowRef<InstanceType<typeof EditPopup>>();
// //
const showEdit = ref(false) const showEdit = ref(false);
const datalist = ref([]);
// //
const queryParams = reactive({ const queryParams = reactive({
company_id: '', company_id: "",
contract_type: '', contract_type: "",
contract_no: '', contract_no: "",
status: '', status: "",
party_a: '', party_a: "",
party_b: '', party_b: "",
area_manager: '', area_manager: "",
type: '' type: "",
}) });
const statusdata=reactive([
{id:"1",name:'已签约'},
{id:"0",name:"未签约"},
]
)
if (route.query.type) { if (route.query.type) {
queryParams.type = route.query.type?.toString() queryParams.type = route.query.type?.toString();
} }
// //
const selectData = ref<any[]>([]) const selectData = ref<any[]>([]);
// //
const handleSelectionChange = (val: any[]) => { const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id) selectData.value = val.map(({ id }) => id);
} };
// //
const { dictData } = useDictData('') const { dictData } = useDictData("");
dictDataLists({ type_id: 7 }).then((res) => {
datalist.value = res.lists;
});
// //
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiContractLists, fetchFun: apiContractLists,
params: queryParams params: queryParams,
}) });
// //
const childDetil = ref() const childDetil = ref();
const showDetil = async (id) => { const showDetil = async (id) => {
// const res = await apiContractDetail({ id }) // const res = await apiContractDetail({ id })
// childDetil.value.setFormData(res) // childDetil.value.setFormData(res)
// childDetil.value.shoeEditFn(true) // childDetil.value.shoeEditFn(true)
} };
// //
const checkContcat = (id: number) => { const checkContcat = (id: number) => {
apiContractDetail({ id }).then((res) => { apiContractDetail({ id }).then((res) => {
res.file ? window.open(res.file) : feedback.msgError('暂无合同可以查看') res.file ? window.open(res.file) : feedback.msgError("暂无合同可以查看");
}) });
} };
// //
const handleDelete = async (id: number | any[]) => { const handleDelete = async (id: number | any[]) => {
await feedback.confirm('确定要删除?') await feedback.confirm("确定要删除?");
await apiContractDelete({ id }) await apiContractDelete({ id });
getLists() getLists();
} };
getLists() getLists();
// pager.lists.forEach((item) => {
// console.log(item.type);
// });
</script> </script>

View File

@ -2,7 +2,7 @@
<div class="edit-popup"> <div class="edit-popup">
<popup <popup
ref="popupRef" ref="popupRef"
:title="popupTitle" title="创建日程安排"
:async="true" :async="true"
width="1000px" width="1000px"
@confirm="handleSubmit" @confirm="handleSubmit"
@ -127,15 +127,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="24">
<el-form-item label="详细描述" prop="icon">
<editor
v-model="formData.content"
:height="500"
/> </el-form-item
></el-col>
</el-row>
</el-col> </el-col>
</el-form> </el-form>
<el-dialog v-model="isMan" title="选择负责人" width="60%"> <el-dialog v-model="isMan" title="选择负责人" width="60%">
@ -174,9 +166,9 @@ const popupRef = shallowRef<InstanceType<typeof Popup>>();
const mode = ref("add"); const mode = ref("add");
// //
const popupTitle = computed(() => { // const popupTitle = computed(() => {
return mode.value == "edit" ? "编辑任务" : "新增任务"; // return mode.value == "edit" ? "" : "";
}); // });
onMounted(() => { onMounted(() => {
props.dateValue?.toDateString() props.dateValue?.toDateString()

View File

@ -1,12 +1,12 @@
<template> <template>
<div> <div>
<el-card class="!border-none" v-loading="loading" shadow="never"> <el-card class="!border-none" v-loading="loading" shadow="never">
<el-button v-perms="['flow_type/add']" type="primary" @click="handleAdd"> <!-- <el-button v-perms="['flow_type/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-calendar v-model="dateValue"> <el-calendar v-model="dateValue">
<template #dateCell="{ data }"> <template #dateCell="{ data }">
@ -39,6 +39,7 @@
</el-calendar> </el-calendar>
</div> </div>
</el-card> </el-card>
<edit-popup <edit-popup
v-if="showEdit" v-if="showEdit"
ref="editRef" ref="editRef"
@ -47,6 +48,7 @@
@success="loadTask" @success="loadTask"
@close="showEdit = false" @close="showEdit = false"
/> />
</div> </div>
</template> </template>
@ -58,13 +60,14 @@ import feedback from "@/utils/feedback";
// import { getRoutePath } from "router"; // import { getRoutePath } from "router";
import EditPopup from "./edit.vue"; import EditPopup from "./edit.vue";
import { reactive, watch } from "vue"; import { reactive, watch } from "vue";
import { apiTaskList } from '@/api/task' import { apiTaskList ,apiTaskDetails} from '@/api/task'
const dateValue = ref(new Date()); const dateValue = ref(new Date());
watch(() => dateValue,(newValue, oldValue) => { watch(() => dateValue,(newValue, oldValue) => {
showEdit.value = true;
editRef.value?.open("add");
initShowDate(timeFormat(newValue.value.getTime())); initShowDate(timeFormat(newValue.value.getTime()));
console.log(taskList.value.find((item)=>item.start_time.split(' ')[0]==timeFormat(newValue.value.getTime()))); // console.log(taskList.value.find((item)=>item.start_time.split(' ')[0]==timeFormat(newValue.value.getTime())));
}, },
{ deep: true } { deep: true }
); );
@ -122,7 +125,6 @@ const initShowDate = (dateStr = "") => {
} }
}; };
initShowDate(); initShowDate();
const dateNow = (day)=>{ const dateNow = (day)=>{
return taskList.value.find((item)=>item.start_time.split(' ')[0]==day)?.template_name; return taskList.value.find((item)=>item.start_time.split(' ')[0]==day)?.template_name;
} }
@ -139,12 +141,13 @@ const handleAdd = async () => {
}; };
// //
const handleEdit = async (data: any) => { // const handleEdit = async (data: any) => {
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 | any[]) => { // const handleDelete = async (id: number | any[]) => {

View File

@ -30,8 +30,8 @@
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status"> <el-radio-group v-model="formData.status">
<el-radio :label="1"></el-radio> <el-radio :label="1">显示</el-radio>
<el-radio :label="0"></el-radio> <el-radio :label="0">隐藏</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="任务描述" prop="content"> <el-form-item label="任务描述" prop="content">

View File

@ -26,7 +26,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label-width="100px" label="状态" prop="status"> <el-form-item label-width="100px" label="状态" prop="status">
<el-input class="w-[280px]" v-model="queryParams.status" clearable placeholder="请输入状态" /> <el-select v-model="queryParams.status" clearable placeholder="请选择状态">
<el-option
v-for="item in statusdata"
:key="item.label"
:value="item.id"
:label="item.name"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label-width="100px" label="任务描述" prop="content"> <el-form-item label-width="100px" label="任务描述" prop="content">
<el-input class="w-[280px]" v-model="queryParams.content" clearable placeholder="请输入任务描述" /> <el-input class="w-[280px]" v-model="queryParams.content" clearable placeholder="请输入任务描述" />
@ -58,7 +65,11 @@
<el-table-column label="创建人" prop="admin_id" show-overflow-tooltip /> <el-table-column label="创建人" prop="admin_id" show-overflow-tooltip />
<el-table-column label="金额" prop="moeny" show-overflow-tooltip /> <el-table-column label="金额" prop="moeny" show-overflow-tooltip />
<el-table-column label="任务类型" prop="type_name" show-overflow-tooltip /> <el-table-column label="任务类型" prop="type_name" show-overflow-tooltip />
<el-table-column label="状态" prop="status" show-overflow-tooltip /> <el-table-column label="状态" show-overflow-tooltip>
<template #default="{ row }">
<span>{{row.status==1?'显示':"隐藏"}}</span>
</template>
</el-table-column>
<el-table-column label="任务描述" prop="content" show-overflow-tooltip /> <el-table-column label="任务描述" prop="content" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right"> <el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }"> <template #default="{ row }">
@ -113,6 +124,10 @@ const queryParams = reactive({
status: '', status: '',
content: '' content: ''
}) })
const statusdata=reactive([
{id:1,name:"显示"},
{id:0,name:"隐藏"}
])
// //
const selectData = ref<any[]>([]) const selectData = ref<any[]>([])