|
@@ -0,0 +1,250 @@
|
|
|
+<template>
|
|
|
+ <HcCard>
|
|
|
+ <template #header>
|
|
|
+ <div class="w-36">
|
|
|
+ <el-select v-model="searchForm.department" block clearable placeholder="选择部门" size="large">
|
|
|
+ <el-option label="研发部门" value="1"/>
|
|
|
+ <el-option label="业务部门" value="2"/>
|
|
|
+ <el-option label="人事部门" value="3"/>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="w-36 ml-2">
|
|
|
+ <el-select v-model="searchForm.state" block clearable placeholder="选择计划状态" size="large">
|
|
|
+ <el-option label="未完成" value="1"/>
|
|
|
+ <el-option label="已完成" value="2"/>
|
|
|
+ <el-option label="逾期完成" value="3"/>
|
|
|
+ <el-option label="逾期未完成" value="4"/>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="w-36 ml-4">
|
|
|
+ <el-date-picker class="block" v-model="searchForm.startTime" type="month" value-format="YYYY-MM" placeholder="开始日期" clearable size="large"/>
|
|
|
+ </div>
|
|
|
+ <div class="mx-2">~</div>
|
|
|
+ <div class="w-36">
|
|
|
+ <el-date-picker class="block" v-model="searchForm.endTime" type="month" value-format="YYYY-MM" placeholder="结束日期" clearable size="large"/>
|
|
|
+ </div>
|
|
|
+ <div class="ml-4">
|
|
|
+ <el-button size="large" type="primary" @click="searchClick">
|
|
|
+ <HcIcon name="search-2"/>
|
|
|
+ <span>搜索</span>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="ml-2">
|
|
|
+ <el-button size="large" @click="resetClick">
|
|
|
+ <HcIcon name="close-circle"/>
|
|
|
+ <span>重置</span>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #extra>
|
|
|
+ <el-button size="large" type="success" hc-btn @click="relevanceClick">
|
|
|
+ <HcIcon name="link" :line="false"/>
|
|
|
+ <span>关联任务</span>
|
|
|
+ </el-button>
|
|
|
+ <el-button size="large" type="primary" hc-btn>
|
|
|
+ <HcIcon name="edit-circle"/>
|
|
|
+ <span>变更状态</span>
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <HcTable :column="tableColumn" :isCheck="isTableKey !== 'all'" :datas="tableData" :loading="tableLoading" @selection-change="tableSelectionChange"/>
|
|
|
+ <template #action>
|
|
|
+ <HcPages :pages="searchForm" @change="pageChange"/>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <!--关联任务-->
|
|
|
+ <HcDialog bgColor="#ffffff" isToBody isTable isRowFooter :loading="relatedLoading" :show="relatedModal" title="关联任务" widths="62rem">
|
|
|
+ <div class="hac-diy-dialog-body">
|
|
|
+ <div class="hac-dialog-header">
|
|
|
+ <div class="w-36">
|
|
|
+ <el-select v-model="searchBudgetForm.department" block clearable placeholder="选择部门" size="large">
|
|
|
+ <el-option label="研发部门" value="1"/>
|
|
|
+ <el-option label="业务部门" value="2"/>
|
|
|
+ <el-option label="人事部门" value="3"/>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="w-36 ml-2">
|
|
|
+ <el-select v-model="searchBudgetForm.state" block clearable placeholder="选择计划状态" size="large">
|
|
|
+ <el-option label="未完成" value="1"/>
|
|
|
+ <el-option label="已完成" value="2"/>
|
|
|
+ <el-option label="逾期完成" value="3"/>
|
|
|
+ <el-option label="逾期未完成" value="4"/>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="w-36 ml-2">
|
|
|
+ <el-select v-model="searchBudgetForm.user" block clearable placeholder="选择任务人" size="large">
|
|
|
+ <el-option label="张三" value="1"/>
|
|
|
+ <el-option label="李四" value="2"/>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="ml-4">
|
|
|
+ <el-button size="large" type="primary">
|
|
|
+ <HcIcon name="search-2"/>
|
|
|
+ <span>搜索</span>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="ml-2">
|
|
|
+ <el-button size="large">
|
|
|
+ <HcIcon name="close-circle"/>
|
|
|
+ <span>重置</span>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="hac-dialog-table">
|
|
|
+ <HcTable :column="tableBudgetColumn" :datas="tableBudgetData" :loading="tableBudgetLoading">
|
|
|
+ <template #action="{row,index}">
|
|
|
+ <el-button plain size="small" type="primary" @click="row.isRelated = true" v-if="!row.isRelated">
|
|
|
+ <HcIcon name="link" :line="false"/>
|
|
|
+ <span>关联</span>
|
|
|
+ </el-button>
|
|
|
+ <el-button plain size="small" type="danger" @click="row.isRelated = false" v-else>
|
|
|
+ <HcIcon name="link-unlink-m" :line="false"/>
|
|
|
+ <span>取消</span>
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </HcTable>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <template #leftRowFooter>
|
|
|
+ <el-button size="large" @click="closeRelatedClick">
|
|
|
+ <HcIcon name="close"/>
|
|
|
+ <span>取消</span>
|
|
|
+ </el-button>
|
|
|
+ <el-button size="large" type="primary" @click="saveRelatedClick">
|
|
|
+ <HcIcon name="check"/>
|
|
|
+ <span>确认关联</span>
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template #rightRowFooter>
|
|
|
+ <HcPages :pages="searchBudgetForm" @change="pageBudgetChange"/>
|
|
|
+ </template>
|
|
|
+ </HcDialog>
|
|
|
+ </HcCard>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import {ref, nextTick, watch} from "vue";
|
|
|
+import {useRouter} from 'vue-router'
|
|
|
+import {getArrValue} from "js-fast-way"
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
+
|
|
|
+//参数
|
|
|
+const props = defineProps({
|
|
|
+ tableKey: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+//变量
|
|
|
+const isTableKey = ref(props.tableKey);
|
|
|
+
|
|
|
+//监听
|
|
|
+watch(() => [
|
|
|
+ props.tableKey,
|
|
|
+], ([Key]) => {
|
|
|
+ isTableKey.value = Key
|
|
|
+})
|
|
|
+
|
|
|
+//搜索表单
|
|
|
+const searchForm = ref({
|
|
|
+ department: null, state: null, startTime: null, endTime: null,
|
|
|
+ current: 1, size: 20, total: 0
|
|
|
+})
|
|
|
+
|
|
|
+//搜索
|
|
|
+const searchClick = () => {
|
|
|
+ searchForm.value.current = 1;
|
|
|
+ console.log(searchForm.value)
|
|
|
+ getTableData()
|
|
|
+}
|
|
|
+
|
|
|
+//重置
|
|
|
+const resetClick = () => {
|
|
|
+ searchForm.value = {
|
|
|
+ department: null, state: null, startTime: null, endTime: null,
|
|
|
+ current: 1, size: 20, total: 0
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//分页被点击
|
|
|
+const pageChange = ({current, size}) => {
|
|
|
+ searchForm.value.current = current
|
|
|
+ searchForm.value.size = size
|
|
|
+ getTableData()
|
|
|
+}
|
|
|
+
|
|
|
+//获取数据
|
|
|
+const tableLoading = ref(false)
|
|
|
+const tableColumn = ref([
|
|
|
+ {key: 'name', name: '计划名称'},
|
|
|
+ {key: 'key', name: '状态', width: '120', align: 'center'},
|
|
|
+ {key: 'key1', name: '任务描述'},
|
|
|
+ {key: 'key2', name: '完成指标'},
|
|
|
+ {key: 'key3', name: '完成期限', width: '160', align: 'center'},
|
|
|
+ {key: 'key4', name: '任务人', width: '120', align: 'center'},
|
|
|
+])
|
|
|
+const tableData = ref([
|
|
|
+ {id: 1, name: '【任务描述】申请【任务转移】', key: '未完成', key1: 'xxxxxxxxxx', key2: 'xxxxxxxx', key3: '2022-02-01', key4: '张三'},
|
|
|
+ {id: 2, name: '【任务描述】申请【任务转移】', key: '未完成', key1: 'xxxxxxxxxx', key2: 'xxxxxxxx', key3: '2022-02-01', key4: '张三'},
|
|
|
+ {id: 3, name: '【任务描述】申请【任务转移】', key: '未完成', key1: 'xxxxxxxxxx', key2: 'xxxxxxxx', key3: '2022-02-01', key4: '张三'},
|
|
|
+])
|
|
|
+const getTableData = () => {
|
|
|
+ //const key = isTableKey.value
|
|
|
+}
|
|
|
+
|
|
|
+//表格选择
|
|
|
+const tableRows = ref([])
|
|
|
+const tableSelectionChange = (rows) => {
|
|
|
+ tableRows.value = rows
|
|
|
+}
|
|
|
+
|
|
|
+//关联任务弹窗
|
|
|
+const relatedLoading = ref(false)
|
|
|
+const relatedModal = ref(false)
|
|
|
+
|
|
|
+//关联任务
|
|
|
+const relevanceClick = () => {
|
|
|
+ relatedLoading.value = false
|
|
|
+ relatedModal.value = true
|
|
|
+}
|
|
|
+
|
|
|
+//关联任务分页和搜索
|
|
|
+const searchBudgetForm = ref({current: 1, size: 20, total: 0})
|
|
|
+const pageBudgetChange = ({current, size}) => {
|
|
|
+ searchBudgetForm.value.current = current
|
|
|
+ searchBudgetForm.value.size = size
|
|
|
+}
|
|
|
+
|
|
|
+//关联任务表格
|
|
|
+const tableBudgetLoading = ref(false)
|
|
|
+const tableBudgetColumn = [
|
|
|
+ {key: 'key', name: '任务描述'},
|
|
|
+ {key: 'key1', name: '任务人', width: '120', align: 'center'},
|
|
|
+ {key: 'key2', name: '任务起止日期', width: '220', align: 'center'},
|
|
|
+ {key: 'key3', name: '状态', width: '120', align: 'center'},
|
|
|
+ {key: 'action', name: '操作', width: '90', align: 'center'},
|
|
|
+]
|
|
|
+const tableBudgetData = ref([
|
|
|
+ {id: 1, key: 'xxxxxxxxx', key1: '张三', key2: '2022-07-01~2027-04-12', key3: '未完成'},
|
|
|
+ {id: 2, key: 'xxxxxxxxx', key1: '张三', key2: '2022-07-01~2027-04-12', key3: '未完成'},
|
|
|
+ {id: 3, key: 'xxxxxxxxx', key1: '张三', key2: '2022-07-01~2027-04-12', key3: '未完成'},
|
|
|
+ {id: 4, key: 'xxxxxxxxx', key1: '张三', key2: '2022-07-01~2027-04-12', key3: '未完成'},
|
|
|
+])
|
|
|
+
|
|
|
+//关闭关联任务弹窗
|
|
|
+const closeRelatedClick = () => {
|
|
|
+ relatedLoading.value = false
|
|
|
+ relatedModal.value = false
|
|
|
+}
|
|
|
+
|
|
|
+//提交关联任务弹窗
|
|
|
+const saveRelatedClick = () => {
|
|
|
+ relatedLoading.value = false
|
|
|
+ relatedModal.value = false
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+
|
|
|
+</style>
|