模板详情去除之前判断、服务业发展报告对接、流程设计完善、数据云图跳转完善、自定义模板回显

des
吕天方 5 months ago
parent 9cc629e796
commit fdfc31839f

@ -5,8 +5,8 @@ VUE_APP_TITLE = 金鸡湖现代服务业品牌管理系统
ENV = 'development'
# 金鸡湖现代服务业品牌管理系统/开发环境
VUE_APP_BASE_API = 'http://192.168.0.118:9040'
# VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# VUE_APP_BASE_API = 'http://192.168.0.118:9040'
VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# VUE_APP_BASE_API = 'https://idp.sipac.gov.cn/api'
# 路由懒加载

@ -6,7 +6,7 @@ ENV = 'production'
# 金鸡湖现代服务业品牌管理系统/生产环境
# VUE_APP_BASE_API = '/prod-api'
# VUE_APP_BASE_API = 'http://39.101.188.84:9040'
VUE_APP_BASE_API = 'http://39.101.188.84:9040'
# VUE_APP_BASE_API = 'http://192.114.0.197/api'
VUE_APP_BASE_API = 'https://idp.sipac.gov.cn/api'
# VUE_APP_BASE_API = 'https://idp.sipac.gov.cn/api'

@ -1,6 +1,6 @@
{
"name": "ruoyi",
"version": "1.0.202408010854",
"version": "1.0.202408012042",
"description": "金鸡湖现代服务业品牌管理系统",
"author": "若依",
"license": "MIT",

@ -0,0 +1,17 @@
import request from '@/utils/request'
export function saveModel(data) {
return request({
url: '/workflow/model/save',
method: 'post',
data: data
})
}
// 获取流程模型流程图
export function getBpmnXml(modelId) {
return request({
url: '/workflow/model/bpmnXml/' + modelId,
method: 'get'
})
}

@ -2104,7 +2104,7 @@
}
}
}
.headline-one-header, .headline-two-header {
.headline-one-header {
margin: 20px 0;
font-family: AlibabaPuHuiTiM;
font-size: 16px;
@ -2113,6 +2113,40 @@
font-family: ArialB;
}
}
.headline-two-header {
display: flex;
align-items: center;
justify-content: space-between;
margin: 20px 0;
.work-industry-condition {
display: flex;
align-items: flex-end;
.industry-condition {
font-family: AlibabaPuHuiTiM;
font-size: 16px;
color: #666666;
span {
font-family: ArialB;
}
}
.industry-condition-statistics {
font-family: AlibabaPuHuiTiR;
font-size: 12px;
color: #999999;
line-height: 18px;
}
}
.rightBtn {
font-family: PingFang-SC-Medium;
font-weight: 500;
font-size: 12px;
color: #0086FF;
font-style: normal;
cursor: pointer;
text-decoration-line: underline;
text-transform: none;
}
}
}
}
.main-row-three-bottombox {
@ -2246,7 +2280,7 @@
// flex: 1;
margin-bottom: 10px;
height: 50%;
height: calc((100% - 45px) / 2);
height: calc((100% - 55px) / 2);
display: flex;
.capital-proportion,.capital-declare {
margin-right: 10px;
@ -2342,18 +2376,17 @@
}
//
.two-tables {
flex: 1;
display: grid;
grid-template-columns: 1fr;
row-gap: 10px;
margin-top: 10px;
overflow-y: scroll;
.table-items {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 20px;
background-color: #fff;
overflow-y: scroll;
.two-left {
font-family: AlibabaPuHuiTiM;
font-size: 16px;
@ -2405,7 +2438,7 @@
overflow-y: auto;
display: grid;
grid-template-columns: 1fr;
row-gap: 15px;
row-gap: 20px;
.promoteProject-box-div {
background: #FFFFFF;
padding: 14px;
@ -2481,6 +2514,9 @@
border-radius: 10px;
margin-bottom: 10px;
padding: 10px 20px;
.main-left {
height: 100%;
}
.left-header {
margin-bottom: 10px;
display: flex;
@ -3652,6 +3688,16 @@
text-transform: none;
cursor: pointer;
}
.project-trace-table-type {
font-weight: 500;
font-size: 14px;
}
.red {
color: #FD5F5F;
}
.green {
color: #4EB997;
}
th {
font-weight: bold;
@ -3675,6 +3721,19 @@
background-color: #F6F9FD;
}
}
.dataMap-work-table {
.workDialog-btns {
display: flex;
justify-content: center;
align-items: center;
.project-trace-table-number {
margin-right: 5px;
}
}
td {
border-bottom: 1px solid #D9D9D9;
}
}
.my-pagination-container {
margin-top: 10px;

@ -48,6 +48,16 @@ export default {
BpmnProcessDesigner,
BmpnProcessPenal
},
// watch:{
// bpmnXml:{
// handler(newValue) {
// if(newValue) {
// this.xmlString = newValue;
// }
// },
// immediate:true
// }
// },
data () {
return {
// height: document.documentElement.clientHeight - 94.5 + "px;",

@ -0,0 +1,306 @@
<template>
<div>
<div class="mask" v-show="isShowSelect" @click="isShowSelect = !isShowSelect"></div>
<el-popover placement="bottom-start" :width="width" trigger="manual" v-model="isShowSelect" @hide="popoverHide">
<el-select
slot="reference"
ref="select"
:size="size"
v-model="selectedData"
:multiple="multiple"
:clearable="clearable"
:collapse-tags="collapseTags"
@click.native="isShowSelect = !isShowSelect"
@remove-tag="removeSelectedNodes"
@clear="removeSelectedNode"
@change="changeSelectedNodes"
class="tree-select"
>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-tree
class="common-tree"
ref="tree"
:style="`width: 100%; ${height}px`"
:data="data"
:props="defaultProps"
:show-checkbox="multiple"
:node-key="nodeKey"
:check-strictly="checkStrictly"
default-expand-all
:expand-on-click-node="false"
:check-on-click-node="multiple"
:highlight-current="true"
@node-click="handleNodeClick"
@check-change="handleCheckChange"
/>
</el-popover>
</div>
</template>
<script>
export default {
name: 'tree-select',
props: {
//
data: {
type: Array,
default() {
return [];
}
},
defaultProps: {
type: Object,
default() {
return {};
}
},
//
multiple: {
type: Boolean,
default() {
return false;
}
},
//
clearable: {
type: Boolean,
default() {
return false;
}
},
//
collapseTags: {
type: Boolean,
default() {
return false;
}
},
nodeKey: {
type: String,
default() {
return 'id';
}
},
//
checkStrictly: {
type: Boolean,
default() {
return false;
}
},
// key
checkedKeys: {
type: Array,
default() {
return [];
}
},
size: {
type: String,
default() {
return 'small';
}
},
width: {
type: Number,
default() {
return 250;
}
},
height: {
type: Number,
default() {
return 300;
}
}
},
data() {
return {
isShowSelect: false, //
options: [],
selectedData: [], //
style: 'width:' + this.width + 'px;' + 'height:' + this.height + 'px;',
selectStyle: 'width:' + (this.width + 24) + 'px;',
checkedIds: [],
checkedData: []
};
},
mounted() {
this.initCheckedData();
},
methods: {
// treeselect
setSelectOption(node) {
let tmpMap = {};
tmpMap.value = node.key;
tmpMap.label = node.label;
this.options = [];
this.options.push(tmpMap);
this.selectedData = node.key;
},
//
checkSelectedNode(checkedKeys) {
var item = checkedKeys[0];
this.$refs.tree.setCurrentKey(item);
var node = this.$refs.tree.getNode(item);
this.setSelectOption(node);
},
//
checkSelectedNodes(checkedKeys) {
this.$refs.tree.setCheckedKeys(checkedKeys);
},
//
clearSelectedNode() {
this.$refs.tree.setCurrentKey(null);
},
//
clearSelectedNodes() {
var checkedKeys = this.$refs.tree.getCheckedKeys(); // key
for (let i = 0; i < checkedKeys.length; i++) {
this.$refs.tree.setChecked(checkedKeys[i], false);
}
},
initCheckedData() {
if (this.multiple) {
//
if (this.checkedKeys.length > 0) {
this.selectedData = this.checkedKeys;
this.checkSelectedNodes(this.checkedKeys);
} else {
this.selectedData = '';
this.clearSelectedNodes();
}
} else {
//
if (this.checkedKeys.length > 0) {
this.selectedData = this.checkedKeys[0];
this.checkSelectedNode(this.checkedKeys);
} else {
this.selectedData = '';
this.clearSelectedNode();
}
}
},
a2b(ls) {
return ls.map(obj => {
let result = { id: '', text: '' };
if (obj.children && obj.children.length > 0) {
result.id = obj.value;
result.text = obj.label;
result.arr = a2b(obj.children);
return result;
} else {
result.id = obj.value;
result.text = obj.label;
return result;
}
});
},
popoverHide() {
if (this.multiple) {
this.checkedIds = this.$refs.tree.getCheckedKeys(); // key
this.checkedData = this.$refs.tree.getCheckedNodes(); //
} else {
this.checkedIds = this.$refs.tree.getCurrentKey();
this.checkedData = this.$refs.tree.getCurrentNode();
}
this.$emit('checked-change', this.checkedIds, this.checkedData);
},
// ,
handleNodeClick(data, node) {
if (!this.multiple) {
this.setSelectOption(node);
this.isShowSelect = !this.isShowSelect;
this.$emit('change', this.selectedData);
}
},
//
handleCheckChange() {
var checkedKeys = this.$refs.tree.getCheckedKeys(); // key
this.options = checkedKeys.map((item) => {
var node = this.$refs.tree.getNode(item); // node
let tmpMap = {};
tmpMap.value = node.key;
tmpMap.label = node.label;
return tmpMap;
});
this.selectedData = this.options.map((item) => {
return item.value;
});
this.$emit('change', this.selectedData);
},
// ,select
removeSelectedNodes(val) {
this.$refs.tree.setChecked(val, false);
var node = this.$refs.tree.getNode(val);
if (!this.checkStrictly && node.childNodes.length > 0) {
this.treeToList(node).map(item => {
if (item.childNodes.length <= 0) {
this.$refs.tree.setChecked(item, false);
}
});
this.handleCheckChange();
}
this.$emit('change', this.selectedData);
},
treeToList(tree) {
var queen = [];
var out = [];
queen = queen.concat(tree);
while (queen.length) {
var first = queen.shift();
if (first.childNodes) {
queen = queen.concat(first.childNodes);
}
out.push(first);
}
return out;
},
// ,select
removeSelectedNode() {
this.clearSelectedNode();
this.$emit('change', this.selectedData);
},
// select
changeSelectedNodes(selectedData) {
// ,select
if (this.multiple && selectedData.length <= 0) {
this.clearSelectedNodes();
}
this.$emit('change', this.selectedData);
}
},
watch: {
isShowSelect(val) {
// select
this.$refs.select.blur();
},
checkedKeys(val) {
if (!val) return;
this.checkedKeys = val;
this.initCheckedData();
}
}
};
</script>
<style scoped>
.mask {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
opacity: 0;
z-index: 11;
}
.common-tree {
overflow: auto;
}
.tree-select {
z-index: 111;
}
</style>

@ -19,7 +19,7 @@
</el-collapse-item>
<el-collapse-item name="task" v-if="elementType.indexOf('Task') !== -1" key="task">
<div slot="title" class="panel-tab__title"><i class="el-icon-s-claim"></i>任务</div>
<!-- <element-task :id="elementId" :type="elementType" /> -->
<element-task :id="elementId" :type="elementType" />
</el-collapse-item>
<el-collapse-item name="multiInstance" v-if="elementType.indexOf('Task') !== -1 && elementType !== 'UserTask'" key="multiInstance">
<div slot="title" class="panel-tab__title"><i class="el-icon-s-help"></i>多实例</div>
@ -47,7 +47,7 @@
<script>
import ElementBaseInfo from "./base/ElementBaseInfo";
import ElementOtherConfig from "./other/ElementOtherConfig";
// import ElementTask from "./task/ElementTask";
import ElementTask from "./task/ElementTask";
import ElementMultiInstance from "./multi-instance/ElementMultiInstance";
import FlowCondition from "./flow-condition/FlowCondition";
import SignalAndMassage from "./signal-message/SignalAndMessage";
@ -71,7 +71,7 @@ export default {
SignalAndMassage,
FlowCondition,
ElementMultiInstance,
// ElementTask,
ElementTask,
ElementOtherConfig,
ElementBaseInfo
},

@ -0,0 +1,74 @@
<template>
<div class="panel-tab__content">
<el-form size="mini" label-width="96px" @submit.native.prevent>
<!-- <el-form-item label="异步延续">-->
<!-- <el-checkbox v-model="taskConfigForm.asyncBefore" label="异步前" @change="changeTaskAsync" />-->
<!-- <el-checkbox v-model="taskConfigForm.asyncAfter" label="异步后" @change="changeTaskAsync" />-->
<!-- <el-checkbox v-model="taskConfigForm.exclusive" v-if="taskConfigForm.asyncAfter || taskConfigForm.asyncBefore" label="排除" @change="changeTaskAsync" />-->
<!-- </el-form-item>-->
<component :is="witchTaskComponent" v-bind="$props" />
</el-form>
</div>
</template>
<script>
import UserTask from "./task-components/UserTask";
import ServiceTask from "./task-components/ServiceTask";
import ScriptTask from "./task-components/ScriptTask";
import ReceiveTask from "./task-components/ReceiveTask";
export default {
name: "ElementTaskConfig",
components: { UserTask, ServiceTask, ScriptTask, ReceiveTask },
props: {
id: String,
type: String
},
data() {
return {
taskConfigForm: {
asyncAfter: false,
asyncBefore: false,
exclusive: false
},
witchTaskComponent: "",
installedComponent: {
//
// messageRef
//
UserTask: "UserTask", //
ServiceTask: "ServiceTask", //
ScriptTask: "ScriptTask", //
ReceiveTask: "ReceiveTask" //
}
};
},
watch: {
id: {
immediate: true,
handler() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.taskConfigForm.asyncBefore = this.bpmnElement?.businessObject?.asyncBefore;
this.taskConfigForm.asyncAfter = this.bpmnElement?.businessObject?.asyncAfter;
this.taskConfigForm.exclusive = this.bpmnElement?.businessObject?.exclusive;
}
},
type: {
immediate: true,
handler() {
this.witchTaskComponent = this.installedComponent[this.type];
}
}
},
methods: {
changeTaskAsync() {
if (!this.taskConfigForm.asyncBefore && !this.taskConfigForm.asyncAfter) {
this.taskConfigForm.exclusive = false;
}
window.bpmnInstances.modeling.updateProperties(window.bpmnInstances.bpmnElement, {
...this.taskConfigForm
});
}
}
};
</script>

@ -0,0 +1,97 @@
<template>
<div style="margin-top: 16px">
<el-form-item label="消息实例">
<div style="display: flex; align-items: center; justify-content: space-between; flex-wrap: nowrap">
<el-select v-model="bindMessageId" @change="updateTaskMessage">
<el-option v-for="id in Object.keys(messageMap)" :value="id" :label="messageMap[id]" :key="id" />
</el-select>
<el-button size="mini" type="primary" icon="el-icon-plus" style="margin-left: 8px" @click="openMessageModel" />
</div>
</el-form-item>
<el-dialog :visible.sync="messageModelVisible" :close-on-click-modal="false" title="创建新消息" width="400px" append-to-body destroy-on-close>
<el-form :model="newMessageForm" size="mini" label-width="90px" @submit.native.prevent>
<el-form-item label="消息ID">
<el-input v-model="newMessageForm.id" clearable />
</el-form-item>
<el-form-item label="消息名称">
<el-input v-model="newMessageForm.name" clearable />
</el-form-item>
</el-form>
<template slot="footer">
<el-button size="mini" type="primary" @click="createNewMessage"> </el-button>
</template>
</el-dialog>
</div>
</template>
<script>
export default {
name: "ReceiveTask",
props: {
id: String,
type: String
},
data() {
return {
bindMessageId: "",
newMessageForm: {},
messageMap: {},
messageModelVisible: false
};
},
watch: {
id: {
immediate: true,
handler() {
this.$nextTick(() => this.getBindMessage());
}
}
},
created() {
this.bpmnMessageRefsMap = Object.create(null);
this.bpmnRootElements = window.bpmnInstances.modeler.getDefinitions().rootElements;
this.bpmnRootElements
.filter(el => el.$type === "bpmn:Message")
.forEach(m => {
this.bpmnMessageRefsMap[m.id] = m;
this.$set(this.messageMap, m.id, m.name);
});
this.$set(this.messageMap, "-1", "无"); //
},
methods: {
getBindMessage() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.bindMessageId = this.bpmnElement.businessObject?.messageRef?.id || "-1";
},
openMessageModel() {
this.messageModelVisible = true;
this.newMessageForm = {};
},
createNewMessage() {
if (this.messageMap[this.newMessageForm.id]) {
this.$message.error("该消息已存在请修改id后重新保存");
return;
}
const newMessage = window.bpmnInstances.moddle.create("bpmn:Message", this.newMessageForm);
this.bpmnRootElements.push(newMessage);
this.$set(this.messageMap, this.newMessageForm.id, this.newMessageForm.name);
this.bpmnMessageRefsMap[this.newMessageForm.id] = newMessage;
this.messageModelVisible = false;
},
updateTaskMessage(messageId) {
if (messageId === "-1") {
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, {
messageRef: null
});
} else {
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, {
messageRef: this.bpmnMessageRefsMap[messageId]
});
}
}
},
beforeDestroy() {
this.bpmnElement = null;
}
};
</script>

@ -0,0 +1,85 @@
<template>
<div style="margin-top: 16px">
<el-form-item label="脚本格式">
<el-input v-model="scriptTaskForm.scriptFormat" clearable @input="updateElementTask()" @change="updateElementTask()" />
</el-form-item>
<el-form-item label="脚本类型">
<el-select v-model="scriptTaskForm.scriptType">
<el-option label="内联脚本" value="inline" />
<el-option label="外部资源" value="external" />
</el-select>
</el-form-item>
<el-form-item label="脚本" v-show="scriptTaskForm.scriptType === 'inline'">
<el-input
v-model="scriptTaskForm.script"
type="textarea"
resize="vertical"
:autosize="{ minRows: 2, maxRows: 4 }"
clearable
@input="updateElementTask()"
@change="updateElementTask()"
/>
</el-form-item>
<el-form-item label="资源地址" v-show="scriptTaskForm.scriptType === 'external'">
<el-input v-model="scriptTaskForm.resource" clearable @input="updateElementTask()" @change="updateElementTask()" />
</el-form-item>
<el-form-item label="结果变量">
<el-input v-model="scriptTaskForm.resultVariable" clearable @input="updateElementTask()" @change="updateElementTask()" />
</el-form-item>
</div>
</template>
<script>
export default {
name: "ScriptTask",
props: {
id: String,
type: String
},
data() {
return {
defaultTaskForm: {
scriptFormat: "",
script: "",
resource: "",
resultVariable: ""
},
scriptTaskForm: {}
};
},
watch: {
id: {
immediate: true,
handler() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.$nextTick(() => this.resetTaskForm());
}
}
},
methods: {
resetTaskForm() {
for (let key in this.defaultTaskForm) {
let value = this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
this.$set(this.scriptTaskForm, key, value);
}
this.$set(this.scriptTaskForm, "scriptType", this.scriptTaskForm.script ? "inline" : "external");
},
updateElementTask() {
let taskAttr = Object.create(null);
taskAttr.scriptFormat = this.scriptTaskForm.scriptFormat || null;
taskAttr.resultVariable = this.scriptTaskForm.resultVariable || null;
if (this.scriptTaskForm.scriptType === "inline") {
taskAttr.script = this.scriptTaskForm.script || null;
taskAttr.resource = null;
} else {
taskAttr.resource = this.scriptTaskForm.resource || null;
taskAttr.script = null;
}
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, taskAttr);
}
},
beforeDestroy() {
this.bpmnElement = null;
}
};
</script>

@ -0,0 +1,86 @@
<template>
<div>
<el-form-item label="执行类型" key="executeType">
<el-select v-model="serviceTaskForm.executeType">
<el-option label="Java类" value="class" />
<el-option label="表达式" value="expression" />
<el-option label="代理表达式" value="delegateExpression" />
</el-select>
</el-form-item>
<el-form-item
v-if="serviceTaskForm.executeType === 'class'"
label="Java类"
prop="class"
key="execute-class"
>
<el-input v-model="serviceTaskForm.class" clearable @change="updateElementTask" />
</el-form-item>
<el-form-item
v-if="serviceTaskForm.executeType === 'expression'"
label="表达式"
prop="expression"
key="execute-expression"
>
<el-input v-model="serviceTaskForm.expression" clearable @change="updateElementTask" />
</el-form-item>
<el-form-item
v-if="serviceTaskForm.executeType === 'delegateExpression'"
label="代理表达式"
prop="delegateExpression"
key="execute-delegate"
>
<el-input v-model="serviceTaskForm.delegateExpression" clearable @change="updateElementTask" />
</el-form-item>
</div>
</template>
<script>
export default {
name: "ServiceTask",
props: {
id: String,
type: String
},
data() {
return {
defaultTaskForm: {
executeType: "",
class: "",
expression: "",
delegateExpression: ""
},
serviceTaskForm: {}
};
},
watch: {
id: {
immediate: true,
handler() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.$nextTick(() => this.resetTaskForm());
}
}
},
methods: {
resetTaskForm() {
for (let key in this.defaultTaskForm) {
let value = this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
if (value) this.$set(this.serviceTaskForm, "executeType", key);
this.$set(this.serviceTaskForm, key, value);
}
},
updateElementTask() {
let taskAttr = Object.create(null);
const type = this.serviceTaskForm.executeType;
for (let key in this.serviceTaskForm) {
if (key !== 'executeType' && key !== type) taskAttr[key] = null;
}
taskAttr[type] = this.serviceTaskForm[type] || "";
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, taskAttr);
}
},
beforeDestroy() {
this.bpmnElement = null;
}
};
</script>

@ -0,0 +1,525 @@
<template>
<div>
<el-row>
<h4><b>审批人设置</b></h4>
<el-radio-group v-model="dataType" @change="changeDataType">
<el-radio label="USERS">指定用户</el-radio>
<el-radio label="ROLES">角色</el-radio>
<el-radio label="DEPTS">部门</el-radio>
<el-radio label="INITIATOR">发起人</el-radio>
</el-radio-group>
</el-row>
<el-row>
<div v-if="dataType === 'USERS'">
<el-tag v-for="userText in selectedUser.text" :key="userText" effect="plain">
{{userText}}
</el-tag>
<div class="element-drawer__button">
<el-button size="mini" type="primary" icon="el-icon-plus" @click="onSelectUsers()"></el-button>
</div>
</div>
<div v-if="dataType === 'ROLES'">
<el-select v-model="roleIds" multiple size="mini" placeholder="请选择 角色" @change="changeSelectRoles">
<el-option
v-for="item in roleOptions"
:key="item.roleId"
:label="item.roleName"
:value="`ROLE${item.roleId}`"
:disabled="item.status === 1">
</el-option>
</el-select>
</div>
<div v-if="dataType === 'DEPTS'">
<tree-select
:width="320"
:height="400"
size="mini"
:data="deptTreeData"
:defaultProps="deptProps"
multiple
clearable
checkStrictly
nodeKey="id"
:checkedKeys="deptIds"
@change="checkedDeptChange">
</tree-select>
</div>
</el-row>
<el-row>
<div v-show="showMultiFlog">
<el-divider />
<h4><b>多实例审批方式</b></h4>
<el-row>
<el-radio-group v-model="multiLoopType" @change="changeMultiLoopType()">
<el-row><el-radio label="Null"></el-radio></el-row>
<el-row><el-radio label="SequentialMultiInstance">会签需所有审批人同意</el-radio></el-row>
<el-row><el-radio label="ParallelMultiInstance">或签一名审批人同意即可</el-radio></el-row>
</el-radio-group>
</el-row>
<el-row v-if="multiLoopType !== 'Null'">
<el-tooltip content="开启后,实例需按顺序轮流审批" placement="top-start" @click.stop.prevent>
<i class="header-icon el-icon-info"></i>
</el-tooltip>
<span class="custom-label">顺序审批</span>
<el-switch v-model="isSequential" @change="changeMultiLoopType()" />
</el-row>
</div>
</el-row>
<!-- 候选用户弹窗 -->
<el-dialog title="候选用户" :visible.sync="userOpen" width="60%" append-to-body>
<el-row type="flex" :gutter="20">
<!--部门数据-->
<el-col :span="7">
<el-card shadow="never" style="height: 100%">
<div slot="header">
<span>部门列表</span>
</div>
<div class="head-container">
<el-input
v-model="deptName"
placeholder="请输入部门名称"
clearable
size="small"
prefix-icon="el-icon-search"
style="margin-bottom: 20px"
/>
<el-tree
:data="deptOptions"
:props="deptProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
default-expand-all
@node-click="handleNodeClick"
/>
</div>
</el-card>
</el-col>
<el-col :span="17">
<el-table ref="multipleTable" height="600" :data="userTableList" border @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="用户名" align="center" prop="nickName" />
<el-table-column label="部门" align="center" prop="dept.deptName" />
</el-table>
<pagination
:total="userTotal"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getUserList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleTaskUserComplete"> </el-button>
<el-button @click="userOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listUser, deptTreeSelect } from "@/api/system/user";
import { listRole } from "@/api/system/role";
import TreeSelect from "@/components/TreeSelect";
const userTaskForm = {
dataType: '',
assignee: '',
candidateUsers: '',
candidateGroups: '',
text: '',
// dueDate: '',
// followUpDate: '',
// priority: ''
}
export default {
name: "UserTask",
props: {
id: String,
type: String
},
components: { TreeSelect },
data() {
return {
loading: false,
dataType: 'USERS',
selectedUser: {
ids: [],
text: []
},
userOpen: false,
deptName: undefined,
deptOptions: [],
deptProps: {
children: "children",
label: "label"
},
deptTempOptions: [],
userTableList: [],
userTotal: 0,
selectedUserDate: [],
roleOptions: [],
roleIds: [],
deptTreeData: [],
deptIds: [],
//
queryParams: {
deptId: undefined
},
showMultiFlog: false,
isSequential: false,
multiLoopType: 'Null',
};
},
watch: {
id: {
immediate: true,
handler() {
this.bpmnElement = window.bpmnInstances.bpmnElement;
this.$nextTick(() => this.resetTaskForm());
}
},
//
deptName(val) {
this.$refs.tree.filter(val);
}
},
beforeDestroy() {
this.bpmnElement = null;
},
methods: {
resetTaskForm() {
const bpmnElementObj = this.bpmnElement?.businessObject;
if (!bpmnElementObj) {
return;
}
this.clearOptionsData()
this.dataType = bpmnElementObj['dataType'];
if (this.dataType === 'USERS') {
let userIdData = bpmnElementObj['candidateUsers'] || bpmnElementObj['assignee'];
let userText = bpmnElementObj['text'] || [];
if (userIdData && userIdData.toString().length > 0 && userText && userText.length > 0) {
this.selectedUser.ids = userIdData?.toString().split(',');
this.selectedUser.text = userText?.split(',');
}
if (this.selectedUser.ids.length > 1) {
this.showMultiFlog = true;
}
} else if (this.dataType === 'ROLES') {
this.getRoleOptions();
let roleIdData = bpmnElementObj['candidateGroups'] || [];
if (roleIdData && roleIdData.length > 0) {
this.roleIds = roleIdData.split(',')
}
this.showMultiFlog = true;
} else if (this.dataType === 'DEPTS') {
this.getDeptTreeData();
let deptIdData = bpmnElementObj['candidateGroups'] || [];
if (deptIdData && deptIdData.length > 0) {
this.deptIds = deptIdData.split(',');
}
this.showMultiFlog = true;
}
this.getElementLoop(bpmnElementObj);
},
/**
* 清空选项数据
*/
clearOptionsData() {
this.selectedUser.ids = [];
this.selectedUser.text = [];
this.roleIds = [];
this.deptIds = [];
},
/**
* 跟新节点数据
*/
updateElementTask() {
const taskAttr = Object.create(null);
for (let key in userTaskForm) {
taskAttr[key] = userTaskForm[key];
}
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, taskAttr);
},
/**
* 查询部门下拉树结构
*/
getDeptOptions() {
return new Promise((resolve, reject) => {
if (!this.deptOptions || this.deptOptions.length <= 0) {
deptTreeSelect().then(response => {
this.deptTempOptions = response.data;
this.deptOptions = response.data;
resolve()
})
} else {
reject()
}
});
},
/**
* 查询部门下拉树结构含部门前缀
*/
getDeptTreeData() {
function refactorTree(data) {
return data.map(node => {
let treeData = { id: `DEPT${node.id}`, label: node.label, parentId: node.parentId, weight: node.weight };
if (node.children && node.children.length > 0) {
treeData.children = refactorTree(node.children);
}
return treeData;
});
}
return new Promise((resolve, reject) => {
if (!this.deptTreeData || this.deptTreeData.length <= 0) {
this.getDeptOptions().then(() => {
this.deptTreeData = refactorTree(this.deptOptions);
resolve()
}).catch(() => {
reject()
})
} else {
resolve()
}
})
},
/**
* 查询部门下拉树结构
*/
getRoleOptions() {
if (!this.roleOptions || this.roleOptions.length <= 0) {
listRole().then(response => this.roleOptions = response.rows);
}
},
/** 查询用户列表 */
getUserList() {
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.userTableList = response.rows;
this.userTotal = response.total;
});
},
//
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
this.queryParams.deptId = data.id;
this.getUserList();
},
//
handleClose(tag) {
this.selectedUserDate.splice(this.selectedUserDate.indexOf(tag), 1);
this.$refs.multipleTable.toggleRowSelection(tag);
},
//
handleSelectionChange(selection) {
this.selectedUserDate = selection;
},
onSelectUsers() {
this.selectedUserDate = []
this.$refs.multipleTable?.clearSelection();
this.getDeptOptions();
this.userOpen = true;
},
handleTaskUserComplete() {
if (!this.selectedUserDate || this.selectedUserDate.length <= 0) {
this.$modal.msgError('请选择用户');
return;
}
userTaskForm.dataType = 'USERS';
this.selectedUser.text = this.selectedUserDate.map(k => k.nickName) || [];
if (this.selectedUserDate.length === 1) {
let data = this.selectedUserDate[0];
userTaskForm.assignee = data.userId;
userTaskForm.text = data.nickName;
userTaskForm.candidateUsers = null;
this.showMultiFlog = false;
this.multiLoopType = 'Null';
this.changeMultiLoopType();
} else {
userTaskForm.candidateUsers = this.selectedUserDate.map(k => k.userId).join() || null;
userTaskForm.text = this.selectedUserDate.map(k => k.nickName).join() || null;
userTaskForm.assignee = null;
this.showMultiFlog = true;
}
this.updateElementTask()
this.userOpen = false;
},
changeSelectRoles(val) {
let groups = null;
let text = null;
if (val && val.length > 0) {
userTaskForm.dataType = 'ROLES';
groups = val.join() || null;
let textArr = this.roleOptions.filter(k => val.indexOf(`ROLE${k.roleId}`) >= 0);
text = textArr?.map(k => k.roleName).join() || null;
} else {
userTaskForm.dataType = null;
this.multiLoopType = 'Null';
}
userTaskForm.candidateGroups = groups;
userTaskForm.text = text;
this.updateElementTask();
this.changeMultiLoopType();
},
checkedDeptChange(checkedIds) {
let groups = null;
let text = null;
this.deptIds = checkedIds;
if (checkedIds && checkedIds.length > 0) {
userTaskForm.dataType = 'DEPTS';
groups = checkedIds.join() || null;
let textArr = []
let treeStarkData = JSON.parse(JSON.stringify(this.deptTreeData));
checkedIds.forEach(id => {
let stark = []
stark = stark.concat(treeStarkData);
while(stark.length) {
let temp = stark.shift();
if(temp.children) {
stark = temp.children.concat(stark);
}
if(id === temp.id) {
textArr.push(temp);
}
}
})
text = textArr?.map(k => k.label).join() || null;
} else {
userTaskForm.dataType = null;
this.multiLoopType = 'Null';
}
userTaskForm.candidateGroups = groups;
userTaskForm.text = text;
this.updateElementTask();
this.changeMultiLoopType();
},
changeDataType(val) {
if (val === 'ROLES' || val === 'DEPTS' || (val === 'USERS' && this.selectedUser.ids.length > 1)) {
this.showMultiFlog = true;
} else {
this.showMultiFlog = false;
}
this.multiLoopType = 'Null';
this.changeMultiLoopType();
// userTaskForm
Object.keys(userTaskForm).forEach(key => userTaskForm[key] = null);
userTaskForm.dataType = val;
if (val === 'USERS') {
if (this.selectedUser && this.selectedUser.ids && this.selectedUser.ids.length > 0) {
if (this.selectedUser.ids.length === 1) {
userTaskForm.assignee = this.selectedUser.ids[0];
} else {
userTaskForm.candidateUsers = this.selectedUser.ids.join()
}
userTaskForm.text = this.selectedUser.text?.join() || null
}
} else if (val === 'ROLES') {
this.getRoleOptions();
if (this.roleIds && this.roleIds.length > 0) {
userTaskForm.candidateGroups = this.roleIds.join() || null;
let textArr = this.roleOptions.filter(k => this.roleIds.indexOf(`ROLE${k.roleId}`) >= 0);
userTaskForm.text = textArr?.map(k => k.roleName).join() || null;
}
} else if (val === 'DEPTS') {
this.getDeptTreeData();
if (this.deptIds && this.deptIds.length > 0) {
userTaskForm.candidateGroups = this.deptIds.join() || null;
let textArr = []
let treeStarkData = JSON.parse(JSON.stringify(this.deptTreeData));
this.deptIds.forEach(id => {
let stark = []
stark = stark.concat(treeStarkData);
while(stark.length) {
let temp = stark.shift();
if(temp.children) {
stark = temp.children.concat(stark);
}
if(id === temp.id) {
textArr.push(temp);
}
}
})
userTaskForm.text = textArr?.map(k => k.label).join() || null;
}
} else if (val === 'INITIATOR') {
userTaskForm.assignee = "${initiator}";
userTaskForm.text = "流程发起人";
}
this.updateElementTask();
},
getElementLoop(businessObject) {
if (!businessObject.loopCharacteristics) {
this.multiLoopType = "Null";
return;
}
this.isSequential = businessObject.loopCharacteristics.isSequential;
if (businessObject.loopCharacteristics.completionCondition) {
if (businessObject.loopCharacteristics.completionCondition.body === "${nrOfCompletedInstances >= nrOfInstances}") {
this.multiLoopType = "SequentialMultiInstance";
} else {
this.multiLoopType = "ParallelMultiInstance";
}
}
},
changeMultiLoopType() {
//
if (this.multiLoopType === "Null") {
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, { loopCharacteristics: null, assignee: null });
return;
}
this.multiLoopInstance = window.bpmnInstances.moddle.create("bpmn:MultiInstanceLoopCharacteristics", { isSequential: this.isSequential });
//
window.bpmnInstances.modeling.updateProperties(this.bpmnElement, {
loopCharacteristics: this.multiLoopInstance,
assignee: '${assignee}'
});
//
let completionCondition = null;
//
if (this.multiLoopType === "SequentialMultiInstance") {
completionCondition = window.bpmnInstances.moddle.create("bpmn:FormalExpression", { body: "${nrOfCompletedInstances >= nrOfInstances}" });
}
//
if (this.multiLoopType === "ParallelMultiInstance") {
completionCondition = window.bpmnInstances.moddle.create("bpmn:FormalExpression", { body: "${nrOfCompletedInstances > 0}" });
}
//
window.bpmnInstances.modeling.updateModdleProperties(this.bpmnElement, this.multiLoopInstance, {
collection: '${multiInstanceHandler.getUserIds(execution)}',
elementVariable: 'assignee',
completionCondition
});
},
}
};
</script>
<style scoped lang="scss">
.el-row .el-radio-group {
margin-bottom: 15px;
.el-radio {
line-height: 28px;
}
}
.el-tag {
margin-bottom: 10px;
+ .el-tag {
margin-left: 10px;
}
}
.custom-label {
padding-left: 5px;
font-weight: 500;
font-size: 14px;
color: #606266;
}
</style>

@ -377,7 +377,7 @@ export const selectComponents = [
label: '上传',
tag: 'el-upload',
tagIcon: 'upload',
action: process.env.VUE_APP_BASE_API+"/common/upload",
action: "/common/upload",
defaultValue: null,
labelWidth: null,
disabled: false,
@ -393,9 +393,9 @@ export const selectComponents = [
multiple: false,
regList: [],
changeTag: true,
document: process.env.VUE_APP_BASE_API+"/common/upload",
document: "/common/upload",
headers:{
Authorization:'Bearer ' + getToken()
Authorization:""
},
}
]

@ -33,10 +33,10 @@
<div class="dialog-footer">
<el-form size="small">
<el-form-item class="dialog-from-item">
<el-button @click="footbtn('预览')"></el-button>
<el-button @click="footbtn('预览')" :disabled="isDisabled">预览</el-button>
<el-button type="primary" @click="footbtn('保存')"></el-button>
<el-button type="primary" @click="footbtn('导出')"></el-button>
<el-button type="primary" @click="footbtn('导出')" :loading="exportLoading">导出</el-button>
</el-form-item>
</el-form>
</div>
@ -77,12 +77,11 @@
append-to-body
>
<div class="info-content">
<div class="info-title">{{ infoFrom.title }}</div>
<div class="info-title">{{ addFrom.title }}</div>
<div class="info-content-top">
<div>发布人{{ infoFrom.createBy }}</div>
<div>发布时间{{ infoFrom.enterTime }}</div>
<div>副标题{{ addFrom.subheading }}</div>
</div>
<div v-html="infoFrom.content" class="info-content-content"></div>
<div v-html="addFrom.content" class="info-content-content"></div>
</div>
<div slot="footer" class="dialog-footer">
<el-form size="small">
@ -97,24 +96,24 @@
<script>
import myEditor from "@/views/components/myEditor/index.vue"
import { saveAs } from 'file-saver'
import { getToken } from '@/utils/auth'
import { blobValidate } from "@/utils/ruoyi";
import errorCode from '@/utils/errorCode'
import { templateMetrics, templateMetricsAdd } from "@/api/jin_ji_hu/ServiceDevelopment/index"
import axios from 'axios'
export default {
name: '',
components: { myEditor },
data() {
return {
VUE_APP_BASE_API:process.env.VUE_APP_BASE_API,
nianfenvalue3: "",
addFrom: {
title: "",
subheading: "",
content: "",
},
infoFrom :{
title: "",
content: "",
createBy: "",
enterTime: "",
},
rules: {
title: [
{ required: true, message: '请输入报告模板标题', trigger: 'blur' }
@ -136,6 +135,24 @@ export default {
subheading: "2023年4月",
content: "<p>一、总体实力显著增强</p><p>产业规模高速增长,综合贡献明显提升。</p><p>近年来,园区服务业保持持续增长态势,截至目前,园区服务业规上企业总计 677 家。2021年,园区实现服务业增加值 1674.4亿元占GDP 比重达 50.3%。2022年全年实现服务业增加值1753.18亿元,占 GDP 比重49.9%。2023年1-3月实现服务业增加值 405.95亿元同比增加4.2%。7大服务业核算行业(①多式联运和运输代理业、②装卸报运和仓储业、③互联网和相关服务、软件信息服务业、④租赁和商务服务业、(5居民服务、修理和其他服务业、⑥文化、体育和娱乐业、⑦科学研究和技术服务业)2022年全年营股1311.71亿元增速达22%:2023年1-3月实现营收 348.34亿元,同比增速 35%。根据苏州市新兴服务业行业分类(含金融服务、信息服务、物流服务、科技服务、商务中介服务、设计服务、人力资源服务、检验栓测认证、低碳绿色服务、现代商贸、文化消费、旅游康养等 12个类别)2022年国区新兴服务业营收达 1488.57 亿元,较上年增长 24%。</p><p>二、产业结构持续优化</p><p>产业结构还步优化生产性服务占主导。经过多年发展园区服务业产业结构逐渐多样化生产性服务业与生活性服务业基本形成7:3的格局。2022年生产性服务业增加值达到1199.5亿元占服务业增加值比重达68.筑。截至目前,园区生产性服务业规上企业总计 655家(含部分工业企业)。自 2019年苏州市开展全市生产恒服务业综合译价以来园区已连续两年考评优秀。37家国区企业入选苏州市生产性服务业领军企业占全市51%位全市第一并成为苏州首个实现生产性服务业9大重点领域(信息技术服务、研发设计、金融服务、检验检测认证、知识产权服务、节能环保服务、人力资源服务、现代供应蛙管理、商务服务)全度盖的区域。推动先进制造业和现代服务业深度融合发展2022年初园区获评江苏省两业融合深度融合试点地区。</p><p>城市活力不断提升,生活性服务显潜能。完成环金鸡湖商圈城市活力提升规划并正式发布,引导环金鸡湖商圈核心商业体差异定位、错位发展,金鸡湖景区获评第一批省级现代服务业高质量发展集聚示范区。积极引入北京及上海周边外溢资源,推动园区载体与国内优质品牌对接,加快发展“首店经济”(首店经济是指一个区域利用特有的资源优势,吸引国内外品牌在区域首次开设门店,目前国区大力推动“中国首店”“苏州首店”落户园区)。通过开展“云购金鸡湖”等活动,持续打造金鸡湖系列 IP宣传园区特色消费场景在后疫情时代不断激发生活性服务业发展能。</p>",
infoVisible:false,
isDisabled:true,
//
exportLoading: false,
}
},
watch:{
addFrom:{
handler(newvalue){
if(newvalue.title && newvalue.subheading && newvalue.content) {
let str = this.getText(newvalue.content);
if(!this.isNull(str)) {
this.isDisabled = false;
}
} else {
this.isDisabled = true;
}
},
deep:true
}
},
created() { },
@ -146,6 +163,15 @@ export default {
this.getList();
},
methods: {
getText(str){
return str.replace(/<[^<>]+>/g, "").replace(/&nbsp;/gi, "");
},
isNull(str){
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
return re.test(str);
},
//
charu(item){
// console.log(item);
@ -155,28 +181,88 @@ export default {
//
footbtn(type) {
if (type == '预览') {
}
if (type == '保存') {
console.log(this.addFrom.content);
this.infoVisible = true;
} else if (type == '保存') {
templateMetricsAdd(this.addFrom).then(res=>{
if(res.code == 200) {
this.$refs.importFrom.resetFields();
this.$message({
type: "success",
message: "新增成功!",
});
}
})
} else if (type == '一键生成') {
this.$confirm("是否覆盖当前内容 ?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.loading = true;
setTimeout(()=>{
this.addFrom.title = this.title;
this.addFrom.subheading = this.subheading;
this.addFrom.content = this.content;
this.loading = false;
},2000)
})
.catch(() => {
});
// templateMetricsAdd().then(res=>{
// console.log(res);
// })
}
if (type == '一键生成') {
this.loading = true;
setTimeout(()=>{
this.addFrom.title = this.title;
this.addFrom.subheading = this.subheading;
this.addFrom.content = this.content;
this.loading = false;
},2000)
}
if (type == '导出') {
} else if (type == '导出') {
if(!this.isDisabled) {
this.$confirm("是否确认导出发展模板?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
/**
*
* {
...this.formInline
},
*/
.then(() => {
this.exportLoading = true;
axios({
method: 'get',
url: this.VUE_APP_BASE_API + "/jjh/templateMetrics/downloadLocal",
responseType: 'blob',
headers: { 'Authorization': 'Bearer ' + getToken() }
}).then((res) => {
console.log(res);
const isBlob = blobValidate(res.data);
if (isBlob) {
const blob = new Blob([res.data])
saveAs(blob, decodeURIComponent(res.headers['download-filename']))
} else {
this.printErrMsg(res.data);
}
})
// this.download(
// "/jjh/templateMetrics/downloadLocal",
// "" + new Date().getTime() + ".xlsx"
// );
this.exportLoading = false;
})
.catch((err) => {
console.log(err);
});
} else {
this.$message({
type: "warning",
message: "请填写内容",
});
}
}
},
async printErrMsg(data) {
const resText = await data.text();
const rspObj = JSON.parse(resText);
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
Message.error(errMsg);
},
//
getList(){
templateMetrics({year:this.nianfenvalue3}).then(res=>{
@ -195,12 +281,6 @@ export default {
},
//
infoClose(){
this.infoFrom = {
title: "",
content: "",
createBy: "",
enterTime: "",
}
this.infoVisible = false;
},
},

@ -87,6 +87,7 @@
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { selectZbCount, headquartersRevenue } from "@/api/jin_ji_hu/dataCloudMap"
import { getUserId } from "@/api/jin_ji_hu/project/index"
export default {
components:{myPagination},
dicts: ["head_quarter_type"],
@ -166,7 +167,12 @@ export default {
},
//
enterpriseInfo(row){
getUserId({getCreditCode : row.tyshxydm}).then(res=>{
this.$router.push({
name: 'enterpriselibraryInfo',
query: { userId: res.data.id, creditCode: row.tyshxydm }
})
})
},
// tab
toggleOptionsEnter(val){

@ -25,24 +25,24 @@
<el-table-column label="项目大类" prop="projectBigName" align="center"/>
<el-table-column label="数量" prop="count1" align="center" width="100">
<template slot-scope="scope">
<div class="project-trace-table-number" :class="scope.row.count1 == 0 ? 'grey-number' : ''" @click="bigNumber(scope.row)">{{ scope.row.count1 }}</div>
<div class="project-trace-table-number" :class="scope.row.count1 == '-' ? 'grey-number' : ''" @click="bigNumber(scope.row)">{{ scope.row.count1 }}</div>
</template>
</el-table-column>
<el-table-column label="项目中类" prop="projectMiddleName" align="center"/>
<el-table-column label="数量" prop="count2" align="center" width="100">
<template slot-scope="scope">
<div class="project-trace-table-number" :class="scope.row.count2 == 0 ? 'grey-number' : ''" @click="middleNumber(scope.row)">{{ scope.row.count2 }}</div>
<div class="project-trace-table-number" :class="scope.row.count2 == '-' ? 'grey-number' : ''" @click="middleNumber(scope.row)">{{ scope.row.count2 }}</div>
</template>
</el-table-column>
<el-table-column label="项目小类" prop="projectSmallName" align="center"/>
<el-table-column label="数量" prop="count3" align="center" width="100">
<template slot-scope="scope">
<div class="project-trace-table-number" :class="scope.row.count3 == 0 ? 'grey-number' : ''" @click="smallNumber(scope.row)">{{ scope.row.count3 }}</div>
<div class="project-trace-table-number" :class="scope.row.count3 == '-' ? 'grey-number' : ''" @click="smallNumber(scope.row)">{{ scope.row.count3 }}</div>
</template>
</el-table-column>
<el-table-column label="2024年新增" prop="currentYearAdd" align="center" width="100">
<template slot-scope="scope">
<div class="project-trace-table-number" :class="scope.row.currentYearAdd == 0 ? 'grey-number' : ''" @click="YrarNumber(scope.row)">{{ scope.row.currentYearAdd }}</div>
<div class="project-trace-table-number" :class="scope.row.currentYearAdd == '-' ? 'grey-number' : ''" @click="YrarNumber(scope.row)">{{ scope.row.currentYearAdd }}</div>
</template>
</el-table-column>
</el-table>

@ -58,6 +58,7 @@
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { servicesList } from "@/api/jin_ji_hu/dataCloudMap"
import { getUserId } from "@/api/jin_ji_hu/project/index"
export default {
components:{myPagination},
name: "honorDialog",
@ -138,10 +139,12 @@ export default {
},
//
enterpriseInfo(row){
// this.$router.push({
// name: 'enterpriselibraryInfo',
// query: { userId: row.id, creditCode: row.tyshxydm }
// })
getUserId({getCreditCode : row.tyshxydm}).then(res=>{
this.$router.push({
name: 'enterpriselibraryInfo',
query: { userId: res.data.id, creditCode: row.tyshxydm }
})
})
},
// table
tableRowClassName({row, rowIndex}){

@ -69,12 +69,12 @@
<span class="Table-unit">(按不变价)</span>
</template>
<template slot-scope="scope">
<div class="project-trace-table-number">{{ scope.row.growth }} <span>%</span></div>
<div class="project-trace-table-number">{{ scope.row.growth }} <span v-if="scope.row.growth != '-'">%</span></div>
</template>
</el-table-column>
<el-table-column label="增加值占GDP比重" prop="gdpProportion" align="center" width="100">
<template slot-scope="scope">
<div class="project-trace-table-number">{{ scope.row.gdpProportion }} <span>%</span></div>
<div class="project-trace-table-number">{{ scope.row.gdpProportion }} <span v-if="scope.row.gdpProportion != '-'">%</span></div>
</template>
</el-table-column>
</el-table>

@ -41,7 +41,7 @@
<span class="box-header-title">企业荣誉资质5</span>
</div>
<div class="two-tables" :style="{height : tabOneHeader + 'px'}">
<div class="table-items" v-for="item in 5">
<div class="table-items" v-for="item in 10">
<div class="two-left">xxxxx项目</div>
<div class="two-right">
<span class="right-left">项目类别</span>
@ -293,7 +293,7 @@ export default {
this.getListTwo();
this.cancalDebounce();
window.addEventListener('resize', this.cancalDebounce);
// this.entRemind();
this.entRemind();
},
beforeDestroy() {
window.removeEventListener('resize', this.cancalDebounce);
@ -368,14 +368,13 @@ export default {
const oneHeader = document.getElementById('one-table-header'); // ID
const oneTableHeight = oneTable.offsetHeight;
const oneHeaderHeight = oneHeader.offsetHeight;
this.tabOneHeader = oneTableHeight - oneHeaderHeight - 30;
this.tabOneHeader = oneTableHeight - oneHeaderHeight - 45;
const twoTable = document.getElementById('table-two'); // ID
const twoHeader = document.getElementById('table-two-title'); // ID
const twoTableHeight = twoTable.offsetHeight;
const twoHeaderHeight = twoHeader.offsetHeight;
this.tableTwoHeight = twoTableHeight - twoHeaderHeight - 50;
console.log(this.tabOneHeader);
this.tableTwoHeight = twoTableHeight - twoHeaderHeight - 45;
}
},
}

@ -111,7 +111,7 @@
</div> -->
<!-- 正式环境部署命令 unzip /var/www/html/dist.zip -o /var/www/html/bms -->
<!-- 正式环境部署命令 unzip /var/www/html/dist.zip -d /var/www/html/bms -->
<!-- process.env.VUE_APP_BASE_API 替换 location.origin + '/api' publicPath /dome/JinJiHu 更换为./ -->
</div>
</template>

@ -178,7 +178,7 @@ export default {
size: '',
templateInfo: {},
baseInfo: {},
openInterfaceInfo: {},
// openInterfaceInfo: {},
templateDataList: [],
enterpriseDirectory: null,
form: {
@ -341,7 +341,7 @@ export default {
this.templateRecordId = templateRecordId
let { data } = await getTemplateInfo({ templateId: templateId })
this.templateInfo = data
console.log(7777, this.templateInfo);
// console.log(7777, this.templateInfo);
this.$refs.ismybuild.jsonOpen(this.templateInfo.templateJson)
switch (this.templateId) {
case '2':
@ -365,9 +365,9 @@ export default {
this.baseInfo = response.data
console.log(this.baseInfo);
})
getOpenInterface({ templateRecordId: templateRecordId }).then((response) => {
this.openInterfaceInfo = response.data
})
// getOpenInterface({ templateRecordId: templateRecordId }).then((response) => {
// this.openInterfaceInfo = response.data
// })
// templateList({
// responsibilityUnit: this.templateInfo.responsibilityUnit,
// enterpriseId: this.$store.state.user.enterpriseId,

@ -145,9 +145,11 @@ export default {
jsonOpen(templateJson){
let list = []
list = JSON.parse(templateJson).fields
console.log(list);
// console.log(list);
list.forEach(item => {
if (item.tag == "el-upload") {
console.log(item);
item.action = process.env.VUE_APP_BASE_API + item.action + "";
item.headers.Authorization = 'Bearer ' + getToken()
}
})

@ -40,12 +40,12 @@ export default {
this.close()
}
if (type == "保存") {
console.log("保存");
console.log(this.$refs.ismybuild.drawingList);
// console.log("");
// console.log(this.$refs.ismybuild.drawingList);
function validatePhoneNumber(text, phoneNumber) {
const pattern = text
const regex = new RegExp(pattern.slice(1, -1)); // pattern
console.log("yanzhengyanzheneg ", regex.test(phoneNumber));
// console.log("yanzhengyanzheneg ", regex.test(phoneNumber));
return regex.test(phoneNumber);
}
let drawingList = this.$refs.ismybuild.drawingList
@ -69,12 +69,12 @@ export default {
}
}
let myJSON = JSON.parse(this.templateInfo.templateJson)
console.log(777, this.$refs.ismybuild.drawingList);
console.log(888, myJSON);
// console.log(777, this.$refs.ismybuild.drawingList);
// console.log(888, myJSON);
let isobj = myJSON.fields.findIndex(user => user.tag == "el-upload");
myJSON.fields[isobj] = this.$refs.ismybuild.drawingList[0]
console.log(myJSON);
// console.log(myJSON);
let obj = {
declarationId: this.declarationId,
templateJson: JSON.stringify(myJSON)
@ -92,16 +92,16 @@ export default {
}
},
open(type) {
console.log(type);
// console.log(type);
this.declarationId = type.id
getDeclarationRecords({ id: type.id }).then(res => {
this.templateInfo = res.data.bmsDeclarationRecords
let json = JSON.parse(this.templateInfo.templateJson)
json = JSON.parse(JSON.stringify(json))
json.fields = json.fields.filter(item => item.tag == "el-upload")
console.log(json.fields);
// console.log(json.fields);
if (json.fields.length != 0) {
console.log(json);
// console.log(json);
setTimeout(() => {
this.$refs.ismybuild.jsonOpen(JSON.stringify(json))
}, 100);
@ -124,4 +124,7 @@ export default {
width: 100%;
text-align: center;
}
:v-deep .el-upload-list__item{
transition: none !important;
}
</style>

@ -34,9 +34,9 @@
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" class="btn">查询</el-button>
</el-form-item>
</el-col>
<el-col :span="2">
<!-- <el-col :span="2">
<el-button type="primary" class="import-btn" icon="icon iconfont icon-jc-daoru" size="mini" @click="importBtn(null)"></el-button>
</el-col>
</el-col> -->
</el-form>
<el-table
@ -137,6 +137,10 @@
@pagination="getList"
/>
<!-- <el-dialog :title="processView.title" :visible.sync="processView.open" width="70%" append-to-body>
<process-viewer :key="`designer-${processView.index}`" :xml="processView.xmlData" :style="{height: '400px'}" />
</el-dialog> -->
<!-- 流程图 :xml="processView.xmlData" -->
<el-dialog :title="designerData.title" :visible.sync="designerOpen" width="90%" append-to-body custom-class="process-dialog">
<process-designer
@ -146,8 +150,9 @@
v-loading="designerData.loading"
:bpmnXml="designerData.bpmnXml"
:designerForm="designerData.form"
@save="onSaveDesigner"
/>
<!-- @save="onSaveDesigner" -->
<!-- -->
</el-dialog>
<el-dialog title="表单自定义" :visible.sync="FromOpen" width="90%" append-to-body custom-class="process-dialog">
<FromBuild :info="info" @successCode="successCode" ref="FromBuild"></FromBuild>
@ -160,6 +165,7 @@ import { listInfo, exportData } from "@/api/onlineDeclartion/declarationManageme
import { getAllList } from "@/api/system/dict/data";
import ProcessDesigner from '@/components/ProcessDesigner';
import FromBuild from "@/views/tool/build"
import { getBpmnXml, saveModel } from "@/api/workflow/model";
export default {
name: "Template",
dicts: ['bms_product_area', 'bms_declaration_type', 'bms_responsibility_unit', 'bms_level', 'jjh_project_type', "project_small_type"],
@ -185,6 +191,12 @@ export default {
current: 1,
size: 10,
},
processView: {
title: '',
open: false,
index: undefined,
xmlData:"",
},
tabHeader: undefined,
optionsTwo: [],
propsTwo:{
@ -246,12 +258,18 @@ export default {
/** 查看流程图 */
handleProcessView(row) {
this.designerData.title = "流程设计 - " + row.templateName;
this.designerData.modelId = "";
this.designerOpen = true;
this.designerData.modelId = "5c3e12f5-4fa3-11ef-92f7-00ff06f7d4e0";
// this.designerOpen = true;
// this.designerData.form = {
// processName: row.templateName,
// processKey: row.id + ''
// }
this.designerData.loading = true;
getBpmnXml("cdd06b14-4ff3-11ef-9332-00ff06f7d4e0").then(response => {
this.designerData.bpmnXml = response.data || '';
this.designerData.loading = false;
this.designerOpen = true;
})
// if (row.modelId) {
// this.designerData.loading = true;
// getBpmnXml(row.modelId).then(response => {
@ -261,24 +279,35 @@ export default {
// })
// }
},
// onSaveDesigner(bpmnXml) {
// this.bpmnXml = bpmnXml;
// let dataBody = {
// modelId: this.designerData.modelId,
// bpmnXml: this.bpmnXml
// }
// this.$confirm("", "", {
// distinguishCancelAndClose: true,
// confirmButtonText: '',
// cancelButtonText: ''
// }).then(() => {
// this.confirmSave(dataBody, true)
// }).catch(action => {
// if (action === 'cancel') {
// this.confirmSave(dataBody, false)
// }
// })
// },
onSaveDesigner(bpmnXml) {
this.bpmnXml = bpmnXml;
let dataBody = {
modelId: this.designerData.modelId,
bpmnXml: this.bpmnXml
}
this.$confirm("是否将此模型保存为新版本?", "提示", {
distinguishCancelAndClose: true,
confirmButtonText: '是',
cancelButtonText: '否'
}).then(() => {
this.confirmSave(dataBody, true)
}).catch(action => {
if (action === 'cancel') {
this.confirmSave(dataBody, false)
}
})
},
confirmSave(body, newVersion) {
this.designerData.loading = true;
saveModel(Object.assign(body, {
newVersion: newVersion
})).then(() => {
this.designerOpen = false;
this.getList();
}).finally(() => {
this.designerData.loading = false;
})
},
getDataList(){
getAllList({dictType:"project_categories"}).then(res=>{
res.data.map(item => {
@ -298,7 +327,7 @@ export default {
const elementHeight = element.offsetHeight;
const headerHeight = header.offsetHeight;
const paginationtHeight = pagination.offsetHeight;
this.tabHeader = elementHeight - headerHeight - paginationtHeight - 100;
this.tabHeader = elementHeight - headerHeight - paginationtHeight - 120;
},
/** 查询模版列表 */
getList() {
@ -376,7 +405,9 @@ export default {
type: "success",
message: "修改模板成功!",
});
this.FromOpen = false
}
this.getList();
},
}
};

@ -63,260 +63,7 @@
</template>
</el-descriptions-item>
</el-descriptions>
<!-- 项目落户奖补模版 -->
<div class="table-content" v-if="templateId == 1">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="3" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item >
<template slot="label">
申报单位成立时间
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
截止目前员工人数
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2023年营收
</template>
</el-descriptions-item>
<el-descriptions-item >
<template slot="label">
2023年税收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2024年预计营收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2024年预计税收
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 做大做强奖补模版 -->
<div class="table-content" v-if="templateId == 2">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="3" :size="size" border :label-style="LS">
<!-- <el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item> -->
<el-descriptions-item>
<template slot="label">
申报单位成立时间
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
是否获得园区其他经营奖励
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2021年营收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2021年税收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2022年营收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2022年税收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2023年营收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2023年税收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2024年预计营收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
2024年预计税收
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
园区其他经营奖励
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 载体建设奖补模版 -->
<div class="table-content" v-if="templateId == 3">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
文体企业数量占比
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
文体企业营收占比
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
文体企业从业人员占比
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 平台建设模版 -->
<div class="table-content" v-if="templateId == 4">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
平台(项目)名称
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 品牌打造奖补模版 -->
<div class="table-content" v-if="templateId == 5">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="3" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
所获荣誉/所举办活动
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
所获等级
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 场景开放模版 -->
<div class="table-content" v-if="templateId == 6">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
所属类型
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 5G+工业互联网奖补模版 -->
<div class="table-content" v-if="templateId == 8">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
荣誉名称
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 信用管理奖补模版 -->
<!-- 制造服务业有效投入奖补模版 -->
<!-- 物流发展奖补模版 -->
<div class="table-content" v-if="(templateId == 7) || (templateId == 9) || (templateId == 10)">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 两业融合奖补模版 -->
<div class="table-content" v-if="templateId == 11">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
项目名称
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
申报类型
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<!-- 2024年度淘汰落后和退出低端低效产能装备清单 -->
<div class="table-content" v-if="templateId == 12">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item>
<template slot="label">
主要产品
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
所属行业
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
工作联系人
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
联系电话
</template>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
类别
</template>
</el-descriptions-item>
</el-descriptions>
</div>
<div class="table-content" v-else>
<div class="table-content">
<el-descriptions class="margin-top" title="【项目投资计划】" :column="2" :size="size" border :label-style="LS">
<el-descriptions-item v-for="(item,index) in templateJson.fields" :key="index" v-if="!item.action">
<template slot="label">
@ -329,155 +76,13 @@
<div class="table-content last_upload">
<p>上传材料</p>
<div>
<div class="upload_col" v-if="(templateId == 2 )|| (templateId == 4 ) || (templateId == 5 ) || (templateId == 6 ) || (templateId == 8 ) ">
<!-- 平台建设模版 -->
<div v-if="templateId == 2" class="upload_title">3</div>
<div v-if="templateId == 4" class="upload_title"></div>
<div v-if="(templateId == 5) || (templateId == 6) || (templateId == 8) " class="upload_title"></div>
<!-- 平台建设奖补模版 -->
<div v-if="templateId == 4" class="form_item"></div>
<!-- 品牌打造奖补模版 -->
<div v-if="templateId == 5" class="form_item"></div>
<!-- 场景开放模版 -->
<div v-if="templateId == 6" class="form_item"></div>
</div>
<!-- 项目落户奖补模版 -->
<div v-if="templateId == 1 " class="upload_col">
<div class="upload_title">招商协议</div>
<div class="form_item">如不宜公开则上传封面及盖章页</div>
</div>
<div v-if="templateId == 1 " class="upload_col">
<div class="upload_title">验资报告</div>
</div>
<div v-if="templateId == 1 " class="upload_col">
<div class="upload_title">营业执照</div>
</div>
<div v-if="templateId == 1 " class="upload_col">
<div class="upload_title">其他证明材料</div>
</div>
<!-- 载体建设奖补模版 -->
<div v-if="templateId == 3 " class="upload_col">
<div class="upload_title">相关佐证材料</div>
</div>
<div v-if="templateId == 3 " class="upload_col">
<div class="upload_title">项目工商登记许可</div>
</div>
<div v-if="templateId == 3 " class="upload_col">
<div class="upload_title">消防验收报告</div>
</div>
<!-- 信用管理奖补模版 -->
<div v-if="templateId == 7 " class="upload_col">
<div class="upload_title">项目方案</div>
<div class="form_item">包括项目基本情况项目投资情况以及实施进展项目目标及取得的主要成效</div>
</div>
<div v-if="templateId == 7 " class="upload_col">
<div class="upload_title">资金使用说明</div>
<div class="form_item">项目未完成的需提供内容主要包括项目计划投资额投资明细目前已完成投资情况和后续投入计划等</div>
</div>
<div v-if="templateId == 7 " class="upload_col">
<div class="upload_title">项目专项审计报告</div>
<div class="form_item">项目已完成的需提供</div>
</div>
<!-- 制造服务业有效投入奖补模版 -->
<div v-if="templateId == 9 " class="upload_col">
<div class="upload_title">企业投资项目备案通知书或核准批复文件</div>
</div>
<div v-if="templateId == 9 " class="upload_col">
<div class="upload_title">购置设备发票清单及发票扫描件</div>
</div>
<div v-if="templateId == 9 " class="upload_col">
<div class="upload_title">会计师事务所出具的企业申报项目购置设备情况的专项审计报告</div>
</div>
<div v-if="templateId == 9 " class="upload_col">
<div class="upload_title">会计师事务所出具的企业财务报表审计报告</div>
</div>
<!-- 物流发展奖补模版 -->
<div v-if="templateId == 10 " class="upload_col">
<div class="upload_title">荣誉证明文件</div>
</div>
<div v-if="templateId == 10 " class="upload_col">
<div class="upload_title">平台名称</div>
</div>
<div v-if="templateId == 10 " class="upload_col">
<div class="upload_title">企业投资项目备案通知书或核准批复文件</div>
</div>
<div v-if="templateId == 10 " class="upload_col">
<div class="upload_title">会计师事务所出具的企业财务报表审计报告</div>
</div>
<!-- 两业融合奖补模版 -->
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">证明文件</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">营业执照</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">完税证明</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">审计报告</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">股权架构图</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">项目申报报告</div>
<div class="form_item">含企业基本情况和项目基本情况</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">独立核算相关证明</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">验资报告</div>
</div>
<div v-if="templateId == 11 " class="upload_col">
<div class="upload_title">其他证明材料</div>
</div>
<!-- 2024年度淘汰落后和退出低端低效产能装备清单 -->
<div v-if="templateId == 12 " class="upload_col">
<div class="upload_title">拟淘汰或退出生产工艺装备情况</div>
<div class="form_item">落后生产工艺装备特指产业结构调整指导目录中明列的淘汰类落后生产工艺装备低端低效生产工艺装备主要指经过较长时间运行在能耗环保安全技术指标等方面已弱化企业拟主动提前退出的设备它不属强制淘汰范畴</div>
</div>
<div v-if="templateId == 12 " class="upload_col">
<div class="upload_title">其他相关情况说明</div>
</div>
<div v-for="(item,index) in templateJson.fields" :key="index" v-if="item.action" class="upload_col">
<div class="upload_title">{{ item.label }}</div>
</div>
</div>
</div>
<!-- <div class="operate_btn">
<el-button @click="goBack"></el-button>
<el-button @click="print" class="btn">导出模版详情</el-button>
</div> -->
</el-form>
</div>
<!-- <div class="right_content">
<div class="left_title">
<el-steps :active="active" finish-status="process" align-center>
<el-step title="初审中"></el-step>
<el-step title="复审中"></el-step>
<el-step title="专家评审中"></el-step>
<el-step title="市级评定中"></el-step>
<el-step title="上级评定中"></el-step>
<el-step title="评定通过"></el-step>
</el-steps>
</div>
<div class="left_main">
<el-tabs type="border-card">
<el-tab-pane label="审批流程">
<div class="empty">
<div class="top">
同步获取表单流程
</div>
<div class="bottom">
暂无审批流程
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div> -->
</div>
<div class="operate_btn">
<el-button @click="goBack"></el-button>
@ -519,157 +124,51 @@ export default {
this.templateJson = res.data.templateJson ? JSON.parse(res.data.templateJson) : {};
// console.log(this.templateJson);
})
switch (this.templateId){
case 1:
this.templateName = '项目落户奖补模版'
break;
case 2:
this.templateName = '做大做强奖补模版'
break;
case 3:
this.templateName = '载体建设奖补模版'
break;
case 4:
this.templateName = '平台建设模版'
break;
case 5:
this.templateName = '品牌打造奖补模版'
break;
case 6:
this.templateName = '场景开放模版'
break;
case 7:
this.templateName = '信用管理奖补模版'
break;
case 8:
this.templateName = '5G+工业互联网奖补模版'
break;
case 9:
this.templateName = '制造服务业有效投入奖补模版'
break;
case 10:
this.templateName = '物流发展奖补模版'
break;
case 11:
this.templateName = '两业融合奖补模版'
break;
}
},
methods: {
goBack() {
this.$router.go(-1)
},
printOutpdf() {
let shareContent = document.body,
width = shareContent.clientWidth, //
height = shareContent.clientHeight, //
canvas = document.createElement("canvas"),
scale = 2; //
canvas.width = width * scale; //canvas *
canvas.height = height * scale; //canvas *
canvas.style.width = shareContent.clientWidth * scale + "px";
canvas.style.height = shareContent.clientHeight * scale + "px";
canvas.getContext("2d").scale(scale, scale); //context,scale
let opts = {
scale: scale, // scale
canvas: canvas, // canvas
logging: false, //便html2canvas
width: width, //dom
height: height,
useCORS: true, //
};
let name = ''
switch (this.templateId){
case '1':
name = '项目落户奖补模版'
break;
case '2':
name = '做大做强奖补模版'
break;
case '3':
name = '载体建设奖补模版'
break;
case '4':
name = '平台建设模版'
break;
case '5':
name = '品牌打造奖补模版'
break;
case '6':
name = '场景开放模版'
break;
case '7':
name = '信用管理奖补模版'
break;
case '8':
name = '5G+工业互联网奖补模版'
break;
case '9':
name = '制造服务业有效投入奖补模版'
break;
case '10':
name = '物流发展奖补模版'
break;
case '11':
name = '两业融合奖补模版'
break;
}
//
html2canvas(shareContent).then(canvas => {
var contentWidth = canvas.width;
var contentHeight = canvas.height;
//pdfhtmlcanvas;
var pageHeight = (contentWidth / 592.28) * 841.89;
//pdfhtml
var leftHeight = contentHeight;
//
var position = 0;
//a4[595.28,841.89]htmlcanvaspdf
var imgWidth = 595.28;
var imgHeight = (592.28 / contentWidth) * contentHeight;
var pageData = canvas.toDataURL("image/jpeg", 1.0);
var PDF = new JsPDF("", "pt", "a4");
if (leftHeight < pageHeight) {
PDF.addImage(pageData, "JPEG", 0, 0, imgWidth, imgHeight);
} else {
while (leftHeight > 0) {
PDF.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight);
leftHeight -= pageHeight;
position -= 841.89;
if (leftHeight > 0) {
PDF.addPage();
}
}
}
PDF.save(name + ".pdf"); //
});
},
print() {
let name = this.templateName
console.log('this.templateName: ', this.templateName);
console.log('name: ', name);
html2canvas(this.$refs.pdf).then(function(canvas) {
let contentWidth = canvas.width;
let contentHeight = canvas.height;
//a4[595.28,841.89]htmlcanvaspdf
let imgWidth = 595.28;
let imgHeight = 595.28/contentWidth * contentHeight;
// l p
// "pt""mm", "cm", "m", "in" or "px"
let pdf = new JsPDF("p", "pt");
pdf.addImage(
canvas.toDataURL("image/jpeg", 1.0),
"JPEG",
0,
0,
imgWidth,
imgHeight
);
pdf.save(name + ".pdf");
})
let name = this.info.templateName
let modalDiv = this.$refs.pdf
let newDiv = modalDiv.cloneNode(true)
newDiv.classList.remove('detail_content');
newDiv.id = 'reportId'
let newTwoDiv = document.createElement('div');
newTwoDiv.id = 'detail_content_two'
document.body.appendChild(newTwoDiv)
newTwoDiv.appendChild(newDiv)
let obj = document.getElementById('reportId')
setTimeout(() => {
html2canvas(obj).then(function (canvas) {
let contentWidth = canvas.width
let contentHeight = canvas.height
let pageHeight = contentWidth / 592.28 * 841.89
let leftHeight = contentHeight
let position = 0
let imgWidth = 595.28
let imgHeight = 592.28 / contentWidth * contentHeight
let pageData = canvas.toDataURL('image/jpeg', 1.0)
let PDF = new JsPDF('p', 'pt', 'a4') // [592.28 * 841.89]
console.log(pageData);
if (leftHeight < pageHeight) {
PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
} else {
// 5
while (leftHeight > 5) {
PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
leftHeight -= pageHeight
position -= 841.89
if (leftHeight > 5) {
PDF.addPage()
}
}
}
PDF.save(name + '.pdf')
newTwoDiv.remove()
})
}, 200)
}
},
}

@ -78,8 +78,8 @@
<div class="center-board">
<div class="action-bar">
<el-button icon="el-icon-view" type="text" @click="showJson">
上传json
<el-button icon="el-icon-switch-button" type="text" @click="showJson">
确认创建
</el-button>
<el-button icon="el-icon-download" type="text" @click="download">
导出vue文件
@ -286,6 +286,8 @@ export default {
})
resolve(nodes)
})
} else {
resolve(node)
}
}
},
@ -353,11 +355,19 @@ export default {
if(obj.templateJson) {
let lists = JSON.parse(obj.templateJson)
this.drawingList = lists.fields
this.dialogForm = obj;
this.dialogForm.templateName = obj.templateName
this.dialogForm.reportTime = [obj.useStart,obj.useEnd]
this.dialogForm.level = obj.level + ''
this.dialogForm.responsibilityUnit = obj.responsibilityUnit + ''
let arr = [];
arr.push(obj.projectBigType + '')
arr.push(obj.projectMiddleType + '')
arr.push(obj.projectSmallType + '')
this.echoCascader(arr)
this.dialogForm.projectClassify = arr
}
}
// else {
// this.createTemplate = true;
// }
},
deep:true,
immediate: true
@ -389,6 +399,47 @@ export default {
this.getDataList();
},
methods: {
/** 回显Cascader 级联选择器数据 */
echoCascader(arr){
getAllList({dictType:"project_categories"}).then(res=>{
let objTwo = {};
let objThree = {};
let arrTree = []
res.data.map(item => {
let obj = {};
obj.value = item.dictValue;
obj.label = item.dictLabel;
obj.dict = item.remark;
if(arr[0] == item.dictValue) {
obj.children = [];
getAllList({dictType: item.remark}).then(resTwo=>{
resTwo.data.map((itemTwo)=>{
if(arr[1] == itemTwo.dictValue) {
objTwo.value = itemTwo.dictValue;
objTwo.label = itemTwo.dictLabel;
objTwo.dict = itemTwo.remark;
objTwo.children = [];
obj.children.push(objTwo)
getAllList({dictType: itemTwo.remark}).then(resThree => {
resThree.data?.map((itemThree)=>{
if(arr[2] == itemThree.dictValue) {
objThree.value = itemThree.dictValue;
objThree.label = itemThree.dictLabel;
objThree.dict = itemThree.remark;
objThree.leaf = 'leaf';
objTwo.children.push(objThree)
}
})
})
}
})
})
}
arrTree.push(obj)
this.options = arrTree
})
})
},
open(){
this.createTemplate = true;
},
@ -420,7 +471,7 @@ export default {
//
cancel() {
this.createTemplate = false;
this.reset();
// this.reset();
},
//
reset() {
@ -547,31 +598,31 @@ export default {
this.AssembleFormData()
// 使使
const { level, responsibilityUnit, useStart, useEnd, templateName } = this.dialogForm;
if(level && responsibilityUnit && useStart && useEnd && templateName) {
templateInfo({level, responsibilityUnit, templateName, useStart, useEnd, projectBigType:this.projectBigType, projectMiddleType:this.projectMiddleType, projectSmallType:this.projectSmallType,templateJson: JSON.stringify(this.formData)}).then(res=>{
if(this.dialogForm.id) {
templateInfoChange({...this.dialogForm, templateJson: JSON.stringify(this.formData)}).then(res=>{
if(res.code == 200) {
// this.$router.push({
// name: 'Template',
// params: {code:200},
// params: {code:800},
// })
this.$emit("successCode",200)
this.$emit("successCode",800)
this.reset()
this.drawingList = []
}
})
} else if(this.$route.query.info){
templateInfoChange({...this.$route.params.info, templateJson: JSON.stringify(this.formData)}).then(res=>{
} else if(level && responsibilityUnit && useStart && useEnd && templateName) {
templateInfo({level, responsibilityUnit, templateName, useStart, useEnd, projectBigType:this.projectBigType, projectMiddleType:this.projectMiddleType, projectSmallType:this.projectSmallType,templateJson: JSON.stringify(this.formData)}).then(res=>{
if(res.code == 200) {
// this.$router.push({
// name: 'Template',
// params: {code:800},
// params: {code:200},
// })
this.$emit("successCode",800)
this.$emit("successCode",200)
this.reset()
this.drawingList = []
}
})
} else {
this.createTemplate = true;
}

@ -8,11 +8,11 @@ export default {
data() {
let colors = ['#EE462A','#FF8929', '#FFBB00', '#5CBC69', '#00AEFF']
let datas = [
{ value: 800, proportion: 16, name: '制造业服务化奖励', label:{color:"#EE462A"}},
{ value: 800, proportion: 16, name: '鼓励社会信用体系建设', label:{color:"#FF8929"}},
{ value: 1800, proportion: 36, name: '产业提升和品牌建设奖励', label:{color:"#FFBB00"}},
{ value: 800, proportion: 16, name: '经营奖励', label:{color:"#5CBC69"}},
{ value: 800, proportion: 16, name: '一事一议', label:{color:"#00AEFF"}},
{ value: 300, proportion: 16, name: '制造业服务化奖励', label:{color:"#EE462A"}},
{ value: 500, proportion: 16, name: '鼓励社会信用体系建设', label:{color:"#FF8929"}},
{ value: 400, proportion: 36, name: '产业提升和品牌建设奖励', label:{color:"#FFBB00"}},
{ value: 500, proportion: 16, name: '经营奖励', label:{color:"#5CBC69"}},
{ value: 200, proportion: 16, name: '一事一议', label:{color:"#00AEFF"}},
];
//
let itemStyle = {

@ -0,0 +1,160 @@
<template>
<el-dialog
title="全部待办"
:visible.sync="infoVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="infoClose"
custom-class="serviceIndustry-dialog"
append-to-body
>
<div class="serviceIndustry-box">
<el-form :inline="true" :model="formInline" size="small" class="serviceIndustry-form" ref="queryFrom">
<el-col :span="20">
<el-form-item label="待办任务标题:">
<el-input v-model.trim="formInline.enterpriseDirectory" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-button size="mini" @click="resetQuery('queryFrom')"></el-button>
<el-button size="mini" type="primary" @click="handleQuery('queryFrom')"></el-button>
</el-form-item>
</el-col>
</el-form>
<section>
<el-table
v-loading="loading"
class="dataMap-work-table"
:data="tableData"
border
:row-class-name="tableRowClassName"
:header-cell-style="{background:'#D1D9E6'}"
height="550px"
> <!-- :max-height="tabHeader" -->
<el-table-column label="序号" type="index" align="center" width="50"/>
<el-table-column label="待办任务标题" prop="enterpriseDirectory" align="center"/>
<el-table-column label="审核状态" prop="enterpriseDirectory" align="center">
<template slot-scope="scope">
<div class="project-trace-table-type">初审中</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200">
<template slot-scope="scope">
<div class="workDialog-btns">
<div class="project-trace-table-number" @click="enterpriseInfo(scope.row)"></div>
<div class="project-trace-table-number" @click="enterpriseInfo(scope.row)"></div>
</div>
</template>
</el-table-column>
</el-table>
<my-pagination
:total="total"
:page="pagination.pageNum"
:limit="pagination.pageSize"
@pagination="getPagination"
:current-page.sync="pagination.pageNum"
></my-pagination>
</section>
</div>
</el-dialog>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { approvalList } from "@/api/onlineDeclartion/pendingReview"
export default {
components:{myPagination},
name: "daibanrenwu",
data() {
return {
infoVisible: false,
loading: false,
tableData:[],
formInline:{
alertContent:"",
tyshxydm:"",
servicesType: null,
},
pagination: {
pageNum:1,
pageSize:10,
},
total:40,
servicesType:null,
}
},
methods:{
open(title){
this.infoVisible = true;
this.servicesType = title;
this.formInline.servicesType = title;
this.pagination = {
pageNum: 1,
pageSize: 10
}
this.pagination = { ...this.pagination,...this.formInline };
this.getList();
},
infoClose(){
this.infoVisible = false;
},
getList(){
this.loading = true;
approvalList(this.pagination).then(res=>{
this.tableData = res.rows
console.log(this.tableData);
this.total = res.rows.length;
this.loading = false;
})
},
//
getPagination(pages) {
this.pagination.pageNum = pages.page;
this.pagination.pageSize = pages.limit;
this.getList();
},
//
resetQuery(){
this.pagination = {
pageNum: 1,
pageSize: 10
}
this.formInline = {
alertContent:"",
tyshxydm:"",
servicesType: this.servicesType,
},
this.getList();
},
//
handleQuery(){
this.pagination = {
pageNum: 1,
pageSize: 10
}
this.pagination = { ...this.pagination,...this.formInline };
this.getList();
},
//
enterpriseInfo(row){
if(row.isRead == 1) {
changeIsRead({id:row.id}).then(res=>{
this.getList();
})
}
},
// table
tableRowClassName({row, rowIndex}){
if (rowIndex % 2 !== 0) {
return 'evenNumber-row';
}
return '';
},
},
}
</script>
<style lang="scss" scoped>
::v-deep .serviceIndustry-dialog {
margin-top: 10vh !important;
}
</style>

@ -21,4 +21,8 @@ export { default as TableSix } from './promoteTable'
// 重点及特色项目
export { default as TableSeven } from './featureProject'
// 产业品牌打造宣传
export { default as TableEight } from './brandPublicity'
export { default as TableEight } from './brandPublicity'
// 智能提醒
export { default as zhinengtixing } from './zhinengtixing'
// 待办
export { default as daibanrenwu } from './daibanrenwu'

@ -7,8 +7,8 @@ export default {
data() {
let colors = ['#FFA329','#00AEFF']
let datas = [
{ value: 40, name: '外资实缴资本', label:{color:"#FFA329"}},
{ value: 24, name: '内资实缴资本', label:{color:"#00AEFF"}},
{ value: 500, name: '外资实缴资本', label:{color:"#FFA329"}},
{ value: 1000, name: '内资实缴资本', label:{color:"#00AEFF"}},
];
//
let itemStyle = {

@ -7,9 +7,9 @@ export default {
data() {
let colors = ['#FFA329','#00AEFF','#5CBC69']
let datas = [
{ value: 40, name: '5G互联网领域', label:{color:"#FFA329"}},
{ value: 24, name: '制造业领域', label:{color:"#00AEFF"}},
{ value: 32, name: '现代物流领域', label:{color:"#5CBC69"}},
{ value: 500, name: '5G互联网领域', label:{color:"#FFA329"}},
{ value: 400, name: '制造业领域', label:{color:"#00AEFF"}},
{ value: 300, name: '现代物流领域', label:{color:"#5CBC69"}},
];
//
let itemStyle = {

@ -0,0 +1,162 @@
<template>
<el-dialog
title="全部提醒"
:visible.sync="infoVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="infoClose"
custom-class="serviceIndustry-dialog"
append-to-body
>
<div class="serviceIndustry-box">
<el-form :inline="true" :model="formInline" size="small" class="serviceIndustry-form" ref="queryFrom">
<el-col :span="20">
<el-form-item label="提醒内容:">
<el-input v-model.trim="formInline.alertContent" placeholder="请输入内容"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-button size="mini" @click="resetQuery('queryFrom')"></el-button>
<el-button size="mini" type="primary" @click="handleQuery('queryFrom')"></el-button>
</el-form-item>
</el-col>
</el-form>
<section>
<el-table
v-loading="loading"
class="dataMap-work-table"
:data="tableData"
border
:row-class-name="tableRowClassName"
:header-cell-style="{background:'#D1D9E6'}"
height="550px"
> <!-- :max-height="tabHeader" -->
<el-table-column label="序号" type="index" align="center" width="50"/>
<el-table-column label="提醒内容" prop="alertContent" align="center"/>
<el-table-column label="提醒时间" prop="alertTime" align="center" />
<el-table-column label="提醒状态" prop="isRead" align="center" width="150">
<template slot-scope="scope">
<div class="project-trace-table-type" :class="scope.row.isRead == 1 ? 'red' : 'green'">{{ scope.row.isRead == 1 ? '未读' : '已读' }}</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150">
<template slot-scope="scope">
<div class="project-trace-table-number" @click="enterpriseInfo(scope.row)"></div>
</template>
</el-table-column>
</el-table>
<my-pagination
:total="total"
:page="pagination.current"
:limit="pagination.size"
@pagination="getPagination"
:current-page.sync="pagination.current"
></my-pagination>
</section>
</div>
</el-dialog>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { chiefAll, changeIsRead } from "@/api/jin_ji_hu/intelligentReminder"
export default {
components:{myPagination},
name: "zhinengtixing",
data() {
return {
infoVisible: false,
loading: false,
tableData:[],
formInline:{
alertContent:"",
tyshxydm:"",
servicesType: null,
},
pagination: {
current:1,
size:10,
},
total:40,
servicesType:null,
}
},
methods:{
open(title){
this.infoVisible = true;
this.servicesType = title;
this.formInline.servicesType = title;
this.pagination = {
current: 1,
size: 10
}
this.pagination = { ...this.pagination,...this.formInline };
this.getList();
},
infoClose(){
this.infoVisible = false;
},
getList(){
this.loading = true;
chiefAll().then(res=>{
this.loading = false;
this.total = res.data.length;
this.tableData = res.data
})
// servicesList(this.pagination).then(res=>{
// this.loading = false;
// this.total = res.data.total;
// this.tableData = res.data.records
// })
},
//
getPagination(pages) {
this.pagination.current = pages.page;
this.pagination.size = pages.limit;
this.getList();
},
//
resetQuery(){
this.pagination = {
current: 1,
size: 10
}
this.formInline = {
alertContent:"",
tyshxydm:"",
servicesType: this.servicesType,
},
this.getList();
},
//
handleQuery(){
this.pagination = {
current: 1,
size: 10
}
this.pagination = { ...this.pagination,...this.formInline };
this.getList();
},
//
enterpriseInfo(row){
if(row.isRead == 1) {
changeIsRead({id:row.id}).then(res=>{
this.getList();
})
}
},
// table
tableRowClassName({row, rowIndex}){
if (rowIndex % 2 !== 0) {
return 'evenNumber-row';
}
return '';
},
},
}
</script>
<style lang="scss" scoped>
::v-deep .serviceIndustry-dialog {
margin-top: 10vh !important;
}
</style>

@ -36,7 +36,7 @@
<span class="dataCloudMap-birght"></span>
<span class="dataCloudMap-title">服务业发展总览</span>
</div>
<span class="dataCloudMap-data">统计数据截至2024-01</span>
<span class="dataCloudMap-data">统计数据截至{{ time }}</span>
</div>
<div class="rightBigNav">
<div class="right-nav">
@ -65,9 +65,9 @@
<span class="dataCloudMap-birght"></span>
<div class="left-header-title">智能提醒</div>
</div>
<el-button @click="MoreRecords('all')" type="text" v-if="remindList.length > 0">>> 更多记录</el-button>
<el-button @click="zhinengtixingBtn" type="text" v-if="remindList.length > 0">>> 更多记录</el-button>
</div>
<div class="left-main">
<div class="left-main" v-if="remindList.length > 0">
<el-card shadow="never" v-for="(item,index) in remindList" :key="index" :class="item.isRead == 1 ? 'el-card-border' : ''">
<div class="warn-main">
<div class="warn-main-left" v-if="item.alertManner == 2">
@ -112,6 +112,9 @@
</div>
</el-card>
</div>
<div class="right-main" v-else>
<el-divider content-position="center">暂无</el-divider>
</div>
</div>
</el-col>
<el-col :span="24" style="height: 34%;">
@ -126,7 +129,7 @@
</div>
<div class="right-main" v-if="backlogArray.length > 0" v-loading="loading">
<div class="main-items" v-for="(item,index) in backlogArray" :key="index" :class="index % 2 == 0 ? '':'main-item'">
<div>{{ item.matter }} </div>
<div>{{ item.enterpriseDirectory }} </div>
<div>{{ (item.status == 1 ? "待初审" : item.status == 2 ? "待复审" : item.status == 3 ? "待终审" : "") }}</div>
<!-- <div>审批知识产权材料</div> -->
<div @click="MoreRecords('id',item.status)" class="last_child_item">去审批</div>
@ -244,7 +247,13 @@
<echartDataFive></echartDataFive>
</div>
<div class="headline-two-header">
<span>02.</span> 行业纵深情况
<div class="work-industry-condition">
<div class="industry-condition">
<span>02.</span> 行业纵深情况
</div>
<span class="industry-condition-statistics">统计数据截至{{ time }}</span>
</div>
<div class="rightBtn" @click="industryBtn">>></div>
</div>
<div class="headline-two-main">
<TableFive></TableFive>
@ -284,6 +293,9 @@
<div>{{ info.alertContent }}</div>
</div>
</el-dialog>
<collectDialog ref="collectDialog" />
<zhinengtixing ref="zhinengtixing" />
<daibanrenwu ref="daibanrenwu" />
</div>
<homeIndex v-else-if="userType == '01'" />
</template>
@ -293,7 +305,12 @@ import { selectAll, workSearch } from "@/api/jin_ji_hu/home"
import { chiefAll, changeIsRead } from "@/api/jin_ji_hu/intelligentReminder"
import homeIndex from "@/views/home/index.vue"
import echartData from '@/views/dataCloudMap/components/echartData.vue'
import { echartDataTwo, echartDataThree, TableOne, TableTwo, TableThree, TableFour, echartDataFour, echartDataFive, TableFive, TableSix, TableSeven, TableEight } from "./components"
import { echartDataTwo, echartDataThree,
TableOne, TableTwo, TableThree, TableFour, echartDataFour,
echartDataFive, TableFive, TableSix, TableSeven, TableEight,
zhinengtixing, daibanrenwu
} from "./components"
import collectDialog from '@/views/dataCloudMap/components/collectDialog.vue'
export default {
dicts: ["project_small_type"],
components:{
@ -310,7 +327,10 @@ export default {
TableFive,
TableSix,
TableSeven,
TableEight
TableEight,
collectDialog,
zhinengtixing,
daibanrenwu
},
data() {
return {
@ -347,19 +367,39 @@ export default {
name: "按季度",
},
],
time:"",
}
},
mounted(){
if(this.userType == '02') {
this.getList();
this.govRemind();
this.time = this.getNowFormatDate();
}
},
methods:{
//
getNowFormatDate() {
let date = new Date(),
year = date.getFullYear(), //(4)
month = date.getMonth() + 1, //(0-11,01)
strDate = date.getDate() // (1-31)
if (month < 10) month = `0${month}` // 0
if (strDate < 10) strDate = `0${strDate}` // 0
return `${year}-${month}-${strDate}`
},
//
industryBtn(){
this.$refs.collectDialog.open();
},
active(e) {
this.activeIndex = e;
this.$refs.echartData.getService(e);
},
//
zhinengtixingBtn(){
this.$refs.zhinengtixing.open();
},
//
getList(){
this.loading = true;
@ -395,10 +435,11 @@ export default {
//
MoreRecords(type,status){
if(type == 'all') {
this.$router.push({
name: 'PendingReview',
params: { approvalStatusStr: "" }
})
// this.$router.push({
// name: 'PendingReview',
// params: { approvalStatusStr: "" }
// })
this.$refs.daibanrenwu.open();
} else {
this.$router.push({
name: 'PendingReview',

@ -19,7 +19,7 @@ module.exports = {
// 默认情况下Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
// demo/JinJiHu
publicPath: process.env.NODE_ENV === "production" ? "./" : "/",
publicPath: process.env.NODE_ENV === "production" ? "/demo/JinJiHu" : "/",
// 在npm run build 或 yarn build 时 生成文件的目录名称要和baseUrl的生产环境路径一致默认dist
outputDir: "dist",
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)

Loading…
Cancel
Save