| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447 |
- <template>
- <div>
- <Navbar
- :title="processReportDto.name"
- :is-go-back="processReportDto.goback"
- />
- <div>
- <h5>{{ processReportDto.description }}</h5>
- </div>
- <div>
- <div class="form-inline">
- <div
- v-for="(item, index) in parameters"
- :key="'parameter-' + index"
- class="form-group m-form-group"
- >
- <div class="form-inline-div">
- <label
- v-if="item.displayType != 'ListBoxEnumEditor'"
- :for="'editor_' + item.id"
- >{{ item.displayName }}</label>
- <input
- v-if="item.displayType =='TextEditor'"
- :id="'editor_' + item.id"
- v-model="item.fieldValue.displayValue[0]"
- autocomplete="off"
- type="text"
- class="form-control m-input-group"
- placeholder="请输入内容"
- @change="valueChanged(item)"
- />
- <textarea
- v-if="item.displayType =='TextAreaEditor'"
- :id="'editor_' + item.id"
- v-model="item.fieldValue.displayValue[0]"
- rows="5"
- type="text"
- class="form-control m-input-group"
- placeholder="请输入内容"
- @change="valueChanged(item)"
- />
- <input
- v-if="item.displayType =='NumberEditor'"
- :id="'editor_' + item.id"
- v-model="item.fieldValue.displayValue[0]"
- autocomplete="off"
- type="number"
- class="form-control m-input-group"
- placeholder="请输入数字"
- @change="valueChanged(item)"
- />
- <Switches
- v-if="item.displayType =='CheckBoxEditor'"
- v-model="item.fieldValue.displayValue[0]"
- color="green"
- type-bold="true"
- @change="valueChanged(item)"
- />
- <DateTime
- v-if="item.displayType =='DateTimeBoxEditor'"
- :id="'editor_' + item.id"
- :date-value="item.fieldValue.displayValue[0]"
- class="form-control m-input-group"
- name="datetime"
- @on-value-change="changeValue(item, $event)"
- />
- <EnumSelectWidget
- v-if="item.displayType =='ListBoxEnumEditor'"
- :field="item"
- :field-value="item.fieldValue"
- class="m-input-group"
- @value-changed="valueChanged($event, item)"
- />
- <MultiSearchWidget
- v-if="item.displayType =='MultiSearchBoxEditor'"
- :info-window-no="item.infoWindowNo"
- :where-clause-source="{'processReportParameter': {'processReportNo': processReportDto.no, 'fieldName': item.fieldName}}"
- :field="item"
- :field-value="item.fieldValue"
- class="m-input-group"
- :display-name="item.listDisplayFieldNames"
- @value-changed="tabValueChanged($event, item)"
- />
- <SearchWidget
- v-if="item.displayType =='SearchBoxEditor'"
- :where-clause-source="{'processReportParameter': {'processReportNo': processReportDto.no, 'fieldName': item.fieldName}}"
- :info-window-no="item.infoWindowNo"
- :field="item"
- :field-value="item.fieldValue"
- :display-name="item.listDisplayFieldNames"
- class="m-input-group"
- :parent-model-data="parentModelData"
- @value-changed="tabValueChanged($event, item)"
- />
- </div>
- <!--<div v-if = "item.constraintEnum == 'Between'" class="form-inline-div">
- <label v-if="item.displayType != 'ListBoxEnumEditor'" :for="'editor_' + item.id">——</label>
- <input autocomplete="off" v-if="item.displayType =='NumberEditor'" type="number" v-model="item.value2"
- class="form-control m-input-group" :id="'editor_' + item.id" placeholder="请输入数字" @change="valueChanged(item)"/>
-
- <DateTime v-if="item.displayType =='DateTimeBoxEditor'" :dateValue="item.value2"
- class="form-control m-input-group" name="datetime"
- :id="'editor_' + item.id" @on-value-change="changeValue(item, $event)" />
- </div> -->
- </div>
- </div>
- <div class="form-group">
- <button
- v-if="processReportDto.htmlHelpUrl != null && processReportDto.htmlHelpUrl != ''"
- class="btn btn-default"
- @click="openHtmlHelp(processReportDto.htmlHelpUrl)"
- >
- <span class="glyphicon glyphicon-question-sign" />
- </button>
- <input
- autocomplete="off"
- type="button"
- class="btn btn-primary"
- style="margin-top: 15px;"
- value="确定"
- @click="runProcessDynamic()"
- />
- </div>
- <ProcessReportResultPreview
- :process-report-result="processReportResult"
- :pdf-only="processReportDto.pdfOnly"
- :excel-only="processReportDto.excelOnly"
- />
- </div>
- <Loading v-if="loading" />
- </div>
- </template>
- <script>
- import { defineAsyncComponent } from 'vue';
- var Common = require('../../common/Common.js').default;
- var Navbar = require('../../navbar/src/Navbar.vue').default;
- var DateTime = require('../../datetime/src/DateTime.vue').default;
- var Loading = require('../../loading/src/Loading.vue').default;
- var ProcessReportResultPreview = require('./ProcessReportResultPreview.vue').default;
- var SearchWidget = require('../../info/src/SearchWidget.vue').default;
- var Switches = require('../../switches/src/Switches.vue').default;
- export default {
- components: {
- DateTime,
- MultiSearchWidget : defineAsyncComponent(() =>
- import('../../info/src/MultiSearchWidget.vue'),
- ),
- Loading,
- ProcessReportResultPreview,
- SearchWidget,
- Switches,
- Navbar,
- },
- props: {
- 'processReportDto':{
- type: Object,
- default: null,
- },
- },
- emits:['valueChanged'],
- data: function () {
- return {
- 'processReportId': '',
- 'processReportDtos': {},
- 'processResultData': '',
- 'processReportResult': {},
- 'parameters': [],
- 'parentModelData': {
- 'data': {
- },
- },
- loading: false,
- };
- },
- //监控processReportDto,当dto变化时重新渲染界面
- watch: {
- 'processReportDto': function (to, from) {
- this.parameters = [];
- this.processReportResult.reportResults = undefined;
- this.initData(this.processReportDto);
- },
- 'processReportDto.processReportParameters': function () {
- this.initData(this.processReportDto);
- },
- // 路由切换的时候清空报表结果数据
- '$route': function () {
- this.processReportResult = {};
- },
- },
- mounted: function () {
- this.initData(this.processReportDto);
- },
- methods: {
- /**
- * 打开帮助页面
- */
- openHtmlHelp: function (htmlHelpUrl) {
- window.open(htmlHelpUrl);
- },
- /**
- * 初始化数据
- * @param {Object} data 流程报表数据
- * @return {void}
- */
- initData: function (data) {
- console.log('获取的参数列表:' + JSON.stringify(data));
- var _self = this;
- if (data == undefined) {
- return;
- }
- _self.parameters = [];
- if (data.processReportParameters) {
- data.processReportParameters.forEach(function (item) {
- if (item.constraintEnum == 'Between') {
- var cloneObject1 = _self.cloneParameter(item);
- _self.parameters.push(cloneObject1);
- var cloneObject = {
- 'index': 2,
- 'isMandatory': false,
- 'id': item.id,
- 'fieldName': item.fieldName + '2',
- 'name': item.name,
- 'help': item.help,
- 'displayType': item.displayType,
- 'listDisplayFieldNames': item.listDisplayFieldNames,
- 'infoWindowId': item.infoWindowId,
- 'sortNo': item.sortNo,
- 'isShow': item.isShow,
- 'constraintEnum': item.constraintEnum,
- 'enumClass': item.enumClass,
- 'fieldValue': {
- 'id': '',
- 'constraintEnum': item.constraintEnum,
- 'displayValue': [],
- 'fieldType': 'String',
- },
- 'calloutProcessNo': item.calloutProcessNo,
- 'listDisplayFieldName': item.listDisplayFieldName,
- 'displayName': '~',
- 'infoWindowNo': item.infoWindowNo,
- };
- _self.parentModelData.data[cloneObject.fieldName] = cloneObject.fieldValue;
- console.log(cloneObject);
- _self.parameters.push(cloneObject);
- } else {
- var obj = _self.cloneParameter(item);
- _self.parameters.push(obj);
- }
- });
- }
- // 排序
- _self.parameters.sort(function (a, b) {
- return a.sortNo - b.sortNo;
- });
- console.log(_self.parameters);
- //_self.processReportDto = data;
- },
- /**
- * 执行流程
- * @return {void}
- */
- runProcessDynamic: function () {
- var _self = this;
- _self.processResultData = {
- 'processReportNo': _self.processReportDto.no,
- 'modelData': {
- data: {},
- },
- };
- _self.parameters.forEach(function (item) {
- var fieldName = item.fieldName;
- _self.processResultData.modelData.data[fieldName] = item.fieldValue;
- });
- _self.processReportResult = {};
- _self.loading=true;
- $.ajax({
- url: Common.getApiURL('ProcessReportResource/runProcessDynamic'),
- type: 'post',
- dataType: 'json',
- beforeSend: function (request) {
- Common.addTokenToRequest(request);
- },
- contentType: 'application/json',
- data: JSON.stringify(_self.processResultData),
- success: function (data) {
- _self.loading=false;
- _self.processReportResult = data;
- if (_self.processReportResult.reportResults != undefined && _self.processReportResult.reportResults.length > 0) {
- _self.processReportResult.reportResults.forEach(function (item, index) {
- item.previewIndex=1;
- if (index == 0) {
- item.showPreview=true;
- } else {
- item.showPreview=false;
- }
- });
- }
- // _self.processReportDto.excelOnly = false;
- // _self.processReportDto.pdfOnly = true;
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- _self.loading=false;
- Common.processException(XMLHttpRequest, textStatus, errorThrown);
- },
- });
- },
- /**
- * 时间选择框数据发生改变
- * @param {Object} item 当前field
- * @param {String} newValue 改变后的值
- * @return {void}
- */
- changeValue: function (item, newValue) {
- item.fieldValue.displayValue[0]=newValue;
- this.valueChanged(item);
- },
- /**
- * 搜索框值发生改变
- * @param {Object} newFieldValue 改变后的值
- * @param {Object} item 当前field
- * @return {void}
- */
- tabValueChanged: function (newFieldValue, item) {
- item.fieldValue = newFieldValue;
- this.valueChanged(item);
- },
- /**
- * 复制参数
- * @param {Object}
- */
- cloneParameter: function (parameter) {
- var cloneObject = {
- 'index': 1,
- 'isMandatory': false,
- 'id': parameter.id,
- 'fieldName': parameter.fieldName,
- 'name': parameter.name,
- 'help': parameter.help,
- 'displayType': parameter.displayType,
- 'listDisplayFieldNames': parameter.listDisplayFieldNames,
- 'infoWindowId': parameter.infoWindowId,
- 'sortNo': parameter.sortNo,
- 'isShow': parameter.isShow,
- 'constraintEnum': parameter.constraintEnum,
- 'enumClass': parameter.enumClass,
- 'fieldValue': '',
- 'calloutProcessNo': parameter.calloutProcessNo,
- 'listDisplayFieldName': parameter.listDisplayFieldName,
- 'displayName': parameter.displayName,
- 'infoWindowNo': parameter.infoWindowNo,
- 'value2': '',
- };
- if (parameter.fieldValue) {
- cloneObject.fieldValue = parameter.fieldValue;
- } else {
- cloneObject.fieldValue = {
- 'id': parameter.id,
- 'constraintEnum': parameter.constraintEnum,
- 'displayValue': [],
- 'fieldType': 'String',
- };
- }
- this.parentModelData.data[cloneObject.fieldName] = cloneObject.fieldValue;
- return cloneObject;
- },
- // 值改变事件
- valueChanged: function (processReportParameter) {
- // this.fieldValue = newFieldValue;
- this.$emit('valueChanged', processReportParameter);
- this.parentModelData.data[processReportParameter.fieldName] = processReportParameter.fieldValue;
- this.parameters.forEach(function (item) {
- if (item.fieldName == processReportParameter.fieldName) {
- item = processReportParameter;
- }
- });
- },
- },
- };
- </script>
- <style scoped>
- .m-form-group label {
- font-size: 15px;
- width: 80px;
- text-align: center;
- }
- .processResult-textarea {
- width: 100%;
- height: 200px;
- }
- .form-input {
- border-radius: 4px !important;
- }
- .form-inline-div {
- display: inline;
- }
- .m-form-group {
- margin-left: 5px !important;
- margin-right: 5px !important;
- margin-bottom: 5px !important;
- }
- .m-input-group {
- border-radius: 4px !important;
- width: 200px !important;
- }
- </style>
|