pandanxinxi.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. import { getWebsit } from "@/api/customerManagement.js"
  2. import { memberListPageV2 } from "@/api/masterManagement";
  3. import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
  4. import { listPageV2 } from "@/api/workOrder/orderType";
  5. import ImageUpload from '@/components/file-upload'
  6. export default {
  7. data() {
  8. return {
  9. websitList: [],
  10. workerList: [],
  11. orderSmallTypeData: []
  12. }
  13. },
  14. computed: {
  15. workersColumns() {
  16. return [
  17. {
  18. columnAttributes: {
  19. label: '姓名',
  20. prop: 'workerId'
  21. },
  22. render: (h, { row, column, index }) => {
  23. return <div class="redbordererr">
  24. <el-form-item label="" label-width="0px" prop={`punishOrderWorkers.${index}.${column.columnAttributes.prop}`} rules={required}>
  25. <zj-select
  26. value={row[column.columnAttributes.prop]}
  27. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  28. onChange={(val) => {
  29. if (val) {
  30. var data = this.workerList.find(item => item.value == val)
  31. row.workerMobile = data?.data?.workerMobile || ""
  32. row.workerName = data?.label || val
  33. } else {
  34. row.workerName = ""
  35. row.workerMobile = ""
  36. }
  37. }}
  38. placeholder="请选择"
  39. blurNoMatchText={true}
  40. disabled={this.formData.status == "OK"}
  41. clearable={true}
  42. filterable={true}
  43. blurNoMatchInputBorderColor="">
  44. {this.workerList.map((item, index_) => <zj-option key={index_} label={item.label} value={item.value}></zj-option>)}
  45. </zj-select>
  46. </el-form-item>
  47. </div>
  48. }
  49. },
  50. {
  51. columnAttributes: {
  52. label: '联系电话',
  53. prop: 'workerMobile'
  54. },
  55. render: (h, { row, column, index }) => {
  56. return <div class="redbordererr">
  57. <el-form-item label="" label-width="0px" prop={`punishOrderWorkers.${index}.${column.columnAttributes.prop}`} rules={mobileRequired}>
  58. <el-input
  59. value={row[column.columnAttributes.prop]}
  60. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  61. placeholder="请输入内容"
  62. disabled={this.formData.status == "OK"}
  63. >
  64. </el-input>
  65. </el-form-item>
  66. </div>
  67. }
  68. },
  69. {
  70. columnAttributes: {
  71. label: '处罚金额',
  72. prop: 'amount'
  73. },
  74. render: (h, { row, column, index }) => {
  75. return <div class="redbordererr">
  76. <el-form-item label="" label-width="0px" prop={`punishOrderWorkers.${index}.${column.columnAttributes.prop}`} rules={required}>
  77. <el-input
  78. value={row[column.columnAttributes.prop]}
  79. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  80. placeholder="请输入内容"
  81. disabled={this.formData.status == "OK"}
  82. >
  83. </el-input>
  84. </el-form-item>
  85. </div>
  86. }
  87. },
  88. ...(() => {
  89. if (this.formData.status != "OK") {
  90. return [
  91. {
  92. columnAttributes: {
  93. label: '操作',
  94. width: 100
  95. },
  96. render: (h, { row, column, index }) => {
  97. return <div style="padding-left:10px">
  98. <el-button type="text" onClick={() => {
  99. this.formData.punishOrderWorkers.splice(index, 1)
  100. }}>删除</el-button>
  101. </div>
  102. }
  103. },
  104. ]
  105. }
  106. return []
  107. })()
  108. ]
  109. },
  110. pandanxinxi() {
  111. return [
  112. {
  113. name: 'el-input',
  114. md: 6,
  115. attributes: {
  116. placeholder: '请输入',
  117. disabled: this.formData.status == "OK"
  118. },
  119. formItemAttributes: {
  120. label: '处罚工单号',
  121. prop: 'orderBaseId',
  122. rules: [...required],
  123. }
  124. },
  125. {
  126. name: 'el-select',
  127. md: 6,
  128. options: this.orderSmallTypeData,
  129. attributes: {
  130. placeholder: '请选择',
  131. clearable: true,
  132. filterable: true,
  133. disabled: this.formData.status == "OK"
  134. },
  135. formItemAttributes: {
  136. label: '工单类型',
  137. prop: 'orderSmallType',
  138. rules: [...required],
  139. },
  140. events: {
  141. change: (val) => {
  142. if (val) {
  143. this.formData.orderSmallTypeText = this.orderSmallTypeData.find(item => item.value == val).label
  144. } else {
  145. this.formData.orderSmallTypeText = ''
  146. }
  147. }
  148. }
  149. },
  150. {
  151. name: 'el-select-add',
  152. options: this.websitList,
  153. md: 6,
  154. attributes: {
  155. placeholder: '请选择',
  156. clearable: true,
  157. filterable: true,
  158. disabled: this.formData.status == "OK"
  159. },
  160. formItemAttributes: {
  161. label: '网点名称',
  162. prop: 'websitId',
  163. rules: [...required],
  164. },
  165. events: {
  166. change: (val) => {
  167. this.formData.punishOrderWorkers = []
  168. this.getWorkers()
  169. if (val) {
  170. this.formData['websitName'] = this.websitList.find(item => item.value == val)?.label || val
  171. } else {
  172. this.formData['websitName'] = ''
  173. }
  174. }
  175. }
  176. },
  177. {
  178. name: 'slot-component',
  179. md: 24,
  180. formItemAttributes: {
  181. label: '处罚工程师',
  182. prop: 'punishOrderWorkers',
  183. rules: [...required],
  184. },
  185. render: (h, { props }) => {
  186. var { formData } = props
  187. return (
  188. <div>
  189. {
  190. this.formData.status != "OK" ?
  191. <div>
  192. <el-button size="mini" type="primary" onClick={() => {
  193. this.formData.punishOrderWorkers.unshift({
  194. "amount": "",
  195. "workerId": "",
  196. "workerMobile": "",
  197. "workerName": ""
  198. })
  199. }}>新增</el-button>
  200. </div> : null
  201. }
  202. <zj-table
  203. isDrop={true}
  204. columns={this.workersColumns}
  205. tableData={this.formData.punishOrderWorkers}
  206. ></zj-table>
  207. </div>
  208. )
  209. }
  210. },
  211. {
  212. name: 'el-input',
  213. md: 24,
  214. formItemAttributes: { label: '处罚备注', prop: 'remark' },
  215. attributes: {
  216. placeholder: '处罚备注',
  217. disabled: this.formData.status == "OK"
  218. }
  219. },
  220. {
  221. md: 24,
  222. isShow: true,
  223. name: 'slot-component',
  224. formItemAttributes: {
  225. label: '附件图片',
  226. prop: 'fileUrls',
  227. rules: []
  228. },
  229. render: (h, { props, onInput }) => {
  230. var { value } = props
  231. return (
  232. <ImageUpload fileList={this.formData.fileUrls} uid="imgSrc677766_materials_drawing_images" limit={100} isEdit={this.formData.status != "OK"} />
  233. )
  234. }
  235. },
  236. ]
  237. }
  238. },
  239. methods: {
  240. getorderSmallTypeData() {
  241. listPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "true" }] }).then(res => {
  242. this.orderSmallTypeData = res.data.records.map(item => ({
  243. value: item.id,
  244. label: item.orderSmallTypeText
  245. }))
  246. })
  247. },
  248. getWebsitList() {
  249. getWebsit({ type: "C", status: true, isAll: true }).then(res => {
  250. this.websitList = res.data.map(item => ({
  251. label: item.name,
  252. value: item.websitId,
  253. data: item
  254. }))
  255. })
  256. },
  257. getWorkers() {
  258. if (this.formData.websitId) {
  259. memberListPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "b.examine_status", "compare": "=", "value": "OK" }, { "param": "b.websit_id", "compare": "=", "value": this.formData.websitId }] }).then(res => {
  260. this.workerList = res.data.records.map(item => {
  261. var { id, userId, ...data } = item
  262. return {
  263. value: userId,
  264. label: data.nickName,
  265. data: {
  266. workerId: userId,
  267. workerName: data.nickName,
  268. workerIdcard: data.idCard,
  269. workerMobile: data.mobile,
  270. ...data
  271. }
  272. }
  273. })
  274. })
  275. } else {
  276. this.workerList = []
  277. }
  278. }
  279. },
  280. }