auto-setting.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <template>
  2. <div>
  3. <el-row>
  4. <avue-form ref="form" v-model="form" :option="option" @submit="settingSave">
  5. <template slot="setting">
  6. <el-row v-if="form.num > 1">
  7. <el-steps :active="active">
  8. <el-step v-for="i in form.num" @click.native="stepClick(i)" :key="i"></el-step>
  9. </el-steps>
  10. </el-row>
  11. <el-row v-for="i in form.num" :key="i">
  12. <div v-if="i == active">
  13. <select-user :multiple="form.approveType == 2" :name="selectPersonName" :callback="selectCallback"></select-user>
  14. </div>
  15. </el-row>
  16. </template>
  17. </avue-form>
  18. </el-row>
  19. </div>
  20. </template>
  21. <script>
  22. import SelectUser from "../select-dialog/select-user";
  23. export default {
  24. name: "auto-setting",
  25. components: {SelectUser},
  26. props: {
  27. flowSetting: Object,
  28. default: {}
  29. },
  30. data(){
  31. return {
  32. active: 1,
  33. form: {
  34. num: 1,
  35. approveType: 1,
  36. settingType: 1,
  37. },
  38. selectPersonName: '',
  39. settingPersons:[
  40. {
  41. id:'',
  42. name:'',
  43. ehr:'',
  44. },
  45. ],
  46. option: {
  47. column: [
  48. {
  49. label: "串並行",
  50. prop: "approveType",
  51. span: 6,
  52. type: "radio",
  53. dicData: [{
  54. label: '串行',
  55. value: 1
  56. }, {
  57. label: '並行',
  58. value: 2
  59. }],
  60. },
  61. {
  62. label: "設置方式",
  63. prop: "settingType",
  64. span: 6,
  65. type: "radio",
  66. display: true,
  67. dicData: [{
  68. label: '統一設置',
  69. value: 1
  70. }, {
  71. label: '逐級設置',
  72. value: 2
  73. }],
  74. },
  75. {
  76. label: "審批節點",
  77. prop: "num",
  78. type: 'number',
  79. span: 6,
  80. minRows: 1,
  81. maxRows: 6,
  82. row:true,
  83. readonly: true,
  84. value: 1
  85. },
  86. {
  87. label: "節點設置",
  88. prop: "setting",
  89. display: true,
  90. formslot: true
  91. }
  92. ]
  93. }
  94. }
  95. },
  96. created() {
  97. if (this.flowSetting.approveType > 0){
  98. this.form.approveType = this.flowSetting.approveType;
  99. this.form.settingType = this.flowSetting.settingType;
  100. this.form.num = this.flowSetting.num;
  101. this.form.setting = this.flowSetting.setting;
  102. this.settingPersons = JSON.parse(this.form.setting);
  103. if (this.form.approveType == 2){
  104. //並行,多選
  105. let nameArr = [];
  106. this.settingPersons.forEach(item => {
  107. nameArr.push(item.name)
  108. })
  109. this.selectPersonName = nameArr.join()
  110. }else{
  111. this.selectPersonName = this.settingPersons[0].name;
  112. }
  113. console.log(this.selectPersonName)
  114. }
  115. },
  116. watch: {
  117. "form.approveType": function(newValue, oldValue){
  118. this.option.column[1].display = newValue == 1
  119. this.option.column[2].display = newValue == 1
  120. this.option.column[3].display = newValue == 2 || ( newValue == 1 && this.form.settingType == 1)
  121. },
  122. "form.settingType": function(newValue, oldValue){
  123. // this.option.column[2].display = newValue == 2
  124. this.option.column[3].display = newValue == 1
  125. // this.option.column[3].display = newValue == 1 && this.form.approveType == 2
  126. },
  127. "form.num": function(newValue, oldValue){
  128. if (Math.abs(newValue-oldValue) > 1){
  129. return;
  130. }
  131. console.log(newValue + '-' + oldValue)
  132. if (newValue < oldValue){
  133. //-
  134. this.settingPersons.pop()
  135. }else{
  136. //+
  137. let item = {
  138. id:'',
  139. name:'',
  140. ehr:'',
  141. }
  142. this.settingPersons.push(item)
  143. }
  144. },
  145. },
  146. computed(){
  147. /*test: function(){
  148. return false;
  149. }*/
  150. },
  151. methods: {
  152. stepClick(step){
  153. this.active = step;
  154. let selectObj = this.settingPersons[step-1];
  155. console.log('stepClick')
  156. console.log(this.settingPersons)
  157. this.selectPersonName = selectObj.name;
  158. console.log(this.selectPersonName)
  159. },
  160. handleChange(){
  161. },
  162. selectCallback(selectList){
  163. if (this.form.approveType == 1){
  164. let row = selectList[0]
  165. let item = {}
  166. item.id = row.id;
  167. item.name = row.name;
  168. item.ehr = row.ehr;
  169. this.settingPersons[this.active-1] = item;
  170. }else{
  171. this.settingPersons = selectList;
  172. }
  173. },
  174. settingSave(row, done){
  175. row.setting = JSON.stringify(this.settingPersons);
  176. this.$emit("callback", row)
  177. done();
  178. },
  179. }
  180. }
  181. </script>
  182. <style scoped>
  183. </style>