Browse Source

提交

master
zhouhaibin 8 months ago
parent
commit
5ce36a5c51
  1. 124
      src/views/myWork/completed/complectedDetail.vue
  2. 75
      src/views/myWork/completed/complete.data.ts
  3. 91
      src/views/myWork/completed/index.vue
  4. 127
      src/views/myWork/inComplete/inComplectedDetail.vue
  5. 14
      src/views/myWork/inComplete/inComplete.api.ts
  6. 182
      src/views/myWork/inComplete/inComplete.data.ts
  7. 92
      src/views/myWork/inComplete/index.vue
  8. 57
      src/views/projectLib/initiatesProjects/index.vue
  9. 19
      src/views/projectLib/initiatesProjects/initiatesProjects.api.ts
  10. 19
      src/views/projectLib/initiatesProjects/initiatesProjects.ts
  11. 189
      src/views/projectLib/initiatesProjects/role.api.ts
  12. 81
      src/views/projectLib/projectInfo/Detailpage.vue
  13. 38
      src/views/projectLib/projectInfo/index copy.vue
  14. 13
      src/views/projectLib/projectInfo/index.less
  15. 78
      src/views/projectLib/projectInfo/index.vue
  16. 11
      src/views/projectLib/projectInfo/projectInfo.api.ts
  17. 331
      src/views/projectLib/projectInfo/projectInfo.data.ts
  18. 72
      src/views/projectLib/projectInfo/uploadFile.vue

124
src/views/myWork/completed/complectedDetail.vue

@ -0,0 +1,124 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable"/>
<div>
<el-divider content-position="left">项目审批</el-divider>
<BasicForm @register="registerApprovalForm" @submit="handleSubmit"/>
</div>
</template>
<script lang="ts" name="complectedDetail" setup>
import { defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,ProcessColumns} from '../../projectLib/projectInfo/projectInfo.data';
import {queryProjectInfoById,queryProcessInfo} from '../../projectLib/projectInfo/projectInfo.api'
import {BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import {approvalformSchemas} from '../inComplete/inComplete.data'
import {submitTask} from '../inComplete/inComplete.api';
let proid = defineProps(["dataTo","taskid"])
const emit = defineEmits(['close']);
watchEffect(async ()=>{
console.log("dataTo",proid.dataTo)
let param:any = {
projectid:proid.dataTo
}
let res =await queryProjectInfoById(param)
console.log("结果是",res)
setFieldsValue(res)
reload()
})
/**
* BasicForm绑定注册;
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
const [registerProjectForm,{setFieldsValue}] = useForm({
//
schemas: formSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
disabled:true
});
const { tableContext } = useListPage({
tableProps: {
size:'small',//
title: '流程审批情况',
api:queryProcessInfo,
columns: ProcessColumns,
showActionColumn:false,
useSearchForm:false,
beforeFetch(params) {
params.status = "1",
params.projectid=proid.dataTo
},
},
});
// BasicTable
const [registerTable,{reload}] = tableContext;
const[registerApprovalForm,{validate,getFieldsValue}] = useForm({
//
schemas: approvalformSchemas,
//
// submitButtonOptions: { text: '', preIcon: '' },
//
resetButtonOptions: { text: '取消', preIcon: '' },
// showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
submitButtonOptions: { text: '提交', preIcon: '' },
// 24 0-24
actionColOptions: { span: 14 },
//
// submitFunc: customSubmitFunc,
//
resetFunc: customResetFunc,
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
// disabled:true
})
async function handleSubmit(){
let approvalform = await getFieldsValue();
let param = {
flag:approvalform.flag,
projectid:proid.dataTo,
comment:approvalform.comment,
taskId:proid.taskid
}
console.log("aaaaaaaaaaa",proid)
console.log("param",param,"approvalform",approvalform)
if(await validate()){
let res = await submitTask(param)
console.log("提交成功!",res)
await emit("close");
}
}
async function customResetFunc(){
emit("close");
}
</script>
<style></style>

75
src/views/myWork/completed/complete.data.ts

@ -0,0 +1,75 @@
import { FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
export const columns: BasicColumn[] = [
{
title: '流程名称',
dataIndex: 'processName',
width: 150,
},
{
title: '项目id',
dataIndex: 'projectid',
width: 100,
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 100,
},
{
title: '当前节点',
dataIndex: 'currentTaskName',
width: 100,
},
{
title: '流程状态',
dataIndex: 'processStatus',
width: 100,
},
{
title: '创建时间',
dataIndex: 'createTime',
width: 100,
},
// {
// title: '发起单位',
// dataIndex: 'workplace',
// width: 100,
// },
// {
// title: '发起单位类型',
// dataIndex: 'workplaceTpye',
// width: 200,
// },
// {
// title: '联系电话',
// width: 150,
// dataIndex: 'phone',
// },
];
export const searchFormSchema: FormSchema[] = [
{
label: '项目名称',
field: 'projectName',
component: 'Input',
//colProps: { span: 6 },
},
{
label: '项目编号',
field: 'projectId',
component: 'Input',
//colProps: { span: 6 },
},
{
label: '流程id',
field: 'projectId',
component: 'Input',
//colProps: { span: 6 },
}
];

91
src/views/myWork/completed/index.vue

@ -0,0 +1,91 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
</BasicTable>
<BasicModal @register="registerModal" title="已办流程信息详情" width="1200px" :showOkBtn="false">
<complectedDetail :dataTo="proid" :taskid="taskid" @close="closeModals()"/>
</BasicModal>
</div>
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref} from 'vue';
import { ActionItem,BasicTable,TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchFormSchema } from './complete.data';
// import { list } from './address.api';
import {myCompleteTask} from '../inComplete/inComplete.api';
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
import complectedDetail from './complectedDetail.vue';
const [registerModal, { openModal,closeModal }] = useModal();
let proid = ref();
let taskid = ref()
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '我的已办',
api: myCompleteTask,
columns: columns,
actionColumn: {
width: 120,
},
//
formConfig: {
schemas: searchFormSchema,
}
},
});
//BasicTable
const [registerTable,{reload}] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '处理',
onClick: handleEdit.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '发起计划流程',
ifShow:true,
onClick: handleEdit.bind(null, record),
},
];
}
function handleEdit(record) {
console.log("打开子页面",record);
openModal();
proid.value =record.projectid
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeModals(){
closeModal()
reload()
}
</script>
<style scoped></style>

127
src/views/myWork/inComplete/inComplectedDetail.vue

@ -0,0 +1,127 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable"/>
<el-divider content-position="left">项目审批</el-divider>
<div>
<BasicForm @register="registerApprovalForm" @submit="handleSubmit"/>
</div>
</template>
<script lang="ts" name="inComplectedDetail" setup>
import { defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,ProcessColumns,} from '../../projectLib/projectInfo/projectInfo.data';
import {approvalformSchemas} from './inComplete.data'
import {queryProjectInfoById,queryProcessInfo} from '../../projectLib/projectInfo/projectInfo.api'
import {BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import {submitTask} from './inComplete.api';
let proid = defineProps(["dataTo","taskid"])
const emit = defineEmits(['close']);
watchEffect(async ()=>{
console.log("dataTo",proid.dataTo)
let param:any = {
projectid:proid.dataTo
}
let res =await queryProjectInfoById(param)
console.log("结果是",res)
setFieldsValue(res)
reload()
})
/**
* BasicForm绑定注册;
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
const [registerProjectForm,{setFieldsValue}] = useForm({
//
schemas: formSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
disabled:true
});
const[registerApprovalForm,{validate,getFieldsValue}] = useForm({
//
schemas: approvalformSchemas,
//
// submitButtonOptions: { text: '', preIcon: '' },
//
resetButtonOptions: { text: '取消', preIcon: '' },
// showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
submitButtonOptions: { text: '提交', preIcon: '' },
// 24 0-24
actionColOptions: { span: 14 },
//
// submitFunc: customSubmitFunc,
//
resetFunc: customResetFunc,
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
// disabled:true
})
const { tableContext } = useListPage({
tableProps: {
size:'small',//
title: '流程审批情况',
api:queryProcessInfo,
columns: ProcessColumns,
showActionColumn:false,
useSearchForm:false,
beforeFetch(params) {
params.status = "1",
params.projectid=proid.dataTo
},
},
});
// BasicTable
const [registerTable,{reload}] = tableContext;
async function handleSubmit(){
let approvalform = await getFieldsValue();
let param = {
flag:approvalform.flag,
projectid:proid.dataTo,
comment:approvalform.comment,
taskId:proid.taskid
}
console.log("aaaaaaaaaaa",proid)
console.log("param",param,"approvalform",approvalform)
if(await validate()){
let res = await submitTask(param)
console.log("提交成功!",res)
await emit("close");
}
}
async function customResetFunc(){
emit("close");
}
</script>
<style></style>
../datamodule/inComplected.data

14
src/views/myWork/inComplete/inComplete.api.ts

@ -0,0 +1,14 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
saveprojectInfo="",
myTaskList='/workflow/myTaskList',
submitTask="/huzhouProject/approveProjectInfo",
myCompleteTask='/workflow/myCompleteTask'
}
/**
*
*/
export const myTaskList = (params) => defHttp.get({ url: Api.myTaskList, params })
export const submitTask = (params) => defHttp.post({ url: Api.submitTask, params })
export const myCompleteTask = (params) => defHttp.get({ url: Api.myCompleteTask, params })

182
src/views/myWork/inComplete/inComplete.data.ts

@ -0,0 +1,182 @@
import { FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
import { getDictItemsByCode } from '/@/utils/dict/index';
import { useUserStore } from '/@/store/modules/user';
const userStore = useUserStore();
const projectTypeDicts: Array<Object> = getDictItemsByCode("projectType")
function projectTypeDict() {
for (let i = 0; i < projectTypeDicts.length; i++) {
projectTypeDicts[i].label = projectTypeDicts[i].text;
}
return projectTypeDicts
}
const approvalRsesults:Array<Object> = getDictItemsByCode("approvalResult")
function approvalRsesult(){
for(let i = 0;i<approvalRsesults.length;i++){
approvalRsesults[i].label=approvalRsesults[i].text;
}
return approvalRsesults
}
export const columns1: BasicColumn[] = [
{
title: '项目编号',
width: 150,
dataIndex: 'id',
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 150,
},
{
title: '主要任务及标志性成果',
dataIndex: 'description',
width: 150,
},
{
title: '责任单位',
dataIndex: 'dutyWorkplace',
width: 100,
},
{
title: '发起单位',
dataIndex: 'workplace',
width: 100,
},
{
title: '发起单位类型',
dataIndex: 'workplaceTpye',
width: 200,
},
{
title: '联系电话',
width: 150,
dataIndex: 'phone',
},
];
export const columns: BasicColumn[] = [
{
title: '节点名称',
width: 150,
dataIndex: 'taskName',
},
{
title: '节点id',
dataIndex: 'taskId',
width: 150,
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 150,
},
{
title: '项目编号',
dataIndex: 'projectid',
width: 100,
},
{
title: '创建时间',
dataIndex: 'createTime',
width: 100,
},
// {
// title: '发起单位类型',
// dataIndex: 'workplaceTpye',
// width: 200,
// },
// {
// title: '联系电话',
// width: 150,
// dataIndex: 'phone',
// },
];
export const searchFormSchema: FormSchema[] = [
{
label: '项目名称',
field: 'projectName',
component: 'Input',
//colProps: { span: 6 },
},
{
label: '项目编号',
field: 'projectId',
component: 'Input',
//colProps: { span: 6 },
},
{
label: '流程id',
field: 'projectId',
component: 'Input',
//colProps: { span: 6 },
}
];
export const approvalformSchemas: FormSchema[] = [
{
label: '审批人',
field: 'user',
component: 'Select',
required: true,
dynamicDisabled: true,
componentProps: {
options: [
{ value: userStore.getUserInfo.id, label: userStore.getUserInfo.username }
],
},
defaultValue: userStore.getUserInfo.id,
colProps: { span: 12 },
},
{
label: '审批结果',
field: 'flag',
component: 'Select',
required: true,
componentProps: {
options: approvalRsesult()
},
colProps: { span: 12 },
},
{
label: '审批意见',
field: 'comment',
component: 'InputTextArea',
required: true,
colProps: { span: 24 },
},
];
export const ProcessColumns: BasicColumn[] = [
{
title: '节点名称',
dataIndex: 'taskName',
},
{
title: '处理人',
dataIndex: 'operator',
width: 150,
},
{
title: '处理时间',
dataIndex: 'operateDate',
width: 150,
},
{
title: '审批状态',
dataIndex: 'approvalStatue',
width: 100,
},
{
title: '审批意见',
dataIndex: 'workplace',
width: 100,
}
];

92
src/views/myWork/inComplete/index.vue

@ -0,0 +1,92 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
</BasicTable>
<BasicModal @register="registerModalDetail" title="代办流程信息详情" width="1200px" :showOkBtn="false" :showCancelBtn="false">
<inComplectedDetail :dataTo="proid" :taskid="taskid" @close="closeModalDetail()"/>
</BasicModal>
</div>
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref, computed, unref } from 'vue';
import { ActionItem,BasicTable,TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchFormSchema } from './inComplete.data';
// import { list } from './address.api';
import {myTaskList} from './inComplete.api';
import inComplectedDetail from './inComplectedDetail.vue';
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
let proid = ref()
let taskid = ref()
const [registerModalDetail, { openModal:openDetail, closeModal:closeDetail}] = useModal();//
//
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '我的代办',
api: myTaskList,
columns: columns,
actionColumn: {
width: 120,
},
//
formConfig: {
schemas: searchFormSchema,
}
},
});
//BasicTable
const [registerTable,{reload}] = tableContext;
function getTableAction(record): ActionItem[] {
return [
{
label: '处理',
onClick: handleEdit.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
return [
{
label: '上传项目资料',
ifShow:true,
onClick: handleEdit.bind(null, record),
},
];
}
function handleEdit(record) {
console.log(record.description,record);
proid.value =record.projectid
taskid.value= record.taskId
openDetail()
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
function closeModalDetail(){
closeDetail()
reload()
}
</script>
<style scoped></style>

57
src/views/projectLib/initiatesProjects/index.vue

@ -13,8 +13,7 @@
<el-col :span="12">
<el-form-item label="项目类型">
<el-select v-model="projectForm.projectType" placeholder="项目类型" style="width: 100%;">
<el-option label="Zone one" value="shanghai" />
<el-option label="Zone two" value="beijing" />
<el-option v-for="item in projectTypeDict" :key="item.value" :label="item.text" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
@ -113,12 +112,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="监管单位">
<el-input v-model="projectForm.supervisorOrg" placeholder="监管单位"/>
<el-input v-model="projectForm.controler" placeholder="监管单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="监管单位负责人">
<el-input v-model="projectForm.supervisorContactor" placeholder="监管单位负责人"/>
<el-input v-model="projectForm.controlerContactor" placeholder="监管单位负责人"/>
</el-form-item>
</el-col>
@ -126,12 +125,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="建设单位">
<el-input v-model="projectForm.buildOrg" placeholder="建设单位"/>
<el-input v-model="projectForm.owner" placeholder="建设单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设单位负责人">
<el-input v-model="projectForm.buildContactor" placeholder="建设单位负责人"/>
<el-input v-model="projectForm.ownerContactor" placeholder="建设单位负责人"/>
</el-form-item>
</el-col>
@ -139,12 +138,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="承建单位">
<el-input v-model="projectForm.bearbuildOrg" placeholder="承建单位"/>
<el-input v-model="projectForm.contructor" placeholder="承建单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承建单位负责人">
<el-input v-model="projectForm.bearbuildContactor" placeholder="承建单位负责人"/>
<el-input v-model="projectForm.contructorContactor" placeholder="承建单位负责人"/>
</el-form-item>
</el-col>
@ -153,7 +152,9 @@
</el-form>
<div style="display: flex; justify-content: center; align-items: center; height: 100px;">
<el-button type="primary" @click="onSubmit">发起入库申请</el-button>
<el-button>取消</el-button>
<el-button type="primary" @click="craeteprocess">创建流程</el-button>
<!-- <el-button>取消</el-button> -->
</div>
</div>
</template>
@ -162,9 +163,10 @@
import { reactive } from 'vue'
import { defHttp } from '/@/utils/http/axios';
import { Modal } from 'ant-design-vue';
import { getDictItemsByCode } from '/@/utils/dict/index';
import {submitProjectInfo,Api} from "./initiatesProjects.api";
// do not use same name with ref
const projectForm = reactive({
let projectForm = reactive({
projectName: '',
projectType: '',
dutyWorkplace: '',
@ -179,17 +181,17 @@ const projectForm = reactive({
superLeader: '',
projectContacts: "",
bearbuildContactor: '',
bearbuildOrg: "",
buildContactor: "",
buildOrg: "",
supervisorContactor: "",
supervisorOrg: "",
contructorContactor: '',
contructor: "",
ownerContactor: "",
owner: "",
controlerContactor: "",
controler: "",
manageContactor: "",
manageOrg: ""
})
const projectTypeDict = getDictItemsByCode("projectType")
const onSubmit = () => {
Modal.confirm({
title: '提示窗口',
@ -197,12 +199,25 @@ const onSubmit = () => {
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
//, { joinParamsToUrl: true }
return defHttp.post({ url: Api.submitProjectInfo, data: projectForm }).then(()=>{
projectForm = clearObjectValues(projectForm);
})
},
});
}
async function craeteprocess() {
const res = await submitProjectInfo({a:"111"});
console.log(res)
}
function clearObjectValues(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = null
}
}
return obj;
}
</script>
<style scoped>
.inintatesProject {

19
src/views/projectLib/initiatesProjects/initiatesProjects.api.ts

@ -0,0 +1,19 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
saveprojectInfo="",
submitProjectInfo='/huzhouProject/submitProject'
}
/**
*
*/
export const submitProjectInfo = (params) => defHttp.post({ url: Api.submitProjectInfo, params })
// /**
// * 部门用户信息
// */
// export const list = (params?) => defHttp.get({ url: Api.list, params });
// /**
// * 职务list
// */
// export const positionList = (params?) => defHttp.get({ url: Api.positionList, params });

19
src/views/projectLib/initiatesProjects/initiatesProjects.ts

@ -1,19 +0,0 @@
import { defHttp } from '/@/utils/http/axios';
export enum Api {
list = '/sys/user/queryByOrgCodeForAddressList',
positionList = '/sys/position/list',
queryDepartTreeSync = '/sys/sysDepart/queryDepartTreeSync',
}
/**
*
*/
export const queryDepartTreeSync = (params?) => defHttp.get({ url: Api.queryDepartTreeSync, params });
/**
*
*/
export const list = (params?) => defHttp.get({ url: Api.list, params });
/**
* list
*/
export const positionList = (params?) => defHttp.get({ url: Api.positionList, params });

189
src/views/projectLib/initiatesProjects/role.api.ts

@ -0,0 +1,189 @@
import { defHttp } from '/@/utils/http/axios';
import { Modal } from 'ant-design-vue';
enum Api {
list = '/sys/role/list',
listByTenant = '/sys/role/listByTenant',
save = '/sys/role/add',
edit = '/sys/role/edit',
deleteRole = '/sys/role/delete',
deleteBatch = '/sys/role/deleteBatch',
exportXls = '/sys/role/exportXls',
importExcel = '/sys/role/importExcel',
isRoleExist = '/sys/role/checkRoleCode',
queryTreeListForRole = '/sys/role/queryTreeList',
queryRolePermission = '/sys/permission/queryRolePermission',
saveRolePermission = '/sys/permission/saveRolePermission',
queryDataRule = '/sys/role/datarule',
getParentDesignList = '/act/process/extActDesignFlowData/getDesFormFlows',
getRoleDegisnList = '/joa/designform/designFormCommuse/getRoleDegisnList',
saveRoleDesign = '/joa/designform/designFormCommuse/sysRoleDesignAdd',
userList = '/sys/user/userRoleList',
deleteUserRole = '/sys/user/deleteUserRole',
batchDeleteUserRole = '/sys/user/deleteUserRoleBatch',
addUserRole = '/sys/user/addSysUserRole',
saveRoleIndex = '/sys/sysRoleIndex/add',
editRoleIndex = '/sys/sysRoleIndex/edit',
queryIndexByCode = '/sys/sysRoleIndex/queryByCode',
}
/**
* api
*/
export const getExportUrl = Api.exportXls;
/**
* api
*/
export const getImportUrl = Api.importExcel;
/**
*
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
/**
*
* @param params
*/
export const listByTenant = (params) => defHttp.get({ url: Api.listByTenant, params });
/**
*
*/
export const deleteRole = (params, handleSuccess) => {
return defHttp.delete({ url: Api.deleteRole, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
};
/**
*
* @param params
*/
export const batchDeleteRole = (params, handleSuccess) => {
Modal.confirm({
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
},
});
};
/**
*
* @param params
*/
export const saveOrUpdateRole = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({ url: url, params });
};
/**
*
* @param params
*/
// update-begin--author:liaozhiyang---date:20231215---for:【QQYUN-7415】表单调用接口进行校验的添加防抖
let timer;
export const isRoleExist = (params) => {
return new Promise((resolve, rejected) => {
clearTimeout(timer);
timer = setTimeout(() => {
defHttp
.get({ url: Api.isRoleExist, params }, { isTransformResponse: false })
.then((res) => {
resolve(res);
})
.catch((error) => {
rejected(error);
});
}, 500);
});
};
// update-end--author:liaozhiyang---date:20231215---for:【QQYUN-7415】表单调用接口进行校验的添加防抖
/**
*
*/
export const queryTreeListForRole = () => defHttp.get({ url: Api.queryTreeListForRole });
/**
*
*/
export const queryRolePermission = (params) => defHttp.get({ url: Api.queryRolePermission, params });
/**
*
*/
export const saveRolePermission = (params) => defHttp.post({ url: Api.saveRolePermission, params });
/**
*
*/
export const queryDataRule = (params) =>
defHttp.get({ url: `${Api.queryDataRule}/${params.functionId}/${params.roleId}` }, { isTransformResponse: false });
/**
*
*/
export const saveDataRule = (params) => defHttp.post({ url: Api.queryDataRule, params });
/**
*
* @return List<Map>
*/
export const getParentDesignList = () => defHttp.get({ url: Api.getParentDesignList });
/**
*
* @return List<Map>
*/
export const getRoleDegisnList = (params) => defHttp.get({ url: Api.getRoleDegisnList, params });
/**
*
*/
export const saveRoleDesign = (params) => defHttp.post({ url: Api.saveRoleDesign, params });
/**
*
* @param params
*/
export const userList = (params) => defHttp.get({ url: Api.userList, params });
/**
*
*/
export const deleteUserRole = (params, handleSuccess) => {
return defHttp.delete({ url: Api.deleteUserRole, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
};
/**
*
* @param params
*/
export const batchDeleteUserRole = (params, handleSuccess) => {
Modal.confirm({
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: Api.batchDeleteUserRole, params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
},
});
};
/**
*
*/
export const addUserRole = (params, handleSuccess) => {
return defHttp.post({ url: Api.addUserRole, params }).then(() => {
handleSuccess();
});
};
/**
*
* @param params
* @param isUpdate
*/
export const saveOrUpdateRoleIndex = (params, isUpdate) => {
let url = isUpdate ? Api.editRoleIndex : Api.saveRoleIndex;
return defHttp.post({ url: url, params });
};
/**
* code查询首页配置
* @param params
*/
export const queryIndexByCode = (params) => defHttp.get({ url: Api.queryIndexByCode, params }, { isTransformResponse: false });

81
src/views/projectLib/projectInfo/Detailpage.vue

@ -0,0 +1,81 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">项目审批详情</el-divider>
<BasicTable @register="registerTable"/>
<!-- <el-dialog v-model="dialogTableVisible" title="Shipping address">
<el-table :data="gridData">
<el-table-column property="date" label="Date" width="150" />
<el-table-column property="name" label="Name" width="200" />
<el-table-column property="address" label="Address" />
</el-table>
</el-dialog> -->
</template>
<script lang="ts" name="Detailpage" setup>
import { defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,ProcessColumns} from './projectInfo.data';
import{queryProjectInfoById,queryProcessInfo} from './projectInfo.api'
import {BasicTable } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
let proid = defineProps(["dataTo"])
watchEffect(async ()=>{
console.log("dataTo",proid.dataTo)
let param:any = {
projectid:proid.dataTo
}
let res =await queryProjectInfoById(param)
console.log("结果是",res)
setFieldsValue(res)
reload()
})
/**
* BasicForm绑定注册;
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
const [registerProjectForm,{setFieldsValue}] = useForm({
//
schemas: formSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
disabled:true
});
const { tableContext } = useListPage({
tableProps: {
size:'small',//
title: '流程审批情况',
api:queryProcessInfo,
columns: ProcessColumns,
showActionColumn:false,
useSearchForm:false,
beforeFetch(params) {
params.status = "1",
params.projectid=proid.dataTo
},
},
});
// BasicTable
const [registerTable,{reload}] = tableContext;
</script>
<style></style>

38
src/views/projectLib/projectInfo/index copy.vue

@ -1,38 +0,0 @@
<template>
<div>
<el-form :inline="true" :model="formQueryParam" class="demo-form-inline">
<el-form-item label="人员名称">
<el-input v-model="formQueryParam.userName" placeholder="人员名称" clearable />
</el-form-item>
<el-form-item label="项目编号">
<el-input v-model="formQueryParam.projectId" placeholder="项目编号" clearable />
</el-form-item>
<el-form-item label="项目名称">
<el-input v-model="formQueryParam.projectName" placeholder="项目名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query">查询</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script lang="ts" setup>
import {ref } from 'vue';
const formQueryParam = ref<any>({
userName:"",
projectId:"",
projectName:""
})
function query(){
}
</script>
<style lang="less">
@import './index.less';
</style>

13
src/views/projectLib/projectInfo/index.less

@ -1,13 +0,0 @@
//noinspection LessUnresolvedVariable
@prefix-cls: ~'@{namespace}-address-list';
.@{prefix-cls} {
// update-begin-author:liusq date:20230625 for: [issues/563]暗色主题部分失效
background-color: @component-background;
// update-end-author:liusq date:20230625 for: [issues/563]暗色主题部分失效
&--box {
.ant-tabs-nav {
padding: 0 20px;
}
}
}

78
src/views/projectLib/projectInfo/index.vue

@ -3,32 +3,52 @@
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<!--操作栏-->
<template #action="{ record }">
<!-- <TableAction :actions="getTableAction(record)" /> -->
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
</template>
</BasicTable>
</div>
</div>
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false">
<Detailpage :dataTo="proid"/>
</BasicModal>
<BasicModal @register="registerModalUploadFiles" title="申报项目资料" width="1200px" :showOkBtn="false" :showCancelBtn="false">
<Detailpage :dataTo="proid" :taskid="taskid" @close="closeUploadFiles()"/>
</BasicModal>
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref, computed, unref } from 'vue';
import { BasicTable } from '/@/components/Table';
import { ref} from 'vue';
import { ActionItem,BasicTable,TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { useModal } from '/@/components/Modal';
import { BasicModal } from '/@/components/Modal';
import { columns, searchFormSchema } from './projectInfo.data';
// import { list } from './address.api';
import { defHttp } from '/@/utils/http/axios';
import Detailpage from './Detailpage.vue';
import {projectInfoPageList} from './projectInfo.api';
// const projectInfoPageList1 = function (params){
// console.log(params)
// defHttp.get({ url: Api.projectInfoPageList, params })
// }
//ajaxapi
const demoListApi = (params) => {
return defHttp.get({ url: "", params });
};
let proid = ref();
const [registeProjectrModal, { openModal:openModalProjectr }] = useModal();
const [registerModalUploadFiles, { openModal:openUploadFiles, closeModal:closeUploadFiles}] = useModal();//
const { tableContext } = useListPage({
designScope: 'basic-table-demo-ajax',
tableProps: {
title: '项目信息',
api: demoListApi,
api: projectInfoPageList,
columns: columns,
actionColumn: {
width: 120,
fixed: "right",
},
//
formConfig: {
@ -38,7 +58,43 @@ const { tableContext } = useListPage({
});
//BasicTable
const [registerTable] = tableContext;
function getTableAction(record): ActionItem[] {
record.typeid=1
return [
{
label: '详情',
onClick: handleEdit.bind(null, record),
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record): ActionItem[] {
record.typeid=2
return [
{
label: '发起计划流程',
ifShow:true,
onClick: handleEdit.bind(null, record),
},
];
}
function handleEdit(record) {
proid.value=record.id
if(record.typeid==1){
openModalProjectr()
}
if(record.typeid==2){
openUploadFiles()
}
// console.log(selectedRows.value);
// console.log(selectedRowKeys.value);
}
</script>
<style scoped></style>
./projectInfo.data
<style scoped></style>

11
src/views/projectLib/projectInfo/projectInfo.api.ts

@ -2,18 +2,19 @@ import { defHttp } from '/@/utils/http/axios';
export enum Api {
list = '/sys/user/queryByOrgCodeForAddressList',
positionList = '/sys/position/list',
queryDepartTreeSync = '/sys/sysDepart/queryDepartTreeSync',
queryProcessInfo = '/workflow/getprocessInfo',
queryProjectInfoById = '/huzhouProject/queryProjectInfoById',
projectInfoPageList="/huzhouProject/projectInfoPageList"
}
/**
*
*/
export const queryDepartTreeSync = (params?) => defHttp.get({ url: Api.queryDepartTreeSync, params });
export const queryProjectInfoById = (params?) => defHttp.get({ url: Api.queryProjectInfoById, params });
/**
*
*/
export const list = (params?) => defHttp.get({ url: Api.list, params });
export const projectInfoPageList = (params?) => defHttp.get({ url: Api.projectInfoPageList, params });
/**
* list
*/
export const positionList = (params?) => defHttp.get({ url: Api.positionList, params });
export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params });

331
src/views/projectLib/projectInfo/projectInfo.data.ts

@ -1,12 +1,29 @@
import { FormSchema } from '/@/components/Form';
import { BasicColumn } from '/@/components/Table';
import { getDictItemsByCode } from '/@/utils/dict/index';
import { UploadTypeEnum } from '/@/components/Form/src/jeecg/components/JUpload';
const projectTypeDicts:Array<Object> = getDictItemsByCode("projectType")
const approvalRsesults:Array<Object> = getDictItemsByCode("approvalResult")
function projectTypeDict(){
for(let i = 0;i<projectTypeDicts.length;i++){
projectTypeDicts[i].label=projectTypeDicts[i].text;
}
return projectTypeDicts
}
// function approvalRsesult(){
// for(let i = 0;i<approvalRsesults.length;i++){
// approvalRsesults[i].label=approvalRsesults[i].text;
// }
// return approvalRsesults
// }
export const columns: BasicColumn[] = [
{
title: '项目编号',
width: 150,
dataIndex: 'projectId',
dataIndex: 'id',
},
{
title: '项目名称',
@ -43,15 +60,323 @@ export const columns: BasicColumn[] = [
export const searchFormSchema: FormSchema[] = [
{
label: '项目名称',
field: 'project',
field: 'projectName',
component: 'Input',
//colProps: { span: 6 },
},
{
label: '项目编号',
field: 'project',
field: 'projectId',
component: 'Input',
//colProps: { span: 6 },
}
];
export const uploadFileformSchemas: FormSchema[] = [
{
field: 'uploadFile',
component: 'JUpload',
helpMessage: '无限制上传',
label: '上传文件',
},
{
field: 'uploadImage',
component: 'JUpload',
label: '上传图片',
helpMessage: '无限制上传',
componentProps: {
fileType: UploadTypeEnum.image,
},
},
]
export const formSchemas: FormSchema[] = [
{
//标题名称
label: '项目名称',
//字段
field: 'projectName',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//标题宽度,支持数字和字符串
// labelWidth: 150,
// //标题长度,超过位数隐藏
// labelLength: 3,
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
label: '项目类型',
field: 'projectType',
component: 'Select',
colProps: { span: 12 },
//填写组件Select的属性
componentProps: {
options:projectTypeDict()
},
//默认值
defaultValue: 1,
},
{
label: '主要任务',
field: 'description',
//子标题名称(在主标题后面)
component: 'InputTextArea',
//一列占比总共24,比如一行显示2列
colProps: { span: 24 },
},
{
//标题名称
label: '责任单位',
//字段
field: 'dutyWorkplace',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '建设年限',
//字段
field: 'constructionPeriod',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '中央资金',
//字段
field: 'centralMoney',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '省级资金',
//字段
field: 'provincialMoney',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '市级资金',
//字段
field: 'cityMoney',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '区县级资金',
//字段
field: 'countyMoney',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '改革所属项目',
//字段
field: 'reformName',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '上级指导室',
//字段
field: 'superLeader',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '项目联系人',
//字段
field: 'projectContacts',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '联系电话',
//字段
field: 'phone',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '管理单位',
//字段
field: 'manageOrg',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '管理单位负责人',
//字段
field: 'manageContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '监管单位',
//字段
field: 'controler',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '监管单位负责人',
//字段
field: 'controlerContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '建设单位',
//字段
field: 'owner',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '建设单位负责人',
//字段
field: 'ownerContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '承建单位',
//字段
field: 'contructor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '承建单位负责人',
//字段
field: 'contructorContactor',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
},
{
//标题名称
label: '项目状态',
//字段
field: 'status',
//组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType
component: 'Input',
//一列占比总共24,比如一行显示2列
colProps: { span: 12 },
}
];
export const ProcessColumns: BasicColumn[] = [
{
title: '节点名称',
dataIndex: 'taskName',
},
{
title: '处理人',
dataIndex: 'operator',
width: 150,
},
{
title: '处理时间',
dataIndex: 'operateDate',
width: 150,
},
{
title: '审批状态',
dataIndex: 'approvalStatue',
width: 100,
customRender: ({ record }) => {
for(let i =0;i<approvalRsesults.length;i++){
if(record.approvalStatue==approvalRsesults[i].value){
return approvalRsesults[i].text
}
}
},
},
{
title: '审批意见',
dataIndex: 'comment',
width: 100,
}
];

72
src/views/projectLib/projectInfo/uploadFile.vue

@ -0,0 +1,72 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" />
<el-divider content-position="left">上传项目资料</el-divider>
<BasicForm @register="registerFormUploadFile" />
<!-- <el-dialog v-model="dialogTableVisible" title="Shipping address">
<el-table :data="gridData">
<el-table-column property="date" label="Date" width="150" />
<el-table-column property="name" label="Name" width="200" />
<el-table-column property="address" label="Address" />
</el-table>
</el-dialog> -->
</template>
<script lang="ts" name="uploadFile" setup>
import { defineProps,watchEffect} from 'vue'
import { useForm, BasicForm } from '/@/components/Form';
import { formSchemas,uploadFileformSchemas} from './projectInfo.data';
import{queryProjectInfoById,queryProcessInfo} from './projectInfo.api';
let proid = defineProps(["dataTo"])
//
watchEffect(async ()=>{
console.log("dataTo",proid.dataTo)
let param:any = {
projectid:proid.dataTo
}
let res =await queryProjectInfoById(param)
console.log("结果是",res)
setProjectFieldsValue(res)
})
//
const [registerProjectForm,{setFieldsValue:setProjectFieldsValue}] = useForm({
//
schemas: formSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
disabled:true
});
const [registerFormUploadFile] = useForm({
//
schemas: uploadFileformSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
labelCol: { style: { width: '120px' } },
wrapperCol:{ style: { width: 'auto' } },
disabled:true
});
</script>
<style></style>
Loading…
Cancel
Save