123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>form</title>
- <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
- <link href="https://cdn.jsdelivr.net/npm/iview@2.14.3/dist/styles/iview.css" rel="stylesheet">
- <script src="https://cdn.jsdelivr.net/npm/iview@2.14.3/dist/iview.js"></script>
- <script src="../tool/build/form-create.min.js"></script>
- <script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
- <script type="text/javascript" src="../../assets/libs/layui/layui.js"></script>
- <script type="text/javascript" src="../../assets/js/common.js?v=312"></script>
- </head>
- <body>
- <div id="page_app">
- <div id="app3">
- </div>
- </div>
- <script>
- layui.use(['layer', 'table', 'laydate', 'util', 'upload', 'zTree', 'admin', 'uParas', 'element', 'baseCache'], function () {
- var $ = layui.jquery;
- var layer = layui.layer;
- var admin = layui.admin;
- var uParas = layui.uParas;
- var element = layui.element, laydate = layui.laydate;
- var id = getQueryVariable("id");
- var urls = uParas.baseUrl;
- /**
- * @Author: NanKeYang
- * @Description: 用户操作必带参数
- * @Data: 2020/1/8 15:17
- */
- var aId = layui.baseCache.getAId();
- var cId = layui.baseCache.getCId();
- var _m2 = false;
- var App = new Vue({
- el: '#page_app',
- data() {
- return {
- approverSelectOption: { // 自定义选项 => 审批人人员选择
- type: 'select',
- name: '审批人',
- },
- wenbenArr: [], // 文本数据
- submitDataArr: [], // 提交数据
- approverIndex: null, // 审批人下标
- isAddWenbenData: false,
- reqData: null, // 请求数据
- }
- },
- mounted() {
- var _rule = this.getFormRuleData()
- var $f_3 = formCreate.create(_rule, {
- //表单插入的父级元素
- el: '#app3',
- //显示表单重置按钮
- resetBtn: true,
- //表单提交事件
- onSubmit: function (formData) {
- App.submitData(formData);
- //按钮进入提交状态
- $f_3.btn.loading();
- // 重置按钮禁用
- $f_3.resetBtn.disabled();
- //按钮进入可点击状态
- $f_3.btn.finish();
- },
- mounted: function () {
- _m2 = false;
- }
- });
- },
- methods: {
- /**
- * @Author: NanKeYang
- * @Description: 提交数据
- * @Data: 2020/1/8 16:43
- */
- submitData(data) {
- var submitDataArr = this.submitDataArr, wenbenArr = this.wenbenArr, _this = this;
- var approverVal = data[this.approverIndex];
- console.log(submitDataArr)
- if (approverVal <= 0) {
- layer.msg('请选择审批人');
- return false;
- }
- for (var key in submitDataArr) {
- submitDataArr[key].userVal = data[key]
- submitDataArr[key].value = data[key]
- if (submitDataArr[key].tipFlagtext) {
- delete submitDataArr[key].tipFlagtext
- }
- }
- /**
- * @Author: NanKeYang
- * @Description: 处理提交失败,重复添加问题
- * @Data: 2020/1/8 18:08
- */
- if (wenbenArr.length > 0 && !this.isAddWenbenData) {
- let num = 1
- for (let i = 0; i < wenbenArr.length; i++) {
- //向数组中添加纯文本对象
- submitDataArr.splice(wenbenArr[i].idx + num, 0, {
- "type": "label",
- "title": wenbenArr[i].tips.title,
- "value": wenbenArr[i].tips.value,
- "userVal": wenbenArr[i].tips.value
- })
- //每添加一次数组长度增加1
- num++;
- }
- this.isAddWenbenData = true;
- }
- $.ajax({
- type: "post",
- url: urls + "/3rd/flow/update",
- data: {
- userFormId: _this.reqData.id,
- formId: _this.reqData.formId,
- formJson: JSON.stringify(submitDataArr),
- aId: aId,
- cId: cId,
- deptLeader: approverVal
- },
- error: function (request) {
- },
- success: function (resp) {
- if (resp.code == 1) {
- $.ajax({
- type: "post",
- url: urls + "/3rd/flow/approve",
- data: {
- aId: aId,
- cId: cId,
- userFormId: _this.reqData.id,
- taskId: _this.reqData.taskId,
- deptLeader: approverVal,
- p_B_reApply: true
- },
- success: function (resp) {
- if (resp.code == 1) {
- layer.msg('操作成功', {offset: ['50%'], time: 2000}, function () {
- parent.layer.closeAll();
- });
- } else {
- layer.msg('操作失败');
- }
- }
- });
- } else {
- layer.msg('操作失败');
- }
- }
- });
- },
- /**
- * @Author: NanKeYang
- * @Description: 获取表单规则
- * @Data: 2020/1/8 16:36
- */
- getFormRuleData() {
- var submitDataArr = [], wenbenArr = [], _this = this;
- $.ajax({
- type: "get",
- url: urls + "/3rd/flow/queryById",
- data: {
- aId: aId,
- cId: cId,
- id: id,
- },
- async: false,
- contentType: false,
- processData: true,
- error: function (request) {
- layer.alert('操作失败', {
- icon: 2,
- title: "提示"
- });
- },
- success: function (resp) {
- const {code, data, msg} = resp;
- if (code == 1) {
- _this.reqData = data;
- jsonData = JSON.parse(data.formJson);
- } else {
- layer.msg(msg);
- }
- }
- });
- // 去掉type=lebel的文本数据,并在该数据之前的元素添加文本说明
- for (let i = jsonData.length - 1; i >= 0; i--) {
- if (jsonData[i].type == 'label') {
- // debugger
- if (i != 0) {
- jsonData[i - 1].tipFlagtext = {title: jsonData[i].title, value: jsonData[i].value}
- }
- jsonData.splice(i, 1)
- }
- }
- submitDataArr = submitDataArr.concat(jsonData)
- for (var key in jsonData) {
- if (jsonData[key].tipFlagtext) {
- wenbenArr.push({idx: parseInt(key), tips: jsonData[key].tipFlagtext})
- }
- if (jsonData[key].type == 'text' || jsonData[key].type == 'textarea' || jsonData[key].type == 'password' || jsonData[key].type == 'date') {
- jsonData[key] = {
- type: "input",
- title: jsonData[key].title,
- field: key,
- value: jsonData[key].value,
- props: {
- "type": jsonData[key].type,
- "placeholder": "请输入内容"
- }
- }
- } else if (jsonData[key].type == 'select-search' || jsonData[key].type == 'checkbox' || jsonData[key].type == 'radio') {
- let myOption = [], formType = jsonData[key].type;
- let item = jsonData[key].label.split(',');
- for (let i = 0; i < item.length; i++) {
- myOption.push({"value": item[i], "label": item[i]})
- }
- if (jsonData[key].type == 'select-search') {
- formType = 'select'
- }
- let typeValue = jsonData[key].value
- if (jsonData[key].type == 'radio') {
- typeValue = typeValue[0]
- }
- jsonData[key] = {
- type: formType,
- field: key,
- title: jsonData[key].title,
- value: typeValue,
- options: myOption
- }
- }
- }
- this.submitDataArr = submitDataArr;
- this.wenbenArr = wenbenArr;
- $.ajax({
- type: "get",
- url: urls + "/3rd/flow/getUsers",
- data: {
- aId: aId,
- cId: cId
- },
- async: false,
- contentType: false,
- processData: true,
- error: function (request) {
- layer.alert('操作失败', {
- icon: 2,
- title: "提示"
- });
- },
- success: function (resp) {
- const {code, data, msg} = resp;
- if (code == 1) {
- approverList = [];
- // 提交要格式 => ID#名称
- data.forEach(function (item, index) {
- approverList.push({
- value: item.aId + '#' + item.accountRealName,
- label: item.accountRealName
- })
- })
- } else {
- layer.msg(msg);
- }
- }
- });
- /**
- * @Author: NanKeYang
- * @Description: 添加审批人数据
- * @Data: 2020/1/8 17:48
- */
- this.approverIndex = jsonData.length;
- jsonData.push(
- {
- type: this.approverSelectOption.type,
- field: jsonData.length + '',
- title: this.approverSelectOption.name,
- value: '',
- options: approverList
- }
- )
- return jsonData;
- }
- }
- })
- // //获取url参数
- function getQueryVariable(variable) {
- var query = window.location.search.substring(1);
- var vars = query.split("&");
- for (var i = 0; i < vars.length; i++) {
- var pair = vars[i].split("=");
- if (pair[0] == variable) {
- return pair[1];
- }
- }
- return (false);
- }
- })
- //将纯文本数据隐藏
- /*$('.ivu-col').each(function (i, v) {
- if($(v).find('.ivu-form-item >label').text() == '纯文本'){
- $(v).css('display','none')
- }
- })*/
- </script>
- </body>
- </html>
|