diff --git a/.drone.yml b/.drone.yml
index e0b66f4..5e7f6bc 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -25,9 +25,9 @@ steps:
- npm -v
- mkdir -p ./node_modules
- export NODE_MODULES_PATH=`pwd`/node_modules
- - npm config set registry https://registry.npmmirror.com
- - set NODE_OPTIONS=--openssl-legacy-provider
- - npm install
+ # - npm config set registry https://registry.npmmirror.com
+ # - set NODE_OPTIONS=--openssl-legacy-provider
+ # - npm install
- npm run build
- ls /app/build/$DRONE_REPO_NAME/
- echo $NODE_MODULES_PATH
diff --git a/src/api/project-manage/index.js b/src/api/project-manage/index.js
index 37ca9e1..c457e8d 100644
--- a/src/api/project-manage/index.js
+++ b/src/api/project-manage/index.js
@@ -145,3 +145,16 @@ export const getPreProcess= () => {
method: "get"
});
};
+export const updateLedger = (data) => {
+ return request({
+ url: '/workflow/mosr/expense/ledger/replenishment',
+ method: "post",
+ data: data
+ });
+};
+export const searchUpdateLedgerData = (projectId) => {
+ return request({
+ url: `/workflow/mosr/expense/ledger/${projectId}`,
+ method: "get"
+ });
+};
diff --git a/src/api/workflow/process-user.js b/src/api/workflow/process-user.js
index fd623f9..733d39c 100644
--- a/src/api/workflow/process-user.js
+++ b/src/api/workflow/process-user.js
@@ -22,7 +22,7 @@ export function getDepartmentTree() {
method: 'get'
})
}
-export function getMosrDept(params) {
+export function getMosrUser(params) {
return request({
url: '/admin/mosr/user/choose',
method: 'get',
diff --git a/src/components/DetailComponent/AllocationSummaryDetail.vue b/src/components/DetailComponent/AllocationSummaryDetail.vue
index 2df5099..ccd1b78 100644
--- a/src/components/DetailComponent/AllocationSummaryDetail.vue
+++ b/src/components/DetailComponent/AllocationSummaryDetail.vue
@@ -1,6 +1,6 @@
导出
-
@@ -24,7 +24,8 @@
- {{ toThousands(scope.row.afterTax) }}
+
+ {{ scope.row.afterTax }}
@@ -70,7 +71,7 @@ const getSummaries = (param) => {
return prev
}
}, 0)}`
- sums[index] = toThousands(sums[index])
+ // sums[index] = toThousands(sums[index])
} else {
sums[index] = '-'
}
diff --git a/src/components/DetailComponent/ExpenseDetail.vue b/src/components/DetailComponent/ExpenseDetail.vue
index e431fe6..7984fed 100644
--- a/src/components/DetailComponent/ExpenseDetail.vue
+++ b/src/components/DetailComponent/ExpenseDetail.vue
@@ -14,15 +14,27 @@
:label="childColumn.label"
:width="childColumn.prop === 'subtotal' ? 160 : 130">
- {{ columnScope.row[column.prop][childColumn.prop] }}
+
+ {{
+ columnScope.row[column.prop][childColumn.prop] ? columnScope.row[column.prop][childColumn.prop] : '/'
+ }}
+
+
+ {{ columnScope.row[column.prop][childColumn.prop] }}
+
+
+ v-if="(column.prop === 'totalSeparation' || column.prop === 'totalSeparationCost') && (tableData.length -1) !== scope.$index">
{{ getTotalSeparation(scope.row, column.prop) }}
+
+ {{ getTotalSummary(scope.row, column.prop) }}
+
{{ scope.row[column.prop] }}
@@ -33,12 +45,10 @@
-
diff --git a/src/layout/navbar/index.vue b/src/layout/navbar/index.vue
index 7803cc6..642f14a 100644
--- a/src/layout/navbar/index.vue
+++ b/src/layout/navbar/index.vue
@@ -97,7 +97,7 @@ const handleVisitedP = () => {
ElNotification({
title: '提示',
message: res.msg,
- type: res.code === 1000 ? 'success' : 'error'
+ type: 'error'
})
}
accountList.value = res.data
diff --git a/src/router/index.js b/src/router/index.js
index 39d999e..d0b07f3 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -25,6 +25,11 @@ const router = createRouter({
name: 'casLogin',
component: () => import('@/views/cas-login/index.vue'),
},
+ {
+ path: '/projectdetail/mobile',
+ name: 'projectDetailMobile',
+ component: () => import('@/views/project-management/mobledetail/index.vue')
+ },
{
path: '/',
name: 'layout',
diff --git a/src/utils/export-excel.js b/src/utils/export-excel.js
index b05118e..afeeb79 100644
--- a/src/utils/export-excel.js
+++ b/src/utils/export-excel.js
@@ -7,8 +7,9 @@ import XLSX from "xlsx-style-vite";
* @param $table 表格html dom元素
* @param columnLength 列长度
* @param excelName 导出文件名称
+ * @param bigWidthIndex 更宽列的索引
*/
-export function exportExcel($table, columnLength, excelName,bigWidth) {
+export function exportExcel($table, columnLength, excelName, bigWidthIndex) {
//从el-table表生成工作簿对象
//使用原始的格式,保留表格中的格式如%、小数末尾的0等
let workbook = utils.table_to_book($table, {
@@ -16,7 +17,7 @@ export function exportExcel($table, columnLength, excelName,bigWidth) {
});
//列宽,需要导出的表格有多少列这里的i就小于多少
for (let i = 1; i < columnLength; i++) {
- if(i==bigWidth){
+ if (i === bigWidthIndex) {
workbook.Sheets.Sheet1["!cols"].push({wpx: 300});
}
workbook.Sheets.Sheet1["!cols"].push({wpx: 100});
diff --git a/src/views/expense-management/share/add.vue b/src/views/expense-management/share/add.vue
index 37567de..47f618c 100644
--- a/src/views/expense-management/share/add.vue
+++ b/src/views/expense-management/share/add.vue
@@ -3,13 +3,13 @@
-
+
-
+
-
- {{ chooseUserInfo() }}
+
+ {{ scope.row.researchPersonnelName ? scope.row.researchPersonnelName : currentReachPerson.name }}
- {{ chooseUserInfo() == null ? '请选择研发人员' : '更改' }}
+ {{ scope.row.researchPersonnelName || currentReachPerson.name ? '更改' : '请选择研发人员' }}
-
-
-
-
-
-
-
-
-
@@ -65,7 +56,7 @@
-
+
@@ -113,7 +104,8 @@
-
+
添加一行
@@ -161,22 +153,24 @@ import {
import {useProcessStore} from '@/stores/processStore.js';
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
import OperationRender from '@/views/workflow/common/OperationRender.vue'
+import {ref} from "vue";
+
import UserPicker from "@/views/workflow/process/common/UserPicker.vue";
const userList = ref([])
const changeDiagram = ref(false)
const rules = reactive({
- shareName: [{required: true, message: '请输入分摊名称', trigger: ['blur', 'change']}],
- apportionmentMonth: [{required: true, message: '请选择月份', trigger: ['blur', 'change']}],
- projectId: [{required: true, message: '请选择项目名称', trigger: ['blur', 'change']}],
- researchPersonnel: [{required: true, message: '请选择研发人员', trigger: ['blur', 'change']}],
- wagesPayable: [{required: true, message: '请输入应发工资', trigger: ['blur', 'change']}],
- performance: [{required: true, message: '请输入绩效', trigger: ['blur', 'change']}],
- reserveFund: [{required: true, message: '请输入公积金', trigger: ['blur', 'change']}],
- socialSecurity: [{required: true, message: '请输入社保', trigger: ['blur', 'change']}],
- annuity: [{required: true, message: '请输入年金', trigger: ['blur', 'change']}],
- workday: [{required: true, message: '请输入工作日', trigger: ['blur', 'change']}],
- researchDuration: [{required: true, message: '请输入研发时长', trigger: ['blur', 'change']}],
+ shareName: [{required: true, message: '请输入分摊名称', trigger: 'blur'}],
+ apportionmentMonth: [{required: true, message: '请选择月份', trigger: 'blur'}],
+ projectId: [{required: true, message: '请选择项目名称', trigger: 'blur'}],
+ // researchPersonnel: [{required: true, message: '请选择研发人员', trigger: 'blur'}],
+ wagesPayable: [{required: true, message: '请输入应发工资', trigger: 'blur'}],
+ performance: [{required: true, message: '请输入绩效', trigger: 'blur'}],
+ reserveFund: [{required: true, message: '请输入公积金', trigger: 'blur'}],
+ socialSecurity: [{required: true, message: '请输入社保', trigger: 'blur'}],
+ annuity: [{required: true, message: '请输入年金', trigger: 'blur'}],
+ workday: [{required: true, message: '请输入工作日', trigger: 'blur'}],
+ researchDuration: [{required: true, message: '请输入研发时长', trigger: 'blur'}],
})
const processStore = useProcessStore()
const opentionData = ref()
@@ -206,29 +200,26 @@ const formData = ref({
})
const userPicker = ref()
const form = ref()
+const currentReachPerson = ref({})
const currentRow = ref()
-const currentIndex= ref()
+const currentIndex = ref()
const nameOptions = ref([])
const researchOptions = ref([])
-const showPersonnelPicker = (row,index) => {
- currentRow.value=row
- currentIndex.value=index
+const showPersonnelPicker = (row, index) => {
+ currentRow.value = row
+ currentIndex.value = index
userPicker.value.showUserPicker()
}
-const chooseUserInfo = () => {
- if (userList.value.length > 0) {
- return userList.value.map(item => {
- return item.name
- }).join(',')
- } else {
- return null
- }
-}
const selected = (select) => {
- console.log('select',select)
- console.log('currentRow.value',currentRow.value)
- console.log('currentRow.value',currentIndex.value)
- // userList.value = select
+ for (const selectElement of select) {
+ currentReachPerson.value = selectElement
+ }
+ formData.value.tableData.forEach((item, index) => {
+ if (index == currentIndex.value) {
+ item.researchPersonnel = currentReachPerson.value.id
+ item.researchPersonnelName = currentReachPerson.value.name
+ }
+ })
}
const getResearchOptions = async () => {
const res = await getResearchUser()
@@ -290,13 +281,8 @@ const handleSubmit = (instance) => {
type: 'error'
})
}
- let researchPersonId = ''
- userList.value.forEach(item => {
- researchPersonId = item.id
- })
formData.value.tableData.forEach(item => {
item.projectName = getProjectName(item.projectId)
- item.researchPersonnel = researchPersonId
if (item.performance == 0) {
item.performance = null
}
@@ -332,14 +318,9 @@ const handleResubmit = (instance) => {
type: 'error'
})
}
- let researchPersonId = ''
- userList.value.forEach(item => {
- researchPersonId = item.id
- })
formData.value.tableData.forEach(item => {
item.allocationId = formData.value.allocationId
item.projectName = getProjectName(item.projectId)
- item.researchPersonnel = researchPersonId
if (item.performance == 0) {
item.performance = null
}
@@ -351,7 +332,7 @@ const handleResubmit = (instance) => {
usrAllocations: formData.value.tableData,
deploymentId: processInstanceData.value.deploymentId,
}
- // console.log('params',params)
+ console.log('params', params)
const {code, msg} = await editAllocation(params)
ElNotification({
title: '提示',
diff --git a/src/views/project-management/implementation/account.vue b/src/views/project-management/implementation/account.vue
index 42d202f..fa6a2e9 100644
--- a/src/views/project-management/implementation/account.vue
+++ b/src/views/project-management/implementation/account.vue
@@ -12,30 +12,107 @@
diff --git a/src/views/project-management/implementation/uploadFee.vue b/src/views/project-management/implementation/uploadFee.vue
index f3662e5..68027a0 100644
--- a/src/views/project-management/implementation/uploadFee.vue
+++ b/src/views/project-management/implementation/uploadFee.vue
@@ -56,8 +56,8 @@
-
-
+
+
@@ -127,7 +127,7 @@ const tableForm = reactive({
projectCost: '',
researchStage: '',
digest: '',
- afterTax: ''
+ afterTax: null
}
]
})
@@ -148,7 +148,7 @@ const handleAdd = () => {
projectCost: '',
researchStage: '',
digest: '',
- afterTax: ''
+ afterTax: null
}
tableForm.tableData.push(row)
}
diff --git a/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue b/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue
new file mode 100644
index 0000000..322fb4b
--- /dev/null
+++ b/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue
@@ -0,0 +1,272 @@
+
+
+
form = e">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/project-management/mobledetail/CollectionDetailMoblie.vue b/src/views/project-management/mobledetail/CollectionDetailMoblie.vue
new file mode 100644
index 0000000..83b15c6
--- /dev/null
+++ b/src/views/project-management/mobledetail/CollectionDetailMoblie.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ {{ formData.requirementName }}
+
+
+
+
+ {{ formData.collectType }}
+
+
+
+
+ {{ formData.deadline }}
+
+
+
+
+ {{
+ getCompanyName(formData.companyIds)
+ }}
+ {{ showExpendText }}
+
+
+
+
+
+ {{ formData.specialFund }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/project-management/mobledetail/OpinionMoblie.vue b/src/views/project-management/mobledetail/OpinionMoblie.vue
new file mode 100644
index 0000000..9b775e6
--- /dev/null
+++ b/src/views/project-management/mobledetail/OpinionMoblie.vue
@@ -0,0 +1,168 @@
+
+
+
+
+ 驳回
+ 同意
+
+
+
+
+
+
diff --git a/src/views/project-management/mobledetail/ProjectApplyMoblie.vue b/src/views/project-management/mobledetail/ProjectApplyMoblie.vue
new file mode 100644
index 0000000..28e4403
--- /dev/null
+++ b/src/views/project-management/mobledetail/ProjectApplyMoblie.vue
@@ -0,0 +1,429 @@
+
+
+
+
+
+
+
+
+ {{ localFormData.preProcess ? '更改' : '请选择' }}
+
+
+
+
+
+
+
+
+ 提交
+ 重新提交
+ 返回
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看流程
+
+
+
+
+
+ 确定
+ 取消
+
+
+
+
+
+
+
+
diff --git a/src/views/project-management/mobledetail/StepsMoblie.vue b/src/views/project-management/mobledetail/StepsMoblie.vue
new file mode 100644
index 0000000..a42e83b
--- /dev/null
+++ b/src/views/project-management/mobledetail/StepsMoblie.vue
@@ -0,0 +1,314 @@
+
+
+ baseForm = e">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/project-management/mobledetail/SummaryDetailMoblie.vue b/src/views/project-management/mobledetail/SummaryDetailMoblie.vue
new file mode 100644
index 0000000..9706b26
--- /dev/null
+++ b/src/views/project-management/mobledetail/SummaryDetailMoblie.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+ {{ localFormData.projectName }}
+
+
+
+
+ {{localFormData.specialFundId===0?localFormData.specialFund:changeName(fundOption,localFormData.specialFundId) }}
+
+
+
+
+ {{ localFormData.startTime }}
+
+
+
+
+ {{ localFormData.endTime }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('project_type'), localFormData.projectType) }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('rd_subject'), localFormData.rdSubject) }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('invest_type'), localFormData.investmentType) }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('project_impact'), localFormData.projectImpact) }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('business_segment'), localFormData.businessSegment) }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('result_form'), localFormData.resultForm) }}
+
+
+
+
+ {{ filterDict(cacheStore.getDict('technical_standard'), localFormData.technicalStandard) }}
+
+
+
+
+ {{
+ filterDict(cacheStore.getDict('industry_university'), localFormData.industryUniversityResearch)
+ }}
+
+
+
+
+ {{
+ filterDict(cacheStore.getDict('government_declaration'), localFormData.governmentDeclaration)
+ }}
+
+
+
+
+ {{
+ filterDict(cacheStore.getDict('intellectual_property'), localFormData.intellectualProperty)
+ }}
+
+
+
+
+ {{ localFormData.inventionPatent }}
+
+
+
+
+ {{ localFormData.newPatent }}
+
+
+
+
+ {{ localFormData.softwareCopyright }}
+
+
+
+
+ {{ localFormData.copyright }}
+
+
+
+
+ {{ localFormData.other }}
+
+
+
+
+ {{toThousands( localFormData.economicEstimate )}}
+
+
+
+
+ {{ toThousands(localFormData.specialFundAmount) }}
+
+
+
+
+ {{ localFormData.serviceDescription }}
+
+
+
+
+ {{ localFormData.contentDescription }}
+
+
+
+
+
+ {{ localFormData.singleFile?.originalFileName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/project-management/mobledetail/api/index.js b/src/views/project-management/mobledetail/api/index.js
new file mode 100644
index 0000000..a6d331c
--- /dev/null
+++ b/src/views/project-management/mobledetail/api/index.js
@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+export const getBaseInfoApi = (projectId) => {
+ return request({
+ url: '/workflow/details/info/'+projectId,
+ method: 'get',
+ })
+}
+
+export const getMapProjectStateInfo = (projectId, state) => {
+ return request({
+ url: `/workflow/details/${projectId}/${state}`,
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/src/views/project-management/mobledetail/index.vue b/src/views/project-management/mobledetail/index.vue
new file mode 100644
index 0000000..d24040b
--- /dev/null
+++ b/src/views/project-management/mobledetail/index.vue
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/workflow/process/common/UserPicker.vue b/src/views/workflow/process/common/UserPicker.vue
index 9a4dc64..835a571 100644
--- a/src/views/workflow/process/common/UserPicker.vue
+++ b/src/views/workflow/process/common/UserPicker.vue
@@ -70,9 +70,8 @@