index.vue 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <template>
  2. <div>
  3. <basicLayout
  4. ref="basicLayout"
  5. tableName="projectChangeTable"
  6. idName="sa_projectid"
  7. :apiId="{query:20221020143502,del:''}"
  8. :autoQuery="false"
  9. @checkboxCallBack="checkboxCallBack"
  10. >
  11. <template #titleLight>
  12. <batchDeletion v-if="tool.checkAuth($route.name,'batchDeletion')" ref="batchDeletion" :ownerids="selectData" :sys_object="application" @delSuccess="queryData"></batchDeletion>
  13. <batchRecovery v-if="tool.checkAuth($route.name,'batchRecovery')" ref="batchRecovery" :ownerids="selectData" :sys_object="application" @recoverySuccess="queryData"></batchRecovery>
  14. </template>
  15. <template #custom>
  16. <div class="mt-10">
  17. <p class="search__label">{{ $t('应用') }}:</p>
  18. <el-select
  19. class="inline-24"
  20. size="small"
  21. v-model="application"
  22. :placeholder="$t('请选择范围')"
  23. @change="applicationChange"
  24. >
  25. <el-option
  26. v-for="item in applicationList"
  27. :key="item.index"
  28. :label="$t(item.label)"
  29. :value="item.value"
  30. ></el-option>
  31. </el-select>
  32. </div>
  33. <div class="mt-10">
  34. <label class="search__label">{{ $t('项目类型') }}:</label>
  35. <el-select class="inline-24" v-model="selectParam.projecttype" :placeholder="$t('请选择项目类型')" @change="selectChange" size="small" clearable>
  36. <el-option
  37. v-for="item in projectType"
  38. :key="item.value"
  39. :label="$t(item.value)"
  40. :value="item.value">
  41. </el-option>
  42. </el-select>
  43. </div>
  44. <div class="mt-10">
  45. <label class="search__label">{{ $t('项目等级') }}:</label>
  46. <el-select class="inline-24" v-model="selectParam.grade" :placeholder="$t('请选择项目等级')" @change="selectChange" size="small" clearable>
  47. <el-option
  48. v-for="item in projectLead"
  49. :key="item.value"
  50. :label="$t(item.value)"
  51. :value="item.value">
  52. </el-option>
  53. </el-select>
  54. </div>
  55. <div class="mt-10">
  56. <label class="search__label">{{ $t('当前项目阶段') }}:</label>
  57. <el-select class="inline-24" v-model="selectParam.stagename" :placeholder="$t(`请选择项目阶段`)" @change="selectChange" size="small" clearable>
  58. <el-option
  59. v-for="item in option.stageList"
  60. :key="item.stagename"
  61. :label="$t(item.stagename)"
  62. :value="item.stagename">
  63. </el-option>
  64. </el-select>
  65. </div>
  66. <div class="mt-10">
  67. <label class="search__label">{{ $t('项目状态') }}:</label>
  68. <el-select class="inline-24" v-model="selectParam.status" :placeholder="$t(`请选择项目状态`)" @change="selectChange" size="small" clearable>
  69. <el-option
  70. v-for="item in option.statusTab"
  71. :key="item.value"
  72. :label="$t(item.label)"
  73. :value="item.value">
  74. </el-option>
  75. </el-select>
  76. </div>
  77. <div class="mt-10">
  78. <label class="search__label">{{ $t('创建日期') }}:</label>
  79. <el-date-picker
  80. style="margin-right: 24px !important;"
  81. size="small"
  82. @change="selectChange"
  83. value-format="yyyy-MM-dd"
  84. v-model="dateSelect"
  85. type="daterange"
  86. :range-separator="$t(`至`)"
  87. :start-placeholder="$t(`开始日期`)"
  88. :end-placeholder="$t(`结束日期`)"
  89. clearable>
  90. </el-date-picker>
  91. </div>
  92. </template>
  93. <template v-slot:tbList="scope">
  94. <div v-if="scope.data.column.columnname === 'status'">
  95. <span :style="tool.getStatusColor(scope.data.column.data[[scope.data.column.columnname]])">{{$t(scope.data.column.data[[scope.data.column.columnname]])}}</span>
  96. </div>
  97. <div v-else-if="scope.data.column.columnname === 'tag'">
  98. <div v-for="item in scope.data.column.data.tag_sys" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  99. <el-tag color="#FA8C16" size="mini" type="warning" effect="dark">
  100. <span>{{$t(item)}}</span>
  101. </el-tag>
  102. </div>
  103. <div v-for="item in scope.data.column.data.tag" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  104. <el-tag color="#FAAB16" size="mini" type="warning" effect="dark">
  105. <span>{{$t(item)}}</span>
  106. </el-tag>
  107. </div>
  108. </div>
  109. <div v-else-if="scope.data.column.columnname === 'name'">
  110. {{scope.data.column.data.leader[0] && scope.data.column.data.leader[0].name}}
  111. </div>
  112. <div v-else>
  113. {{scope.data.column.data[[scope.data.column.columnname]]?$t(scope.data.column.data[[scope.data.column.columnname]]):'--'}}
  114. </div>
  115. </template>
  116. <template v-slot:tbOpreation="scope">
  117. <delData class="inline-16" :ownerid="scope.data.data.sa_projectid" :sys_object="application" @delSuccess="queryData"></delData>
  118. <recovery type="项目" class="inline-16" :ownerid="scope.data.data.sa_projectid" :sys_object="application" :data="scope.data.data" @recoverySuccess="queryData"></recovery>
  119. </template>
  120. </basicLayout>
  121. </div>
  122. </template>
  123. <script>
  124. /**
  125. * @basicLayout 提供this.$ref['basicLayout'].listData()方法查询列表信息
  126. * @param {string} formPath 新建,编辑组件所在文件夹名称,以后所有列表新增修改文件统一放入Form文件夹下面,并创建与开发应用相同的名称的子文件夹
  127. * @param {string} tableName 开发端配置的表格名称
  128. * @param {String} idName 数据主id名称
  129. * @param {object} apiId:{query:查询的接口id,del:删除的接口id}
  130. * @param {Array} options:{label:描述,value:值}
  131. */
  132. import recovery from "@/HManagement/ecycle/modules/recovery"
  133. import delData from "@/HManagement/ecycle/modules/delData"
  134. import batchDeletion from "@/HManagement/ecycle/modules/batchDeletion";
  135. import batchRecovery from "@/HManagement/ecycle/modules/batchRecovery";
  136. export default {
  137. data () {
  138. return {
  139. application:'4',
  140. applicationList:[
  141. {
  142. label: '销售线索',
  143. value: "1",
  144. },
  145. {
  146. label: '客户',
  147. value: "2",
  148. },
  149. {
  150. label: '合同',
  151. value: "3",
  152. },
  153. {
  154. label: '项目商机',
  155. value: "4",
  156. },
  157. {
  158. label: '报价单',
  159. value: "5",
  160. },
  161. {
  162. label: '合作伙伴',
  163. value: "6",
  164. },
  165. {
  166. label: '商品',
  167. value: "7",
  168. },
  169. {
  170. label: '公海线索',
  171. value: "8",
  172. }
  173. ],
  174. projectType:'',
  175. projectLead:'',
  176. dateSelect:'',
  177. option:{
  178. statusTab:[
  179. {
  180. value:"跟进中",
  181. label:"跟进中"
  182. },
  183. {
  184. value:"已成交",
  185. label:"已成交"
  186. },
  187. {
  188. value:"已失败",
  189. label:"已失败"
  190. }
  191. ],
  192. stageList:[
  193. ]
  194. },
  195. selectParam: {
  196. status:'',
  197. projecttype:'',
  198. grade:'',
  199. startdate:'',
  200. enddate:'',
  201. stagename:''
  202. },
  203. selectData:''
  204. }
  205. },
  206. components:{recovery,delData,batchDeletion,batchRecovery},
  207. methods:{
  208. queryData(){
  209. this.$refs.basicLayout.param.content.isAll = 0
  210. this.$refs.basicLayout.param.content.type = 0
  211. this.$refs.basicLayout.param.content.deleted = 1
  212. this.$refs.basicLayout.param.content.sort = [{reversed:0,sorted:1,sortid:185,sortname:'作废时间倒序'}]
  213. this.$refs.basicLayout.listData()
  214. },
  215. applicationChange(val){
  216. this.$emit("changeApplication",val)
  217. },
  218. /** 获取公司数据 */
  219. async getEnterprise () {
  220. let res = await this.$api.requested({
  221. "id": 20221021095802,
  222. "content": {
  223. "pageNumber": 1,
  224. "pageSize": 99999,
  225. "where": {
  226. "condition": ""
  227. }
  228. },
  229. })
  230. this.enterpriseList = res.data
  231. },
  232. async getSysetms () {
  233. /* 获取项目类型 */
  234. let res = await this.$store.dispatch('optiontypeselect','projecttype')
  235. this.projectType = res.data
  236. /* 获取项目等级 */
  237. let res2 = await this.$store.dispatch('optiontypeselect','projectgrade')
  238. this.projectLead = res2.data
  239. },
  240. /*获取阶段*/
  241. async stageData(){
  242. const res = await this.$api.requested({
  243. "id": 20221128143604,
  244. "content": {
  245. "pageNumber": 1,
  246. "pageSize": 99,
  247. "where": {
  248. "condition": "",
  249. "allprojecttype":"",
  250. "projecttype":""
  251. }
  252. }
  253. })
  254. this.option.stageList = res.data
  255. },
  256. selectChange () {
  257. if (this.dateSelect !== '' && this.dateSelect !== null){
  258. this.selectParam.startdate = this.dateSelect[0]
  259. this.selectParam.enddate = this.dateSelect[1]
  260. }else {
  261. this.selectParam.startdate = ''
  262. this.selectParam.enddate = ''
  263. }
  264. this.$refs.basicLayout.param.content.type = 0
  265. this.$refs.basicLayout.param.content.where = this.selectParam
  266. this.$refs.basicLayout.listData()
  267. },
  268. checkboxCallBack(val){
  269. this.selectData = []
  270. val.forEach((item,index) => {
  271. this.selectData[index] = item.sa_projectid
  272. })
  273. this.$refs.batchDeletion.length = this.selectData.length
  274. this.$refs.batchRecovery.length = this.selectData.length
  275. }
  276. },
  277. mounted() {
  278. this.queryData()
  279. },
  280. created () {
  281. this.getEnterprise()
  282. this.getSysetms()
  283. this.stageData()
  284. },
  285. }
  286. </script>
  287. <style>
  288. </style>