edit.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. <template>
  2. <div>
  3. <el-button size="mini" type="text" @click="editBtn">编 辑</el-button>
  4. <el-dialog append-to-body :visible.sync="dialogFormVisible" width="600">
  5. <div slot="title" style="font-size: 15px">
  6. 编辑系统提示
  7. </div>
  8. <el-row :gutter="20">
  9. <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
  10. <el-col :span="12">
  11. <el-form-item label="提醒名称" prop="remindname">
  12. <el-input disabled v-model="form.remindname" placeholder="提醒名称"></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="12">
  16. <el-form-item label="提醒标题" prop="remindtitle">
  17. <el-input v-model="form.remindtitle" placeholder="提醒标题"></el-input>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="12">
  21. <el-form-item label="提醒方式" prop="remindmode">
  22. <el-select style="width:100%" v-model="form.remindmode" multiple>
  23. <el-option label="短信" value="短信"></el-option>
  24. <el-option label="邮件" value="邮件"></el-option>
  25. <el-option label="弹框" value="弹框"></el-option>
  26. <el-option label="微信公众号" value="微信公众号" v-if="data.cansendbywechatservice"></el-option>
  27. <el-option label="企业微信" value="企业微信" v-if="data.cansendbyworkwechat"></el-option>
  28. </el-select>
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="24">
  32. <el-form-item label="提醒内容" prop="content">
  33. <el-input type="textarea" v-model="form.content" placeholder="输入提醒内容,绑定表字段调用方式为 冒号+字段名,如 :createuserid,SQL语句的插入方式为大括号中加入SQL语句,如 {select name from sys_users where userid=:createuserid}"></el-input>
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="24">
  37. <el-form-item label="备注说明" prop="remarks">
  38. <el-input type="textarea" v-model="form.remarks" placeholder="备注说明"></el-input>
  39. </el-form-item>
  40. </el-col>
  41. <el-col :span="24">
  42. <el-form-item label="角色权限" prop="isrole">
  43. <el-checkbox v-model="form.isrole" :true-label="1" :false-label="0"></el-checkbox>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="24" v-if="form.isrole">
  47. <el-form-item label="角色选择" prop="rolename">
  48. <multipleRole ref="role" :data="form" @onResult="roleResult" idName="roleid">
  49. <div slot="input">
  50. <el-tag
  51. :key="index"
  52. v-for="(tag,index) in form.roleArr"
  53. closable
  54. :disable-transitions="false"
  55. @close="handleCloseRole(tag)"
  56. style="margin-right:10px;margin-bottom:10px">
  57. {{tag.rolename}}
  58. </el-tag>
  59. <el-input
  60. class="input-new-tag"
  61. v-if="inputVisibleRole"
  62. v-model="inputValueRole"
  63. ref="saveTagInputRole"
  64. size="small"
  65. @keyup.enter.native="handleInputConfirmRole"
  66. @blur="handleInputConfirmRole"
  67. style="width:88.81px"
  68. >
  69. </el-input>
  70. <el-button v-else class="button-new-tag" size="small" @click="showInputRole">+ 添 加</el-button>
  71. </div>
  72. </multipleRole>
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="24">
  76. <el-form-item label="人员权限" prop="isuser">
  77. <el-checkbox v-model="form.isuser" :true-label="1" :false-label="0"></el-checkbox>
  78. </el-form-item>
  79. </el-col>
  80. <el-col :span="24" v-if="form.isuser">
  81. <el-form-item label="人员选择" prop="username">
  82. <multiplePeople :data="form" ref="user" @onResult="userResult" idName="userid">
  83. <div slot="input">
  84. <el-tag
  85. :key="index"
  86. v-for="(tag,index) in form.userArr"
  87. closable
  88. :disable-transitions="false"
  89. @close="handleClose(tag)"
  90. style="margin-right:10px;margin-bottom:10px">
  91. {{tag.name}}
  92. </el-tag>
  93. <el-input
  94. class="input-new-tag"
  95. v-if="inputVisible"
  96. v-model="inputValue"
  97. ref="saveTagInput"
  98. size="small"
  99. @keyup.enter.native="handleInputConfirm"
  100. @blur="handleInputConfirm"
  101. style="width:88.81px"
  102. >
  103. </el-input>
  104. <el-button v-else class="button-new-tag" size="small" @click="showInput">+ 添 加</el-button>
  105. </div>
  106. <!-- <el-input type="text" readonly slot="input" v-model="form.username" @focus="$refs.user.drawer=true;$refs.user.normalSetId()"></el-input> -->
  107. </multiplePeople>
  108. </el-form-item>
  109. </el-col>
  110. <el-col :span="24">
  111. <el-form-item label="人员sql查询" prop="sqlstr">
  112. <el-input type="textarea" v-model="form.sqlstr" placeholder="请输入人员sql查询"></el-input>
  113. </el-form-item>
  114. </el-col>
  115. </el-form>
  116. </el-row>
  117. <div class="dialog-footer">
  118. <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
  119. <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
  120. </div>
  121. </el-dialog>
  122. </div>
  123. </template>
  124. <script>
  125. import multipleRole from '@/template/multipleRole/index'
  126. import multiplePeople from '@/template/multiplePeople/index'
  127. export default {
  128. name: "add",
  129. props:['data'],
  130. components:{multipleRole,multiplePeople},
  131. data(){
  132. return {
  133. dialogFormVisible:false,
  134. form:{
  135. sys_remind_configid:0,
  136. remindtitle:'',
  137. remindmode:[],
  138. content:'',
  139. isrole:1,
  140. roleids:[],
  141. rolename:'',
  142. roleArr:[],
  143. isuser:1,
  144. userids:[],
  145. username:'',
  146. userArr:[],
  147. issql:1,
  148. sqlstr:''
  149. },
  150. rules:{
  151. accountno:[
  152. { required: true, message: '输入账户编号', trigger: 'blur'},
  153. ],
  154. accountname:[
  155. { required: true, message: '输入账户名称', trigger: 'blur'}
  156. ]
  157. },
  158. inputVisible:false,
  159. inputValue:'',
  160. inputVisibleRole:false,
  161. inputValueRole:''
  162. }
  163. },
  164. methods:{
  165. editBtn () {
  166. this.dialogFormVisible = true
  167. this.form = Object.assign({},this.form,this.data)
  168. console.log(this.data,'数据')
  169. this.form.userArr = this.form.userids.map(item => {
  170. return {
  171. name:this.form.usermsg[item],
  172. userid:item
  173. }
  174. })
  175. this.form.roleArr = this.form.roleids.map(item => {
  176. return {
  177. rolename:this.form.rolemsg[item],
  178. roleid:item
  179. }
  180. })
  181. },
  182. onSubmit(){
  183. this.$refs['form'].validate(async (valid) => {
  184. if (!valid) return false
  185. this.form.userids = this.form.userArr.map(item => item.userid)
  186. this.form.roleids = this.form.roleArr.map(item => item.roleid)
  187. const res = await this.$api.requested({
  188. "id": "20221220153201",
  189. "version":1,
  190. "content": this.form
  191. })
  192. this.tool.showMessage(res,()=>{
  193. this.$emit('onSuccess')
  194. this.$refs['form'].resetFields();
  195. this.dialogFormVisible = false
  196. })
  197. })
  198. },
  199. handleClose(tag) {
  200. this.form.userArr.splice(this.form.userArr.indexOf(tag), 1);
  201. this.form.userids.splice(this.form.userids.indexOf(tag.userid),1)
  202. },
  203. showInput() {
  204. this.inputVisible = true;
  205. this.$nextTick(_ => {
  206. this.$refs.saveTagInput.$refs.input.focus();
  207. this.$refs.user.normalSetId()
  208. this.$refs.user.drawer = true
  209. });
  210. },
  211. handleInputConfirm() {
  212. let inputValue = this.inputValue
  213. if (inputValue) {
  214. this.form.usermsg.push(inputValue)
  215. }
  216. this.inputVisible = false
  217. this.inputValue = ''
  218. },
  219. handleCloseRole(tag) {
  220. this.form.roleArr.splice(this.form.roleArr.indexOf(tag), 1);
  221. this.form.roleids.splice(this.form.roleids.indexOf(tag.roleid),1)
  222. },
  223. showInputRole() {
  224. this.inputVisibleRole = true;
  225. this.$nextTick(_ => {
  226. this.$refs.saveTagInputRole.$refs.input.focus();
  227. this.$refs.role.normalSetId()
  228. this.$refs.role.drawer = true
  229. });
  230. },
  231. handleInputConfirmRole() {
  232. let inputValueRole = this.inputValueRole
  233. if (inputValueRole) {
  234. this.form.usermsg.push(inputValueRole)
  235. }
  236. this.inputVisibleRole = false
  237. this.inputValueRole = ''
  238. },
  239. /* 角色选择结果 */
  240. roleResult (result) {
  241. result.forEach(item => {
  242. let is = this.form.roleArr.filter(item2 => item2.roleid == item.roleid)
  243. if (!is.length) this.form.roleArr.push(item)
  244. })
  245. console.log(this.form.roleArr);
  246. },
  247. /* 人员选择结果 */
  248. userResult (result) {
  249. console.log(result);
  250. result.forEach(item => {
  251. let is = this.form.userArr.filter(item2 => item2.userid == item.userid)
  252. if (!is.length) this.form.userArr.push(item)
  253. })
  254. // this.form.userArr.forEach(u => {
  255. // result.forEach(r => {
  256. // let result = u.filter(f => f.userid == r.userid)
  257. // if (!result.length) {
  258. // this.form.userArr.push(r)
  259. // }
  260. // })
  261. // })
  262. }
  263. }
  264. }
  265. </script>
  266. <style scoped>
  267. .dialog-footer {
  268. margin-top: 0;
  269. }
  270. </style>